From 806b0b9ca9557cf955f292d9738cde6540aabe7e Mon Sep 17 00:00:00 2001 From: chan-bing Date: Wed, 21 Jun 2023 03:58:24 +0800 Subject: [PATCH 01/13] new vesting --- .../framework/aptos-framework/boogie.bpl | 37013 ++++++++++++++++ .../aptos-framework/sources/vesting.spec.move | 118 +- 2 files changed, 37102 insertions(+), 29 deletions(-) create mode 100644 aptos-move/framework/aptos-framework/boogie.bpl diff --git a/aptos-move/framework/aptos-framework/boogie.bpl b/aptos-move/framework/aptos-framework/boogie.bpl new file mode 100644 index 0000000000000..116c0906cbf21 --- /dev/null +++ b/aptos-move/framework/aptos-framework/boogie.bpl @@ -0,0 +1,37013 @@ + +// ** Expanded prelude + +// Copyright (c) The Diem Core Contributors +// Copyright (c) The Move Contributors +// SPDX-License-Identifier: Apache-2.0 + +// Basic theory for vectors using arrays. This version of vectors is not extensional. + +type {:datatype} Vec _; + +function {:constructor} Vec(v: [int]T, l: int): Vec T; + +function {:builtin "MapConst"} MapConstVec(T): [int]T; +function DefaultVecElem(): T; +function {:inline} DefaultVecMap(): [int]T { MapConstVec(DefaultVecElem()) } + +function {:inline} EmptyVec(): Vec T { + Vec(DefaultVecMap(), 0) +} + +function {:inline} MakeVec1(v: T): Vec T { + Vec(DefaultVecMap()[0 := v], 1) +} + +function {:inline} MakeVec2(v1: T, v2: T): Vec T { + Vec(DefaultVecMap()[0 := v1][1 := v2], 2) +} + +function {:inline} MakeVec3(v1: T, v2: T, v3: T): Vec T { + Vec(DefaultVecMap()[0 := v1][1 := v2][2 := v3], 3) +} + +function {:inline} MakeVec4(v1: T, v2: T, v3: T, v4: T): Vec T { + Vec(DefaultVecMap()[0 := v1][1 := v2][2 := v3][3 := v4], 4) +} + +function {:inline} ExtendVec(v: Vec T, elem: T): Vec T { + (var l := l#Vec(v); + Vec(v#Vec(v)[l := elem], l + 1)) +} + +function {:inline} ReadVec(v: Vec T, i: int): T { + v#Vec(v)[i] +} + +function {:inline} LenVec(v: Vec T): int { + l#Vec(v) +} + +function {:inline} IsEmptyVec(v: Vec T): bool { + l#Vec(v) == 0 +} + +function {:inline} RemoveVec(v: Vec T): Vec T { + (var l := l#Vec(v) - 1; + Vec(v#Vec(v)[l := DefaultVecElem()], l)) +} + +function {:inline} RemoveAtVec(v: Vec T, i: int): Vec T { + (var l := l#Vec(v) - 1; + Vec( + (lambda j: int :: + if j >= 0 && j < l then + if j < i then v#Vec(v)[j] else v#Vec(v)[j+1] + else DefaultVecElem()), + l)) +} + +function {:inline} ConcatVec(v1: Vec T, v2: Vec T): Vec T { + (var l1, m1, l2, m2 := l#Vec(v1), v#Vec(v1), l#Vec(v2), v#Vec(v2); + Vec( + (lambda i: int :: + if i >= 0 && i < l1 + l2 then + if i < l1 then m1[i] else m2[i - l1] + else DefaultVecElem()), + l1 + l2)) +} + +function {:inline} ReverseVec(v: Vec T): Vec T { + (var l := l#Vec(v); + Vec( + (lambda i: int :: if 0 <= i && i < l then v#Vec(v)[l - i - 1] else DefaultVecElem()), + l)) +} + +function {:inline} SliceVec(v: Vec T, i: int, j: int): Vec T { + (var m := v#Vec(v); + Vec( + (lambda k:int :: + if 0 <= k && k < j - i then + m[i + k] + else + DefaultVecElem()), + (if j - i < 0 then 0 else j - i))) +} + + +function {:inline} UpdateVec(v: Vec T, i: int, elem: T): Vec T { + Vec(v#Vec(v)[i := elem], l#Vec(v)) +} + +function {:inline} SwapVec(v: Vec T, i: int, j: int): Vec T { + (var m := v#Vec(v); + Vec(m[i := m[j]][j := m[i]], l#Vec(v))) +} + +function {:inline} ContainsVec(v: Vec T, e: T): bool { + (var l := l#Vec(v); + (exists i: int :: InRangeVec(v, i) && v#Vec(v)[i] == e)) +} + +function IndexOfVec(v: Vec T, e: T): int; +axiom {:ctor "Vec"} (forall v: Vec T, e: T :: {IndexOfVec(v, e)} + (var i := IndexOfVec(v,e); + if (!ContainsVec(v, e)) then i == -1 + else InRangeVec(v, i) && ReadVec(v, i) == e && + (forall j: int :: j >= 0 && j < i ==> ReadVec(v, j) != e))); + +// This function should stay non-inlined as it guards many quantifiers +// over vectors. It appears important to have this uninterpreted for +// quantifier triggering. +function InRangeVec(v: Vec T, i: int): bool { + i >= 0 && i < LenVec(v) +} + +// Copyright (c) The Diem Core Contributors +// Copyright (c) The Move Contributors +// SPDX-License-Identifier: Apache-2.0 + +// Boogie model for multisets, based on Boogie arrays. This theory assumes extensional equality for element types. + +type {:datatype} Multiset _; +function {:constructor} Multiset(v: [T]int, l: int): Multiset T; + +function {:builtin "MapConst"} MapConstMultiset(l: int): [T]int; + +function {:inline} EmptyMultiset(): Multiset T { + Multiset(MapConstMultiset(0), 0) +} + +function {:inline} LenMultiset(s: Multiset T): int { + l#Multiset(s) +} + +function {:inline} ExtendMultiset(s: Multiset T, v: T): Multiset T { + (var len := l#Multiset(s); + (var cnt := v#Multiset(s)[v]; + Multiset(v#Multiset(s)[v := (cnt + 1)], len + 1))) +} + +// This function returns (s1 - s2). This function assumes that s2 is a subset of s1. +function {:inline} SubtractMultiset(s1: Multiset T, s2: Multiset T): Multiset T { + (var len1 := l#Multiset(s1); + (var len2 := l#Multiset(s2); + Multiset((lambda v:T :: v#Multiset(s1)[v]-v#Multiset(s2)[v]), len1-len2))) +} + +function {:inline} IsEmptyMultiset(s: Multiset T): bool { + (l#Multiset(s) == 0) && + (forall v: T :: v#Multiset(s)[v] == 0) +} + +function {:inline} IsSubsetMultiset(s1: Multiset T, s2: Multiset T): bool { + (l#Multiset(s1) <= l#Multiset(s2)) && + (forall v: T :: v#Multiset(s1)[v] <= v#Multiset(s2)[v]) +} + +function {:inline} ContainsMultiset(s: Multiset T, v: T): bool { + v#Multiset(s)[v] > 0 +} + +// Copyright (c) The Diem Core Contributors +// Copyright (c) The Move Contributors +// SPDX-License-Identifier: Apache-2.0 + +// Theory for tables. + +type {:datatype} Table _ _; + +// v is the SMT array holding the key-value assignment. e is an array which +// independently determines whether a key is valid or not. l is the length. +// +// Note that even though the program cannot reflect over existence of a key, +// we want the specification to be able to do this, so it can express +// verification conditions like "key has been inserted". +function {:constructor} Table(v: [K]V, e: [K]bool, l: int): Table K V; + +// Functions for default SMT arrays. For the table values, we don't care and +// use an uninterpreted function. +function DefaultTableArray(): [K]V; +function DefaultTableKeyExistsArray(): [K]bool; +axiom DefaultTableKeyExistsArray() == (lambda i: int :: false); + +function {:inline} EmptyTable(): Table K V { + Table(DefaultTableArray(), DefaultTableKeyExistsArray(), 0) +} + +function {:inline} GetTable(t: Table K V, k: K): V { + // Notice we do not check whether key is in the table. The result is undetermined if it is not. + v#Table(t)[k] +} + +function {:inline} LenTable(t: Table K V): int { + l#Table(t) +} + + +function {:inline} ContainsTable(t: Table K V, k: K): bool { + e#Table(t)[k] +} + +function {:inline} UpdateTable(t: Table K V, k: K, v: V): Table K V { + Table(v#Table(t)[k := v], e#Table(t), l#Table(t)) +} + +function {:inline} AddTable(t: Table K V, k: K, v: V): Table K V { + // This function has an undetermined result if the key is already in the table + // (all specification functions have this "partial definiteness" behavior). Thus we can + // just increment the length. + Table(v#Table(t)[k := v], e#Table(t)[k := true], l#Table(t) + 1) +} + +function {:inline} RemoveTable(t: Table K V, k: K): Table K V { + // Similar as above, we only need to consider the case where the key is in the table. + Table(v#Table(t), e#Table(t)[k := false], l#Table(t) - 1) +} + +axiom {:ctor "Table"} (forall t: Table K V :: {LenTable(t)} + (exists k: K :: {ContainsTable(t, k)} ContainsTable(t, k)) ==> LenTable(t) >= 1 +); +// TODO: we might want to encoder a stronger property that the length of table +// must be more than N given a set of N items. Currently we don't see a need here +// and the above axiom seems to be sufficient. +// Copyright © Aptos Foundation +// SPDX-License-Identifier: Apache-2.0 + +// ================================================================================== +// Native object::exists_at + +// ================================================================================== +// Intrinsic implementation of aggregator and aggregator factory + +type {:datatype} $1_aggregator_Aggregator; +function {:constructor} $1_aggregator_Aggregator($handle: int, $key: int, $limit: int, $val: int): $1_aggregator_Aggregator; +function {:inline} $Update'$1_aggregator_Aggregator'_handle(s: $1_aggregator_Aggregator, x: int): $1_aggregator_Aggregator { + $1_aggregator_Aggregator(x, $key#$1_aggregator_Aggregator(s), $limit#$1_aggregator_Aggregator(s), $val#$1_aggregator_Aggregator(s)) +} +function {:inline} $Update'$1_aggregator_Aggregator'_key(s: $1_aggregator_Aggregator, x: int): $1_aggregator_Aggregator { + $1_aggregator_Aggregator($handle#$1_aggregator_Aggregator(s), x, $limit#$1_aggregator_Aggregator(s), $val#$1_aggregator_Aggregator(s)) +} +function {:inline} $Update'$1_aggregator_Aggregator'_limit(s: $1_aggregator_Aggregator, x: int): $1_aggregator_Aggregator { + $1_aggregator_Aggregator($handle#$1_aggregator_Aggregator(s), $key#$1_aggregator_Aggregator(s), x, $val#$1_aggregator_Aggregator(s)) +} +function {:inline} $Update'$1_aggregator_Aggregator'_val(s: $1_aggregator_Aggregator, x: int): $1_aggregator_Aggregator { + $1_aggregator_Aggregator($handle#$1_aggregator_Aggregator(s), $key#$1_aggregator_Aggregator(s), $limit#$1_aggregator_Aggregator(s), x) +} +function $IsValid'$1_aggregator_Aggregator'(s: $1_aggregator_Aggregator): bool { + $IsValid'address'($handle#$1_aggregator_Aggregator(s)) + && $IsValid'address'($key#$1_aggregator_Aggregator(s)) + && $IsValid'u128'($limit#$1_aggregator_Aggregator(s)) + && $IsValid'u128'($val#$1_aggregator_Aggregator(s)) +} +function {:inline} $IsEqual'$1_aggregator_Aggregator'(s1: $1_aggregator_Aggregator, s2: $1_aggregator_Aggregator): bool { + s1 == s2 +} +function {:inline} $1_aggregator_spec_get_limit(s1: $1_aggregator_Aggregator): int { + $limit#$1_aggregator_Aggregator(s1) +} +function {:inline} $1_aggregator_spec_get_handle(s1: $1_aggregator_Aggregator): int { + $handle#$1_aggregator_Aggregator(s1) +} +function {:inline} $1_aggregator_spec_get_key(s1: $1_aggregator_Aggregator): int { + $key#$1_aggregator_Aggregator(s1) +} +function {:inline} $1_aggregator_spec_get_val(s1: $1_aggregator_Aggregator): int { + $val#$1_aggregator_Aggregator(s1) +} + +function $1_aggregator_spec_read(agg: $1_aggregator_Aggregator): int { + $1_aggregator_spec_get_val(agg) +} + +function $1_aggregator_spec_aggregator_set_val(agg: $1_aggregator_Aggregator, val: int): $1_aggregator_Aggregator { + $Update'$1_aggregator_Aggregator'_val(agg, val) +} + +function $1_aggregator_spec_aggregator_get_val(agg: $1_aggregator_Aggregator): int { + $1_aggregator_spec_get_val(agg) +} + +function $1_aggregator_factory_spec_new_aggregator(limit: int) : $1_aggregator_Aggregator; + +axiom (forall limit: int :: {$1_aggregator_factory_spec_new_aggregator(limit)} + (var agg := $1_aggregator_factory_spec_new_aggregator(limit); + $1_aggregator_spec_get_limit(agg) == limit)); + +axiom (forall limit: int :: {$1_aggregator_factory_spec_new_aggregator(limit)} + (var agg := $1_aggregator_factory_spec_new_aggregator(limit); + $1_aggregator_spec_aggregator_get_val(agg) == 0)); + + +// ============================================================================================ +// Primitive Types + +const $MAX_U8: int; +axiom $MAX_U8 == 255; +const $MAX_U16: int; +axiom $MAX_U16 == 65535; +const $MAX_U32: int; +axiom $MAX_U32 == 4294967295; +const $MAX_U64: int; +axiom $MAX_U64 == 18446744073709551615; +const $MAX_U128: int; +axiom $MAX_U128 == 340282366920938463463374607431768211455; +const $MAX_U256: int; +axiom $MAX_U256 == 115792089237316195423570985008687907853269984665640564039457584007913129639935; + +// Templates for bitvector operations + +function {:bvbuiltin "bvand"} $And'Bv8'(bv8,bv8) returns(bv8); +function {:bvbuiltin "bvor"} $Or'Bv8'(bv8,bv8) returns(bv8); +function {:bvbuiltin "bvxor"} $Xor'Bv8'(bv8,bv8) returns(bv8); +function {:bvbuiltin "bvadd"} $Add'Bv8'(bv8,bv8) returns(bv8); +function {:bvbuiltin "bvsub"} $Sub'Bv8'(bv8,bv8) returns(bv8); +function {:bvbuiltin "bvmul"} $Mul'Bv8'(bv8,bv8) returns(bv8); +function {:bvbuiltin "bvudiv"} $Div'Bv8'(bv8,bv8) returns(bv8); +function {:bvbuiltin "bvurem"} $Mod'Bv8'(bv8,bv8) returns(bv8); +function {:bvbuiltin "bvshl"} $Shl'Bv8'(bv8,bv8) returns(bv8); +function {:bvbuiltin "bvlshr"} $Shr'Bv8'(bv8,bv8) returns(bv8); +function {:bvbuiltin "bvult"} $Lt'Bv8'(bv8,bv8) returns(bool); +function {:bvbuiltin "bvule"} $Le'Bv8'(bv8,bv8) returns(bool); +function {:bvbuiltin "bvugt"} $Gt'Bv8'(bv8,bv8) returns(bool); +function {:bvbuiltin "bvuge"} $Ge'Bv8'(bv8,bv8) returns(bool); + +procedure {:inline 1} $AddBv8(src1: bv8, src2: bv8) returns (dst: bv8) +{ + if ($Lt'Bv8'($Add'Bv8'(src1, src2), src1)) { + call $ExecFailureAbort(); + return; + } + dst := $Add'Bv8'(src1, src2); +} + +procedure {:inline 1} $AddBv8_unchecked(src1: bv8, src2: bv8) returns (dst: bv8) +{ + dst := $Add'Bv8'(src1, src2); +} + +procedure {:inline 1} $SubBv8(src1: bv8, src2: bv8) returns (dst: bv8) +{ + if ($Lt'Bv8'(src1, src2)) { + call $ExecFailureAbort(); + return; + } + dst := $Sub'Bv8'(src1, src2); +} + +procedure {:inline 1} $MulBv8(src1: bv8, src2: bv8) returns (dst: bv8) +{ + if ($Lt'Bv8'($Mul'Bv8'(src1, src2), src1)) { + call $ExecFailureAbort(); + return; + } + dst := $Mul'Bv8'(src1, src2); +} + +procedure {:inline 1} $DivBv8(src1: bv8, src2: bv8) returns (dst: bv8) +{ + if (src2 == 0bv8) { + call $ExecFailureAbort(); + return; + } + dst := $Div'Bv8'(src1, src2); +} + +procedure {:inline 1} $ModBv8(src1: bv8, src2: bv8) returns (dst: bv8) +{ + if (src2 == 0bv8) { + call $ExecFailureAbort(); + return; + } + dst := $Mod'Bv8'(src1, src2); +} + +procedure {:inline 1} $AndBv8(src1: bv8, src2: bv8) returns (dst: bv8) +{ + dst := $And'Bv8'(src1,src2); +} + +procedure {:inline 1} $OrBv8(src1: bv8, src2: bv8) returns (dst: bv8) +{ + dst := $Or'Bv8'(src1,src2); +} + +procedure {:inline 1} $XorBv8(src1: bv8, src2: bv8) returns (dst: bv8) +{ + dst := $Xor'Bv8'(src1,src2); +} + +procedure {:inline 1} $LtBv8(src1: bv8, src2: bv8) returns (dst: bool) +{ + dst := $Lt'Bv8'(src1,src2); +} + +procedure {:inline 1} $LeBv8(src1: bv8, src2: bv8) returns (dst: bool) +{ + dst := $Le'Bv8'(src1,src2); +} + +procedure {:inline 1} $GtBv8(src1: bv8, src2: bv8) returns (dst: bool) +{ + dst := $Gt'Bv8'(src1,src2); +} + +procedure {:inline 1} $GeBv8(src1: bv8, src2: bv8) returns (dst: bool) +{ + dst := $Ge'Bv8'(src1,src2); +} + +function $IsValid'bv8'(v: bv8): bool { + $Ge'Bv8'(v,0bv8) && $Le'Bv8'(v,255bv8) +} + +function {:inline} $IsEqual'bv8'(x: bv8, y: bv8): bool { + x == y +} + +procedure {:inline 1} $int2bv8(src: int) returns (dst: bv8) +{ + if (src > 255) { + call $ExecFailureAbort(); + return; + } + dst := $int2bv.8(src); +} + +procedure {:inline 1} $bv2int8(src: bv8) returns (dst: int) +{ + dst := $bv2int.8(src); +} + +function {:builtin "(_ int2bv 8)"} $int2bv.8(i: int) returns (bv8); +function {:builtin "bv2nat"} $bv2int.8(i: bv8) returns (int); + +function {:bvbuiltin "bvand"} $And'Bv16'(bv16,bv16) returns(bv16); +function {:bvbuiltin "bvor"} $Or'Bv16'(bv16,bv16) returns(bv16); +function {:bvbuiltin "bvxor"} $Xor'Bv16'(bv16,bv16) returns(bv16); +function {:bvbuiltin "bvadd"} $Add'Bv16'(bv16,bv16) returns(bv16); +function {:bvbuiltin "bvsub"} $Sub'Bv16'(bv16,bv16) returns(bv16); +function {:bvbuiltin "bvmul"} $Mul'Bv16'(bv16,bv16) returns(bv16); +function {:bvbuiltin "bvudiv"} $Div'Bv16'(bv16,bv16) returns(bv16); +function {:bvbuiltin "bvurem"} $Mod'Bv16'(bv16,bv16) returns(bv16); +function {:bvbuiltin "bvshl"} $Shl'Bv16'(bv16,bv16) returns(bv16); +function {:bvbuiltin "bvlshr"} $Shr'Bv16'(bv16,bv16) returns(bv16); +function {:bvbuiltin "bvult"} $Lt'Bv16'(bv16,bv16) returns(bool); +function {:bvbuiltin "bvule"} $Le'Bv16'(bv16,bv16) returns(bool); +function {:bvbuiltin "bvugt"} $Gt'Bv16'(bv16,bv16) returns(bool); +function {:bvbuiltin "bvuge"} $Ge'Bv16'(bv16,bv16) returns(bool); + +procedure {:inline 1} $AddBv16(src1: bv16, src2: bv16) returns (dst: bv16) +{ + if ($Lt'Bv16'($Add'Bv16'(src1, src2), src1)) { + call $ExecFailureAbort(); + return; + } + dst := $Add'Bv16'(src1, src2); +} + +procedure {:inline 1} $AddBv16_unchecked(src1: bv16, src2: bv16) returns (dst: bv16) +{ + dst := $Add'Bv16'(src1, src2); +} + +procedure {:inline 1} $SubBv16(src1: bv16, src2: bv16) returns (dst: bv16) +{ + if ($Lt'Bv16'(src1, src2)) { + call $ExecFailureAbort(); + return; + } + dst := $Sub'Bv16'(src1, src2); +} + +procedure {:inline 1} $MulBv16(src1: bv16, src2: bv16) returns (dst: bv16) +{ + if ($Lt'Bv16'($Mul'Bv16'(src1, src2), src1)) { + call $ExecFailureAbort(); + return; + } + dst := $Mul'Bv16'(src1, src2); +} + +procedure {:inline 1} $DivBv16(src1: bv16, src2: bv16) returns (dst: bv16) +{ + if (src2 == 0bv16) { + call $ExecFailureAbort(); + return; + } + dst := $Div'Bv16'(src1, src2); +} + +procedure {:inline 1} $ModBv16(src1: bv16, src2: bv16) returns (dst: bv16) +{ + if (src2 == 0bv16) { + call $ExecFailureAbort(); + return; + } + dst := $Mod'Bv16'(src1, src2); +} + +procedure {:inline 1} $AndBv16(src1: bv16, src2: bv16) returns (dst: bv16) +{ + dst := $And'Bv16'(src1,src2); +} + +procedure {:inline 1} $OrBv16(src1: bv16, src2: bv16) returns (dst: bv16) +{ + dst := $Or'Bv16'(src1,src2); +} + +procedure {:inline 1} $XorBv16(src1: bv16, src2: bv16) returns (dst: bv16) +{ + dst := $Xor'Bv16'(src1,src2); +} + +procedure {:inline 1} $LtBv16(src1: bv16, src2: bv16) returns (dst: bool) +{ + dst := $Lt'Bv16'(src1,src2); +} + +procedure {:inline 1} $LeBv16(src1: bv16, src2: bv16) returns (dst: bool) +{ + dst := $Le'Bv16'(src1,src2); +} + +procedure {:inline 1} $GtBv16(src1: bv16, src2: bv16) returns (dst: bool) +{ + dst := $Gt'Bv16'(src1,src2); +} + +procedure {:inline 1} $GeBv16(src1: bv16, src2: bv16) returns (dst: bool) +{ + dst := $Ge'Bv16'(src1,src2); +} + +function $IsValid'bv16'(v: bv16): bool { + $Ge'Bv16'(v,0bv16) && $Le'Bv16'(v,65535bv16) +} + +function {:inline} $IsEqual'bv16'(x: bv16, y: bv16): bool { + x == y +} + +procedure {:inline 1} $int2bv16(src: int) returns (dst: bv16) +{ + if (src > 65535) { + call $ExecFailureAbort(); + return; + } + dst := $int2bv.16(src); +} + +procedure {:inline 1} $bv2int16(src: bv16) returns (dst: int) +{ + dst := $bv2int.16(src); +} + +function {:builtin "(_ int2bv 16)"} $int2bv.16(i: int) returns (bv16); +function {:builtin "bv2nat"} $bv2int.16(i: bv16) returns (int); + +function {:bvbuiltin "bvand"} $And'Bv32'(bv32,bv32) returns(bv32); +function {:bvbuiltin "bvor"} $Or'Bv32'(bv32,bv32) returns(bv32); +function {:bvbuiltin "bvxor"} $Xor'Bv32'(bv32,bv32) returns(bv32); +function {:bvbuiltin "bvadd"} $Add'Bv32'(bv32,bv32) returns(bv32); +function {:bvbuiltin "bvsub"} $Sub'Bv32'(bv32,bv32) returns(bv32); +function {:bvbuiltin "bvmul"} $Mul'Bv32'(bv32,bv32) returns(bv32); +function {:bvbuiltin "bvudiv"} $Div'Bv32'(bv32,bv32) returns(bv32); +function {:bvbuiltin "bvurem"} $Mod'Bv32'(bv32,bv32) returns(bv32); +function {:bvbuiltin "bvshl"} $Shl'Bv32'(bv32,bv32) returns(bv32); +function {:bvbuiltin "bvlshr"} $Shr'Bv32'(bv32,bv32) returns(bv32); +function {:bvbuiltin "bvult"} $Lt'Bv32'(bv32,bv32) returns(bool); +function {:bvbuiltin "bvule"} $Le'Bv32'(bv32,bv32) returns(bool); +function {:bvbuiltin "bvugt"} $Gt'Bv32'(bv32,bv32) returns(bool); +function {:bvbuiltin "bvuge"} $Ge'Bv32'(bv32,bv32) returns(bool); + +procedure {:inline 1} $AddBv32(src1: bv32, src2: bv32) returns (dst: bv32) +{ + if ($Lt'Bv32'($Add'Bv32'(src1, src2), src1)) { + call $ExecFailureAbort(); + return; + } + dst := $Add'Bv32'(src1, src2); +} + +procedure {:inline 1} $AddBv32_unchecked(src1: bv32, src2: bv32) returns (dst: bv32) +{ + dst := $Add'Bv32'(src1, src2); +} + +procedure {:inline 1} $SubBv32(src1: bv32, src2: bv32) returns (dst: bv32) +{ + if ($Lt'Bv32'(src1, src2)) { + call $ExecFailureAbort(); + return; + } + dst := $Sub'Bv32'(src1, src2); +} + +procedure {:inline 1} $MulBv32(src1: bv32, src2: bv32) returns (dst: bv32) +{ + if ($Lt'Bv32'($Mul'Bv32'(src1, src2), src1)) { + call $ExecFailureAbort(); + return; + } + dst := $Mul'Bv32'(src1, src2); +} + +procedure {:inline 1} $DivBv32(src1: bv32, src2: bv32) returns (dst: bv32) +{ + if (src2 == 0bv32) { + call $ExecFailureAbort(); + return; + } + dst := $Div'Bv32'(src1, src2); +} + +procedure {:inline 1} $ModBv32(src1: bv32, src2: bv32) returns (dst: bv32) +{ + if (src2 == 0bv32) { + call $ExecFailureAbort(); + return; + } + dst := $Mod'Bv32'(src1, src2); +} + +procedure {:inline 1} $AndBv32(src1: bv32, src2: bv32) returns (dst: bv32) +{ + dst := $And'Bv32'(src1,src2); +} + +procedure {:inline 1} $OrBv32(src1: bv32, src2: bv32) returns (dst: bv32) +{ + dst := $Or'Bv32'(src1,src2); +} + +procedure {:inline 1} $XorBv32(src1: bv32, src2: bv32) returns (dst: bv32) +{ + dst := $Xor'Bv32'(src1,src2); +} + +procedure {:inline 1} $LtBv32(src1: bv32, src2: bv32) returns (dst: bool) +{ + dst := $Lt'Bv32'(src1,src2); +} + +procedure {:inline 1} $LeBv32(src1: bv32, src2: bv32) returns (dst: bool) +{ + dst := $Le'Bv32'(src1,src2); +} + +procedure {:inline 1} $GtBv32(src1: bv32, src2: bv32) returns (dst: bool) +{ + dst := $Gt'Bv32'(src1,src2); +} + +procedure {:inline 1} $GeBv32(src1: bv32, src2: bv32) returns (dst: bool) +{ + dst := $Ge'Bv32'(src1,src2); +} + +function $IsValid'bv32'(v: bv32): bool { + $Ge'Bv32'(v,0bv32) && $Le'Bv32'(v,2147483647bv32) +} + +function {:inline} $IsEqual'bv32'(x: bv32, y: bv32): bool { + x == y +} + +procedure {:inline 1} $int2bv32(src: int) returns (dst: bv32) +{ + if (src > 2147483647) { + call $ExecFailureAbort(); + return; + } + dst := $int2bv.32(src); +} + +procedure {:inline 1} $bv2int32(src: bv32) returns (dst: int) +{ + dst := $bv2int.32(src); +} + +function {:builtin "(_ int2bv 32)"} $int2bv.32(i: int) returns (bv32); +function {:builtin "bv2nat"} $bv2int.32(i: bv32) returns (int); + +function {:bvbuiltin "bvand"} $And'Bv64'(bv64,bv64) returns(bv64); +function {:bvbuiltin "bvor"} $Or'Bv64'(bv64,bv64) returns(bv64); +function {:bvbuiltin "bvxor"} $Xor'Bv64'(bv64,bv64) returns(bv64); +function {:bvbuiltin "bvadd"} $Add'Bv64'(bv64,bv64) returns(bv64); +function {:bvbuiltin "bvsub"} $Sub'Bv64'(bv64,bv64) returns(bv64); +function {:bvbuiltin "bvmul"} $Mul'Bv64'(bv64,bv64) returns(bv64); +function {:bvbuiltin "bvudiv"} $Div'Bv64'(bv64,bv64) returns(bv64); +function {:bvbuiltin "bvurem"} $Mod'Bv64'(bv64,bv64) returns(bv64); +function {:bvbuiltin "bvshl"} $Shl'Bv64'(bv64,bv64) returns(bv64); +function {:bvbuiltin "bvlshr"} $Shr'Bv64'(bv64,bv64) returns(bv64); +function {:bvbuiltin "bvult"} $Lt'Bv64'(bv64,bv64) returns(bool); +function {:bvbuiltin "bvule"} $Le'Bv64'(bv64,bv64) returns(bool); +function {:bvbuiltin "bvugt"} $Gt'Bv64'(bv64,bv64) returns(bool); +function {:bvbuiltin "bvuge"} $Ge'Bv64'(bv64,bv64) returns(bool); + +procedure {:inline 1} $AddBv64(src1: bv64, src2: bv64) returns (dst: bv64) +{ + if ($Lt'Bv64'($Add'Bv64'(src1, src2), src1)) { + call $ExecFailureAbort(); + return; + } + dst := $Add'Bv64'(src1, src2); +} + +procedure {:inline 1} $AddBv64_unchecked(src1: bv64, src2: bv64) returns (dst: bv64) +{ + dst := $Add'Bv64'(src1, src2); +} + +procedure {:inline 1} $SubBv64(src1: bv64, src2: bv64) returns (dst: bv64) +{ + if ($Lt'Bv64'(src1, src2)) { + call $ExecFailureAbort(); + return; + } + dst := $Sub'Bv64'(src1, src2); +} + +procedure {:inline 1} $MulBv64(src1: bv64, src2: bv64) returns (dst: bv64) +{ + if ($Lt'Bv64'($Mul'Bv64'(src1, src2), src1)) { + call $ExecFailureAbort(); + return; + } + dst := $Mul'Bv64'(src1, src2); +} + +procedure {:inline 1} $DivBv64(src1: bv64, src2: bv64) returns (dst: bv64) +{ + if (src2 == 0bv64) { + call $ExecFailureAbort(); + return; + } + dst := $Div'Bv64'(src1, src2); +} + +procedure {:inline 1} $ModBv64(src1: bv64, src2: bv64) returns (dst: bv64) +{ + if (src2 == 0bv64) { + call $ExecFailureAbort(); + return; + } + dst := $Mod'Bv64'(src1, src2); +} + +procedure {:inline 1} $AndBv64(src1: bv64, src2: bv64) returns (dst: bv64) +{ + dst := $And'Bv64'(src1,src2); +} + +procedure {:inline 1} $OrBv64(src1: bv64, src2: bv64) returns (dst: bv64) +{ + dst := $Or'Bv64'(src1,src2); +} + +procedure {:inline 1} $XorBv64(src1: bv64, src2: bv64) returns (dst: bv64) +{ + dst := $Xor'Bv64'(src1,src2); +} + +procedure {:inline 1} $LtBv64(src1: bv64, src2: bv64) returns (dst: bool) +{ + dst := $Lt'Bv64'(src1,src2); +} + +procedure {:inline 1} $LeBv64(src1: bv64, src2: bv64) returns (dst: bool) +{ + dst := $Le'Bv64'(src1,src2); +} + +procedure {:inline 1} $GtBv64(src1: bv64, src2: bv64) returns (dst: bool) +{ + dst := $Gt'Bv64'(src1,src2); +} + +procedure {:inline 1} $GeBv64(src1: bv64, src2: bv64) returns (dst: bool) +{ + dst := $Ge'Bv64'(src1,src2); +} + +function $IsValid'bv64'(v: bv64): bool { + $Ge'Bv64'(v,0bv64) && $Le'Bv64'(v,18446744073709551615bv64) +} + +function {:inline} $IsEqual'bv64'(x: bv64, y: bv64): bool { + x == y +} + +procedure {:inline 1} $int2bv64(src: int) returns (dst: bv64) +{ + if (src > 18446744073709551615) { + call $ExecFailureAbort(); + return; + } + dst := $int2bv.64(src); +} + +procedure {:inline 1} $bv2int64(src: bv64) returns (dst: int) +{ + dst := $bv2int.64(src); +} + +function {:builtin "(_ int2bv 64)"} $int2bv.64(i: int) returns (bv64); +function {:builtin "bv2nat"} $bv2int.64(i: bv64) returns (int); + +function {:bvbuiltin "bvand"} $And'Bv128'(bv128,bv128) returns(bv128); +function {:bvbuiltin "bvor"} $Or'Bv128'(bv128,bv128) returns(bv128); +function {:bvbuiltin "bvxor"} $Xor'Bv128'(bv128,bv128) returns(bv128); +function {:bvbuiltin "bvadd"} $Add'Bv128'(bv128,bv128) returns(bv128); +function {:bvbuiltin "bvsub"} $Sub'Bv128'(bv128,bv128) returns(bv128); +function {:bvbuiltin "bvmul"} $Mul'Bv128'(bv128,bv128) returns(bv128); +function {:bvbuiltin "bvudiv"} $Div'Bv128'(bv128,bv128) returns(bv128); +function {:bvbuiltin "bvurem"} $Mod'Bv128'(bv128,bv128) returns(bv128); +function {:bvbuiltin "bvshl"} $Shl'Bv128'(bv128,bv128) returns(bv128); +function {:bvbuiltin "bvlshr"} $Shr'Bv128'(bv128,bv128) returns(bv128); +function {:bvbuiltin "bvult"} $Lt'Bv128'(bv128,bv128) returns(bool); +function {:bvbuiltin "bvule"} $Le'Bv128'(bv128,bv128) returns(bool); +function {:bvbuiltin "bvugt"} $Gt'Bv128'(bv128,bv128) returns(bool); +function {:bvbuiltin "bvuge"} $Ge'Bv128'(bv128,bv128) returns(bool); + +procedure {:inline 1} $AddBv128(src1: bv128, src2: bv128) returns (dst: bv128) +{ + if ($Lt'Bv128'($Add'Bv128'(src1, src2), src1)) { + call $ExecFailureAbort(); + return; + } + dst := $Add'Bv128'(src1, src2); +} + +procedure {:inline 1} $AddBv128_unchecked(src1: bv128, src2: bv128) returns (dst: bv128) +{ + dst := $Add'Bv128'(src1, src2); +} + +procedure {:inline 1} $SubBv128(src1: bv128, src2: bv128) returns (dst: bv128) +{ + if ($Lt'Bv128'(src1, src2)) { + call $ExecFailureAbort(); + return; + } + dst := $Sub'Bv128'(src1, src2); +} + +procedure {:inline 1} $MulBv128(src1: bv128, src2: bv128) returns (dst: bv128) +{ + if ($Lt'Bv128'($Mul'Bv128'(src1, src2), src1)) { + call $ExecFailureAbort(); + return; + } + dst := $Mul'Bv128'(src1, src2); +} + +procedure {:inline 1} $DivBv128(src1: bv128, src2: bv128) returns (dst: bv128) +{ + if (src2 == 0bv128) { + call $ExecFailureAbort(); + return; + } + dst := $Div'Bv128'(src1, src2); +} + +procedure {:inline 1} $ModBv128(src1: bv128, src2: bv128) returns (dst: bv128) +{ + if (src2 == 0bv128) { + call $ExecFailureAbort(); + return; + } + dst := $Mod'Bv128'(src1, src2); +} + +procedure {:inline 1} $AndBv128(src1: bv128, src2: bv128) returns (dst: bv128) +{ + dst := $And'Bv128'(src1,src2); +} + +procedure {:inline 1} $OrBv128(src1: bv128, src2: bv128) returns (dst: bv128) +{ + dst := $Or'Bv128'(src1,src2); +} + +procedure {:inline 1} $XorBv128(src1: bv128, src2: bv128) returns (dst: bv128) +{ + dst := $Xor'Bv128'(src1,src2); +} + +procedure {:inline 1} $LtBv128(src1: bv128, src2: bv128) returns (dst: bool) +{ + dst := $Lt'Bv128'(src1,src2); +} + +procedure {:inline 1} $LeBv128(src1: bv128, src2: bv128) returns (dst: bool) +{ + dst := $Le'Bv128'(src1,src2); +} + +procedure {:inline 1} $GtBv128(src1: bv128, src2: bv128) returns (dst: bool) +{ + dst := $Gt'Bv128'(src1,src2); +} + +procedure {:inline 1} $GeBv128(src1: bv128, src2: bv128) returns (dst: bool) +{ + dst := $Ge'Bv128'(src1,src2); +} + +function $IsValid'bv128'(v: bv128): bool { + $Ge'Bv128'(v,0bv128) && $Le'Bv128'(v,340282366920938463463374607431768211455bv128) +} + +function {:inline} $IsEqual'bv128'(x: bv128, y: bv128): bool { + x == y +} + +procedure {:inline 1} $int2bv128(src: int) returns (dst: bv128) +{ + if (src > 340282366920938463463374607431768211455) { + call $ExecFailureAbort(); + return; + } + dst := $int2bv.128(src); +} + +procedure {:inline 1} $bv2int128(src: bv128) returns (dst: int) +{ + dst := $bv2int.128(src); +} + +function {:builtin "(_ int2bv 128)"} $int2bv.128(i: int) returns (bv128); +function {:builtin "bv2nat"} $bv2int.128(i: bv128) returns (int); + +function {:bvbuiltin "bvand"} $And'Bv256'(bv256,bv256) returns(bv256); +function {:bvbuiltin "bvor"} $Or'Bv256'(bv256,bv256) returns(bv256); +function {:bvbuiltin "bvxor"} $Xor'Bv256'(bv256,bv256) returns(bv256); +function {:bvbuiltin "bvadd"} $Add'Bv256'(bv256,bv256) returns(bv256); +function {:bvbuiltin "bvsub"} $Sub'Bv256'(bv256,bv256) returns(bv256); +function {:bvbuiltin "bvmul"} $Mul'Bv256'(bv256,bv256) returns(bv256); +function {:bvbuiltin "bvudiv"} $Div'Bv256'(bv256,bv256) returns(bv256); +function {:bvbuiltin "bvurem"} $Mod'Bv256'(bv256,bv256) returns(bv256); +function {:bvbuiltin "bvshl"} $Shl'Bv256'(bv256,bv256) returns(bv256); +function {:bvbuiltin "bvlshr"} $Shr'Bv256'(bv256,bv256) returns(bv256); +function {:bvbuiltin "bvult"} $Lt'Bv256'(bv256,bv256) returns(bool); +function {:bvbuiltin "bvule"} $Le'Bv256'(bv256,bv256) returns(bool); +function {:bvbuiltin "bvugt"} $Gt'Bv256'(bv256,bv256) returns(bool); +function {:bvbuiltin "bvuge"} $Ge'Bv256'(bv256,bv256) returns(bool); + +procedure {:inline 1} $AddBv256(src1: bv256, src2: bv256) returns (dst: bv256) +{ + if ($Lt'Bv256'($Add'Bv256'(src1, src2), src1)) { + call $ExecFailureAbort(); + return; + } + dst := $Add'Bv256'(src1, src2); +} + +procedure {:inline 1} $AddBv256_unchecked(src1: bv256, src2: bv256) returns (dst: bv256) +{ + dst := $Add'Bv256'(src1, src2); +} + +procedure {:inline 1} $SubBv256(src1: bv256, src2: bv256) returns (dst: bv256) +{ + if ($Lt'Bv256'(src1, src2)) { + call $ExecFailureAbort(); + return; + } + dst := $Sub'Bv256'(src1, src2); +} + +procedure {:inline 1} $MulBv256(src1: bv256, src2: bv256) returns (dst: bv256) +{ + if ($Lt'Bv256'($Mul'Bv256'(src1, src2), src1)) { + call $ExecFailureAbort(); + return; + } + dst := $Mul'Bv256'(src1, src2); +} + +procedure {:inline 1} $DivBv256(src1: bv256, src2: bv256) returns (dst: bv256) +{ + if (src2 == 0bv256) { + call $ExecFailureAbort(); + return; + } + dst := $Div'Bv256'(src1, src2); +} + +procedure {:inline 1} $ModBv256(src1: bv256, src2: bv256) returns (dst: bv256) +{ + if (src2 == 0bv256) { + call $ExecFailureAbort(); + return; + } + dst := $Mod'Bv256'(src1, src2); +} + +procedure {:inline 1} $AndBv256(src1: bv256, src2: bv256) returns (dst: bv256) +{ + dst := $And'Bv256'(src1,src2); +} + +procedure {:inline 1} $OrBv256(src1: bv256, src2: bv256) returns (dst: bv256) +{ + dst := $Or'Bv256'(src1,src2); +} + +procedure {:inline 1} $XorBv256(src1: bv256, src2: bv256) returns (dst: bv256) +{ + dst := $Xor'Bv256'(src1,src2); +} + +procedure {:inline 1} $LtBv256(src1: bv256, src2: bv256) returns (dst: bool) +{ + dst := $Lt'Bv256'(src1,src2); +} + +procedure {:inline 1} $LeBv256(src1: bv256, src2: bv256) returns (dst: bool) +{ + dst := $Le'Bv256'(src1,src2); +} + +procedure {:inline 1} $GtBv256(src1: bv256, src2: bv256) returns (dst: bool) +{ + dst := $Gt'Bv256'(src1,src2); +} + +procedure {:inline 1} $GeBv256(src1: bv256, src2: bv256) returns (dst: bool) +{ + dst := $Ge'Bv256'(src1,src2); +} + +function $IsValid'bv256'(v: bv256): bool { + $Ge'Bv256'(v,0bv256) && $Le'Bv256'(v,115792089237316195423570985008687907853269984665640564039457584007913129639935bv256) +} + +function {:inline} $IsEqual'bv256'(x: bv256, y: bv256): bool { + x == y +} + +procedure {:inline 1} $int2bv256(src: int) returns (dst: bv256) +{ + if (src > 115792089237316195423570985008687907853269984665640564039457584007913129639935) { + call $ExecFailureAbort(); + return; + } + dst := $int2bv.256(src); +} + +procedure {:inline 1} $bv2int256(src: bv256) returns (dst: int) +{ + dst := $bv2int.256(src); +} + +function {:builtin "(_ int2bv 256)"} $int2bv.256(i: int) returns (bv256); +function {:builtin "bv2nat"} $bv2int.256(i: bv256) returns (int); + +type {:datatype} $Range; +function {:constructor} $Range(lb: int, ub: int): $Range; + +function {:inline} $IsValid'bool'(v: bool): bool { + true +} + +function $IsValid'u8'(v: int): bool { + v >= 0 && v <= $MAX_U8 +} + +function $IsValid'u16'(v: int): bool { + v >= 0 && v <= $MAX_U16 +} + +function $IsValid'u32'(v: int): bool { + v >= 0 && v <= $MAX_U32 +} + +function $IsValid'u64'(v: int): bool { + v >= 0 && v <= $MAX_U64 +} + +function $IsValid'u128'(v: int): bool { + v >= 0 && v <= $MAX_U128 +} + +function $IsValid'u256'(v: int): bool { + v >= 0 && v <= $MAX_U256 +} + +function $IsValid'num'(v: int): bool { + true +} + +function $IsValid'address'(v: int): bool { + // TODO: restrict max to representable addresses? + v >= 0 +} + +function {:inline} $IsValidRange(r: $Range): bool { + $IsValid'u64'(lb#$Range(r)) && $IsValid'u64'(ub#$Range(r)) +} + +// Intentionally not inlined so it serves as a trigger in quantifiers. +function $InRange(r: $Range, i: int): bool { + lb#$Range(r) <= i && i < ub#$Range(r) +} + + +function {:inline} $IsEqual'u8'(x: int, y: int): bool { + x == y +} + +function {:inline} $IsEqual'u16'(x: int, y: int): bool { + x == y +} + +function {:inline} $IsEqual'u32'(x: int, y: int): bool { + x == y +} + +function {:inline} $IsEqual'u64'(x: int, y: int): bool { + x == y +} + +function {:inline} $IsEqual'u128'(x: int, y: int): bool { + x == y +} + +function {:inline} $IsEqual'u256'(x: int, y: int): bool { + x == y +} + +function {:inline} $IsEqual'num'(x: int, y: int): bool { + x == y +} + +function {:inline} $IsEqual'address'(x: int, y: int): bool { + x == y +} + +function {:inline} $IsEqual'bool'(x: bool, y: bool): bool { + x == y +} + +// ============================================================================================ +// Memory + +type {:datatype} $Location; + +// A global resource location within the statically known resource type's memory, +// where `a` is an address. +function {:constructor} $Global(a: int): $Location; + +// A local location. `i` is the unique index of the local. +function {:constructor} $Local(i: int): $Location; + +// The location of a reference outside of the verification scope, for example, a `&mut` parameter +// of the function being verified. References with these locations don't need to be written back +// when mutation ends. +function {:constructor} $Param(i: int): $Location; + +// The location of an uninitialized mutation. Using this to make sure that the location +// will not be equal to any valid mutation locations, i.e., $Local, $Global, or $Param. +function {:constructor} $Uninitialized(): $Location; + +// A mutable reference which also carries its current value. Since mutable references +// are single threaded in Move, we can keep them together and treat them as a value +// during mutation until the point they are stored back to their original location. +type {:datatype} $Mutation _; +function {:constructor} $Mutation(l: $Location, p: Vec int, v: T): $Mutation T; + +// Representation of memory for a given type. +type {:datatype} $Memory _; +function {:constructor} $Memory(domain: [int]bool, contents: [int]T): $Memory T; + +function {:builtin "MapConst"} $ConstMemoryDomain(v: bool): [int]bool; +function {:builtin "MapConst"} $ConstMemoryContent(v: T): [int]T; +axiom $ConstMemoryDomain(false) == (lambda i: int :: false); +axiom $ConstMemoryDomain(true) == (lambda i: int :: true); + + +// Dereferences a mutation. +function {:inline} $Dereference(ref: $Mutation T): T { + v#$Mutation(ref) +} + +// Update the value of a mutation. +function {:inline} $UpdateMutation(m: $Mutation T, v: T): $Mutation T { + $Mutation(l#$Mutation(m), p#$Mutation(m), v) +} + +function {:inline} $ChildMutation(m: $Mutation T1, offset: int, v: T2): $Mutation T2 { + $Mutation(l#$Mutation(m), ExtendVec(p#$Mutation(m), offset), v) +} + +// Return true if two mutations share the location and path +function {:inline} $IsSameMutation(parent: $Mutation T1, child: $Mutation T2 ): bool { + l#$Mutation(parent) == l#$Mutation(child) && p#$Mutation(parent) == p#$Mutation(child) +} + +// Return true if the mutation is a parent of a child which was derived with the given edge offset. This +// is used to implement write-back choices. +function {:inline} $IsParentMutation(parent: $Mutation T1, edge: int, child: $Mutation T2 ): bool { + l#$Mutation(parent) == l#$Mutation(child) && + (var pp := p#$Mutation(parent); + (var cp := p#$Mutation(child); + (var pl := LenVec(pp); + (var cl := LenVec(cp); + cl == pl + 1 && + (forall i: int:: i >= 0 && i < pl ==> ReadVec(pp, i) == ReadVec(cp, i)) && + $EdgeMatches(ReadVec(cp, pl), edge) + )))) +} + +// Return true if the mutation is a parent of a child, for hyper edge. +function {:inline} $IsParentMutationHyper(parent: $Mutation T1, hyper_edge: Vec int, child: $Mutation T2 ): bool { + l#$Mutation(parent) == l#$Mutation(child) && + (var pp := p#$Mutation(parent); + (var cp := p#$Mutation(child); + (var pl := LenVec(pp); + (var cl := LenVec(cp); + (var el := LenVec(hyper_edge); + cl == pl + el && + (forall i: int:: i >= 0 && i < pl ==> ReadVec(pp, i) == ReadVec(cp, i)) && + (forall i: int:: i >= 0 && i < el ==> $EdgeMatches(ReadVec(cp, pl + i), ReadVec(hyper_edge, i))) + ))))) +} + +function {:inline} $EdgeMatches(edge: int, edge_pattern: int): bool { + edge_pattern == -1 // wildcard + || edge_pattern == edge +} + + + +function {:inline} $SameLocation(m1: $Mutation T1, m2: $Mutation T2): bool { + l#$Mutation(m1) == l#$Mutation(m2) +} + +function {:inline} $HasGlobalLocation(m: $Mutation T): bool { + is#$Global(l#$Mutation(m)) +} + +function {:inline} $HasLocalLocation(m: $Mutation T, idx: int): bool { + l#$Mutation(m) == $Local(idx) +} + +function {:inline} $GlobalLocationAddress(m: $Mutation T): int { + a#$Global(l#$Mutation(m)) +} + + + +// Tests whether resource exists. +function {:inline} $ResourceExists(m: $Memory T, addr: int): bool { + domain#$Memory(m)[addr] +} + +// Obtains Value of given resource. +function {:inline} $ResourceValue(m: $Memory T, addr: int): T { + contents#$Memory(m)[addr] +} + +// Update resource. +function {:inline} $ResourceUpdate(m: $Memory T, a: int, v: T): $Memory T { + $Memory(domain#$Memory(m)[a := true], contents#$Memory(m)[a := v]) +} + +// Remove resource. +function {:inline} $ResourceRemove(m: $Memory T, a: int): $Memory T { + $Memory(domain#$Memory(m)[a := false], contents#$Memory(m)) +} + +// Copies resource from memory s to m. +function {:inline} $ResourceCopy(m: $Memory T, s: $Memory T, a: int): $Memory T { + $Memory(domain#$Memory(m)[a := domain#$Memory(s)[a]], + contents#$Memory(m)[a := contents#$Memory(s)[a]]) +} + + + +// ============================================================================================ +// Abort Handling + +var $abort_flag: bool; +var $abort_code: int; + +function {:inline} $process_abort_code(code: int): int { + code +} + +const $EXEC_FAILURE_CODE: int; +axiom $EXEC_FAILURE_CODE == -1; + +// TODO(wrwg): currently we map aborts of native functions like those for vectors also to +// execution failure. This may need to be aligned with what the runtime actually does. + +procedure {:inline 1} $ExecFailureAbort() { + $abort_flag := true; + $abort_code := $EXEC_FAILURE_CODE; +} + +procedure {:inline 1} $Abort(code: int) { + $abort_flag := true; + $abort_code := code; +} + +function {:inline} $StdError(cat: int, reason: int): int { + reason * 256 + cat +} + +procedure {:inline 1} $InitVerification() { + // Set abort_flag to false, and havoc abort_code + $abort_flag := false; + havoc $abort_code; + // Initialize event store + call $InitEventStore(); +} + +// ============================================================================================ +// Instructions + + +procedure {:inline 1} $CastU8(src: int) returns (dst: int) +{ + if (src > $MAX_U8) { + call $ExecFailureAbort(); + return; + } + dst := src; +} + +procedure {:inline 1} $CastU16(src: int) returns (dst: int) +{ + if (src > $MAX_U16) { + call $ExecFailureAbort(); + return; + } + dst := src; +} + +procedure {:inline 1} $CastU32(src: int) returns (dst: int) +{ + if (src > $MAX_U32) { + call $ExecFailureAbort(); + return; + } + dst := src; +} + +procedure {:inline 1} $CastU64(src: int) returns (dst: int) +{ + if (src > $MAX_U64) { + call $ExecFailureAbort(); + return; + } + dst := src; +} + +procedure {:inline 1} $CastU128(src: int) returns (dst: int) +{ + if (src > $MAX_U128) { + call $ExecFailureAbort(); + return; + } + dst := src; +} + +procedure {:inline 1} $CastU256(src: int) returns (dst: int) +{ + if (src > $MAX_U256) { + call $ExecFailureAbort(); + return; + } + dst := src; +} + +procedure {:inline 1} $AddU8(src1: int, src2: int) returns (dst: int) +{ + if (src1 + src2 > $MAX_U8) { + call $ExecFailureAbort(); + return; + } + dst := src1 + src2; +} + +procedure {:inline 1} $AddU16(src1: int, src2: int) returns (dst: int) +{ + if (src1 + src2 > $MAX_U16) { + call $ExecFailureAbort(); + return; + } + dst := src1 + src2; +} + +procedure {:inline 1} $AddU16_unchecked(src1: int, src2: int) returns (dst: int) +{ + dst := src1 + src2; +} + +procedure {:inline 1} $AddU32(src1: int, src2: int) returns (dst: int) +{ + if (src1 + src2 > $MAX_U32) { + call $ExecFailureAbort(); + return; + } + dst := src1 + src2; +} + +procedure {:inline 1} $AddU32_unchecked(src1: int, src2: int) returns (dst: int) +{ + dst := src1 + src2; +} + +procedure {:inline 1} $AddU64(src1: int, src2: int) returns (dst: int) +{ + if (src1 + src2 > $MAX_U64) { + call $ExecFailureAbort(); + return; + } + dst := src1 + src2; +} + +procedure {:inline 1} $AddU64_unchecked(src1: int, src2: int) returns (dst: int) +{ + dst := src1 + src2; +} + +procedure {:inline 1} $AddU128(src1: int, src2: int) returns (dst: int) +{ + if (src1 + src2 > $MAX_U128) { + call $ExecFailureAbort(); + return; + } + dst := src1 + src2; +} + +procedure {:inline 1} $AddU128_unchecked(src1: int, src2: int) returns (dst: int) +{ + dst := src1 + src2; +} + +procedure {:inline 1} $AddU256(src1: int, src2: int) returns (dst: int) +{ + if (src1 + src2 > $MAX_U256) { + call $ExecFailureAbort(); + return; + } + dst := src1 + src2; +} + +procedure {:inline 1} $AddU256_unchecked(src1: int, src2: int) returns (dst: int) +{ + dst := src1 + src2; +} + +procedure {:inline 1} $Sub(src1: int, src2: int) returns (dst: int) +{ + if (src1 < src2) { + call $ExecFailureAbort(); + return; + } + dst := src1 - src2; +} + +// uninterpreted function to return an undefined value. +function $undefined_int(): int; + +// Recursive exponentiation function +// Undefined unless e >=0. $pow(0,0) is also undefined. +function $pow(n: int, e: int): int { + if n != 0 && e == 0 then 1 + else if e > 0 then n * $pow(n, e - 1) + else $undefined_int() +} + +function $shl(src1: int, p: int): int { + src1 * $pow(2, p) +} + +function $shlU8(src1: int, p: int): int { + (src1 * $pow(2, p)) mod 256 +} + +function $shlU16(src1: int, p: int): int { + (src1 * $pow(2, p)) mod 65536 +} + +function $shlU32(src1: int, p: int): int { + (src1 * $pow(2, p)) mod 4294967296 +} + +function $shlU64(src1: int, p: int): int { + (src1 * $pow(2, p)) mod 18446744073709551616 +} + +function $shlU128(src1: int, p: int): int { + (src1 * $pow(2, p)) mod 340282366920938463463374607431768211456 +} + +function $shlU256(src1: int, p: int): int { + (src1 * $pow(2, p)) mod 115792089237316195423570985008687907853269984665640564039457584007913129639936 +} + +function $shr(src1: int, p: int): int { + src1 div $pow(2, p) +} + +// We need to know the size of the destination in order to drop bits +// that have been shifted left more than that, so we have $ShlU8/16/32/64/128/256 +procedure {:inline 1} $ShlU8(src1: int, src2: int) returns (dst: int) +{ + var res: int; + // src2 is a u8 + assume src2 >= 0 && src2 < 256; + if (src2 >= 8) { + call $ExecFailureAbort(); + return; + } + dst := $shlU8(src1, src2); +} + +// Template for cast and shift operations of bitvector types + +procedure {:inline 1} $CastBv8to8(src: bv8) returns (dst: bv8) +{ + dst := src; +} + + +function $shlBv8From8(src1: bv8, src2: bv8) returns (bv8) +{ + $Shl'Bv8'(src1, src2) +} + +procedure {:inline 1} $ShlBv8From8(src1: bv8, src2: bv8) returns (dst: bv8) +{ + if ($Ge'Bv8'(src2, 8bv8)) { + call $ExecFailureAbort(); + return; + } + dst := $Shl'Bv8'(src1, src2); +} + +function $shrBv8From8(src1: bv8, src2: bv8) returns (bv8) +{ + $Shr'Bv8'(src1, src2) +} + +procedure {:inline 1} $ShrBv8From8(src1: bv8, src2: bv8) returns (dst: bv8) +{ + if ($Ge'Bv8'(src2, 8bv8)) { + call $ExecFailureAbort(); + return; + } + dst := $Shr'Bv8'(src1, src2); +} + +procedure {:inline 1} $CastBv16to8(src: bv16) returns (dst: bv8) +{ + if ($Gt'Bv16'(src, 255bv16)) { + call $ExecFailureAbort(); + return; + } + dst := src[8:0]; +} + + +function $shlBv8From16(src1: bv8, src2: bv16) returns (bv8) +{ + $Shl'Bv8'(src1, src2[8:0]) +} + +procedure {:inline 1} $ShlBv8From16(src1: bv8, src2: bv16) returns (dst: bv8) +{ + if ($Ge'Bv16'(src2, 8bv16)) { + call $ExecFailureAbort(); + return; + } + dst := $Shl'Bv8'(src1, src2[8:0]); +} + +function $shrBv8From16(src1: bv8, src2: bv16) returns (bv8) +{ + $Shr'Bv8'(src1, src2[8:0]) +} + +procedure {:inline 1} $ShrBv8From16(src1: bv8, src2: bv16) returns (dst: bv8) +{ + if ($Ge'Bv16'(src2, 8bv16)) { + call $ExecFailureAbort(); + return; + } + dst := $Shr'Bv8'(src1, src2[8:0]); +} + +procedure {:inline 1} $CastBv32to8(src: bv32) returns (dst: bv8) +{ + if ($Gt'Bv32'(src, 255bv32)) { + call $ExecFailureAbort(); + return; + } + dst := src[8:0]; +} + + +function $shlBv8From32(src1: bv8, src2: bv32) returns (bv8) +{ + $Shl'Bv8'(src1, src2[8:0]) +} + +procedure {:inline 1} $ShlBv8From32(src1: bv8, src2: bv32) returns (dst: bv8) +{ + if ($Ge'Bv32'(src2, 8bv32)) { + call $ExecFailureAbort(); + return; + } + dst := $Shl'Bv8'(src1, src2[8:0]); +} + +function $shrBv8From32(src1: bv8, src2: bv32) returns (bv8) +{ + $Shr'Bv8'(src1, src2[8:0]) +} + +procedure {:inline 1} $ShrBv8From32(src1: bv8, src2: bv32) returns (dst: bv8) +{ + if ($Ge'Bv32'(src2, 8bv32)) { + call $ExecFailureAbort(); + return; + } + dst := $Shr'Bv8'(src1, src2[8:0]); +} + +procedure {:inline 1} $CastBv64to8(src: bv64) returns (dst: bv8) +{ + if ($Gt'Bv64'(src, 255bv64)) { + call $ExecFailureAbort(); + return; + } + dst := src[8:0]; +} + + +function $shlBv8From64(src1: bv8, src2: bv64) returns (bv8) +{ + $Shl'Bv8'(src1, src2[8:0]) +} + +procedure {:inline 1} $ShlBv8From64(src1: bv8, src2: bv64) returns (dst: bv8) +{ + if ($Ge'Bv64'(src2, 8bv64)) { + call $ExecFailureAbort(); + return; + } + dst := $Shl'Bv8'(src1, src2[8:0]); +} + +function $shrBv8From64(src1: bv8, src2: bv64) returns (bv8) +{ + $Shr'Bv8'(src1, src2[8:0]) +} + +procedure {:inline 1} $ShrBv8From64(src1: bv8, src2: bv64) returns (dst: bv8) +{ + if ($Ge'Bv64'(src2, 8bv64)) { + call $ExecFailureAbort(); + return; + } + dst := $Shr'Bv8'(src1, src2[8:0]); +} + +procedure {:inline 1} $CastBv128to8(src: bv128) returns (dst: bv8) +{ + if ($Gt'Bv128'(src, 255bv128)) { + call $ExecFailureAbort(); + return; + } + dst := src[8:0]; +} + + +function $shlBv8From128(src1: bv8, src2: bv128) returns (bv8) +{ + $Shl'Bv8'(src1, src2[8:0]) +} + +procedure {:inline 1} $ShlBv8From128(src1: bv8, src2: bv128) returns (dst: bv8) +{ + if ($Ge'Bv128'(src2, 8bv128)) { + call $ExecFailureAbort(); + return; + } + dst := $Shl'Bv8'(src1, src2[8:0]); +} + +function $shrBv8From128(src1: bv8, src2: bv128) returns (bv8) +{ + $Shr'Bv8'(src1, src2[8:0]) +} + +procedure {:inline 1} $ShrBv8From128(src1: bv8, src2: bv128) returns (dst: bv8) +{ + if ($Ge'Bv128'(src2, 8bv128)) { + call $ExecFailureAbort(); + return; + } + dst := $Shr'Bv8'(src1, src2[8:0]); +} + +procedure {:inline 1} $CastBv256to8(src: bv256) returns (dst: bv8) +{ + if ($Gt'Bv256'(src, 255bv256)) { + call $ExecFailureAbort(); + return; + } + dst := src[8:0]; +} + + +function $shlBv8From256(src1: bv8, src2: bv256) returns (bv8) +{ + $Shl'Bv8'(src1, src2[8:0]) +} + +procedure {:inline 1} $ShlBv8From256(src1: bv8, src2: bv256) returns (dst: bv8) +{ + if ($Ge'Bv256'(src2, 8bv256)) { + call $ExecFailureAbort(); + return; + } + dst := $Shl'Bv8'(src1, src2[8:0]); +} + +function $shrBv8From256(src1: bv8, src2: bv256) returns (bv8) +{ + $Shr'Bv8'(src1, src2[8:0]) +} + +procedure {:inline 1} $ShrBv8From256(src1: bv8, src2: bv256) returns (dst: bv8) +{ + if ($Ge'Bv256'(src2, 8bv256)) { + call $ExecFailureAbort(); + return; + } + dst := $Shr'Bv8'(src1, src2[8:0]); +} + +procedure {:inline 1} $CastBv8to16(src: bv8) returns (dst: bv16) +{ + dst := 0bv8 ++ src; +} + + +function $shlBv16From8(src1: bv16, src2: bv8) returns (bv16) +{ + $Shl'Bv16'(src1, 0bv8 ++ src2) +} + +procedure {:inline 1} $ShlBv16From8(src1: bv16, src2: bv8) returns (dst: bv16) +{ + if ($Ge'Bv8'(src2, 16bv8)) { + call $ExecFailureAbort(); + return; + } + dst := $Shl'Bv16'(src1, 0bv8 ++ src2); +} + +function $shrBv16From8(src1: bv16, src2: bv8) returns (bv16) +{ + $Shr'Bv16'(src1, 0bv8 ++ src2) +} + +procedure {:inline 1} $ShrBv16From8(src1: bv16, src2: bv8) returns (dst: bv16) +{ + if ($Ge'Bv8'(src2, 16bv8)) { + call $ExecFailureAbort(); + return; + } + dst := $Shr'Bv16'(src1, 0bv8 ++ src2); +} + +procedure {:inline 1} $CastBv16to16(src: bv16) returns (dst: bv16) +{ + dst := src; +} + + +function $shlBv16From16(src1: bv16, src2: bv16) returns (bv16) +{ + $Shl'Bv16'(src1, src2) +} + +procedure {:inline 1} $ShlBv16From16(src1: bv16, src2: bv16) returns (dst: bv16) +{ + if ($Ge'Bv16'(src2, 16bv16)) { + call $ExecFailureAbort(); + return; + } + dst := $Shl'Bv16'(src1, src2); +} + +function $shrBv16From16(src1: bv16, src2: bv16) returns (bv16) +{ + $Shr'Bv16'(src1, src2) +} + +procedure {:inline 1} $ShrBv16From16(src1: bv16, src2: bv16) returns (dst: bv16) +{ + if ($Ge'Bv16'(src2, 16bv16)) { + call $ExecFailureAbort(); + return; + } + dst := $Shr'Bv16'(src1, src2); +} + +procedure {:inline 1} $CastBv32to16(src: bv32) returns (dst: bv16) +{ + if ($Gt'Bv32'(src, 65535bv32)) { + call $ExecFailureAbort(); + return; + } + dst := src[16:0]; +} + + +function $shlBv16From32(src1: bv16, src2: bv32) returns (bv16) +{ + $Shl'Bv16'(src1, src2[16:0]) +} + +procedure {:inline 1} $ShlBv16From32(src1: bv16, src2: bv32) returns (dst: bv16) +{ + if ($Ge'Bv32'(src2, 16bv32)) { + call $ExecFailureAbort(); + return; + } + dst := $Shl'Bv16'(src1, src2[16:0]); +} + +function $shrBv16From32(src1: bv16, src2: bv32) returns (bv16) +{ + $Shr'Bv16'(src1, src2[16:0]) +} + +procedure {:inline 1} $ShrBv16From32(src1: bv16, src2: bv32) returns (dst: bv16) +{ + if ($Ge'Bv32'(src2, 16bv32)) { + call $ExecFailureAbort(); + return; + } + dst := $Shr'Bv16'(src1, src2[16:0]); +} + +procedure {:inline 1} $CastBv64to16(src: bv64) returns (dst: bv16) +{ + if ($Gt'Bv64'(src, 65535bv64)) { + call $ExecFailureAbort(); + return; + } + dst := src[16:0]; +} + + +function $shlBv16From64(src1: bv16, src2: bv64) returns (bv16) +{ + $Shl'Bv16'(src1, src2[16:0]) +} + +procedure {:inline 1} $ShlBv16From64(src1: bv16, src2: bv64) returns (dst: bv16) +{ + if ($Ge'Bv64'(src2, 16bv64)) { + call $ExecFailureAbort(); + return; + } + dst := $Shl'Bv16'(src1, src2[16:0]); +} + +function $shrBv16From64(src1: bv16, src2: bv64) returns (bv16) +{ + $Shr'Bv16'(src1, src2[16:0]) +} + +procedure {:inline 1} $ShrBv16From64(src1: bv16, src2: bv64) returns (dst: bv16) +{ + if ($Ge'Bv64'(src2, 16bv64)) { + call $ExecFailureAbort(); + return; + } + dst := $Shr'Bv16'(src1, src2[16:0]); +} + +procedure {:inline 1} $CastBv128to16(src: bv128) returns (dst: bv16) +{ + if ($Gt'Bv128'(src, 65535bv128)) { + call $ExecFailureAbort(); + return; + } + dst := src[16:0]; +} + + +function $shlBv16From128(src1: bv16, src2: bv128) returns (bv16) +{ + $Shl'Bv16'(src1, src2[16:0]) +} + +procedure {:inline 1} $ShlBv16From128(src1: bv16, src2: bv128) returns (dst: bv16) +{ + if ($Ge'Bv128'(src2, 16bv128)) { + call $ExecFailureAbort(); + return; + } + dst := $Shl'Bv16'(src1, src2[16:0]); +} + +function $shrBv16From128(src1: bv16, src2: bv128) returns (bv16) +{ + $Shr'Bv16'(src1, src2[16:0]) +} + +procedure {:inline 1} $ShrBv16From128(src1: bv16, src2: bv128) returns (dst: bv16) +{ + if ($Ge'Bv128'(src2, 16bv128)) { + call $ExecFailureAbort(); + return; + } + dst := $Shr'Bv16'(src1, src2[16:0]); +} + +procedure {:inline 1} $CastBv256to16(src: bv256) returns (dst: bv16) +{ + if ($Gt'Bv256'(src, 65535bv256)) { + call $ExecFailureAbort(); + return; + } + dst := src[16:0]; +} + + +function $shlBv16From256(src1: bv16, src2: bv256) returns (bv16) +{ + $Shl'Bv16'(src1, src2[16:0]) +} + +procedure {:inline 1} $ShlBv16From256(src1: bv16, src2: bv256) returns (dst: bv16) +{ + if ($Ge'Bv256'(src2, 16bv256)) { + call $ExecFailureAbort(); + return; + } + dst := $Shl'Bv16'(src1, src2[16:0]); +} + +function $shrBv16From256(src1: bv16, src2: bv256) returns (bv16) +{ + $Shr'Bv16'(src1, src2[16:0]) +} + +procedure {:inline 1} $ShrBv16From256(src1: bv16, src2: bv256) returns (dst: bv16) +{ + if ($Ge'Bv256'(src2, 16bv256)) { + call $ExecFailureAbort(); + return; + } + dst := $Shr'Bv16'(src1, src2[16:0]); +} + +procedure {:inline 1} $CastBv8to32(src: bv8) returns (dst: bv32) +{ + dst := 0bv24 ++ src; +} + + +function $shlBv32From8(src1: bv32, src2: bv8) returns (bv32) +{ + $Shl'Bv32'(src1, 0bv24 ++ src2) +} + +procedure {:inline 1} $ShlBv32From8(src1: bv32, src2: bv8) returns (dst: bv32) +{ + if ($Ge'Bv8'(src2, 32bv8)) { + call $ExecFailureAbort(); + return; + } + dst := $Shl'Bv32'(src1, 0bv24 ++ src2); +} + +function $shrBv32From8(src1: bv32, src2: bv8) returns (bv32) +{ + $Shr'Bv32'(src1, 0bv24 ++ src2) +} + +procedure {:inline 1} $ShrBv32From8(src1: bv32, src2: bv8) returns (dst: bv32) +{ + if ($Ge'Bv8'(src2, 32bv8)) { + call $ExecFailureAbort(); + return; + } + dst := $Shr'Bv32'(src1, 0bv24 ++ src2); +} + +procedure {:inline 1} $CastBv16to32(src: bv16) returns (dst: bv32) +{ + dst := 0bv16 ++ src; +} + + +function $shlBv32From16(src1: bv32, src2: bv16) returns (bv32) +{ + $Shl'Bv32'(src1, 0bv16 ++ src2) +} + +procedure {:inline 1} $ShlBv32From16(src1: bv32, src2: bv16) returns (dst: bv32) +{ + if ($Ge'Bv16'(src2, 32bv16)) { + call $ExecFailureAbort(); + return; + } + dst := $Shl'Bv32'(src1, 0bv16 ++ src2); +} + +function $shrBv32From16(src1: bv32, src2: bv16) returns (bv32) +{ + $Shr'Bv32'(src1, 0bv16 ++ src2) +} + +procedure {:inline 1} $ShrBv32From16(src1: bv32, src2: bv16) returns (dst: bv32) +{ + if ($Ge'Bv16'(src2, 32bv16)) { + call $ExecFailureAbort(); + return; + } + dst := $Shr'Bv32'(src1, 0bv16 ++ src2); +} + +procedure {:inline 1} $CastBv32to32(src: bv32) returns (dst: bv32) +{ + dst := src; +} + + +function $shlBv32From32(src1: bv32, src2: bv32) returns (bv32) +{ + $Shl'Bv32'(src1, src2) +} + +procedure {:inline 1} $ShlBv32From32(src1: bv32, src2: bv32) returns (dst: bv32) +{ + if ($Ge'Bv32'(src2, 32bv32)) { + call $ExecFailureAbort(); + return; + } + dst := $Shl'Bv32'(src1, src2); +} + +function $shrBv32From32(src1: bv32, src2: bv32) returns (bv32) +{ + $Shr'Bv32'(src1, src2) +} + +procedure {:inline 1} $ShrBv32From32(src1: bv32, src2: bv32) returns (dst: bv32) +{ + if ($Ge'Bv32'(src2, 32bv32)) { + call $ExecFailureAbort(); + return; + } + dst := $Shr'Bv32'(src1, src2); +} + +procedure {:inline 1} $CastBv64to32(src: bv64) returns (dst: bv32) +{ + if ($Gt'Bv64'(src, 2147483647bv64)) { + call $ExecFailureAbort(); + return; + } + dst := src[32:0]; +} + + +function $shlBv32From64(src1: bv32, src2: bv64) returns (bv32) +{ + $Shl'Bv32'(src1, src2[32:0]) +} + +procedure {:inline 1} $ShlBv32From64(src1: bv32, src2: bv64) returns (dst: bv32) +{ + if ($Ge'Bv64'(src2, 32bv64)) { + call $ExecFailureAbort(); + return; + } + dst := $Shl'Bv32'(src1, src2[32:0]); +} + +function $shrBv32From64(src1: bv32, src2: bv64) returns (bv32) +{ + $Shr'Bv32'(src1, src2[32:0]) +} + +procedure {:inline 1} $ShrBv32From64(src1: bv32, src2: bv64) returns (dst: bv32) +{ + if ($Ge'Bv64'(src2, 32bv64)) { + call $ExecFailureAbort(); + return; + } + dst := $Shr'Bv32'(src1, src2[32:0]); +} + +procedure {:inline 1} $CastBv128to32(src: bv128) returns (dst: bv32) +{ + if ($Gt'Bv128'(src, 2147483647bv128)) { + call $ExecFailureAbort(); + return; + } + dst := src[32:0]; +} + + +function $shlBv32From128(src1: bv32, src2: bv128) returns (bv32) +{ + $Shl'Bv32'(src1, src2[32:0]) +} + +procedure {:inline 1} $ShlBv32From128(src1: bv32, src2: bv128) returns (dst: bv32) +{ + if ($Ge'Bv128'(src2, 32bv128)) { + call $ExecFailureAbort(); + return; + } + dst := $Shl'Bv32'(src1, src2[32:0]); +} + +function $shrBv32From128(src1: bv32, src2: bv128) returns (bv32) +{ + $Shr'Bv32'(src1, src2[32:0]) +} + +procedure {:inline 1} $ShrBv32From128(src1: bv32, src2: bv128) returns (dst: bv32) +{ + if ($Ge'Bv128'(src2, 32bv128)) { + call $ExecFailureAbort(); + return; + } + dst := $Shr'Bv32'(src1, src2[32:0]); +} + +procedure {:inline 1} $CastBv256to32(src: bv256) returns (dst: bv32) +{ + if ($Gt'Bv256'(src, 2147483647bv256)) { + call $ExecFailureAbort(); + return; + } + dst := src[32:0]; +} + + +function $shlBv32From256(src1: bv32, src2: bv256) returns (bv32) +{ + $Shl'Bv32'(src1, src2[32:0]) +} + +procedure {:inline 1} $ShlBv32From256(src1: bv32, src2: bv256) returns (dst: bv32) +{ + if ($Ge'Bv256'(src2, 32bv256)) { + call $ExecFailureAbort(); + return; + } + dst := $Shl'Bv32'(src1, src2[32:0]); +} + +function $shrBv32From256(src1: bv32, src2: bv256) returns (bv32) +{ + $Shr'Bv32'(src1, src2[32:0]) +} + +procedure {:inline 1} $ShrBv32From256(src1: bv32, src2: bv256) returns (dst: bv32) +{ + if ($Ge'Bv256'(src2, 32bv256)) { + call $ExecFailureAbort(); + return; + } + dst := $Shr'Bv32'(src1, src2[32:0]); +} + +procedure {:inline 1} $CastBv8to64(src: bv8) returns (dst: bv64) +{ + dst := 0bv56 ++ src; +} + + +function $shlBv64From8(src1: bv64, src2: bv8) returns (bv64) +{ + $Shl'Bv64'(src1, 0bv56 ++ src2) +} + +procedure {:inline 1} $ShlBv64From8(src1: bv64, src2: bv8) returns (dst: bv64) +{ + if ($Ge'Bv8'(src2, 64bv8)) { + call $ExecFailureAbort(); + return; + } + dst := $Shl'Bv64'(src1, 0bv56 ++ src2); +} + +function $shrBv64From8(src1: bv64, src2: bv8) returns (bv64) +{ + $Shr'Bv64'(src1, 0bv56 ++ src2) +} + +procedure {:inline 1} $ShrBv64From8(src1: bv64, src2: bv8) returns (dst: bv64) +{ + if ($Ge'Bv8'(src2, 64bv8)) { + call $ExecFailureAbort(); + return; + } + dst := $Shr'Bv64'(src1, 0bv56 ++ src2); +} + +procedure {:inline 1} $CastBv16to64(src: bv16) returns (dst: bv64) +{ + dst := 0bv48 ++ src; +} + + +function $shlBv64From16(src1: bv64, src2: bv16) returns (bv64) +{ + $Shl'Bv64'(src1, 0bv48 ++ src2) +} + +procedure {:inline 1} $ShlBv64From16(src1: bv64, src2: bv16) returns (dst: bv64) +{ + if ($Ge'Bv16'(src2, 64bv16)) { + call $ExecFailureAbort(); + return; + } + dst := $Shl'Bv64'(src1, 0bv48 ++ src2); +} + +function $shrBv64From16(src1: bv64, src2: bv16) returns (bv64) +{ + $Shr'Bv64'(src1, 0bv48 ++ src2) +} + +procedure {:inline 1} $ShrBv64From16(src1: bv64, src2: bv16) returns (dst: bv64) +{ + if ($Ge'Bv16'(src2, 64bv16)) { + call $ExecFailureAbort(); + return; + } + dst := $Shr'Bv64'(src1, 0bv48 ++ src2); +} + +procedure {:inline 1} $CastBv32to64(src: bv32) returns (dst: bv64) +{ + dst := 0bv32 ++ src; +} + + +function $shlBv64From32(src1: bv64, src2: bv32) returns (bv64) +{ + $Shl'Bv64'(src1, 0bv32 ++ src2) +} + +procedure {:inline 1} $ShlBv64From32(src1: bv64, src2: bv32) returns (dst: bv64) +{ + if ($Ge'Bv32'(src2, 64bv32)) { + call $ExecFailureAbort(); + return; + } + dst := $Shl'Bv64'(src1, 0bv32 ++ src2); +} + +function $shrBv64From32(src1: bv64, src2: bv32) returns (bv64) +{ + $Shr'Bv64'(src1, 0bv32 ++ src2) +} + +procedure {:inline 1} $ShrBv64From32(src1: bv64, src2: bv32) returns (dst: bv64) +{ + if ($Ge'Bv32'(src2, 64bv32)) { + call $ExecFailureAbort(); + return; + } + dst := $Shr'Bv64'(src1, 0bv32 ++ src2); +} + +procedure {:inline 1} $CastBv64to64(src: bv64) returns (dst: bv64) +{ + dst := src; +} + + +function $shlBv64From64(src1: bv64, src2: bv64) returns (bv64) +{ + $Shl'Bv64'(src1, src2) +} + +procedure {:inline 1} $ShlBv64From64(src1: bv64, src2: bv64) returns (dst: bv64) +{ + if ($Ge'Bv64'(src2, 64bv64)) { + call $ExecFailureAbort(); + return; + } + dst := $Shl'Bv64'(src1, src2); +} + +function $shrBv64From64(src1: bv64, src2: bv64) returns (bv64) +{ + $Shr'Bv64'(src1, src2) +} + +procedure {:inline 1} $ShrBv64From64(src1: bv64, src2: bv64) returns (dst: bv64) +{ + if ($Ge'Bv64'(src2, 64bv64)) { + call $ExecFailureAbort(); + return; + } + dst := $Shr'Bv64'(src1, src2); +} + +procedure {:inline 1} $CastBv128to64(src: bv128) returns (dst: bv64) +{ + if ($Gt'Bv128'(src, 18446744073709551615bv128)) { + call $ExecFailureAbort(); + return; + } + dst := src[64:0]; +} + + +function $shlBv64From128(src1: bv64, src2: bv128) returns (bv64) +{ + $Shl'Bv64'(src1, src2[64:0]) +} + +procedure {:inline 1} $ShlBv64From128(src1: bv64, src2: bv128) returns (dst: bv64) +{ + if ($Ge'Bv128'(src2, 64bv128)) { + call $ExecFailureAbort(); + return; + } + dst := $Shl'Bv64'(src1, src2[64:0]); +} + +function $shrBv64From128(src1: bv64, src2: bv128) returns (bv64) +{ + $Shr'Bv64'(src1, src2[64:0]) +} + +procedure {:inline 1} $ShrBv64From128(src1: bv64, src2: bv128) returns (dst: bv64) +{ + if ($Ge'Bv128'(src2, 64bv128)) { + call $ExecFailureAbort(); + return; + } + dst := $Shr'Bv64'(src1, src2[64:0]); +} + +procedure {:inline 1} $CastBv256to64(src: bv256) returns (dst: bv64) +{ + if ($Gt'Bv256'(src, 18446744073709551615bv256)) { + call $ExecFailureAbort(); + return; + } + dst := src[64:0]; +} + + +function $shlBv64From256(src1: bv64, src2: bv256) returns (bv64) +{ + $Shl'Bv64'(src1, src2[64:0]) +} + +procedure {:inline 1} $ShlBv64From256(src1: bv64, src2: bv256) returns (dst: bv64) +{ + if ($Ge'Bv256'(src2, 64bv256)) { + call $ExecFailureAbort(); + return; + } + dst := $Shl'Bv64'(src1, src2[64:0]); +} + +function $shrBv64From256(src1: bv64, src2: bv256) returns (bv64) +{ + $Shr'Bv64'(src1, src2[64:0]) +} + +procedure {:inline 1} $ShrBv64From256(src1: bv64, src2: bv256) returns (dst: bv64) +{ + if ($Ge'Bv256'(src2, 64bv256)) { + call $ExecFailureAbort(); + return; + } + dst := $Shr'Bv64'(src1, src2[64:0]); +} + +procedure {:inline 1} $CastBv8to128(src: bv8) returns (dst: bv128) +{ + dst := 0bv120 ++ src; +} + + +function $shlBv128From8(src1: bv128, src2: bv8) returns (bv128) +{ + $Shl'Bv128'(src1, 0bv120 ++ src2) +} + +procedure {:inline 1} $ShlBv128From8(src1: bv128, src2: bv8) returns (dst: bv128) +{ + if ($Ge'Bv8'(src2, 128bv8)) { + call $ExecFailureAbort(); + return; + } + dst := $Shl'Bv128'(src1, 0bv120 ++ src2); +} + +function $shrBv128From8(src1: bv128, src2: bv8) returns (bv128) +{ + $Shr'Bv128'(src1, 0bv120 ++ src2) +} + +procedure {:inline 1} $ShrBv128From8(src1: bv128, src2: bv8) returns (dst: bv128) +{ + if ($Ge'Bv8'(src2, 128bv8)) { + call $ExecFailureAbort(); + return; + } + dst := $Shr'Bv128'(src1, 0bv120 ++ src2); +} + +procedure {:inline 1} $CastBv16to128(src: bv16) returns (dst: bv128) +{ + dst := 0bv112 ++ src; +} + + +function $shlBv128From16(src1: bv128, src2: bv16) returns (bv128) +{ + $Shl'Bv128'(src1, 0bv112 ++ src2) +} + +procedure {:inline 1} $ShlBv128From16(src1: bv128, src2: bv16) returns (dst: bv128) +{ + if ($Ge'Bv16'(src2, 128bv16)) { + call $ExecFailureAbort(); + return; + } + dst := $Shl'Bv128'(src1, 0bv112 ++ src2); +} + +function $shrBv128From16(src1: bv128, src2: bv16) returns (bv128) +{ + $Shr'Bv128'(src1, 0bv112 ++ src2) +} + +procedure {:inline 1} $ShrBv128From16(src1: bv128, src2: bv16) returns (dst: bv128) +{ + if ($Ge'Bv16'(src2, 128bv16)) { + call $ExecFailureAbort(); + return; + } + dst := $Shr'Bv128'(src1, 0bv112 ++ src2); +} + +procedure {:inline 1} $CastBv32to128(src: bv32) returns (dst: bv128) +{ + dst := 0bv96 ++ src; +} + + +function $shlBv128From32(src1: bv128, src2: bv32) returns (bv128) +{ + $Shl'Bv128'(src1, 0bv96 ++ src2) +} + +procedure {:inline 1} $ShlBv128From32(src1: bv128, src2: bv32) returns (dst: bv128) +{ + if ($Ge'Bv32'(src2, 128bv32)) { + call $ExecFailureAbort(); + return; + } + dst := $Shl'Bv128'(src1, 0bv96 ++ src2); +} + +function $shrBv128From32(src1: bv128, src2: bv32) returns (bv128) +{ + $Shr'Bv128'(src1, 0bv96 ++ src2) +} + +procedure {:inline 1} $ShrBv128From32(src1: bv128, src2: bv32) returns (dst: bv128) +{ + if ($Ge'Bv32'(src2, 128bv32)) { + call $ExecFailureAbort(); + return; + } + dst := $Shr'Bv128'(src1, 0bv96 ++ src2); +} + +procedure {:inline 1} $CastBv64to128(src: bv64) returns (dst: bv128) +{ + dst := 0bv64 ++ src; +} + + +function $shlBv128From64(src1: bv128, src2: bv64) returns (bv128) +{ + $Shl'Bv128'(src1, 0bv64 ++ src2) +} + +procedure {:inline 1} $ShlBv128From64(src1: bv128, src2: bv64) returns (dst: bv128) +{ + if ($Ge'Bv64'(src2, 128bv64)) { + call $ExecFailureAbort(); + return; + } + dst := $Shl'Bv128'(src1, 0bv64 ++ src2); +} + +function $shrBv128From64(src1: bv128, src2: bv64) returns (bv128) +{ + $Shr'Bv128'(src1, 0bv64 ++ src2) +} + +procedure {:inline 1} $ShrBv128From64(src1: bv128, src2: bv64) returns (dst: bv128) +{ + if ($Ge'Bv64'(src2, 128bv64)) { + call $ExecFailureAbort(); + return; + } + dst := $Shr'Bv128'(src1, 0bv64 ++ src2); +} + +procedure {:inline 1} $CastBv128to128(src: bv128) returns (dst: bv128) +{ + dst := src; +} + + +function $shlBv128From128(src1: bv128, src2: bv128) returns (bv128) +{ + $Shl'Bv128'(src1, src2) +} + +procedure {:inline 1} $ShlBv128From128(src1: bv128, src2: bv128) returns (dst: bv128) +{ + if ($Ge'Bv128'(src2, 128bv128)) { + call $ExecFailureAbort(); + return; + } + dst := $Shl'Bv128'(src1, src2); +} + +function $shrBv128From128(src1: bv128, src2: bv128) returns (bv128) +{ + $Shr'Bv128'(src1, src2) +} + +procedure {:inline 1} $ShrBv128From128(src1: bv128, src2: bv128) returns (dst: bv128) +{ + if ($Ge'Bv128'(src2, 128bv128)) { + call $ExecFailureAbort(); + return; + } + dst := $Shr'Bv128'(src1, src2); +} + +procedure {:inline 1} $CastBv256to128(src: bv256) returns (dst: bv128) +{ + if ($Gt'Bv256'(src, 340282366920938463463374607431768211455bv256)) { + call $ExecFailureAbort(); + return; + } + dst := src[128:0]; +} + + +function $shlBv128From256(src1: bv128, src2: bv256) returns (bv128) +{ + $Shl'Bv128'(src1, src2[128:0]) +} + +procedure {:inline 1} $ShlBv128From256(src1: bv128, src2: bv256) returns (dst: bv128) +{ + if ($Ge'Bv256'(src2, 128bv256)) { + call $ExecFailureAbort(); + return; + } + dst := $Shl'Bv128'(src1, src2[128:0]); +} + +function $shrBv128From256(src1: bv128, src2: bv256) returns (bv128) +{ + $Shr'Bv128'(src1, src2[128:0]) +} + +procedure {:inline 1} $ShrBv128From256(src1: bv128, src2: bv256) returns (dst: bv128) +{ + if ($Ge'Bv256'(src2, 128bv256)) { + call $ExecFailureAbort(); + return; + } + dst := $Shr'Bv128'(src1, src2[128:0]); +} + +procedure {:inline 1} $CastBv8to256(src: bv8) returns (dst: bv256) +{ + dst := 0bv248 ++ src; +} + + +function $shlBv256From8(src1: bv256, src2: bv8) returns (bv256) +{ + $Shl'Bv256'(src1, 0bv248 ++ src2) +} + +procedure {:inline 1} $ShlBv256From8(src1: bv256, src2: bv8) returns (dst: bv256) +{ + if ($Ge'Bv8'(src2, 256bv8)) { + call $ExecFailureAbort(); + return; + } + dst := $Shl'Bv256'(src1, 0bv248 ++ src2); +} + +function $shrBv256From8(src1: bv256, src2: bv8) returns (bv256) +{ + $Shr'Bv256'(src1, 0bv248 ++ src2) +} + +procedure {:inline 1} $ShrBv256From8(src1: bv256, src2: bv8) returns (dst: bv256) +{ + if ($Ge'Bv8'(src2, 256bv8)) { + call $ExecFailureAbort(); + return; + } + dst := $Shr'Bv256'(src1, 0bv248 ++ src2); +} + +procedure {:inline 1} $CastBv16to256(src: bv16) returns (dst: bv256) +{ + dst := 0bv240 ++ src; +} + + +function $shlBv256From16(src1: bv256, src2: bv16) returns (bv256) +{ + $Shl'Bv256'(src1, 0bv240 ++ src2) +} + +procedure {:inline 1} $ShlBv256From16(src1: bv256, src2: bv16) returns (dst: bv256) +{ + if ($Ge'Bv16'(src2, 256bv16)) { + call $ExecFailureAbort(); + return; + } + dst := $Shl'Bv256'(src1, 0bv240 ++ src2); +} + +function $shrBv256From16(src1: bv256, src2: bv16) returns (bv256) +{ + $Shr'Bv256'(src1, 0bv240 ++ src2) +} + +procedure {:inline 1} $ShrBv256From16(src1: bv256, src2: bv16) returns (dst: bv256) +{ + if ($Ge'Bv16'(src2, 256bv16)) { + call $ExecFailureAbort(); + return; + } + dst := $Shr'Bv256'(src1, 0bv240 ++ src2); +} + +procedure {:inline 1} $CastBv32to256(src: bv32) returns (dst: bv256) +{ + dst := 0bv224 ++ src; +} + + +function $shlBv256From32(src1: bv256, src2: bv32) returns (bv256) +{ + $Shl'Bv256'(src1, 0bv224 ++ src2) +} + +procedure {:inline 1} $ShlBv256From32(src1: bv256, src2: bv32) returns (dst: bv256) +{ + if ($Ge'Bv32'(src2, 256bv32)) { + call $ExecFailureAbort(); + return; + } + dst := $Shl'Bv256'(src1, 0bv224 ++ src2); +} + +function $shrBv256From32(src1: bv256, src2: bv32) returns (bv256) +{ + $Shr'Bv256'(src1, 0bv224 ++ src2) +} + +procedure {:inline 1} $ShrBv256From32(src1: bv256, src2: bv32) returns (dst: bv256) +{ + if ($Ge'Bv32'(src2, 256bv32)) { + call $ExecFailureAbort(); + return; + } + dst := $Shr'Bv256'(src1, 0bv224 ++ src2); +} + +procedure {:inline 1} $CastBv64to256(src: bv64) returns (dst: bv256) +{ + dst := 0bv192 ++ src; +} + + +function $shlBv256From64(src1: bv256, src2: bv64) returns (bv256) +{ + $Shl'Bv256'(src1, 0bv192 ++ src2) +} + +procedure {:inline 1} $ShlBv256From64(src1: bv256, src2: bv64) returns (dst: bv256) +{ + if ($Ge'Bv64'(src2, 256bv64)) { + call $ExecFailureAbort(); + return; + } + dst := $Shl'Bv256'(src1, 0bv192 ++ src2); +} + +function $shrBv256From64(src1: bv256, src2: bv64) returns (bv256) +{ + $Shr'Bv256'(src1, 0bv192 ++ src2) +} + +procedure {:inline 1} $ShrBv256From64(src1: bv256, src2: bv64) returns (dst: bv256) +{ + if ($Ge'Bv64'(src2, 256bv64)) { + call $ExecFailureAbort(); + return; + } + dst := $Shr'Bv256'(src1, 0bv192 ++ src2); +} + +procedure {:inline 1} $CastBv128to256(src: bv128) returns (dst: bv256) +{ + dst := 0bv128 ++ src; +} + + +function $shlBv256From128(src1: bv256, src2: bv128) returns (bv256) +{ + $Shl'Bv256'(src1, 0bv128 ++ src2) +} + +procedure {:inline 1} $ShlBv256From128(src1: bv256, src2: bv128) returns (dst: bv256) +{ + if ($Ge'Bv128'(src2, 256bv128)) { + call $ExecFailureAbort(); + return; + } + dst := $Shl'Bv256'(src1, 0bv128 ++ src2); +} + +function $shrBv256From128(src1: bv256, src2: bv128) returns (bv256) +{ + $Shr'Bv256'(src1, 0bv128 ++ src2) +} + +procedure {:inline 1} $ShrBv256From128(src1: bv256, src2: bv128) returns (dst: bv256) +{ + if ($Ge'Bv128'(src2, 256bv128)) { + call $ExecFailureAbort(); + return; + } + dst := $Shr'Bv256'(src1, 0bv128 ++ src2); +} + +procedure {:inline 1} $CastBv256to256(src: bv256) returns (dst: bv256) +{ + dst := src; +} + + +function $shlBv256From256(src1: bv256, src2: bv256) returns (bv256) +{ + $Shl'Bv256'(src1, src2) +} + +procedure {:inline 1} $ShlBv256From256(src1: bv256, src2: bv256) returns (dst: bv256) +{ + if ($Ge'Bv256'(src2, 256bv256)) { + call $ExecFailureAbort(); + return; + } + dst := $Shl'Bv256'(src1, src2); +} + +function $shrBv256From256(src1: bv256, src2: bv256) returns (bv256) +{ + $Shr'Bv256'(src1, src2) +} + +procedure {:inline 1} $ShrBv256From256(src1: bv256, src2: bv256) returns (dst: bv256) +{ + if ($Ge'Bv256'(src2, 256bv256)) { + call $ExecFailureAbort(); + return; + } + dst := $Shr'Bv256'(src1, src2); +} + +procedure {:inline 1} $ShlU16(src1: int, src2: int) returns (dst: int) +{ + var res: int; + // src2 is a u8 + assume src2 >= 0 && src2 < 256; + if (src2 >= 16) { + call $ExecFailureAbort(); + return; + } + dst := $shlU16(src1, src2); +} + +procedure {:inline 1} $ShlU32(src1: int, src2: int) returns (dst: int) +{ + var res: int; + // src2 is a u8 + assume src2 >= 0 && src2 < 256; + if (src2 >= 32) { + call $ExecFailureAbort(); + return; + } + dst := $shlU32(src1, src2); +} + +procedure {:inline 1} $ShlU64(src1: int, src2: int) returns (dst: int) +{ + var res: int; + // src2 is a u8 + assume src2 >= 0 && src2 < 256; + if (src2 >= 64) { + call $ExecFailureAbort(); + return; + } + dst := $shlU64(src1, src2); +} + +procedure {:inline 1} $ShlU128(src1: int, src2: int) returns (dst: int) +{ + var res: int; + // src2 is a u8 + assume src2 >= 0 && src2 < 256; + if (src2 >= 128) { + call $ExecFailureAbort(); + return; + } + dst := $shlU128(src1, src2); +} + +procedure {:inline 1} $ShlU256(src1: int, src2: int) returns (dst: int) +{ + var res: int; + // src2 is a u8 + assume src2 >= 0 && src2 < 256; + dst := $shlU256(src1, src2); +} + +procedure {:inline 1} $Shr(src1: int, src2: int) returns (dst: int) +{ + var res: int; + // src2 is a u8 + assume src2 >= 0 && src2 < 256; + dst := $shr(src1, src2); +} + +procedure {:inline 1} $ShrU8(src1: int, src2: int) returns (dst: int) +{ + var res: int; + // src2 is a u8 + assume src2 >= 0 && src2 < 256; + if (src2 >= 8) { + call $ExecFailureAbort(); + return; + } + dst := $shr(src1, src2); +} + +procedure {:inline 1} $ShrU16(src1: int, src2: int) returns (dst: int) +{ + var res: int; + // src2 is a u8 + assume src2 >= 0 && src2 < 256; + if (src2 >= 16) { + call $ExecFailureAbort(); + return; + } + dst := $shr(src1, src2); +} + +procedure {:inline 1} $ShrU32(src1: int, src2: int) returns (dst: int) +{ + var res: int; + // src2 is a u8 + assume src2 >= 0 && src2 < 256; + if (src2 >= 32) { + call $ExecFailureAbort(); + return; + } + dst := $shr(src1, src2); +} + +procedure {:inline 1} $ShrU64(src1: int, src2: int) returns (dst: int) +{ + var res: int; + // src2 is a u8 + assume src2 >= 0 && src2 < 256; + if (src2 >= 64) { + call $ExecFailureAbort(); + return; + } + dst := $shr(src1, src2); +} + +procedure {:inline 1} $ShrU128(src1: int, src2: int) returns (dst: int) +{ + var res: int; + // src2 is a u8 + assume src2 >= 0 && src2 < 256; + if (src2 >= 128) { + call $ExecFailureAbort(); + return; + } + dst := $shr(src1, src2); +} + +procedure {:inline 1} $ShrU256(src1: int, src2: int) returns (dst: int) +{ + var res: int; + // src2 is a u8 + assume src2 >= 0 && src2 < 256; + dst := $shr(src1, src2); +} + +procedure {:inline 1} $MulU8(src1: int, src2: int) returns (dst: int) +{ + if (src1 * src2 > $MAX_U8) { + call $ExecFailureAbort(); + return; + } + dst := src1 * src2; +} + +procedure {:inline 1} $MulU16(src1: int, src2: int) returns (dst: int) +{ + if (src1 * src2 > $MAX_U16) { + call $ExecFailureAbort(); + return; + } + dst := src1 * src2; +} + +procedure {:inline 1} $MulU32(src1: int, src2: int) returns (dst: int) +{ + if (src1 * src2 > $MAX_U32) { + call $ExecFailureAbort(); + return; + } + dst := src1 * src2; +} + +procedure {:inline 1} $MulU64(src1: int, src2: int) returns (dst: int) +{ + if (src1 * src2 > $MAX_U64) { + call $ExecFailureAbort(); + return; + } + dst := src1 * src2; +} + +procedure {:inline 1} $MulU128(src1: int, src2: int) returns (dst: int) +{ + if (src1 * src2 > $MAX_U128) { + call $ExecFailureAbort(); + return; + } + dst := src1 * src2; +} + +procedure {:inline 1} $MulU256(src1: int, src2: int) returns (dst: int) +{ + if (src1 * src2 > $MAX_U256) { + call $ExecFailureAbort(); + return; + } + dst := src1 * src2; +} + +procedure {:inline 1} $Div(src1: int, src2: int) returns (dst: int) +{ + if (src2 == 0) { + call $ExecFailureAbort(); + return; + } + dst := src1 div src2; +} + +procedure {:inline 1} $Mod(src1: int, src2: int) returns (dst: int) +{ + if (src2 == 0) { + call $ExecFailureAbort(); + return; + } + dst := src1 mod src2; +} + +procedure {:inline 1} $ArithBinaryUnimplemented(src1: int, src2: int) returns (dst: int); + +procedure {:inline 1} $Lt(src1: int, src2: int) returns (dst: bool) +{ + dst := src1 < src2; +} + +procedure {:inline 1} $Gt(src1: int, src2: int) returns (dst: bool) +{ + dst := src1 > src2; +} + +procedure {:inline 1} $Le(src1: int, src2: int) returns (dst: bool) +{ + dst := src1 <= src2; +} + +procedure {:inline 1} $Ge(src1: int, src2: int) returns (dst: bool) +{ + dst := src1 >= src2; +} + +procedure {:inline 1} $And(src1: bool, src2: bool) returns (dst: bool) +{ + dst := src1 && src2; +} + +procedure {:inline 1} $Or(src1: bool, src2: bool) returns (dst: bool) +{ + dst := src1 || src2; +} + +procedure {:inline 1} $Not(src: bool) returns (dst: bool) +{ + dst := !src; +} + +// Pack and Unpack are auto-generated for each type T + + +// ================================================================================== +// Native Vector + +function {:inline} $SliceVecByRange(v: Vec T, r: $Range): Vec T { + SliceVec(v, lb#$Range(r), ub#$Range(r)) +} + +// ---------------------------------------------------------------------------------- +// Native Vector implementation for element type `#0` + +// Not inlined. It appears faster this way. +function $IsEqual'vec'#0''(v1: Vec (#0), v2: Vec (#0)): bool { + LenVec(v1) == LenVec(v2) && + (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'#0'(ReadVec(v1, i), ReadVec(v2, i))) +} + +// Not inlined. +function $IsPrefix'vec'#0''(v: Vec (#0), prefix: Vec (#0)): bool { + LenVec(v) >= LenVec(prefix) && + (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'#0'(ReadVec(v, i), ReadVec(prefix, i))) +} + +// Not inlined. +function $IsSuffix'vec'#0''(v: Vec (#0), suffix: Vec (#0)): bool { + LenVec(v) >= LenVec(suffix) && + (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'#0'(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) +} + +// Not inlined. +function $IsValid'vec'#0''(v: Vec (#0)): bool { + $IsValid'u64'(LenVec(v)) && + (forall i: int:: InRangeVec(v, i) ==> $IsValid'#0'(ReadVec(v, i))) +} + + +function {:inline} $ContainsVec'#0'(v: Vec (#0), e: #0): bool { + (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'#0'(ReadVec(v, i), e)) +} + +function $IndexOfVec'#0'(v: Vec (#0), e: #0): int; +axiom (forall v: Vec (#0), e: #0:: {$IndexOfVec'#0'(v, e)} + (var i := $IndexOfVec'#0'(v, e); + if (!$ContainsVec'#0'(v, e)) then i == -1 + else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'#0'(ReadVec(v, i), e) && + (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'#0'(ReadVec(v, j), e)))); + + +function {:inline} $RangeVec'#0'(v: Vec (#0)): $Range { + $Range(0, LenVec(v)) +} + + +function {:inline} $EmptyVec'#0'(): Vec (#0) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_empty'#0'() returns (v: Vec (#0)) { + v := EmptyVec(); +} + +function {:inline} $1_vector_$empty'#0'(): Vec (#0) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_is_empty'#0'(v: Vec (#0)) returns (b: bool) { + b := IsEmptyVec(v); +} + +procedure {:inline 1} $1_vector_push_back'#0'(m: $Mutation (Vec (#0)), val: #0) returns (m': $Mutation (Vec (#0))) { + m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); +} + +function {:inline} $1_vector_$push_back'#0'(v: Vec (#0), val: #0): Vec (#0) { + ExtendVec(v, val) +} + +procedure {:inline 1} $1_vector_pop_back'#0'(m: $Mutation (Vec (#0))) returns (e: #0, m': $Mutation (Vec (#0))) { + var v: Vec (#0); + var len: int; + v := $Dereference(m); + len := LenVec(v); + if (len == 0) { + call $ExecFailureAbort(); + return; + } + e := ReadVec(v, len-1); + m' := $UpdateMutation(m, RemoveVec(v)); +} + +procedure {:inline 1} $1_vector_append'#0'(m: $Mutation (Vec (#0)), other: Vec (#0)) returns (m': $Mutation (Vec (#0))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), other)); +} + +procedure {:inline 1} $1_vector_reverse'#0'(m: $Mutation (Vec (#0))) returns (m': $Mutation (Vec (#0))) { + m' := $UpdateMutation(m, ReverseVec($Dereference(m))); +} + +procedure {:inline 1} $1_vector_reverse_append'#0'(m: $Mutation (Vec (#0)), other: Vec (#0)) returns (m': $Mutation (Vec (#0))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), ReverseVec(other))); +} + +procedure {:inline 1} $1_vector_trim_reverse'#0'(m: $Mutation (Vec (#0)), new_len: int) returns (v: (Vec (#0)), m': $Mutation (Vec (#0))) { + var len: int; + v := $Dereference(m); + if (LenVec(v) < new_len) { + call $ExecFailureAbort(); + return; + } + v := SliceVec(v, new_len, LenVec(v)); + v := ReverseVec(v); + m' := $UpdateMutation(m, SliceVec($Dereference(m), 0, new_len)); +} + +procedure {:inline 1} $1_vector_trim'#0'(m: $Mutation (Vec (#0)), new_len: int) returns (v: (Vec (#0)), m': $Mutation (Vec (#0))) { + var len: int; + v := $Dereference(m); + if (LenVec(v) < new_len) { + call $ExecFailureAbort(); + return; + } + v := SliceVec(v, new_len, LenVec(v)); + m' := $UpdateMutation(m, SliceVec($Dereference(m), 0, new_len)); +} + +procedure {:inline 1} $1_vector_reverse_slice'#0'(m: $Mutation (Vec (#0)), left: int, right: int) returns (m': $Mutation (Vec (#0))) { + var left_vec: Vec (#0); + var mid_vec: Vec (#0); + var right_vec: Vec (#0); + var v: Vec (#0); + if (left > right) { + call $ExecFailureAbort(); + return; + } + if (left == right) { + m' := m; + return; + } + v := $Dereference(m); + if (!(right >= 0 && right <= LenVec(v))) { + call $ExecFailureAbort(); + return; + } + left_vec := SliceVec(v, 0, left); + right_vec := SliceVec(v, right, LenVec(v)); + mid_vec := ReverseVec(SliceVec(v, left, right)); + m' := $UpdateMutation(m, ConcatVec(left_vec, ConcatVec(mid_vec, right_vec))); +} + +procedure {:inline 1} $1_vector_rotate'#0'(m: $Mutation (Vec (#0)), rot: int) returns (n: int, m': $Mutation (Vec (#0))) { + var v: Vec (#0); + var len: int; + var left_vec: Vec (#0); + var right_vec: Vec (#0); + v := $Dereference(m); + if (!(rot >= 0 && rot <= LenVec(v))) { + call $ExecFailureAbort(); + return; + } + left_vec := SliceVec(v, 0, rot); + right_vec := SliceVec(v, rot, LenVec(v)); + m' := $UpdateMutation(m, ConcatVec(right_vec, left_vec)); + n := LenVec(v) - rot; +} + +procedure {:inline 1} $1_vector_rotate_slice'#0'(m: $Mutation (Vec (#0)), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec (#0))) { + var left_vec: Vec (#0); + var mid_vec: Vec (#0); + var right_vec: Vec (#0); + var mid_left_vec: Vec (#0); + var mid_right_vec: Vec (#0); + var v: Vec (#0); + v := $Dereference(m); + if (!(left <= rot && rot <= right)) { + call $ExecFailureAbort(); + return; + } + if (!(right >= 0 && right <= LenVec(v))) { + call $ExecFailureAbort(); + return; + } + v := $Dereference(m); + left_vec := SliceVec(v, 0, left); + right_vec := SliceVec(v, right, LenVec(v)); + mid_left_vec := SliceVec(v, left, rot); + mid_right_vec := SliceVec(v, rot, right); + mid_vec := ConcatVec(mid_right_vec, mid_left_vec); + m' := $UpdateMutation(m, ConcatVec(left_vec, ConcatVec(mid_vec, right_vec))); + n := left + (right - rot); +} + +procedure {:inline 1} $1_vector_insert'#0'(m: $Mutation (Vec (#0)), i: int, e: #0) returns (m': $Mutation (Vec (#0))) { + var left_vec: Vec (#0); + var right_vec: Vec (#0); + var v: Vec (#0); + v := $Dereference(m); + if (!(i >= 0 && i <= LenVec(v))) { + call $ExecFailureAbort(); + return; + } + if (i == LenVec(v)) { + m' := $UpdateMutation(m, ExtendVec(v, e)); + } else { + left_vec := ExtendVec(SliceVec(v, 0, i), e); + right_vec := SliceVec(v, i, LenVec(v)); + m' := $UpdateMutation(m, ConcatVec(left_vec, right_vec)); + } +} + +procedure {:inline 1} $1_vector_length'#0'(v: Vec (#0)) returns (l: int) { + l := LenVec(v); +} + +function {:inline} $1_vector_$length'#0'(v: Vec (#0)): int { + LenVec(v) +} + +procedure {:inline 1} $1_vector_borrow'#0'(v: Vec (#0), i: int) returns (dst: #0) { + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + dst := ReadVec(v, i); +} + +function {:inline} $1_vector_$borrow'#0'(v: Vec (#0), i: int): #0 { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_borrow_mut'#0'(m: $Mutation (Vec (#0)), index: int) +returns (dst: $Mutation (#0), m': $Mutation (Vec (#0))) +{ + var v: Vec (#0); + v := $Dereference(m); + if (!InRangeVec(v, index)) { + call $ExecFailureAbort(); + return; + } + dst := $Mutation(l#$Mutation(m), ExtendVec(p#$Mutation(m), index), ReadVec(v, index)); + m' := m; +} + +function {:inline} $1_vector_$borrow_mut'#0'(v: Vec (#0), i: int): #0 { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_destroy_empty'#0'(v: Vec (#0)) { + if (!IsEmptyVec(v)) { + call $ExecFailureAbort(); + } +} + +procedure {:inline 1} $1_vector_swap'#0'(m: $Mutation (Vec (#0)), i: int, j: int) returns (m': $Mutation (Vec (#0))) +{ + var v: Vec (#0); + v := $Dereference(m); + if (!InRangeVec(v, i) || !InRangeVec(v, j)) { + call $ExecFailureAbort(); + return; + } + m' := $UpdateMutation(m, SwapVec(v, i, j)); +} + +function {:inline} $1_vector_$swap'#0'(v: Vec (#0), i: int, j: int): Vec (#0) { + SwapVec(v, i, j) +} + +procedure {:inline 1} $1_vector_remove'#0'(m: $Mutation (Vec (#0)), i: int) returns (e: #0, m': $Mutation (Vec (#0))) +{ + var v: Vec (#0); + + v := $Dereference(m); + + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + e := ReadVec(v, i); + m' := $UpdateMutation(m, RemoveAtVec(v, i)); +} + +procedure {:inline 1} $1_vector_swap_remove'#0'(m: $Mutation (Vec (#0)), i: int) returns (e: #0, m': $Mutation (Vec (#0))) +{ + var len: int; + var v: Vec (#0); + + v := $Dereference(m); + len := LenVec(v); + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + e := ReadVec(v, i); + m' := $UpdateMutation(m, RemoveVec(SwapVec(v, i, len-1))); +} + +procedure {:inline 1} $1_vector_contains'#0'(v: Vec (#0), e: #0) returns (res: bool) { + res := $ContainsVec'#0'(v, e); +} + +procedure {:inline 1} +$1_vector_index_of'#0'(v: Vec (#0), e: #0) returns (res1: bool, res2: int) { + res2 := $IndexOfVec'#0'(v, e); + if (res2 >= 0) { + res1 := true; + } else { + res1 := false; + res2 := 0; + } +} + + +// ---------------------------------------------------------------------------------- +// Native Vector implementation for element type `$1_aggregator_Aggregator` + +// Not inlined. It appears faster this way. +function $IsEqual'vec'$1_aggregator_Aggregator''(v1: Vec ($1_aggregator_Aggregator), v2: Vec ($1_aggregator_Aggregator)): bool { + LenVec(v1) == LenVec(v2) && + (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'$1_aggregator_Aggregator'(ReadVec(v1, i), ReadVec(v2, i))) +} + +// Not inlined. +function $IsPrefix'vec'$1_aggregator_Aggregator''(v: Vec ($1_aggregator_Aggregator), prefix: Vec ($1_aggregator_Aggregator)): bool { + LenVec(v) >= LenVec(prefix) && + (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'$1_aggregator_Aggregator'(ReadVec(v, i), ReadVec(prefix, i))) +} + +// Not inlined. +function $IsSuffix'vec'$1_aggregator_Aggregator''(v: Vec ($1_aggregator_Aggregator), suffix: Vec ($1_aggregator_Aggregator)): bool { + LenVec(v) >= LenVec(suffix) && + (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'$1_aggregator_Aggregator'(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) +} + +// Not inlined. +function $IsValid'vec'$1_aggregator_Aggregator''(v: Vec ($1_aggregator_Aggregator)): bool { + $IsValid'u64'(LenVec(v)) && + (forall i: int:: InRangeVec(v, i) ==> $IsValid'$1_aggregator_Aggregator'(ReadVec(v, i))) +} + + +function {:inline} $ContainsVec'$1_aggregator_Aggregator'(v: Vec ($1_aggregator_Aggregator), e: $1_aggregator_Aggregator): bool { + (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_aggregator_Aggregator'(ReadVec(v, i), e)) +} + +function $IndexOfVec'$1_aggregator_Aggregator'(v: Vec ($1_aggregator_Aggregator), e: $1_aggregator_Aggregator): int; +axiom (forall v: Vec ($1_aggregator_Aggregator), e: $1_aggregator_Aggregator:: {$IndexOfVec'$1_aggregator_Aggregator'(v, e)} + (var i := $IndexOfVec'$1_aggregator_Aggregator'(v, e); + if (!$ContainsVec'$1_aggregator_Aggregator'(v, e)) then i == -1 + else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_aggregator_Aggregator'(ReadVec(v, i), e) && + (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'$1_aggregator_Aggregator'(ReadVec(v, j), e)))); + + +function {:inline} $RangeVec'$1_aggregator_Aggregator'(v: Vec ($1_aggregator_Aggregator)): $Range { + $Range(0, LenVec(v)) +} + + +function {:inline} $EmptyVec'$1_aggregator_Aggregator'(): Vec ($1_aggregator_Aggregator) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_empty'$1_aggregator_Aggregator'() returns (v: Vec ($1_aggregator_Aggregator)) { + v := EmptyVec(); +} + +function {:inline} $1_vector_$empty'$1_aggregator_Aggregator'(): Vec ($1_aggregator_Aggregator) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_is_empty'$1_aggregator_Aggregator'(v: Vec ($1_aggregator_Aggregator)) returns (b: bool) { + b := IsEmptyVec(v); +} + +procedure {:inline 1} $1_vector_push_back'$1_aggregator_Aggregator'(m: $Mutation (Vec ($1_aggregator_Aggregator)), val: $1_aggregator_Aggregator) returns (m': $Mutation (Vec ($1_aggregator_Aggregator))) { + m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); +} + +function {:inline} $1_vector_$push_back'$1_aggregator_Aggregator'(v: Vec ($1_aggregator_Aggregator), val: $1_aggregator_Aggregator): Vec ($1_aggregator_Aggregator) { + ExtendVec(v, val) +} + +procedure {:inline 1} $1_vector_pop_back'$1_aggregator_Aggregator'(m: $Mutation (Vec ($1_aggregator_Aggregator))) returns (e: $1_aggregator_Aggregator, m': $Mutation (Vec ($1_aggregator_Aggregator))) { + var v: Vec ($1_aggregator_Aggregator); + var len: int; + v := $Dereference(m); + len := LenVec(v); + if (len == 0) { + call $ExecFailureAbort(); + return; + } + e := ReadVec(v, len-1); + m' := $UpdateMutation(m, RemoveVec(v)); +} + +procedure {:inline 1} $1_vector_append'$1_aggregator_Aggregator'(m: $Mutation (Vec ($1_aggregator_Aggregator)), other: Vec ($1_aggregator_Aggregator)) returns (m': $Mutation (Vec ($1_aggregator_Aggregator))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), other)); +} + +procedure {:inline 1} $1_vector_reverse'$1_aggregator_Aggregator'(m: $Mutation (Vec ($1_aggregator_Aggregator))) returns (m': $Mutation (Vec ($1_aggregator_Aggregator))) { + m' := $UpdateMutation(m, ReverseVec($Dereference(m))); +} + +procedure {:inline 1} $1_vector_reverse_append'$1_aggregator_Aggregator'(m: $Mutation (Vec ($1_aggregator_Aggregator)), other: Vec ($1_aggregator_Aggregator)) returns (m': $Mutation (Vec ($1_aggregator_Aggregator))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), ReverseVec(other))); +} + +procedure {:inline 1} $1_vector_trim_reverse'$1_aggregator_Aggregator'(m: $Mutation (Vec ($1_aggregator_Aggregator)), new_len: int) returns (v: (Vec ($1_aggregator_Aggregator)), m': $Mutation (Vec ($1_aggregator_Aggregator))) { + var len: int; + v := $Dereference(m); + if (LenVec(v) < new_len) { + call $ExecFailureAbort(); + return; + } + v := SliceVec(v, new_len, LenVec(v)); + v := ReverseVec(v); + m' := $UpdateMutation(m, SliceVec($Dereference(m), 0, new_len)); +} + +procedure {:inline 1} $1_vector_trim'$1_aggregator_Aggregator'(m: $Mutation (Vec ($1_aggregator_Aggregator)), new_len: int) returns (v: (Vec ($1_aggregator_Aggregator)), m': $Mutation (Vec ($1_aggregator_Aggregator))) { + var len: int; + v := $Dereference(m); + if (LenVec(v) < new_len) { + call $ExecFailureAbort(); + return; + } + v := SliceVec(v, new_len, LenVec(v)); + m' := $UpdateMutation(m, SliceVec($Dereference(m), 0, new_len)); +} + +procedure {:inline 1} $1_vector_reverse_slice'$1_aggregator_Aggregator'(m: $Mutation (Vec ($1_aggregator_Aggregator)), left: int, right: int) returns (m': $Mutation (Vec ($1_aggregator_Aggregator))) { + var left_vec: Vec ($1_aggregator_Aggregator); + var mid_vec: Vec ($1_aggregator_Aggregator); + var right_vec: Vec ($1_aggregator_Aggregator); + var v: Vec ($1_aggregator_Aggregator); + if (left > right) { + call $ExecFailureAbort(); + return; + } + if (left == right) { + m' := m; + return; + } + v := $Dereference(m); + if (!(right >= 0 && right <= LenVec(v))) { + call $ExecFailureAbort(); + return; + } + left_vec := SliceVec(v, 0, left); + right_vec := SliceVec(v, right, LenVec(v)); + mid_vec := ReverseVec(SliceVec(v, left, right)); + m' := $UpdateMutation(m, ConcatVec(left_vec, ConcatVec(mid_vec, right_vec))); +} + +procedure {:inline 1} $1_vector_rotate'$1_aggregator_Aggregator'(m: $Mutation (Vec ($1_aggregator_Aggregator)), rot: int) returns (n: int, m': $Mutation (Vec ($1_aggregator_Aggregator))) { + var v: Vec ($1_aggregator_Aggregator); + var len: int; + var left_vec: Vec ($1_aggregator_Aggregator); + var right_vec: Vec ($1_aggregator_Aggregator); + v := $Dereference(m); + if (!(rot >= 0 && rot <= LenVec(v))) { + call $ExecFailureAbort(); + return; + } + left_vec := SliceVec(v, 0, rot); + right_vec := SliceVec(v, rot, LenVec(v)); + m' := $UpdateMutation(m, ConcatVec(right_vec, left_vec)); + n := LenVec(v) - rot; +} + +procedure {:inline 1} $1_vector_rotate_slice'$1_aggregator_Aggregator'(m: $Mutation (Vec ($1_aggregator_Aggregator)), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec ($1_aggregator_Aggregator))) { + var left_vec: Vec ($1_aggregator_Aggregator); + var mid_vec: Vec ($1_aggregator_Aggregator); + var right_vec: Vec ($1_aggregator_Aggregator); + var mid_left_vec: Vec ($1_aggregator_Aggregator); + var mid_right_vec: Vec ($1_aggregator_Aggregator); + var v: Vec ($1_aggregator_Aggregator); + v := $Dereference(m); + if (!(left <= rot && rot <= right)) { + call $ExecFailureAbort(); + return; + } + if (!(right >= 0 && right <= LenVec(v))) { + call $ExecFailureAbort(); + return; + } + v := $Dereference(m); + left_vec := SliceVec(v, 0, left); + right_vec := SliceVec(v, right, LenVec(v)); + mid_left_vec := SliceVec(v, left, rot); + mid_right_vec := SliceVec(v, rot, right); + mid_vec := ConcatVec(mid_right_vec, mid_left_vec); + m' := $UpdateMutation(m, ConcatVec(left_vec, ConcatVec(mid_vec, right_vec))); + n := left + (right - rot); +} + +procedure {:inline 1} $1_vector_insert'$1_aggregator_Aggregator'(m: $Mutation (Vec ($1_aggregator_Aggregator)), i: int, e: $1_aggregator_Aggregator) returns (m': $Mutation (Vec ($1_aggregator_Aggregator))) { + var left_vec: Vec ($1_aggregator_Aggregator); + var right_vec: Vec ($1_aggregator_Aggregator); + var v: Vec ($1_aggregator_Aggregator); + v := $Dereference(m); + if (!(i >= 0 && i <= LenVec(v))) { + call $ExecFailureAbort(); + return; + } + if (i == LenVec(v)) { + m' := $UpdateMutation(m, ExtendVec(v, e)); + } else { + left_vec := ExtendVec(SliceVec(v, 0, i), e); + right_vec := SliceVec(v, i, LenVec(v)); + m' := $UpdateMutation(m, ConcatVec(left_vec, right_vec)); + } +} + +procedure {:inline 1} $1_vector_length'$1_aggregator_Aggregator'(v: Vec ($1_aggregator_Aggregator)) returns (l: int) { + l := LenVec(v); +} + +function {:inline} $1_vector_$length'$1_aggregator_Aggregator'(v: Vec ($1_aggregator_Aggregator)): int { + LenVec(v) +} + +procedure {:inline 1} $1_vector_borrow'$1_aggregator_Aggregator'(v: Vec ($1_aggregator_Aggregator), i: int) returns (dst: $1_aggregator_Aggregator) { + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + dst := ReadVec(v, i); +} + +function {:inline} $1_vector_$borrow'$1_aggregator_Aggregator'(v: Vec ($1_aggregator_Aggregator), i: int): $1_aggregator_Aggregator { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_borrow_mut'$1_aggregator_Aggregator'(m: $Mutation (Vec ($1_aggregator_Aggregator)), index: int) +returns (dst: $Mutation ($1_aggregator_Aggregator), m': $Mutation (Vec ($1_aggregator_Aggregator))) +{ + var v: Vec ($1_aggregator_Aggregator); + v := $Dereference(m); + if (!InRangeVec(v, index)) { + call $ExecFailureAbort(); + return; + } + dst := $Mutation(l#$Mutation(m), ExtendVec(p#$Mutation(m), index), ReadVec(v, index)); + m' := m; +} + +function {:inline} $1_vector_$borrow_mut'$1_aggregator_Aggregator'(v: Vec ($1_aggregator_Aggregator), i: int): $1_aggregator_Aggregator { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_destroy_empty'$1_aggregator_Aggregator'(v: Vec ($1_aggregator_Aggregator)) { + if (!IsEmptyVec(v)) { + call $ExecFailureAbort(); + } +} + +procedure {:inline 1} $1_vector_swap'$1_aggregator_Aggregator'(m: $Mutation (Vec ($1_aggregator_Aggregator)), i: int, j: int) returns (m': $Mutation (Vec ($1_aggregator_Aggregator))) +{ + var v: Vec ($1_aggregator_Aggregator); + v := $Dereference(m); + if (!InRangeVec(v, i) || !InRangeVec(v, j)) { + call $ExecFailureAbort(); + return; + } + m' := $UpdateMutation(m, SwapVec(v, i, j)); +} + +function {:inline} $1_vector_$swap'$1_aggregator_Aggregator'(v: Vec ($1_aggregator_Aggregator), i: int, j: int): Vec ($1_aggregator_Aggregator) { + SwapVec(v, i, j) +} + +procedure {:inline 1} $1_vector_remove'$1_aggregator_Aggregator'(m: $Mutation (Vec ($1_aggregator_Aggregator)), i: int) returns (e: $1_aggregator_Aggregator, m': $Mutation (Vec ($1_aggregator_Aggregator))) +{ + var v: Vec ($1_aggregator_Aggregator); + + v := $Dereference(m); + + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + e := ReadVec(v, i); + m' := $UpdateMutation(m, RemoveAtVec(v, i)); +} + +procedure {:inline 1} $1_vector_swap_remove'$1_aggregator_Aggregator'(m: $Mutation (Vec ($1_aggregator_Aggregator)), i: int) returns (e: $1_aggregator_Aggregator, m': $Mutation (Vec ($1_aggregator_Aggregator))) +{ + var len: int; + var v: Vec ($1_aggregator_Aggregator); + + v := $Dereference(m); + len := LenVec(v); + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + e := ReadVec(v, i); + m' := $UpdateMutation(m, RemoveVec(SwapVec(v, i, len-1))); +} + +procedure {:inline 1} $1_vector_contains'$1_aggregator_Aggregator'(v: Vec ($1_aggregator_Aggregator), e: $1_aggregator_Aggregator) returns (res: bool) { + res := $ContainsVec'$1_aggregator_Aggregator'(v, e); +} + +procedure {:inline 1} +$1_vector_index_of'$1_aggregator_Aggregator'(v: Vec ($1_aggregator_Aggregator), e: $1_aggregator_Aggregator) returns (res1: bool, res2: int) { + res2 := $IndexOfVec'$1_aggregator_Aggregator'(v, e); + if (res2 >= 0) { + res1 := true; + } else { + res1 := false; + res2 := 0; + } +} + + +// ---------------------------------------------------------------------------------- +// Native Vector implementation for element type `$1_fixed_point32_FixedPoint32` + +// Not inlined. It appears faster this way. +function $IsEqual'vec'$1_fixed_point32_FixedPoint32''(v1: Vec ($1_fixed_point32_FixedPoint32), v2: Vec ($1_fixed_point32_FixedPoint32)): bool { + LenVec(v1) == LenVec(v2) && + (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'$1_fixed_point32_FixedPoint32'(ReadVec(v1, i), ReadVec(v2, i))) +} + +// Not inlined. +function $IsPrefix'vec'$1_fixed_point32_FixedPoint32''(v: Vec ($1_fixed_point32_FixedPoint32), prefix: Vec ($1_fixed_point32_FixedPoint32)): bool { + LenVec(v) >= LenVec(prefix) && + (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'$1_fixed_point32_FixedPoint32'(ReadVec(v, i), ReadVec(prefix, i))) +} + +// Not inlined. +function $IsSuffix'vec'$1_fixed_point32_FixedPoint32''(v: Vec ($1_fixed_point32_FixedPoint32), suffix: Vec ($1_fixed_point32_FixedPoint32)): bool { + LenVec(v) >= LenVec(suffix) && + (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'$1_fixed_point32_FixedPoint32'(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) +} + +// Not inlined. +function $IsValid'vec'$1_fixed_point32_FixedPoint32''(v: Vec ($1_fixed_point32_FixedPoint32)): bool { + $IsValid'u64'(LenVec(v)) && + (forall i: int:: InRangeVec(v, i) ==> $IsValid'$1_fixed_point32_FixedPoint32'(ReadVec(v, i))) +} + + +function {:inline} $ContainsVec'$1_fixed_point32_FixedPoint32'(v: Vec ($1_fixed_point32_FixedPoint32), e: $1_fixed_point32_FixedPoint32): bool { + (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_fixed_point32_FixedPoint32'(ReadVec(v, i), e)) +} + +function $IndexOfVec'$1_fixed_point32_FixedPoint32'(v: Vec ($1_fixed_point32_FixedPoint32), e: $1_fixed_point32_FixedPoint32): int; +axiom (forall v: Vec ($1_fixed_point32_FixedPoint32), e: $1_fixed_point32_FixedPoint32:: {$IndexOfVec'$1_fixed_point32_FixedPoint32'(v, e)} + (var i := $IndexOfVec'$1_fixed_point32_FixedPoint32'(v, e); + if (!$ContainsVec'$1_fixed_point32_FixedPoint32'(v, e)) then i == -1 + else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_fixed_point32_FixedPoint32'(ReadVec(v, i), e) && + (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'$1_fixed_point32_FixedPoint32'(ReadVec(v, j), e)))); + + +function {:inline} $RangeVec'$1_fixed_point32_FixedPoint32'(v: Vec ($1_fixed_point32_FixedPoint32)): $Range { + $Range(0, LenVec(v)) +} + + +function {:inline} $EmptyVec'$1_fixed_point32_FixedPoint32'(): Vec ($1_fixed_point32_FixedPoint32) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_empty'$1_fixed_point32_FixedPoint32'() returns (v: Vec ($1_fixed_point32_FixedPoint32)) { + v := EmptyVec(); +} + +function {:inline} $1_vector_$empty'$1_fixed_point32_FixedPoint32'(): Vec ($1_fixed_point32_FixedPoint32) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_is_empty'$1_fixed_point32_FixedPoint32'(v: Vec ($1_fixed_point32_FixedPoint32)) returns (b: bool) { + b := IsEmptyVec(v); +} + +procedure {:inline 1} $1_vector_push_back'$1_fixed_point32_FixedPoint32'(m: $Mutation (Vec ($1_fixed_point32_FixedPoint32)), val: $1_fixed_point32_FixedPoint32) returns (m': $Mutation (Vec ($1_fixed_point32_FixedPoint32))) { + m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); +} + +function {:inline} $1_vector_$push_back'$1_fixed_point32_FixedPoint32'(v: Vec ($1_fixed_point32_FixedPoint32), val: $1_fixed_point32_FixedPoint32): Vec ($1_fixed_point32_FixedPoint32) { + ExtendVec(v, val) +} + +procedure {:inline 1} $1_vector_pop_back'$1_fixed_point32_FixedPoint32'(m: $Mutation (Vec ($1_fixed_point32_FixedPoint32))) returns (e: $1_fixed_point32_FixedPoint32, m': $Mutation (Vec ($1_fixed_point32_FixedPoint32))) { + var v: Vec ($1_fixed_point32_FixedPoint32); + var len: int; + v := $Dereference(m); + len := LenVec(v); + if (len == 0) { + call $ExecFailureAbort(); + return; + } + e := ReadVec(v, len-1); + m' := $UpdateMutation(m, RemoveVec(v)); +} + +procedure {:inline 1} $1_vector_append'$1_fixed_point32_FixedPoint32'(m: $Mutation (Vec ($1_fixed_point32_FixedPoint32)), other: Vec ($1_fixed_point32_FixedPoint32)) returns (m': $Mutation (Vec ($1_fixed_point32_FixedPoint32))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), other)); +} + +procedure {:inline 1} $1_vector_reverse'$1_fixed_point32_FixedPoint32'(m: $Mutation (Vec ($1_fixed_point32_FixedPoint32))) returns (m': $Mutation (Vec ($1_fixed_point32_FixedPoint32))) { + m' := $UpdateMutation(m, ReverseVec($Dereference(m))); +} + +procedure {:inline 1} $1_vector_reverse_append'$1_fixed_point32_FixedPoint32'(m: $Mutation (Vec ($1_fixed_point32_FixedPoint32)), other: Vec ($1_fixed_point32_FixedPoint32)) returns (m': $Mutation (Vec ($1_fixed_point32_FixedPoint32))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), ReverseVec(other))); +} + +procedure {:inline 1} $1_vector_trim_reverse'$1_fixed_point32_FixedPoint32'(m: $Mutation (Vec ($1_fixed_point32_FixedPoint32)), new_len: int) returns (v: (Vec ($1_fixed_point32_FixedPoint32)), m': $Mutation (Vec ($1_fixed_point32_FixedPoint32))) { + var len: int; + v := $Dereference(m); + if (LenVec(v) < new_len) { + call $ExecFailureAbort(); + return; + } + v := SliceVec(v, new_len, LenVec(v)); + v := ReverseVec(v); + m' := $UpdateMutation(m, SliceVec($Dereference(m), 0, new_len)); +} + +procedure {:inline 1} $1_vector_trim'$1_fixed_point32_FixedPoint32'(m: $Mutation (Vec ($1_fixed_point32_FixedPoint32)), new_len: int) returns (v: (Vec ($1_fixed_point32_FixedPoint32)), m': $Mutation (Vec ($1_fixed_point32_FixedPoint32))) { + var len: int; + v := $Dereference(m); + if (LenVec(v) < new_len) { + call $ExecFailureAbort(); + return; + } + v := SliceVec(v, new_len, LenVec(v)); + m' := $UpdateMutation(m, SliceVec($Dereference(m), 0, new_len)); +} + +procedure {:inline 1} $1_vector_reverse_slice'$1_fixed_point32_FixedPoint32'(m: $Mutation (Vec ($1_fixed_point32_FixedPoint32)), left: int, right: int) returns (m': $Mutation (Vec ($1_fixed_point32_FixedPoint32))) { + var left_vec: Vec ($1_fixed_point32_FixedPoint32); + var mid_vec: Vec ($1_fixed_point32_FixedPoint32); + var right_vec: Vec ($1_fixed_point32_FixedPoint32); + var v: Vec ($1_fixed_point32_FixedPoint32); + if (left > right) { + call $ExecFailureAbort(); + return; + } + if (left == right) { + m' := m; + return; + } + v := $Dereference(m); + if (!(right >= 0 && right <= LenVec(v))) { + call $ExecFailureAbort(); + return; + } + left_vec := SliceVec(v, 0, left); + right_vec := SliceVec(v, right, LenVec(v)); + mid_vec := ReverseVec(SliceVec(v, left, right)); + m' := $UpdateMutation(m, ConcatVec(left_vec, ConcatVec(mid_vec, right_vec))); +} + +procedure {:inline 1} $1_vector_rotate'$1_fixed_point32_FixedPoint32'(m: $Mutation (Vec ($1_fixed_point32_FixedPoint32)), rot: int) returns (n: int, m': $Mutation (Vec ($1_fixed_point32_FixedPoint32))) { + var v: Vec ($1_fixed_point32_FixedPoint32); + var len: int; + var left_vec: Vec ($1_fixed_point32_FixedPoint32); + var right_vec: Vec ($1_fixed_point32_FixedPoint32); + v := $Dereference(m); + if (!(rot >= 0 && rot <= LenVec(v))) { + call $ExecFailureAbort(); + return; + } + left_vec := SliceVec(v, 0, rot); + right_vec := SliceVec(v, rot, LenVec(v)); + m' := $UpdateMutation(m, ConcatVec(right_vec, left_vec)); + n := LenVec(v) - rot; +} + +procedure {:inline 1} $1_vector_rotate_slice'$1_fixed_point32_FixedPoint32'(m: $Mutation (Vec ($1_fixed_point32_FixedPoint32)), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec ($1_fixed_point32_FixedPoint32))) { + var left_vec: Vec ($1_fixed_point32_FixedPoint32); + var mid_vec: Vec ($1_fixed_point32_FixedPoint32); + var right_vec: Vec ($1_fixed_point32_FixedPoint32); + var mid_left_vec: Vec ($1_fixed_point32_FixedPoint32); + var mid_right_vec: Vec ($1_fixed_point32_FixedPoint32); + var v: Vec ($1_fixed_point32_FixedPoint32); + v := $Dereference(m); + if (!(left <= rot && rot <= right)) { + call $ExecFailureAbort(); + return; + } + if (!(right >= 0 && right <= LenVec(v))) { + call $ExecFailureAbort(); + return; + } + v := $Dereference(m); + left_vec := SliceVec(v, 0, left); + right_vec := SliceVec(v, right, LenVec(v)); + mid_left_vec := SliceVec(v, left, rot); + mid_right_vec := SliceVec(v, rot, right); + mid_vec := ConcatVec(mid_right_vec, mid_left_vec); + m' := $UpdateMutation(m, ConcatVec(left_vec, ConcatVec(mid_vec, right_vec))); + n := left + (right - rot); +} + +procedure {:inline 1} $1_vector_insert'$1_fixed_point32_FixedPoint32'(m: $Mutation (Vec ($1_fixed_point32_FixedPoint32)), i: int, e: $1_fixed_point32_FixedPoint32) returns (m': $Mutation (Vec ($1_fixed_point32_FixedPoint32))) { + var left_vec: Vec ($1_fixed_point32_FixedPoint32); + var right_vec: Vec ($1_fixed_point32_FixedPoint32); + var v: Vec ($1_fixed_point32_FixedPoint32); + v := $Dereference(m); + if (!(i >= 0 && i <= LenVec(v))) { + call $ExecFailureAbort(); + return; + } + if (i == LenVec(v)) { + m' := $UpdateMutation(m, ExtendVec(v, e)); + } else { + left_vec := ExtendVec(SliceVec(v, 0, i), e); + right_vec := SliceVec(v, i, LenVec(v)); + m' := $UpdateMutation(m, ConcatVec(left_vec, right_vec)); + } +} + +procedure {:inline 1} $1_vector_length'$1_fixed_point32_FixedPoint32'(v: Vec ($1_fixed_point32_FixedPoint32)) returns (l: int) { + l := LenVec(v); +} + +function {:inline} $1_vector_$length'$1_fixed_point32_FixedPoint32'(v: Vec ($1_fixed_point32_FixedPoint32)): int { + LenVec(v) +} + +procedure {:inline 1} $1_vector_borrow'$1_fixed_point32_FixedPoint32'(v: Vec ($1_fixed_point32_FixedPoint32), i: int) returns (dst: $1_fixed_point32_FixedPoint32) { + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + dst := ReadVec(v, i); +} + +function {:inline} $1_vector_$borrow'$1_fixed_point32_FixedPoint32'(v: Vec ($1_fixed_point32_FixedPoint32), i: int): $1_fixed_point32_FixedPoint32 { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_borrow_mut'$1_fixed_point32_FixedPoint32'(m: $Mutation (Vec ($1_fixed_point32_FixedPoint32)), index: int) +returns (dst: $Mutation ($1_fixed_point32_FixedPoint32), m': $Mutation (Vec ($1_fixed_point32_FixedPoint32))) +{ + var v: Vec ($1_fixed_point32_FixedPoint32); + v := $Dereference(m); + if (!InRangeVec(v, index)) { + call $ExecFailureAbort(); + return; + } + dst := $Mutation(l#$Mutation(m), ExtendVec(p#$Mutation(m), index), ReadVec(v, index)); + m' := m; +} + +function {:inline} $1_vector_$borrow_mut'$1_fixed_point32_FixedPoint32'(v: Vec ($1_fixed_point32_FixedPoint32), i: int): $1_fixed_point32_FixedPoint32 { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_destroy_empty'$1_fixed_point32_FixedPoint32'(v: Vec ($1_fixed_point32_FixedPoint32)) { + if (!IsEmptyVec(v)) { + call $ExecFailureAbort(); + } +} + +procedure {:inline 1} $1_vector_swap'$1_fixed_point32_FixedPoint32'(m: $Mutation (Vec ($1_fixed_point32_FixedPoint32)), i: int, j: int) returns (m': $Mutation (Vec ($1_fixed_point32_FixedPoint32))) +{ + var v: Vec ($1_fixed_point32_FixedPoint32); + v := $Dereference(m); + if (!InRangeVec(v, i) || !InRangeVec(v, j)) { + call $ExecFailureAbort(); + return; + } + m' := $UpdateMutation(m, SwapVec(v, i, j)); +} + +function {:inline} $1_vector_$swap'$1_fixed_point32_FixedPoint32'(v: Vec ($1_fixed_point32_FixedPoint32), i: int, j: int): Vec ($1_fixed_point32_FixedPoint32) { + SwapVec(v, i, j) +} + +procedure {:inline 1} $1_vector_remove'$1_fixed_point32_FixedPoint32'(m: $Mutation (Vec ($1_fixed_point32_FixedPoint32)), i: int) returns (e: $1_fixed_point32_FixedPoint32, m': $Mutation (Vec ($1_fixed_point32_FixedPoint32))) +{ + var v: Vec ($1_fixed_point32_FixedPoint32); + + v := $Dereference(m); + + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + e := ReadVec(v, i); + m' := $UpdateMutation(m, RemoveAtVec(v, i)); +} + +procedure {:inline 1} $1_vector_swap_remove'$1_fixed_point32_FixedPoint32'(m: $Mutation (Vec ($1_fixed_point32_FixedPoint32)), i: int) returns (e: $1_fixed_point32_FixedPoint32, m': $Mutation (Vec ($1_fixed_point32_FixedPoint32))) +{ + var len: int; + var v: Vec ($1_fixed_point32_FixedPoint32); + + v := $Dereference(m); + len := LenVec(v); + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + e := ReadVec(v, i); + m' := $UpdateMutation(m, RemoveVec(SwapVec(v, i, len-1))); +} + +procedure {:inline 1} $1_vector_contains'$1_fixed_point32_FixedPoint32'(v: Vec ($1_fixed_point32_FixedPoint32), e: $1_fixed_point32_FixedPoint32) returns (res: bool) { + res := $ContainsVec'$1_fixed_point32_FixedPoint32'(v, e); +} + +procedure {:inline 1} +$1_vector_index_of'$1_fixed_point32_FixedPoint32'(v: Vec ($1_fixed_point32_FixedPoint32), e: $1_fixed_point32_FixedPoint32) returns (res1: bool, res2: int) { + res2 := $IndexOfVec'$1_fixed_point32_FixedPoint32'(v, e); + if (res2 >= 0) { + res1 := true; + } else { + res1 := false; + res2 := 0; + } +} + + +// ---------------------------------------------------------------------------------- +// Native Vector implementation for element type `$1_optional_aggregator_Integer` + +// Not inlined. It appears faster this way. +function $IsEqual'vec'$1_optional_aggregator_Integer''(v1: Vec ($1_optional_aggregator_Integer), v2: Vec ($1_optional_aggregator_Integer)): bool { + LenVec(v1) == LenVec(v2) && + (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'$1_optional_aggregator_Integer'(ReadVec(v1, i), ReadVec(v2, i))) +} + +// Not inlined. +function $IsPrefix'vec'$1_optional_aggregator_Integer''(v: Vec ($1_optional_aggregator_Integer), prefix: Vec ($1_optional_aggregator_Integer)): bool { + LenVec(v) >= LenVec(prefix) && + (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'$1_optional_aggregator_Integer'(ReadVec(v, i), ReadVec(prefix, i))) +} + +// Not inlined. +function $IsSuffix'vec'$1_optional_aggregator_Integer''(v: Vec ($1_optional_aggregator_Integer), suffix: Vec ($1_optional_aggregator_Integer)): bool { + LenVec(v) >= LenVec(suffix) && + (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'$1_optional_aggregator_Integer'(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) +} + +// Not inlined. +function $IsValid'vec'$1_optional_aggregator_Integer''(v: Vec ($1_optional_aggregator_Integer)): bool { + $IsValid'u64'(LenVec(v)) && + (forall i: int:: InRangeVec(v, i) ==> $IsValid'$1_optional_aggregator_Integer'(ReadVec(v, i))) +} + + +function {:inline} $ContainsVec'$1_optional_aggregator_Integer'(v: Vec ($1_optional_aggregator_Integer), e: $1_optional_aggregator_Integer): bool { + (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_optional_aggregator_Integer'(ReadVec(v, i), e)) +} + +function $IndexOfVec'$1_optional_aggregator_Integer'(v: Vec ($1_optional_aggregator_Integer), e: $1_optional_aggregator_Integer): int; +axiom (forall v: Vec ($1_optional_aggregator_Integer), e: $1_optional_aggregator_Integer:: {$IndexOfVec'$1_optional_aggregator_Integer'(v, e)} + (var i := $IndexOfVec'$1_optional_aggregator_Integer'(v, e); + if (!$ContainsVec'$1_optional_aggregator_Integer'(v, e)) then i == -1 + else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_optional_aggregator_Integer'(ReadVec(v, i), e) && + (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'$1_optional_aggregator_Integer'(ReadVec(v, j), e)))); + + +function {:inline} $RangeVec'$1_optional_aggregator_Integer'(v: Vec ($1_optional_aggregator_Integer)): $Range { + $Range(0, LenVec(v)) +} + + +function {:inline} $EmptyVec'$1_optional_aggregator_Integer'(): Vec ($1_optional_aggregator_Integer) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_empty'$1_optional_aggregator_Integer'() returns (v: Vec ($1_optional_aggregator_Integer)) { + v := EmptyVec(); +} + +function {:inline} $1_vector_$empty'$1_optional_aggregator_Integer'(): Vec ($1_optional_aggregator_Integer) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_is_empty'$1_optional_aggregator_Integer'(v: Vec ($1_optional_aggregator_Integer)) returns (b: bool) { + b := IsEmptyVec(v); +} + +procedure {:inline 1} $1_vector_push_back'$1_optional_aggregator_Integer'(m: $Mutation (Vec ($1_optional_aggregator_Integer)), val: $1_optional_aggregator_Integer) returns (m': $Mutation (Vec ($1_optional_aggregator_Integer))) { + m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); +} + +function {:inline} $1_vector_$push_back'$1_optional_aggregator_Integer'(v: Vec ($1_optional_aggregator_Integer), val: $1_optional_aggregator_Integer): Vec ($1_optional_aggregator_Integer) { + ExtendVec(v, val) +} + +procedure {:inline 1} $1_vector_pop_back'$1_optional_aggregator_Integer'(m: $Mutation (Vec ($1_optional_aggregator_Integer))) returns (e: $1_optional_aggregator_Integer, m': $Mutation (Vec ($1_optional_aggregator_Integer))) { + var v: Vec ($1_optional_aggregator_Integer); + var len: int; + v := $Dereference(m); + len := LenVec(v); + if (len == 0) { + call $ExecFailureAbort(); + return; + } + e := ReadVec(v, len-1); + m' := $UpdateMutation(m, RemoveVec(v)); +} + +procedure {:inline 1} $1_vector_append'$1_optional_aggregator_Integer'(m: $Mutation (Vec ($1_optional_aggregator_Integer)), other: Vec ($1_optional_aggregator_Integer)) returns (m': $Mutation (Vec ($1_optional_aggregator_Integer))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), other)); +} + +procedure {:inline 1} $1_vector_reverse'$1_optional_aggregator_Integer'(m: $Mutation (Vec ($1_optional_aggregator_Integer))) returns (m': $Mutation (Vec ($1_optional_aggregator_Integer))) { + m' := $UpdateMutation(m, ReverseVec($Dereference(m))); +} + +procedure {:inline 1} $1_vector_reverse_append'$1_optional_aggregator_Integer'(m: $Mutation (Vec ($1_optional_aggregator_Integer)), other: Vec ($1_optional_aggregator_Integer)) returns (m': $Mutation (Vec ($1_optional_aggregator_Integer))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), ReverseVec(other))); +} + +procedure {:inline 1} $1_vector_trim_reverse'$1_optional_aggregator_Integer'(m: $Mutation (Vec ($1_optional_aggregator_Integer)), new_len: int) returns (v: (Vec ($1_optional_aggregator_Integer)), m': $Mutation (Vec ($1_optional_aggregator_Integer))) { + var len: int; + v := $Dereference(m); + if (LenVec(v) < new_len) { + call $ExecFailureAbort(); + return; + } + v := SliceVec(v, new_len, LenVec(v)); + v := ReverseVec(v); + m' := $UpdateMutation(m, SliceVec($Dereference(m), 0, new_len)); +} + +procedure {:inline 1} $1_vector_trim'$1_optional_aggregator_Integer'(m: $Mutation (Vec ($1_optional_aggregator_Integer)), new_len: int) returns (v: (Vec ($1_optional_aggregator_Integer)), m': $Mutation (Vec ($1_optional_aggregator_Integer))) { + var len: int; + v := $Dereference(m); + if (LenVec(v) < new_len) { + call $ExecFailureAbort(); + return; + } + v := SliceVec(v, new_len, LenVec(v)); + m' := $UpdateMutation(m, SliceVec($Dereference(m), 0, new_len)); +} + +procedure {:inline 1} $1_vector_reverse_slice'$1_optional_aggregator_Integer'(m: $Mutation (Vec ($1_optional_aggregator_Integer)), left: int, right: int) returns (m': $Mutation (Vec ($1_optional_aggregator_Integer))) { + var left_vec: Vec ($1_optional_aggregator_Integer); + var mid_vec: Vec ($1_optional_aggregator_Integer); + var right_vec: Vec ($1_optional_aggregator_Integer); + var v: Vec ($1_optional_aggregator_Integer); + if (left > right) { + call $ExecFailureAbort(); + return; + } + if (left == right) { + m' := m; + return; + } + v := $Dereference(m); + if (!(right >= 0 && right <= LenVec(v))) { + call $ExecFailureAbort(); + return; + } + left_vec := SliceVec(v, 0, left); + right_vec := SliceVec(v, right, LenVec(v)); + mid_vec := ReverseVec(SliceVec(v, left, right)); + m' := $UpdateMutation(m, ConcatVec(left_vec, ConcatVec(mid_vec, right_vec))); +} + +procedure {:inline 1} $1_vector_rotate'$1_optional_aggregator_Integer'(m: $Mutation (Vec ($1_optional_aggregator_Integer)), rot: int) returns (n: int, m': $Mutation (Vec ($1_optional_aggregator_Integer))) { + var v: Vec ($1_optional_aggregator_Integer); + var len: int; + var left_vec: Vec ($1_optional_aggregator_Integer); + var right_vec: Vec ($1_optional_aggregator_Integer); + v := $Dereference(m); + if (!(rot >= 0 && rot <= LenVec(v))) { + call $ExecFailureAbort(); + return; + } + left_vec := SliceVec(v, 0, rot); + right_vec := SliceVec(v, rot, LenVec(v)); + m' := $UpdateMutation(m, ConcatVec(right_vec, left_vec)); + n := LenVec(v) - rot; +} + +procedure {:inline 1} $1_vector_rotate_slice'$1_optional_aggregator_Integer'(m: $Mutation (Vec ($1_optional_aggregator_Integer)), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec ($1_optional_aggregator_Integer))) { + var left_vec: Vec ($1_optional_aggregator_Integer); + var mid_vec: Vec ($1_optional_aggregator_Integer); + var right_vec: Vec ($1_optional_aggregator_Integer); + var mid_left_vec: Vec ($1_optional_aggregator_Integer); + var mid_right_vec: Vec ($1_optional_aggregator_Integer); + var v: Vec ($1_optional_aggregator_Integer); + v := $Dereference(m); + if (!(left <= rot && rot <= right)) { + call $ExecFailureAbort(); + return; + } + if (!(right >= 0 && right <= LenVec(v))) { + call $ExecFailureAbort(); + return; + } + v := $Dereference(m); + left_vec := SliceVec(v, 0, left); + right_vec := SliceVec(v, right, LenVec(v)); + mid_left_vec := SliceVec(v, left, rot); + mid_right_vec := SliceVec(v, rot, right); + mid_vec := ConcatVec(mid_right_vec, mid_left_vec); + m' := $UpdateMutation(m, ConcatVec(left_vec, ConcatVec(mid_vec, right_vec))); + n := left + (right - rot); +} + +procedure {:inline 1} $1_vector_insert'$1_optional_aggregator_Integer'(m: $Mutation (Vec ($1_optional_aggregator_Integer)), i: int, e: $1_optional_aggregator_Integer) returns (m': $Mutation (Vec ($1_optional_aggregator_Integer))) { + var left_vec: Vec ($1_optional_aggregator_Integer); + var right_vec: Vec ($1_optional_aggregator_Integer); + var v: Vec ($1_optional_aggregator_Integer); + v := $Dereference(m); + if (!(i >= 0 && i <= LenVec(v))) { + call $ExecFailureAbort(); + return; + } + if (i == LenVec(v)) { + m' := $UpdateMutation(m, ExtendVec(v, e)); + } else { + left_vec := ExtendVec(SliceVec(v, 0, i), e); + right_vec := SliceVec(v, i, LenVec(v)); + m' := $UpdateMutation(m, ConcatVec(left_vec, right_vec)); + } +} + +procedure {:inline 1} $1_vector_length'$1_optional_aggregator_Integer'(v: Vec ($1_optional_aggregator_Integer)) returns (l: int) { + l := LenVec(v); +} + +function {:inline} $1_vector_$length'$1_optional_aggregator_Integer'(v: Vec ($1_optional_aggregator_Integer)): int { + LenVec(v) +} + +procedure {:inline 1} $1_vector_borrow'$1_optional_aggregator_Integer'(v: Vec ($1_optional_aggregator_Integer), i: int) returns (dst: $1_optional_aggregator_Integer) { + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + dst := ReadVec(v, i); +} + +function {:inline} $1_vector_$borrow'$1_optional_aggregator_Integer'(v: Vec ($1_optional_aggregator_Integer), i: int): $1_optional_aggregator_Integer { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_borrow_mut'$1_optional_aggregator_Integer'(m: $Mutation (Vec ($1_optional_aggregator_Integer)), index: int) +returns (dst: $Mutation ($1_optional_aggregator_Integer), m': $Mutation (Vec ($1_optional_aggregator_Integer))) +{ + var v: Vec ($1_optional_aggregator_Integer); + v := $Dereference(m); + if (!InRangeVec(v, index)) { + call $ExecFailureAbort(); + return; + } + dst := $Mutation(l#$Mutation(m), ExtendVec(p#$Mutation(m), index), ReadVec(v, index)); + m' := m; +} + +function {:inline} $1_vector_$borrow_mut'$1_optional_aggregator_Integer'(v: Vec ($1_optional_aggregator_Integer), i: int): $1_optional_aggregator_Integer { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_destroy_empty'$1_optional_aggregator_Integer'(v: Vec ($1_optional_aggregator_Integer)) { + if (!IsEmptyVec(v)) { + call $ExecFailureAbort(); + } +} + +procedure {:inline 1} $1_vector_swap'$1_optional_aggregator_Integer'(m: $Mutation (Vec ($1_optional_aggregator_Integer)), i: int, j: int) returns (m': $Mutation (Vec ($1_optional_aggregator_Integer))) +{ + var v: Vec ($1_optional_aggregator_Integer); + v := $Dereference(m); + if (!InRangeVec(v, i) || !InRangeVec(v, j)) { + call $ExecFailureAbort(); + return; + } + m' := $UpdateMutation(m, SwapVec(v, i, j)); +} + +function {:inline} $1_vector_$swap'$1_optional_aggregator_Integer'(v: Vec ($1_optional_aggregator_Integer), i: int, j: int): Vec ($1_optional_aggregator_Integer) { + SwapVec(v, i, j) +} + +procedure {:inline 1} $1_vector_remove'$1_optional_aggregator_Integer'(m: $Mutation (Vec ($1_optional_aggregator_Integer)), i: int) returns (e: $1_optional_aggregator_Integer, m': $Mutation (Vec ($1_optional_aggregator_Integer))) +{ + var v: Vec ($1_optional_aggregator_Integer); + + v := $Dereference(m); + + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + e := ReadVec(v, i); + m' := $UpdateMutation(m, RemoveAtVec(v, i)); +} + +procedure {:inline 1} $1_vector_swap_remove'$1_optional_aggregator_Integer'(m: $Mutation (Vec ($1_optional_aggregator_Integer)), i: int) returns (e: $1_optional_aggregator_Integer, m': $Mutation (Vec ($1_optional_aggregator_Integer))) +{ + var len: int; + var v: Vec ($1_optional_aggregator_Integer); + + v := $Dereference(m); + len := LenVec(v); + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + e := ReadVec(v, i); + m' := $UpdateMutation(m, RemoveVec(SwapVec(v, i, len-1))); +} + +procedure {:inline 1} $1_vector_contains'$1_optional_aggregator_Integer'(v: Vec ($1_optional_aggregator_Integer), e: $1_optional_aggregator_Integer) returns (res: bool) { + res := $ContainsVec'$1_optional_aggregator_Integer'(v, e); +} + +procedure {:inline 1} +$1_vector_index_of'$1_optional_aggregator_Integer'(v: Vec ($1_optional_aggregator_Integer), e: $1_optional_aggregator_Integer) returns (res1: bool, res2: int) { + res2 := $IndexOfVec'$1_optional_aggregator_Integer'(v, e); + if (res2 >= 0) { + res1 := true; + } else { + res1 := false; + res2 := 0; + } +} + + +// ---------------------------------------------------------------------------------- +// Native Vector implementation for element type `$1_optional_aggregator_OptionalAggregator` + +// Not inlined. It appears faster this way. +function $IsEqual'vec'$1_optional_aggregator_OptionalAggregator''(v1: Vec ($1_optional_aggregator_OptionalAggregator), v2: Vec ($1_optional_aggregator_OptionalAggregator)): bool { + LenVec(v1) == LenVec(v2) && + (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'$1_optional_aggregator_OptionalAggregator'(ReadVec(v1, i), ReadVec(v2, i))) +} + +// Not inlined. +function $IsPrefix'vec'$1_optional_aggregator_OptionalAggregator''(v: Vec ($1_optional_aggregator_OptionalAggregator), prefix: Vec ($1_optional_aggregator_OptionalAggregator)): bool { + LenVec(v) >= LenVec(prefix) && + (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'$1_optional_aggregator_OptionalAggregator'(ReadVec(v, i), ReadVec(prefix, i))) +} + +// Not inlined. +function $IsSuffix'vec'$1_optional_aggregator_OptionalAggregator''(v: Vec ($1_optional_aggregator_OptionalAggregator), suffix: Vec ($1_optional_aggregator_OptionalAggregator)): bool { + LenVec(v) >= LenVec(suffix) && + (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'$1_optional_aggregator_OptionalAggregator'(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) +} + +// Not inlined. +function $IsValid'vec'$1_optional_aggregator_OptionalAggregator''(v: Vec ($1_optional_aggregator_OptionalAggregator)): bool { + $IsValid'u64'(LenVec(v)) && + (forall i: int:: InRangeVec(v, i) ==> $IsValid'$1_optional_aggregator_OptionalAggregator'(ReadVec(v, i))) +} + + +function {:inline} $ContainsVec'$1_optional_aggregator_OptionalAggregator'(v: Vec ($1_optional_aggregator_OptionalAggregator), e: $1_optional_aggregator_OptionalAggregator): bool { + (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_optional_aggregator_OptionalAggregator'(ReadVec(v, i), e)) +} + +function $IndexOfVec'$1_optional_aggregator_OptionalAggregator'(v: Vec ($1_optional_aggregator_OptionalAggregator), e: $1_optional_aggregator_OptionalAggregator): int; +axiom (forall v: Vec ($1_optional_aggregator_OptionalAggregator), e: $1_optional_aggregator_OptionalAggregator:: {$IndexOfVec'$1_optional_aggregator_OptionalAggregator'(v, e)} + (var i := $IndexOfVec'$1_optional_aggregator_OptionalAggregator'(v, e); + if (!$ContainsVec'$1_optional_aggregator_OptionalAggregator'(v, e)) then i == -1 + else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_optional_aggregator_OptionalAggregator'(ReadVec(v, i), e) && + (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'$1_optional_aggregator_OptionalAggregator'(ReadVec(v, j), e)))); + + +function {:inline} $RangeVec'$1_optional_aggregator_OptionalAggregator'(v: Vec ($1_optional_aggregator_OptionalAggregator)): $Range { + $Range(0, LenVec(v)) +} + + +function {:inline} $EmptyVec'$1_optional_aggregator_OptionalAggregator'(): Vec ($1_optional_aggregator_OptionalAggregator) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_empty'$1_optional_aggregator_OptionalAggregator'() returns (v: Vec ($1_optional_aggregator_OptionalAggregator)) { + v := EmptyVec(); +} + +function {:inline} $1_vector_$empty'$1_optional_aggregator_OptionalAggregator'(): Vec ($1_optional_aggregator_OptionalAggregator) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_is_empty'$1_optional_aggregator_OptionalAggregator'(v: Vec ($1_optional_aggregator_OptionalAggregator)) returns (b: bool) { + b := IsEmptyVec(v); +} + +procedure {:inline 1} $1_vector_push_back'$1_optional_aggregator_OptionalAggregator'(m: $Mutation (Vec ($1_optional_aggregator_OptionalAggregator)), val: $1_optional_aggregator_OptionalAggregator) returns (m': $Mutation (Vec ($1_optional_aggregator_OptionalAggregator))) { + m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); +} + +function {:inline} $1_vector_$push_back'$1_optional_aggregator_OptionalAggregator'(v: Vec ($1_optional_aggregator_OptionalAggregator), val: $1_optional_aggregator_OptionalAggregator): Vec ($1_optional_aggregator_OptionalAggregator) { + ExtendVec(v, val) +} + +procedure {:inline 1} $1_vector_pop_back'$1_optional_aggregator_OptionalAggregator'(m: $Mutation (Vec ($1_optional_aggregator_OptionalAggregator))) returns (e: $1_optional_aggregator_OptionalAggregator, m': $Mutation (Vec ($1_optional_aggregator_OptionalAggregator))) { + var v: Vec ($1_optional_aggregator_OptionalAggregator); + var len: int; + v := $Dereference(m); + len := LenVec(v); + if (len == 0) { + call $ExecFailureAbort(); + return; + } + e := ReadVec(v, len-1); + m' := $UpdateMutation(m, RemoveVec(v)); +} + +procedure {:inline 1} $1_vector_append'$1_optional_aggregator_OptionalAggregator'(m: $Mutation (Vec ($1_optional_aggregator_OptionalAggregator)), other: Vec ($1_optional_aggregator_OptionalAggregator)) returns (m': $Mutation (Vec ($1_optional_aggregator_OptionalAggregator))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), other)); +} + +procedure {:inline 1} $1_vector_reverse'$1_optional_aggregator_OptionalAggregator'(m: $Mutation (Vec ($1_optional_aggregator_OptionalAggregator))) returns (m': $Mutation (Vec ($1_optional_aggregator_OptionalAggregator))) { + m' := $UpdateMutation(m, ReverseVec($Dereference(m))); +} + +procedure {:inline 1} $1_vector_reverse_append'$1_optional_aggregator_OptionalAggregator'(m: $Mutation (Vec ($1_optional_aggregator_OptionalAggregator)), other: Vec ($1_optional_aggregator_OptionalAggregator)) returns (m': $Mutation (Vec ($1_optional_aggregator_OptionalAggregator))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), ReverseVec(other))); +} + +procedure {:inline 1} $1_vector_trim_reverse'$1_optional_aggregator_OptionalAggregator'(m: $Mutation (Vec ($1_optional_aggregator_OptionalAggregator)), new_len: int) returns (v: (Vec ($1_optional_aggregator_OptionalAggregator)), m': $Mutation (Vec ($1_optional_aggregator_OptionalAggregator))) { + var len: int; + v := $Dereference(m); + if (LenVec(v) < new_len) { + call $ExecFailureAbort(); + return; + } + v := SliceVec(v, new_len, LenVec(v)); + v := ReverseVec(v); + m' := $UpdateMutation(m, SliceVec($Dereference(m), 0, new_len)); +} + +procedure {:inline 1} $1_vector_trim'$1_optional_aggregator_OptionalAggregator'(m: $Mutation (Vec ($1_optional_aggregator_OptionalAggregator)), new_len: int) returns (v: (Vec ($1_optional_aggregator_OptionalAggregator)), m': $Mutation (Vec ($1_optional_aggregator_OptionalAggregator))) { + var len: int; + v := $Dereference(m); + if (LenVec(v) < new_len) { + call $ExecFailureAbort(); + return; + } + v := SliceVec(v, new_len, LenVec(v)); + m' := $UpdateMutation(m, SliceVec($Dereference(m), 0, new_len)); +} + +procedure {:inline 1} $1_vector_reverse_slice'$1_optional_aggregator_OptionalAggregator'(m: $Mutation (Vec ($1_optional_aggregator_OptionalAggregator)), left: int, right: int) returns (m': $Mutation (Vec ($1_optional_aggregator_OptionalAggregator))) { + var left_vec: Vec ($1_optional_aggregator_OptionalAggregator); + var mid_vec: Vec ($1_optional_aggregator_OptionalAggregator); + var right_vec: Vec ($1_optional_aggregator_OptionalAggregator); + var v: Vec ($1_optional_aggregator_OptionalAggregator); + if (left > right) { + call $ExecFailureAbort(); + return; + } + if (left == right) { + m' := m; + return; + } + v := $Dereference(m); + if (!(right >= 0 && right <= LenVec(v))) { + call $ExecFailureAbort(); + return; + } + left_vec := SliceVec(v, 0, left); + right_vec := SliceVec(v, right, LenVec(v)); + mid_vec := ReverseVec(SliceVec(v, left, right)); + m' := $UpdateMutation(m, ConcatVec(left_vec, ConcatVec(mid_vec, right_vec))); +} + +procedure {:inline 1} $1_vector_rotate'$1_optional_aggregator_OptionalAggregator'(m: $Mutation (Vec ($1_optional_aggregator_OptionalAggregator)), rot: int) returns (n: int, m': $Mutation (Vec ($1_optional_aggregator_OptionalAggregator))) { + var v: Vec ($1_optional_aggregator_OptionalAggregator); + var len: int; + var left_vec: Vec ($1_optional_aggregator_OptionalAggregator); + var right_vec: Vec ($1_optional_aggregator_OptionalAggregator); + v := $Dereference(m); + if (!(rot >= 0 && rot <= LenVec(v))) { + call $ExecFailureAbort(); + return; + } + left_vec := SliceVec(v, 0, rot); + right_vec := SliceVec(v, rot, LenVec(v)); + m' := $UpdateMutation(m, ConcatVec(right_vec, left_vec)); + n := LenVec(v) - rot; +} + +procedure {:inline 1} $1_vector_rotate_slice'$1_optional_aggregator_OptionalAggregator'(m: $Mutation (Vec ($1_optional_aggregator_OptionalAggregator)), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec ($1_optional_aggregator_OptionalAggregator))) { + var left_vec: Vec ($1_optional_aggregator_OptionalAggregator); + var mid_vec: Vec ($1_optional_aggregator_OptionalAggregator); + var right_vec: Vec ($1_optional_aggregator_OptionalAggregator); + var mid_left_vec: Vec ($1_optional_aggregator_OptionalAggregator); + var mid_right_vec: Vec ($1_optional_aggregator_OptionalAggregator); + var v: Vec ($1_optional_aggregator_OptionalAggregator); + v := $Dereference(m); + if (!(left <= rot && rot <= right)) { + call $ExecFailureAbort(); + return; + } + if (!(right >= 0 && right <= LenVec(v))) { + call $ExecFailureAbort(); + return; + } + v := $Dereference(m); + left_vec := SliceVec(v, 0, left); + right_vec := SliceVec(v, right, LenVec(v)); + mid_left_vec := SliceVec(v, left, rot); + mid_right_vec := SliceVec(v, rot, right); + mid_vec := ConcatVec(mid_right_vec, mid_left_vec); + m' := $UpdateMutation(m, ConcatVec(left_vec, ConcatVec(mid_vec, right_vec))); + n := left + (right - rot); +} + +procedure {:inline 1} $1_vector_insert'$1_optional_aggregator_OptionalAggregator'(m: $Mutation (Vec ($1_optional_aggregator_OptionalAggregator)), i: int, e: $1_optional_aggregator_OptionalAggregator) returns (m': $Mutation (Vec ($1_optional_aggregator_OptionalAggregator))) { + var left_vec: Vec ($1_optional_aggregator_OptionalAggregator); + var right_vec: Vec ($1_optional_aggregator_OptionalAggregator); + var v: Vec ($1_optional_aggregator_OptionalAggregator); + v := $Dereference(m); + if (!(i >= 0 && i <= LenVec(v))) { + call $ExecFailureAbort(); + return; + } + if (i == LenVec(v)) { + m' := $UpdateMutation(m, ExtendVec(v, e)); + } else { + left_vec := ExtendVec(SliceVec(v, 0, i), e); + right_vec := SliceVec(v, i, LenVec(v)); + m' := $UpdateMutation(m, ConcatVec(left_vec, right_vec)); + } +} + +procedure {:inline 1} $1_vector_length'$1_optional_aggregator_OptionalAggregator'(v: Vec ($1_optional_aggregator_OptionalAggregator)) returns (l: int) { + l := LenVec(v); +} + +function {:inline} $1_vector_$length'$1_optional_aggregator_OptionalAggregator'(v: Vec ($1_optional_aggregator_OptionalAggregator)): int { + LenVec(v) +} + +procedure {:inline 1} $1_vector_borrow'$1_optional_aggregator_OptionalAggregator'(v: Vec ($1_optional_aggregator_OptionalAggregator), i: int) returns (dst: $1_optional_aggregator_OptionalAggregator) { + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + dst := ReadVec(v, i); +} + +function {:inline} $1_vector_$borrow'$1_optional_aggregator_OptionalAggregator'(v: Vec ($1_optional_aggregator_OptionalAggregator), i: int): $1_optional_aggregator_OptionalAggregator { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_borrow_mut'$1_optional_aggregator_OptionalAggregator'(m: $Mutation (Vec ($1_optional_aggregator_OptionalAggregator)), index: int) +returns (dst: $Mutation ($1_optional_aggregator_OptionalAggregator), m': $Mutation (Vec ($1_optional_aggregator_OptionalAggregator))) +{ + var v: Vec ($1_optional_aggregator_OptionalAggregator); + v := $Dereference(m); + if (!InRangeVec(v, index)) { + call $ExecFailureAbort(); + return; + } + dst := $Mutation(l#$Mutation(m), ExtendVec(p#$Mutation(m), index), ReadVec(v, index)); + m' := m; +} + +function {:inline} $1_vector_$borrow_mut'$1_optional_aggregator_OptionalAggregator'(v: Vec ($1_optional_aggregator_OptionalAggregator), i: int): $1_optional_aggregator_OptionalAggregator { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_destroy_empty'$1_optional_aggregator_OptionalAggregator'(v: Vec ($1_optional_aggregator_OptionalAggregator)) { + if (!IsEmptyVec(v)) { + call $ExecFailureAbort(); + } +} + +procedure {:inline 1} $1_vector_swap'$1_optional_aggregator_OptionalAggregator'(m: $Mutation (Vec ($1_optional_aggregator_OptionalAggregator)), i: int, j: int) returns (m': $Mutation (Vec ($1_optional_aggregator_OptionalAggregator))) +{ + var v: Vec ($1_optional_aggregator_OptionalAggregator); + v := $Dereference(m); + if (!InRangeVec(v, i) || !InRangeVec(v, j)) { + call $ExecFailureAbort(); + return; + } + m' := $UpdateMutation(m, SwapVec(v, i, j)); +} + +function {:inline} $1_vector_$swap'$1_optional_aggregator_OptionalAggregator'(v: Vec ($1_optional_aggregator_OptionalAggregator), i: int, j: int): Vec ($1_optional_aggregator_OptionalAggregator) { + SwapVec(v, i, j) +} + +procedure {:inline 1} $1_vector_remove'$1_optional_aggregator_OptionalAggregator'(m: $Mutation (Vec ($1_optional_aggregator_OptionalAggregator)), i: int) returns (e: $1_optional_aggregator_OptionalAggregator, m': $Mutation (Vec ($1_optional_aggregator_OptionalAggregator))) +{ + var v: Vec ($1_optional_aggregator_OptionalAggregator); + + v := $Dereference(m); + + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + e := ReadVec(v, i); + m' := $UpdateMutation(m, RemoveAtVec(v, i)); +} + +procedure {:inline 1} $1_vector_swap_remove'$1_optional_aggregator_OptionalAggregator'(m: $Mutation (Vec ($1_optional_aggregator_OptionalAggregator)), i: int) returns (e: $1_optional_aggregator_OptionalAggregator, m': $Mutation (Vec ($1_optional_aggregator_OptionalAggregator))) +{ + var len: int; + var v: Vec ($1_optional_aggregator_OptionalAggregator); + + v := $Dereference(m); + len := LenVec(v); + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + e := ReadVec(v, i); + m' := $UpdateMutation(m, RemoveVec(SwapVec(v, i, len-1))); +} + +procedure {:inline 1} $1_vector_contains'$1_optional_aggregator_OptionalAggregator'(v: Vec ($1_optional_aggregator_OptionalAggregator), e: $1_optional_aggregator_OptionalAggregator) returns (res: bool) { + res := $ContainsVec'$1_optional_aggregator_OptionalAggregator'(v, e); +} + +procedure {:inline 1} +$1_vector_index_of'$1_optional_aggregator_OptionalAggregator'(v: Vec ($1_optional_aggregator_OptionalAggregator), e: $1_optional_aggregator_OptionalAggregator) returns (res1: bool, res2: int) { + res2 := $IndexOfVec'$1_optional_aggregator_OptionalAggregator'(v, e); + if (res2 >= 0) { + res1 := true; + } else { + res1 := false; + res2 := 0; + } +} + + +// ---------------------------------------------------------------------------------- +// Native Vector implementation for element type `$1_stake_IndividualValidatorPerformance` + +// Not inlined. It appears faster this way. +function $IsEqual'vec'$1_stake_IndividualValidatorPerformance''(v1: Vec ($1_stake_IndividualValidatorPerformance), v2: Vec ($1_stake_IndividualValidatorPerformance)): bool { + LenVec(v1) == LenVec(v2) && + (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'$1_stake_IndividualValidatorPerformance'(ReadVec(v1, i), ReadVec(v2, i))) +} + +// Not inlined. +function $IsPrefix'vec'$1_stake_IndividualValidatorPerformance''(v: Vec ($1_stake_IndividualValidatorPerformance), prefix: Vec ($1_stake_IndividualValidatorPerformance)): bool { + LenVec(v) >= LenVec(prefix) && + (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'$1_stake_IndividualValidatorPerformance'(ReadVec(v, i), ReadVec(prefix, i))) +} + +// Not inlined. +function $IsSuffix'vec'$1_stake_IndividualValidatorPerformance''(v: Vec ($1_stake_IndividualValidatorPerformance), suffix: Vec ($1_stake_IndividualValidatorPerformance)): bool { + LenVec(v) >= LenVec(suffix) && + (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'$1_stake_IndividualValidatorPerformance'(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) +} + +// Not inlined. +function $IsValid'vec'$1_stake_IndividualValidatorPerformance''(v: Vec ($1_stake_IndividualValidatorPerformance)): bool { + $IsValid'u64'(LenVec(v)) && + (forall i: int:: InRangeVec(v, i) ==> $IsValid'$1_stake_IndividualValidatorPerformance'(ReadVec(v, i))) +} + + +function {:inline} $ContainsVec'$1_stake_IndividualValidatorPerformance'(v: Vec ($1_stake_IndividualValidatorPerformance), e: $1_stake_IndividualValidatorPerformance): bool { + (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_stake_IndividualValidatorPerformance'(ReadVec(v, i), e)) +} + +function $IndexOfVec'$1_stake_IndividualValidatorPerformance'(v: Vec ($1_stake_IndividualValidatorPerformance), e: $1_stake_IndividualValidatorPerformance): int; +axiom (forall v: Vec ($1_stake_IndividualValidatorPerformance), e: $1_stake_IndividualValidatorPerformance:: {$IndexOfVec'$1_stake_IndividualValidatorPerformance'(v, e)} + (var i := $IndexOfVec'$1_stake_IndividualValidatorPerformance'(v, e); + if (!$ContainsVec'$1_stake_IndividualValidatorPerformance'(v, e)) then i == -1 + else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_stake_IndividualValidatorPerformance'(ReadVec(v, i), e) && + (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'$1_stake_IndividualValidatorPerformance'(ReadVec(v, j), e)))); + + +function {:inline} $RangeVec'$1_stake_IndividualValidatorPerformance'(v: Vec ($1_stake_IndividualValidatorPerformance)): $Range { + $Range(0, LenVec(v)) +} + + +function {:inline} $EmptyVec'$1_stake_IndividualValidatorPerformance'(): Vec ($1_stake_IndividualValidatorPerformance) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_empty'$1_stake_IndividualValidatorPerformance'() returns (v: Vec ($1_stake_IndividualValidatorPerformance)) { + v := EmptyVec(); +} + +function {:inline} $1_vector_$empty'$1_stake_IndividualValidatorPerformance'(): Vec ($1_stake_IndividualValidatorPerformance) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_is_empty'$1_stake_IndividualValidatorPerformance'(v: Vec ($1_stake_IndividualValidatorPerformance)) returns (b: bool) { + b := IsEmptyVec(v); +} + +procedure {:inline 1} $1_vector_push_back'$1_stake_IndividualValidatorPerformance'(m: $Mutation (Vec ($1_stake_IndividualValidatorPerformance)), val: $1_stake_IndividualValidatorPerformance) returns (m': $Mutation (Vec ($1_stake_IndividualValidatorPerformance))) { + m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); +} + +function {:inline} $1_vector_$push_back'$1_stake_IndividualValidatorPerformance'(v: Vec ($1_stake_IndividualValidatorPerformance), val: $1_stake_IndividualValidatorPerformance): Vec ($1_stake_IndividualValidatorPerformance) { + ExtendVec(v, val) +} + +procedure {:inline 1} $1_vector_pop_back'$1_stake_IndividualValidatorPerformance'(m: $Mutation (Vec ($1_stake_IndividualValidatorPerformance))) returns (e: $1_stake_IndividualValidatorPerformance, m': $Mutation (Vec ($1_stake_IndividualValidatorPerformance))) { + var v: Vec ($1_stake_IndividualValidatorPerformance); + var len: int; + v := $Dereference(m); + len := LenVec(v); + if (len == 0) { + call $ExecFailureAbort(); + return; + } + e := ReadVec(v, len-1); + m' := $UpdateMutation(m, RemoveVec(v)); +} + +procedure {:inline 1} $1_vector_append'$1_stake_IndividualValidatorPerformance'(m: $Mutation (Vec ($1_stake_IndividualValidatorPerformance)), other: Vec ($1_stake_IndividualValidatorPerformance)) returns (m': $Mutation (Vec ($1_stake_IndividualValidatorPerformance))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), other)); +} + +procedure {:inline 1} $1_vector_reverse'$1_stake_IndividualValidatorPerformance'(m: $Mutation (Vec ($1_stake_IndividualValidatorPerformance))) returns (m': $Mutation (Vec ($1_stake_IndividualValidatorPerformance))) { + m' := $UpdateMutation(m, ReverseVec($Dereference(m))); +} + +procedure {:inline 1} $1_vector_reverse_append'$1_stake_IndividualValidatorPerformance'(m: $Mutation (Vec ($1_stake_IndividualValidatorPerformance)), other: Vec ($1_stake_IndividualValidatorPerformance)) returns (m': $Mutation (Vec ($1_stake_IndividualValidatorPerformance))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), ReverseVec(other))); +} + +procedure {:inline 1} $1_vector_trim_reverse'$1_stake_IndividualValidatorPerformance'(m: $Mutation (Vec ($1_stake_IndividualValidatorPerformance)), new_len: int) returns (v: (Vec ($1_stake_IndividualValidatorPerformance)), m': $Mutation (Vec ($1_stake_IndividualValidatorPerformance))) { + var len: int; + v := $Dereference(m); + if (LenVec(v) < new_len) { + call $ExecFailureAbort(); + return; + } + v := SliceVec(v, new_len, LenVec(v)); + v := ReverseVec(v); + m' := $UpdateMutation(m, SliceVec($Dereference(m), 0, new_len)); +} + +procedure {:inline 1} $1_vector_trim'$1_stake_IndividualValidatorPerformance'(m: $Mutation (Vec ($1_stake_IndividualValidatorPerformance)), new_len: int) returns (v: (Vec ($1_stake_IndividualValidatorPerformance)), m': $Mutation (Vec ($1_stake_IndividualValidatorPerformance))) { + var len: int; + v := $Dereference(m); + if (LenVec(v) < new_len) { + call $ExecFailureAbort(); + return; + } + v := SliceVec(v, new_len, LenVec(v)); + m' := $UpdateMutation(m, SliceVec($Dereference(m), 0, new_len)); +} + +procedure {:inline 1} $1_vector_reverse_slice'$1_stake_IndividualValidatorPerformance'(m: $Mutation (Vec ($1_stake_IndividualValidatorPerformance)), left: int, right: int) returns (m': $Mutation (Vec ($1_stake_IndividualValidatorPerformance))) { + var left_vec: Vec ($1_stake_IndividualValidatorPerformance); + var mid_vec: Vec ($1_stake_IndividualValidatorPerformance); + var right_vec: Vec ($1_stake_IndividualValidatorPerformance); + var v: Vec ($1_stake_IndividualValidatorPerformance); + if (left > right) { + call $ExecFailureAbort(); + return; + } + if (left == right) { + m' := m; + return; + } + v := $Dereference(m); + if (!(right >= 0 && right <= LenVec(v))) { + call $ExecFailureAbort(); + return; + } + left_vec := SliceVec(v, 0, left); + right_vec := SliceVec(v, right, LenVec(v)); + mid_vec := ReverseVec(SliceVec(v, left, right)); + m' := $UpdateMutation(m, ConcatVec(left_vec, ConcatVec(mid_vec, right_vec))); +} + +procedure {:inline 1} $1_vector_rotate'$1_stake_IndividualValidatorPerformance'(m: $Mutation (Vec ($1_stake_IndividualValidatorPerformance)), rot: int) returns (n: int, m': $Mutation (Vec ($1_stake_IndividualValidatorPerformance))) { + var v: Vec ($1_stake_IndividualValidatorPerformance); + var len: int; + var left_vec: Vec ($1_stake_IndividualValidatorPerformance); + var right_vec: Vec ($1_stake_IndividualValidatorPerformance); + v := $Dereference(m); + if (!(rot >= 0 && rot <= LenVec(v))) { + call $ExecFailureAbort(); + return; + } + left_vec := SliceVec(v, 0, rot); + right_vec := SliceVec(v, rot, LenVec(v)); + m' := $UpdateMutation(m, ConcatVec(right_vec, left_vec)); + n := LenVec(v) - rot; +} + +procedure {:inline 1} $1_vector_rotate_slice'$1_stake_IndividualValidatorPerformance'(m: $Mutation (Vec ($1_stake_IndividualValidatorPerformance)), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec ($1_stake_IndividualValidatorPerformance))) { + var left_vec: Vec ($1_stake_IndividualValidatorPerformance); + var mid_vec: Vec ($1_stake_IndividualValidatorPerformance); + var right_vec: Vec ($1_stake_IndividualValidatorPerformance); + var mid_left_vec: Vec ($1_stake_IndividualValidatorPerformance); + var mid_right_vec: Vec ($1_stake_IndividualValidatorPerformance); + var v: Vec ($1_stake_IndividualValidatorPerformance); + v := $Dereference(m); + if (!(left <= rot && rot <= right)) { + call $ExecFailureAbort(); + return; + } + if (!(right >= 0 && right <= LenVec(v))) { + call $ExecFailureAbort(); + return; + } + v := $Dereference(m); + left_vec := SliceVec(v, 0, left); + right_vec := SliceVec(v, right, LenVec(v)); + mid_left_vec := SliceVec(v, left, rot); + mid_right_vec := SliceVec(v, rot, right); + mid_vec := ConcatVec(mid_right_vec, mid_left_vec); + m' := $UpdateMutation(m, ConcatVec(left_vec, ConcatVec(mid_vec, right_vec))); + n := left + (right - rot); +} + +procedure {:inline 1} $1_vector_insert'$1_stake_IndividualValidatorPerformance'(m: $Mutation (Vec ($1_stake_IndividualValidatorPerformance)), i: int, e: $1_stake_IndividualValidatorPerformance) returns (m': $Mutation (Vec ($1_stake_IndividualValidatorPerformance))) { + var left_vec: Vec ($1_stake_IndividualValidatorPerformance); + var right_vec: Vec ($1_stake_IndividualValidatorPerformance); + var v: Vec ($1_stake_IndividualValidatorPerformance); + v := $Dereference(m); + if (!(i >= 0 && i <= LenVec(v))) { + call $ExecFailureAbort(); + return; + } + if (i == LenVec(v)) { + m' := $UpdateMutation(m, ExtendVec(v, e)); + } else { + left_vec := ExtendVec(SliceVec(v, 0, i), e); + right_vec := SliceVec(v, i, LenVec(v)); + m' := $UpdateMutation(m, ConcatVec(left_vec, right_vec)); + } +} + +procedure {:inline 1} $1_vector_length'$1_stake_IndividualValidatorPerformance'(v: Vec ($1_stake_IndividualValidatorPerformance)) returns (l: int) { + l := LenVec(v); +} + +function {:inline} $1_vector_$length'$1_stake_IndividualValidatorPerformance'(v: Vec ($1_stake_IndividualValidatorPerformance)): int { + LenVec(v) +} + +procedure {:inline 1} $1_vector_borrow'$1_stake_IndividualValidatorPerformance'(v: Vec ($1_stake_IndividualValidatorPerformance), i: int) returns (dst: $1_stake_IndividualValidatorPerformance) { + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + dst := ReadVec(v, i); +} + +function {:inline} $1_vector_$borrow'$1_stake_IndividualValidatorPerformance'(v: Vec ($1_stake_IndividualValidatorPerformance), i: int): $1_stake_IndividualValidatorPerformance { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_borrow_mut'$1_stake_IndividualValidatorPerformance'(m: $Mutation (Vec ($1_stake_IndividualValidatorPerformance)), index: int) +returns (dst: $Mutation ($1_stake_IndividualValidatorPerformance), m': $Mutation (Vec ($1_stake_IndividualValidatorPerformance))) +{ + var v: Vec ($1_stake_IndividualValidatorPerformance); + v := $Dereference(m); + if (!InRangeVec(v, index)) { + call $ExecFailureAbort(); + return; + } + dst := $Mutation(l#$Mutation(m), ExtendVec(p#$Mutation(m), index), ReadVec(v, index)); + m' := m; +} + +function {:inline} $1_vector_$borrow_mut'$1_stake_IndividualValidatorPerformance'(v: Vec ($1_stake_IndividualValidatorPerformance), i: int): $1_stake_IndividualValidatorPerformance { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_destroy_empty'$1_stake_IndividualValidatorPerformance'(v: Vec ($1_stake_IndividualValidatorPerformance)) { + if (!IsEmptyVec(v)) { + call $ExecFailureAbort(); + } +} + +procedure {:inline 1} $1_vector_swap'$1_stake_IndividualValidatorPerformance'(m: $Mutation (Vec ($1_stake_IndividualValidatorPerformance)), i: int, j: int) returns (m': $Mutation (Vec ($1_stake_IndividualValidatorPerformance))) +{ + var v: Vec ($1_stake_IndividualValidatorPerformance); + v := $Dereference(m); + if (!InRangeVec(v, i) || !InRangeVec(v, j)) { + call $ExecFailureAbort(); + return; + } + m' := $UpdateMutation(m, SwapVec(v, i, j)); +} + +function {:inline} $1_vector_$swap'$1_stake_IndividualValidatorPerformance'(v: Vec ($1_stake_IndividualValidatorPerformance), i: int, j: int): Vec ($1_stake_IndividualValidatorPerformance) { + SwapVec(v, i, j) +} + +procedure {:inline 1} $1_vector_remove'$1_stake_IndividualValidatorPerformance'(m: $Mutation (Vec ($1_stake_IndividualValidatorPerformance)), i: int) returns (e: $1_stake_IndividualValidatorPerformance, m': $Mutation (Vec ($1_stake_IndividualValidatorPerformance))) +{ + var v: Vec ($1_stake_IndividualValidatorPerformance); + + v := $Dereference(m); + + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + e := ReadVec(v, i); + m' := $UpdateMutation(m, RemoveAtVec(v, i)); +} + +procedure {:inline 1} $1_vector_swap_remove'$1_stake_IndividualValidatorPerformance'(m: $Mutation (Vec ($1_stake_IndividualValidatorPerformance)), i: int) returns (e: $1_stake_IndividualValidatorPerformance, m': $Mutation (Vec ($1_stake_IndividualValidatorPerformance))) +{ + var len: int; + var v: Vec ($1_stake_IndividualValidatorPerformance); + + v := $Dereference(m); + len := LenVec(v); + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + e := ReadVec(v, i); + m' := $UpdateMutation(m, RemoveVec(SwapVec(v, i, len-1))); +} + +procedure {:inline 1} $1_vector_contains'$1_stake_IndividualValidatorPerformance'(v: Vec ($1_stake_IndividualValidatorPerformance), e: $1_stake_IndividualValidatorPerformance) returns (res: bool) { + res := $ContainsVec'$1_stake_IndividualValidatorPerformance'(v, e); +} + +procedure {:inline 1} +$1_vector_index_of'$1_stake_IndividualValidatorPerformance'(v: Vec ($1_stake_IndividualValidatorPerformance), e: $1_stake_IndividualValidatorPerformance) returns (res1: bool, res2: int) { + res2 := $IndexOfVec'$1_stake_IndividualValidatorPerformance'(v, e); + if (res2 >= 0) { + res1 := true; + } else { + res1 := false; + res2 := 0; + } +} + + +// ---------------------------------------------------------------------------------- +// Native Vector implementation for element type `$1_stake_ValidatorInfo` + +// Not inlined. It appears faster this way. +function $IsEqual'vec'$1_stake_ValidatorInfo''(v1: Vec ($1_stake_ValidatorInfo), v2: Vec ($1_stake_ValidatorInfo)): bool { + LenVec(v1) == LenVec(v2) && + (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'$1_stake_ValidatorInfo'(ReadVec(v1, i), ReadVec(v2, i))) +} + +// Not inlined. +function $IsPrefix'vec'$1_stake_ValidatorInfo''(v: Vec ($1_stake_ValidatorInfo), prefix: Vec ($1_stake_ValidatorInfo)): bool { + LenVec(v) >= LenVec(prefix) && + (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'$1_stake_ValidatorInfo'(ReadVec(v, i), ReadVec(prefix, i))) +} + +// Not inlined. +function $IsSuffix'vec'$1_stake_ValidatorInfo''(v: Vec ($1_stake_ValidatorInfo), suffix: Vec ($1_stake_ValidatorInfo)): bool { + LenVec(v) >= LenVec(suffix) && + (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'$1_stake_ValidatorInfo'(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) +} + +// Not inlined. +function $IsValid'vec'$1_stake_ValidatorInfo''(v: Vec ($1_stake_ValidatorInfo)): bool { + $IsValid'u64'(LenVec(v)) && + (forall i: int:: InRangeVec(v, i) ==> $IsValid'$1_stake_ValidatorInfo'(ReadVec(v, i))) +} + + +function {:inline} $ContainsVec'$1_stake_ValidatorInfo'(v: Vec ($1_stake_ValidatorInfo), e: $1_stake_ValidatorInfo): bool { + (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_stake_ValidatorInfo'(ReadVec(v, i), e)) +} + +function $IndexOfVec'$1_stake_ValidatorInfo'(v: Vec ($1_stake_ValidatorInfo), e: $1_stake_ValidatorInfo): int; +axiom (forall v: Vec ($1_stake_ValidatorInfo), e: $1_stake_ValidatorInfo:: {$IndexOfVec'$1_stake_ValidatorInfo'(v, e)} + (var i := $IndexOfVec'$1_stake_ValidatorInfo'(v, e); + if (!$ContainsVec'$1_stake_ValidatorInfo'(v, e)) then i == -1 + else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_stake_ValidatorInfo'(ReadVec(v, i), e) && + (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'$1_stake_ValidatorInfo'(ReadVec(v, j), e)))); + + +function {:inline} $RangeVec'$1_stake_ValidatorInfo'(v: Vec ($1_stake_ValidatorInfo)): $Range { + $Range(0, LenVec(v)) +} + + +function {:inline} $EmptyVec'$1_stake_ValidatorInfo'(): Vec ($1_stake_ValidatorInfo) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_empty'$1_stake_ValidatorInfo'() returns (v: Vec ($1_stake_ValidatorInfo)) { + v := EmptyVec(); +} + +function {:inline} $1_vector_$empty'$1_stake_ValidatorInfo'(): Vec ($1_stake_ValidatorInfo) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_is_empty'$1_stake_ValidatorInfo'(v: Vec ($1_stake_ValidatorInfo)) returns (b: bool) { + b := IsEmptyVec(v); +} + +procedure {:inline 1} $1_vector_push_back'$1_stake_ValidatorInfo'(m: $Mutation (Vec ($1_stake_ValidatorInfo)), val: $1_stake_ValidatorInfo) returns (m': $Mutation (Vec ($1_stake_ValidatorInfo))) { + m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); +} + +function {:inline} $1_vector_$push_back'$1_stake_ValidatorInfo'(v: Vec ($1_stake_ValidatorInfo), val: $1_stake_ValidatorInfo): Vec ($1_stake_ValidatorInfo) { + ExtendVec(v, val) +} + +procedure {:inline 1} $1_vector_pop_back'$1_stake_ValidatorInfo'(m: $Mutation (Vec ($1_stake_ValidatorInfo))) returns (e: $1_stake_ValidatorInfo, m': $Mutation (Vec ($1_stake_ValidatorInfo))) { + var v: Vec ($1_stake_ValidatorInfo); + var len: int; + v := $Dereference(m); + len := LenVec(v); + if (len == 0) { + call $ExecFailureAbort(); + return; + } + e := ReadVec(v, len-1); + m' := $UpdateMutation(m, RemoveVec(v)); +} + +procedure {:inline 1} $1_vector_append'$1_stake_ValidatorInfo'(m: $Mutation (Vec ($1_stake_ValidatorInfo)), other: Vec ($1_stake_ValidatorInfo)) returns (m': $Mutation (Vec ($1_stake_ValidatorInfo))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), other)); +} + +procedure {:inline 1} $1_vector_reverse'$1_stake_ValidatorInfo'(m: $Mutation (Vec ($1_stake_ValidatorInfo))) returns (m': $Mutation (Vec ($1_stake_ValidatorInfo))) { + m' := $UpdateMutation(m, ReverseVec($Dereference(m))); +} + +procedure {:inline 1} $1_vector_reverse_append'$1_stake_ValidatorInfo'(m: $Mutation (Vec ($1_stake_ValidatorInfo)), other: Vec ($1_stake_ValidatorInfo)) returns (m': $Mutation (Vec ($1_stake_ValidatorInfo))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), ReverseVec(other))); +} + +procedure {:inline 1} $1_vector_trim_reverse'$1_stake_ValidatorInfo'(m: $Mutation (Vec ($1_stake_ValidatorInfo)), new_len: int) returns (v: (Vec ($1_stake_ValidatorInfo)), m': $Mutation (Vec ($1_stake_ValidatorInfo))) { + var len: int; + v := $Dereference(m); + if (LenVec(v) < new_len) { + call $ExecFailureAbort(); + return; + } + v := SliceVec(v, new_len, LenVec(v)); + v := ReverseVec(v); + m' := $UpdateMutation(m, SliceVec($Dereference(m), 0, new_len)); +} + +procedure {:inline 1} $1_vector_trim'$1_stake_ValidatorInfo'(m: $Mutation (Vec ($1_stake_ValidatorInfo)), new_len: int) returns (v: (Vec ($1_stake_ValidatorInfo)), m': $Mutation (Vec ($1_stake_ValidatorInfo))) { + var len: int; + v := $Dereference(m); + if (LenVec(v) < new_len) { + call $ExecFailureAbort(); + return; + } + v := SliceVec(v, new_len, LenVec(v)); + m' := $UpdateMutation(m, SliceVec($Dereference(m), 0, new_len)); +} + +procedure {:inline 1} $1_vector_reverse_slice'$1_stake_ValidatorInfo'(m: $Mutation (Vec ($1_stake_ValidatorInfo)), left: int, right: int) returns (m': $Mutation (Vec ($1_stake_ValidatorInfo))) { + var left_vec: Vec ($1_stake_ValidatorInfo); + var mid_vec: Vec ($1_stake_ValidatorInfo); + var right_vec: Vec ($1_stake_ValidatorInfo); + var v: Vec ($1_stake_ValidatorInfo); + if (left > right) { + call $ExecFailureAbort(); + return; + } + if (left == right) { + m' := m; + return; + } + v := $Dereference(m); + if (!(right >= 0 && right <= LenVec(v))) { + call $ExecFailureAbort(); + return; + } + left_vec := SliceVec(v, 0, left); + right_vec := SliceVec(v, right, LenVec(v)); + mid_vec := ReverseVec(SliceVec(v, left, right)); + m' := $UpdateMutation(m, ConcatVec(left_vec, ConcatVec(mid_vec, right_vec))); +} + +procedure {:inline 1} $1_vector_rotate'$1_stake_ValidatorInfo'(m: $Mutation (Vec ($1_stake_ValidatorInfo)), rot: int) returns (n: int, m': $Mutation (Vec ($1_stake_ValidatorInfo))) { + var v: Vec ($1_stake_ValidatorInfo); + var len: int; + var left_vec: Vec ($1_stake_ValidatorInfo); + var right_vec: Vec ($1_stake_ValidatorInfo); + v := $Dereference(m); + if (!(rot >= 0 && rot <= LenVec(v))) { + call $ExecFailureAbort(); + return; + } + left_vec := SliceVec(v, 0, rot); + right_vec := SliceVec(v, rot, LenVec(v)); + m' := $UpdateMutation(m, ConcatVec(right_vec, left_vec)); + n := LenVec(v) - rot; +} + +procedure {:inline 1} $1_vector_rotate_slice'$1_stake_ValidatorInfo'(m: $Mutation (Vec ($1_stake_ValidatorInfo)), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec ($1_stake_ValidatorInfo))) { + var left_vec: Vec ($1_stake_ValidatorInfo); + var mid_vec: Vec ($1_stake_ValidatorInfo); + var right_vec: Vec ($1_stake_ValidatorInfo); + var mid_left_vec: Vec ($1_stake_ValidatorInfo); + var mid_right_vec: Vec ($1_stake_ValidatorInfo); + var v: Vec ($1_stake_ValidatorInfo); + v := $Dereference(m); + if (!(left <= rot && rot <= right)) { + call $ExecFailureAbort(); + return; + } + if (!(right >= 0 && right <= LenVec(v))) { + call $ExecFailureAbort(); + return; + } + v := $Dereference(m); + left_vec := SliceVec(v, 0, left); + right_vec := SliceVec(v, right, LenVec(v)); + mid_left_vec := SliceVec(v, left, rot); + mid_right_vec := SliceVec(v, rot, right); + mid_vec := ConcatVec(mid_right_vec, mid_left_vec); + m' := $UpdateMutation(m, ConcatVec(left_vec, ConcatVec(mid_vec, right_vec))); + n := left + (right - rot); +} + +procedure {:inline 1} $1_vector_insert'$1_stake_ValidatorInfo'(m: $Mutation (Vec ($1_stake_ValidatorInfo)), i: int, e: $1_stake_ValidatorInfo) returns (m': $Mutation (Vec ($1_stake_ValidatorInfo))) { + var left_vec: Vec ($1_stake_ValidatorInfo); + var right_vec: Vec ($1_stake_ValidatorInfo); + var v: Vec ($1_stake_ValidatorInfo); + v := $Dereference(m); + if (!(i >= 0 && i <= LenVec(v))) { + call $ExecFailureAbort(); + return; + } + if (i == LenVec(v)) { + m' := $UpdateMutation(m, ExtendVec(v, e)); + } else { + left_vec := ExtendVec(SliceVec(v, 0, i), e); + right_vec := SliceVec(v, i, LenVec(v)); + m' := $UpdateMutation(m, ConcatVec(left_vec, right_vec)); + } +} + +procedure {:inline 1} $1_vector_length'$1_stake_ValidatorInfo'(v: Vec ($1_stake_ValidatorInfo)) returns (l: int) { + l := LenVec(v); +} + +function {:inline} $1_vector_$length'$1_stake_ValidatorInfo'(v: Vec ($1_stake_ValidatorInfo)): int { + LenVec(v) +} + +procedure {:inline 1} $1_vector_borrow'$1_stake_ValidatorInfo'(v: Vec ($1_stake_ValidatorInfo), i: int) returns (dst: $1_stake_ValidatorInfo) { + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + dst := ReadVec(v, i); +} + +function {:inline} $1_vector_$borrow'$1_stake_ValidatorInfo'(v: Vec ($1_stake_ValidatorInfo), i: int): $1_stake_ValidatorInfo { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_borrow_mut'$1_stake_ValidatorInfo'(m: $Mutation (Vec ($1_stake_ValidatorInfo)), index: int) +returns (dst: $Mutation ($1_stake_ValidatorInfo), m': $Mutation (Vec ($1_stake_ValidatorInfo))) +{ + var v: Vec ($1_stake_ValidatorInfo); + v := $Dereference(m); + if (!InRangeVec(v, index)) { + call $ExecFailureAbort(); + return; + } + dst := $Mutation(l#$Mutation(m), ExtendVec(p#$Mutation(m), index), ReadVec(v, index)); + m' := m; +} + +function {:inline} $1_vector_$borrow_mut'$1_stake_ValidatorInfo'(v: Vec ($1_stake_ValidatorInfo), i: int): $1_stake_ValidatorInfo { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_destroy_empty'$1_stake_ValidatorInfo'(v: Vec ($1_stake_ValidatorInfo)) { + if (!IsEmptyVec(v)) { + call $ExecFailureAbort(); + } +} + +procedure {:inline 1} $1_vector_swap'$1_stake_ValidatorInfo'(m: $Mutation (Vec ($1_stake_ValidatorInfo)), i: int, j: int) returns (m': $Mutation (Vec ($1_stake_ValidatorInfo))) +{ + var v: Vec ($1_stake_ValidatorInfo); + v := $Dereference(m); + if (!InRangeVec(v, i) || !InRangeVec(v, j)) { + call $ExecFailureAbort(); + return; + } + m' := $UpdateMutation(m, SwapVec(v, i, j)); +} + +function {:inline} $1_vector_$swap'$1_stake_ValidatorInfo'(v: Vec ($1_stake_ValidatorInfo), i: int, j: int): Vec ($1_stake_ValidatorInfo) { + SwapVec(v, i, j) +} + +procedure {:inline 1} $1_vector_remove'$1_stake_ValidatorInfo'(m: $Mutation (Vec ($1_stake_ValidatorInfo)), i: int) returns (e: $1_stake_ValidatorInfo, m': $Mutation (Vec ($1_stake_ValidatorInfo))) +{ + var v: Vec ($1_stake_ValidatorInfo); + + v := $Dereference(m); + + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + e := ReadVec(v, i); + m' := $UpdateMutation(m, RemoveAtVec(v, i)); +} + +procedure {:inline 1} $1_vector_swap_remove'$1_stake_ValidatorInfo'(m: $Mutation (Vec ($1_stake_ValidatorInfo)), i: int) returns (e: $1_stake_ValidatorInfo, m': $Mutation (Vec ($1_stake_ValidatorInfo))) +{ + var len: int; + var v: Vec ($1_stake_ValidatorInfo); + + v := $Dereference(m); + len := LenVec(v); + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + e := ReadVec(v, i); + m' := $UpdateMutation(m, RemoveVec(SwapVec(v, i, len-1))); +} + +procedure {:inline 1} $1_vector_contains'$1_stake_ValidatorInfo'(v: Vec ($1_stake_ValidatorInfo), e: $1_stake_ValidatorInfo) returns (res: bool) { + res := $ContainsVec'$1_stake_ValidatorInfo'(v, e); +} + +procedure {:inline 1} +$1_vector_index_of'$1_stake_ValidatorInfo'(v: Vec ($1_stake_ValidatorInfo), e: $1_stake_ValidatorInfo) returns (res1: bool, res2: int) { + res2 := $IndexOfVec'$1_stake_ValidatorInfo'(v, e); + if (res2 >= 0) { + res1 := true; + } else { + res1 := false; + res2 := 0; + } +} + + +// ---------------------------------------------------------------------------------- +// Native Vector implementation for element type `address` + +// Not inlined. It appears faster this way. +function $IsEqual'vec'address''(v1: Vec (int), v2: Vec (int)): bool { + LenVec(v1) == LenVec(v2) && + (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'address'(ReadVec(v1, i), ReadVec(v2, i))) +} + +// Not inlined. +function $IsPrefix'vec'address''(v: Vec (int), prefix: Vec (int)): bool { + LenVec(v) >= LenVec(prefix) && + (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'address'(ReadVec(v, i), ReadVec(prefix, i))) +} + +// Not inlined. +function $IsSuffix'vec'address''(v: Vec (int), suffix: Vec (int)): bool { + LenVec(v) >= LenVec(suffix) && + (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'address'(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) +} + +// Not inlined. +function $IsValid'vec'address''(v: Vec (int)): bool { + $IsValid'u64'(LenVec(v)) && + (forall i: int:: InRangeVec(v, i) ==> $IsValid'address'(ReadVec(v, i))) +} + + +function {:inline} $ContainsVec'address'(v: Vec (int), e: int): bool { + (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'address'(ReadVec(v, i), e)) +} + +function $IndexOfVec'address'(v: Vec (int), e: int): int; +axiom (forall v: Vec (int), e: int:: {$IndexOfVec'address'(v, e)} + (var i := $IndexOfVec'address'(v, e); + if (!$ContainsVec'address'(v, e)) then i == -1 + else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'address'(ReadVec(v, i), e) && + (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'address'(ReadVec(v, j), e)))); + + +function {:inline} $RangeVec'address'(v: Vec (int)): $Range { + $Range(0, LenVec(v)) +} + + +function {:inline} $EmptyVec'address'(): Vec (int) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_empty'address'() returns (v: Vec (int)) { + v := EmptyVec(); +} + +function {:inline} $1_vector_$empty'address'(): Vec (int) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_is_empty'address'(v: Vec (int)) returns (b: bool) { + b := IsEmptyVec(v); +} + +procedure {:inline 1} $1_vector_push_back'address'(m: $Mutation (Vec (int)), val: int) returns (m': $Mutation (Vec (int))) { + m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); +} + +function {:inline} $1_vector_$push_back'address'(v: Vec (int), val: int): Vec (int) { + ExtendVec(v, val) +} + +procedure {:inline 1} $1_vector_pop_back'address'(m: $Mutation (Vec (int))) returns (e: int, m': $Mutation (Vec (int))) { + var v: Vec (int); + var len: int; + v := $Dereference(m); + len := LenVec(v); + if (len == 0) { + call $ExecFailureAbort(); + return; + } + e := ReadVec(v, len-1); + m' := $UpdateMutation(m, RemoveVec(v)); +} + +procedure {:inline 1} $1_vector_append'address'(m: $Mutation (Vec (int)), other: Vec (int)) returns (m': $Mutation (Vec (int))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), other)); +} + +procedure {:inline 1} $1_vector_reverse'address'(m: $Mutation (Vec (int))) returns (m': $Mutation (Vec (int))) { + m' := $UpdateMutation(m, ReverseVec($Dereference(m))); +} + +procedure {:inline 1} $1_vector_reverse_append'address'(m: $Mutation (Vec (int)), other: Vec (int)) returns (m': $Mutation (Vec (int))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), ReverseVec(other))); +} + +procedure {:inline 1} $1_vector_trim_reverse'address'(m: $Mutation (Vec (int)), new_len: int) returns (v: (Vec (int)), m': $Mutation (Vec (int))) { + var len: int; + v := $Dereference(m); + if (LenVec(v) < new_len) { + call $ExecFailureAbort(); + return; + } + v := SliceVec(v, new_len, LenVec(v)); + v := ReverseVec(v); + m' := $UpdateMutation(m, SliceVec($Dereference(m), 0, new_len)); +} + +procedure {:inline 1} $1_vector_trim'address'(m: $Mutation (Vec (int)), new_len: int) returns (v: (Vec (int)), m': $Mutation (Vec (int))) { + var len: int; + v := $Dereference(m); + if (LenVec(v) < new_len) { + call $ExecFailureAbort(); + return; + } + v := SliceVec(v, new_len, LenVec(v)); + m' := $UpdateMutation(m, SliceVec($Dereference(m), 0, new_len)); +} + +procedure {:inline 1} $1_vector_reverse_slice'address'(m: $Mutation (Vec (int)), left: int, right: int) returns (m': $Mutation (Vec (int))) { + var left_vec: Vec (int); + var mid_vec: Vec (int); + var right_vec: Vec (int); + var v: Vec (int); + if (left > right) { + call $ExecFailureAbort(); + return; + } + if (left == right) { + m' := m; + return; + } + v := $Dereference(m); + if (!(right >= 0 && right <= LenVec(v))) { + call $ExecFailureAbort(); + return; + } + left_vec := SliceVec(v, 0, left); + right_vec := SliceVec(v, right, LenVec(v)); + mid_vec := ReverseVec(SliceVec(v, left, right)); + m' := $UpdateMutation(m, ConcatVec(left_vec, ConcatVec(mid_vec, right_vec))); +} + +procedure {:inline 1} $1_vector_rotate'address'(m: $Mutation (Vec (int)), rot: int) returns (n: int, m': $Mutation (Vec (int))) { + var v: Vec (int); + var len: int; + var left_vec: Vec (int); + var right_vec: Vec (int); + v := $Dereference(m); + if (!(rot >= 0 && rot <= LenVec(v))) { + call $ExecFailureAbort(); + return; + } + left_vec := SliceVec(v, 0, rot); + right_vec := SliceVec(v, rot, LenVec(v)); + m' := $UpdateMutation(m, ConcatVec(right_vec, left_vec)); + n := LenVec(v) - rot; +} + +procedure {:inline 1} $1_vector_rotate_slice'address'(m: $Mutation (Vec (int)), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec (int))) { + var left_vec: Vec (int); + var mid_vec: Vec (int); + var right_vec: Vec (int); + var mid_left_vec: Vec (int); + var mid_right_vec: Vec (int); + var v: Vec (int); + v := $Dereference(m); + if (!(left <= rot && rot <= right)) { + call $ExecFailureAbort(); + return; + } + if (!(right >= 0 && right <= LenVec(v))) { + call $ExecFailureAbort(); + return; + } + v := $Dereference(m); + left_vec := SliceVec(v, 0, left); + right_vec := SliceVec(v, right, LenVec(v)); + mid_left_vec := SliceVec(v, left, rot); + mid_right_vec := SliceVec(v, rot, right); + mid_vec := ConcatVec(mid_right_vec, mid_left_vec); + m' := $UpdateMutation(m, ConcatVec(left_vec, ConcatVec(mid_vec, right_vec))); + n := left + (right - rot); +} + +procedure {:inline 1} $1_vector_insert'address'(m: $Mutation (Vec (int)), i: int, e: int) returns (m': $Mutation (Vec (int))) { + var left_vec: Vec (int); + var right_vec: Vec (int); + var v: Vec (int); + v := $Dereference(m); + if (!(i >= 0 && i <= LenVec(v))) { + call $ExecFailureAbort(); + return; + } + if (i == LenVec(v)) { + m' := $UpdateMutation(m, ExtendVec(v, e)); + } else { + left_vec := ExtendVec(SliceVec(v, 0, i), e); + right_vec := SliceVec(v, i, LenVec(v)); + m' := $UpdateMutation(m, ConcatVec(left_vec, right_vec)); + } +} + +procedure {:inline 1} $1_vector_length'address'(v: Vec (int)) returns (l: int) { + l := LenVec(v); +} + +function {:inline} $1_vector_$length'address'(v: Vec (int)): int { + LenVec(v) +} + +procedure {:inline 1} $1_vector_borrow'address'(v: Vec (int), i: int) returns (dst: int) { + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + dst := ReadVec(v, i); +} + +function {:inline} $1_vector_$borrow'address'(v: Vec (int), i: int): int { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_borrow_mut'address'(m: $Mutation (Vec (int)), index: int) +returns (dst: $Mutation (int), m': $Mutation (Vec (int))) +{ + var v: Vec (int); + v := $Dereference(m); + if (!InRangeVec(v, index)) { + call $ExecFailureAbort(); + return; + } + dst := $Mutation(l#$Mutation(m), ExtendVec(p#$Mutation(m), index), ReadVec(v, index)); + m' := m; +} + +function {:inline} $1_vector_$borrow_mut'address'(v: Vec (int), i: int): int { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_destroy_empty'address'(v: Vec (int)) { + if (!IsEmptyVec(v)) { + call $ExecFailureAbort(); + } +} + +procedure {:inline 1} $1_vector_swap'address'(m: $Mutation (Vec (int)), i: int, j: int) returns (m': $Mutation (Vec (int))) +{ + var v: Vec (int); + v := $Dereference(m); + if (!InRangeVec(v, i) || !InRangeVec(v, j)) { + call $ExecFailureAbort(); + return; + } + m' := $UpdateMutation(m, SwapVec(v, i, j)); +} + +function {:inline} $1_vector_$swap'address'(v: Vec (int), i: int, j: int): Vec (int) { + SwapVec(v, i, j) +} + +procedure {:inline 1} $1_vector_remove'address'(m: $Mutation (Vec (int)), i: int) returns (e: int, m': $Mutation (Vec (int))) +{ + var v: Vec (int); + + v := $Dereference(m); + + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + e := ReadVec(v, i); + m' := $UpdateMutation(m, RemoveAtVec(v, i)); +} + +procedure {:inline 1} $1_vector_swap_remove'address'(m: $Mutation (Vec (int)), i: int) returns (e: int, m': $Mutation (Vec (int))) +{ + var len: int; + var v: Vec (int); + + v := $Dereference(m); + len := LenVec(v); + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + e := ReadVec(v, i); + m' := $UpdateMutation(m, RemoveVec(SwapVec(v, i, len-1))); +} + +procedure {:inline 1} $1_vector_contains'address'(v: Vec (int), e: int) returns (res: bool) { + res := $ContainsVec'address'(v, e); +} + +procedure {:inline 1} +$1_vector_index_of'address'(v: Vec (int), e: int) returns (res1: bool, res2: int) { + res2 := $IndexOfVec'address'(v, e); + if (res2 >= 0) { + res1 := true; + } else { + res1 := false; + res2 := 0; + } +} + + +// ---------------------------------------------------------------------------------- +// Native Vector implementation for element type `u64` + +// Not inlined. It appears faster this way. +function $IsEqual'vec'u64''(v1: Vec (int), v2: Vec (int)): bool { + LenVec(v1) == LenVec(v2) && + (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'u64'(ReadVec(v1, i), ReadVec(v2, i))) +} + +// Not inlined. +function $IsPrefix'vec'u64''(v: Vec (int), prefix: Vec (int)): bool { + LenVec(v) >= LenVec(prefix) && + (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'u64'(ReadVec(v, i), ReadVec(prefix, i))) +} + +// Not inlined. +function $IsSuffix'vec'u64''(v: Vec (int), suffix: Vec (int)): bool { + LenVec(v) >= LenVec(suffix) && + (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'u64'(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) +} + +// Not inlined. +function $IsValid'vec'u64''(v: Vec (int)): bool { + $IsValid'u64'(LenVec(v)) && + (forall i: int:: InRangeVec(v, i) ==> $IsValid'u64'(ReadVec(v, i))) +} + + +function {:inline} $ContainsVec'u64'(v: Vec (int), e: int): bool { + (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'u64'(ReadVec(v, i), e)) +} + +function $IndexOfVec'u64'(v: Vec (int), e: int): int; +axiom (forall v: Vec (int), e: int:: {$IndexOfVec'u64'(v, e)} + (var i := $IndexOfVec'u64'(v, e); + if (!$ContainsVec'u64'(v, e)) then i == -1 + else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'u64'(ReadVec(v, i), e) && + (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'u64'(ReadVec(v, j), e)))); + + +function {:inline} $RangeVec'u64'(v: Vec (int)): $Range { + $Range(0, LenVec(v)) +} + + +function {:inline} $EmptyVec'u64'(): Vec (int) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_empty'u64'() returns (v: Vec (int)) { + v := EmptyVec(); +} + +function {:inline} $1_vector_$empty'u64'(): Vec (int) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_is_empty'u64'(v: Vec (int)) returns (b: bool) { + b := IsEmptyVec(v); +} + +procedure {:inline 1} $1_vector_push_back'u64'(m: $Mutation (Vec (int)), val: int) returns (m': $Mutation (Vec (int))) { + m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); +} + +function {:inline} $1_vector_$push_back'u64'(v: Vec (int), val: int): Vec (int) { + ExtendVec(v, val) +} + +procedure {:inline 1} $1_vector_pop_back'u64'(m: $Mutation (Vec (int))) returns (e: int, m': $Mutation (Vec (int))) { + var v: Vec (int); + var len: int; + v := $Dereference(m); + len := LenVec(v); + if (len == 0) { + call $ExecFailureAbort(); + return; + } + e := ReadVec(v, len-1); + m' := $UpdateMutation(m, RemoveVec(v)); +} + +procedure {:inline 1} $1_vector_append'u64'(m: $Mutation (Vec (int)), other: Vec (int)) returns (m': $Mutation (Vec (int))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), other)); +} + +procedure {:inline 1} $1_vector_reverse'u64'(m: $Mutation (Vec (int))) returns (m': $Mutation (Vec (int))) { + m' := $UpdateMutation(m, ReverseVec($Dereference(m))); +} + +procedure {:inline 1} $1_vector_reverse_append'u64'(m: $Mutation (Vec (int)), other: Vec (int)) returns (m': $Mutation (Vec (int))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), ReverseVec(other))); +} + +procedure {:inline 1} $1_vector_trim_reverse'u64'(m: $Mutation (Vec (int)), new_len: int) returns (v: (Vec (int)), m': $Mutation (Vec (int))) { + var len: int; + v := $Dereference(m); + if (LenVec(v) < new_len) { + call $ExecFailureAbort(); + return; + } + v := SliceVec(v, new_len, LenVec(v)); + v := ReverseVec(v); + m' := $UpdateMutation(m, SliceVec($Dereference(m), 0, new_len)); +} + +procedure {:inline 1} $1_vector_trim'u64'(m: $Mutation (Vec (int)), new_len: int) returns (v: (Vec (int)), m': $Mutation (Vec (int))) { + var len: int; + v := $Dereference(m); + if (LenVec(v) < new_len) { + call $ExecFailureAbort(); + return; + } + v := SliceVec(v, new_len, LenVec(v)); + m' := $UpdateMutation(m, SliceVec($Dereference(m), 0, new_len)); +} + +procedure {:inline 1} $1_vector_reverse_slice'u64'(m: $Mutation (Vec (int)), left: int, right: int) returns (m': $Mutation (Vec (int))) { + var left_vec: Vec (int); + var mid_vec: Vec (int); + var right_vec: Vec (int); + var v: Vec (int); + if (left > right) { + call $ExecFailureAbort(); + return; + } + if (left == right) { + m' := m; + return; + } + v := $Dereference(m); + if (!(right >= 0 && right <= LenVec(v))) { + call $ExecFailureAbort(); + return; + } + left_vec := SliceVec(v, 0, left); + right_vec := SliceVec(v, right, LenVec(v)); + mid_vec := ReverseVec(SliceVec(v, left, right)); + m' := $UpdateMutation(m, ConcatVec(left_vec, ConcatVec(mid_vec, right_vec))); +} + +procedure {:inline 1} $1_vector_rotate'u64'(m: $Mutation (Vec (int)), rot: int) returns (n: int, m': $Mutation (Vec (int))) { + var v: Vec (int); + var len: int; + var left_vec: Vec (int); + var right_vec: Vec (int); + v := $Dereference(m); + if (!(rot >= 0 && rot <= LenVec(v))) { + call $ExecFailureAbort(); + return; + } + left_vec := SliceVec(v, 0, rot); + right_vec := SliceVec(v, rot, LenVec(v)); + m' := $UpdateMutation(m, ConcatVec(right_vec, left_vec)); + n := LenVec(v) - rot; +} + +procedure {:inline 1} $1_vector_rotate_slice'u64'(m: $Mutation (Vec (int)), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec (int))) { + var left_vec: Vec (int); + var mid_vec: Vec (int); + var right_vec: Vec (int); + var mid_left_vec: Vec (int); + var mid_right_vec: Vec (int); + var v: Vec (int); + v := $Dereference(m); + if (!(left <= rot && rot <= right)) { + call $ExecFailureAbort(); + return; + } + if (!(right >= 0 && right <= LenVec(v))) { + call $ExecFailureAbort(); + return; + } + v := $Dereference(m); + left_vec := SliceVec(v, 0, left); + right_vec := SliceVec(v, right, LenVec(v)); + mid_left_vec := SliceVec(v, left, rot); + mid_right_vec := SliceVec(v, rot, right); + mid_vec := ConcatVec(mid_right_vec, mid_left_vec); + m' := $UpdateMutation(m, ConcatVec(left_vec, ConcatVec(mid_vec, right_vec))); + n := left + (right - rot); +} + +procedure {:inline 1} $1_vector_insert'u64'(m: $Mutation (Vec (int)), i: int, e: int) returns (m': $Mutation (Vec (int))) { + var left_vec: Vec (int); + var right_vec: Vec (int); + var v: Vec (int); + v := $Dereference(m); + if (!(i >= 0 && i <= LenVec(v))) { + call $ExecFailureAbort(); + return; + } + if (i == LenVec(v)) { + m' := $UpdateMutation(m, ExtendVec(v, e)); + } else { + left_vec := ExtendVec(SliceVec(v, 0, i), e); + right_vec := SliceVec(v, i, LenVec(v)); + m' := $UpdateMutation(m, ConcatVec(left_vec, right_vec)); + } +} + +procedure {:inline 1} $1_vector_length'u64'(v: Vec (int)) returns (l: int) { + l := LenVec(v); +} + +function {:inline} $1_vector_$length'u64'(v: Vec (int)): int { + LenVec(v) +} + +procedure {:inline 1} $1_vector_borrow'u64'(v: Vec (int), i: int) returns (dst: int) { + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + dst := ReadVec(v, i); +} + +function {:inline} $1_vector_$borrow'u64'(v: Vec (int), i: int): int { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_borrow_mut'u64'(m: $Mutation (Vec (int)), index: int) +returns (dst: $Mutation (int), m': $Mutation (Vec (int))) +{ + var v: Vec (int); + v := $Dereference(m); + if (!InRangeVec(v, index)) { + call $ExecFailureAbort(); + return; + } + dst := $Mutation(l#$Mutation(m), ExtendVec(p#$Mutation(m), index), ReadVec(v, index)); + m' := m; +} + +function {:inline} $1_vector_$borrow_mut'u64'(v: Vec (int), i: int): int { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_destroy_empty'u64'(v: Vec (int)) { + if (!IsEmptyVec(v)) { + call $ExecFailureAbort(); + } +} + +procedure {:inline 1} $1_vector_swap'u64'(m: $Mutation (Vec (int)), i: int, j: int) returns (m': $Mutation (Vec (int))) +{ + var v: Vec (int); + v := $Dereference(m); + if (!InRangeVec(v, i) || !InRangeVec(v, j)) { + call $ExecFailureAbort(); + return; + } + m' := $UpdateMutation(m, SwapVec(v, i, j)); +} + +function {:inline} $1_vector_$swap'u64'(v: Vec (int), i: int, j: int): Vec (int) { + SwapVec(v, i, j) +} + +procedure {:inline 1} $1_vector_remove'u64'(m: $Mutation (Vec (int)), i: int) returns (e: int, m': $Mutation (Vec (int))) +{ + var v: Vec (int); + + v := $Dereference(m); + + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + e := ReadVec(v, i); + m' := $UpdateMutation(m, RemoveAtVec(v, i)); +} + +procedure {:inline 1} $1_vector_swap_remove'u64'(m: $Mutation (Vec (int)), i: int) returns (e: int, m': $Mutation (Vec (int))) +{ + var len: int; + var v: Vec (int); + + v := $Dereference(m); + len := LenVec(v); + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + e := ReadVec(v, i); + m' := $UpdateMutation(m, RemoveVec(SwapVec(v, i, len-1))); +} + +procedure {:inline 1} $1_vector_contains'u64'(v: Vec (int), e: int) returns (res: bool) { + res := $ContainsVec'u64'(v, e); +} + +procedure {:inline 1} +$1_vector_index_of'u64'(v: Vec (int), e: int) returns (res1: bool, res2: int) { + res2 := $IndexOfVec'u64'(v, e); + if (res2 >= 0) { + res1 := true; + } else { + res1 := false; + res2 := 0; + } +} + + +// ---------------------------------------------------------------------------------- +// Native Vector implementation for element type `u8` + +// Not inlined. It appears faster this way. +function $IsEqual'vec'u8''(v1: Vec (int), v2: Vec (int)): bool { + LenVec(v1) == LenVec(v2) && + (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'u8'(ReadVec(v1, i), ReadVec(v2, i))) +} + +// Not inlined. +function $IsPrefix'vec'u8''(v: Vec (int), prefix: Vec (int)): bool { + LenVec(v) >= LenVec(prefix) && + (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'u8'(ReadVec(v, i), ReadVec(prefix, i))) +} + +// Not inlined. +function $IsSuffix'vec'u8''(v: Vec (int), suffix: Vec (int)): bool { + LenVec(v) >= LenVec(suffix) && + (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'u8'(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) +} + +// Not inlined. +function $IsValid'vec'u8''(v: Vec (int)): bool { + $IsValid'u64'(LenVec(v)) && + (forall i: int:: InRangeVec(v, i) ==> $IsValid'u8'(ReadVec(v, i))) +} + + +function {:inline} $ContainsVec'u8'(v: Vec (int), e: int): bool { + (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'u8'(ReadVec(v, i), e)) +} + +function $IndexOfVec'u8'(v: Vec (int), e: int): int; +axiom (forall v: Vec (int), e: int:: {$IndexOfVec'u8'(v, e)} + (var i := $IndexOfVec'u8'(v, e); + if (!$ContainsVec'u8'(v, e)) then i == -1 + else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'u8'(ReadVec(v, i), e) && + (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'u8'(ReadVec(v, j), e)))); + + +function {:inline} $RangeVec'u8'(v: Vec (int)): $Range { + $Range(0, LenVec(v)) +} + + +function {:inline} $EmptyVec'u8'(): Vec (int) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_empty'u8'() returns (v: Vec (int)) { + v := EmptyVec(); +} + +function {:inline} $1_vector_$empty'u8'(): Vec (int) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_is_empty'u8'(v: Vec (int)) returns (b: bool) { + b := IsEmptyVec(v); +} + +procedure {:inline 1} $1_vector_push_back'u8'(m: $Mutation (Vec (int)), val: int) returns (m': $Mutation (Vec (int))) { + m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); +} + +function {:inline} $1_vector_$push_back'u8'(v: Vec (int), val: int): Vec (int) { + ExtendVec(v, val) +} + +procedure {:inline 1} $1_vector_pop_back'u8'(m: $Mutation (Vec (int))) returns (e: int, m': $Mutation (Vec (int))) { + var v: Vec (int); + var len: int; + v := $Dereference(m); + len := LenVec(v); + if (len == 0) { + call $ExecFailureAbort(); + return; + } + e := ReadVec(v, len-1); + m' := $UpdateMutation(m, RemoveVec(v)); +} + +procedure {:inline 1} $1_vector_append'u8'(m: $Mutation (Vec (int)), other: Vec (int)) returns (m': $Mutation (Vec (int))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), other)); +} + +procedure {:inline 1} $1_vector_reverse'u8'(m: $Mutation (Vec (int))) returns (m': $Mutation (Vec (int))) { + m' := $UpdateMutation(m, ReverseVec($Dereference(m))); +} + +procedure {:inline 1} $1_vector_reverse_append'u8'(m: $Mutation (Vec (int)), other: Vec (int)) returns (m': $Mutation (Vec (int))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), ReverseVec(other))); +} + +procedure {:inline 1} $1_vector_trim_reverse'u8'(m: $Mutation (Vec (int)), new_len: int) returns (v: (Vec (int)), m': $Mutation (Vec (int))) { + var len: int; + v := $Dereference(m); + if (LenVec(v) < new_len) { + call $ExecFailureAbort(); + return; + } + v := SliceVec(v, new_len, LenVec(v)); + v := ReverseVec(v); + m' := $UpdateMutation(m, SliceVec($Dereference(m), 0, new_len)); +} + +procedure {:inline 1} $1_vector_trim'u8'(m: $Mutation (Vec (int)), new_len: int) returns (v: (Vec (int)), m': $Mutation (Vec (int))) { + var len: int; + v := $Dereference(m); + if (LenVec(v) < new_len) { + call $ExecFailureAbort(); + return; + } + v := SliceVec(v, new_len, LenVec(v)); + m' := $UpdateMutation(m, SliceVec($Dereference(m), 0, new_len)); +} + +procedure {:inline 1} $1_vector_reverse_slice'u8'(m: $Mutation (Vec (int)), left: int, right: int) returns (m': $Mutation (Vec (int))) { + var left_vec: Vec (int); + var mid_vec: Vec (int); + var right_vec: Vec (int); + var v: Vec (int); + if (left > right) { + call $ExecFailureAbort(); + return; + } + if (left == right) { + m' := m; + return; + } + v := $Dereference(m); + if (!(right >= 0 && right <= LenVec(v))) { + call $ExecFailureAbort(); + return; + } + left_vec := SliceVec(v, 0, left); + right_vec := SliceVec(v, right, LenVec(v)); + mid_vec := ReverseVec(SliceVec(v, left, right)); + m' := $UpdateMutation(m, ConcatVec(left_vec, ConcatVec(mid_vec, right_vec))); +} + +procedure {:inline 1} $1_vector_rotate'u8'(m: $Mutation (Vec (int)), rot: int) returns (n: int, m': $Mutation (Vec (int))) { + var v: Vec (int); + var len: int; + var left_vec: Vec (int); + var right_vec: Vec (int); + v := $Dereference(m); + if (!(rot >= 0 && rot <= LenVec(v))) { + call $ExecFailureAbort(); + return; + } + left_vec := SliceVec(v, 0, rot); + right_vec := SliceVec(v, rot, LenVec(v)); + m' := $UpdateMutation(m, ConcatVec(right_vec, left_vec)); + n := LenVec(v) - rot; +} + +procedure {:inline 1} $1_vector_rotate_slice'u8'(m: $Mutation (Vec (int)), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec (int))) { + var left_vec: Vec (int); + var mid_vec: Vec (int); + var right_vec: Vec (int); + var mid_left_vec: Vec (int); + var mid_right_vec: Vec (int); + var v: Vec (int); + v := $Dereference(m); + if (!(left <= rot && rot <= right)) { + call $ExecFailureAbort(); + return; + } + if (!(right >= 0 && right <= LenVec(v))) { + call $ExecFailureAbort(); + return; + } + v := $Dereference(m); + left_vec := SliceVec(v, 0, left); + right_vec := SliceVec(v, right, LenVec(v)); + mid_left_vec := SliceVec(v, left, rot); + mid_right_vec := SliceVec(v, rot, right); + mid_vec := ConcatVec(mid_right_vec, mid_left_vec); + m' := $UpdateMutation(m, ConcatVec(left_vec, ConcatVec(mid_vec, right_vec))); + n := left + (right - rot); +} + +procedure {:inline 1} $1_vector_insert'u8'(m: $Mutation (Vec (int)), i: int, e: int) returns (m': $Mutation (Vec (int))) { + var left_vec: Vec (int); + var right_vec: Vec (int); + var v: Vec (int); + v := $Dereference(m); + if (!(i >= 0 && i <= LenVec(v))) { + call $ExecFailureAbort(); + return; + } + if (i == LenVec(v)) { + m' := $UpdateMutation(m, ExtendVec(v, e)); + } else { + left_vec := ExtendVec(SliceVec(v, 0, i), e); + right_vec := SliceVec(v, i, LenVec(v)); + m' := $UpdateMutation(m, ConcatVec(left_vec, right_vec)); + } +} + +procedure {:inline 1} $1_vector_length'u8'(v: Vec (int)) returns (l: int) { + l := LenVec(v); +} + +function {:inline} $1_vector_$length'u8'(v: Vec (int)): int { + LenVec(v) +} + +procedure {:inline 1} $1_vector_borrow'u8'(v: Vec (int), i: int) returns (dst: int) { + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + dst := ReadVec(v, i); +} + +function {:inline} $1_vector_$borrow'u8'(v: Vec (int), i: int): int { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_borrow_mut'u8'(m: $Mutation (Vec (int)), index: int) +returns (dst: $Mutation (int), m': $Mutation (Vec (int))) +{ + var v: Vec (int); + v := $Dereference(m); + if (!InRangeVec(v, index)) { + call $ExecFailureAbort(); + return; + } + dst := $Mutation(l#$Mutation(m), ExtendVec(p#$Mutation(m), index), ReadVec(v, index)); + m' := m; +} + +function {:inline} $1_vector_$borrow_mut'u8'(v: Vec (int), i: int): int { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_destroy_empty'u8'(v: Vec (int)) { + if (!IsEmptyVec(v)) { + call $ExecFailureAbort(); + } +} + +procedure {:inline 1} $1_vector_swap'u8'(m: $Mutation (Vec (int)), i: int, j: int) returns (m': $Mutation (Vec (int))) +{ + var v: Vec (int); + v := $Dereference(m); + if (!InRangeVec(v, i) || !InRangeVec(v, j)) { + call $ExecFailureAbort(); + return; + } + m' := $UpdateMutation(m, SwapVec(v, i, j)); +} + +function {:inline} $1_vector_$swap'u8'(v: Vec (int), i: int, j: int): Vec (int) { + SwapVec(v, i, j) +} + +procedure {:inline 1} $1_vector_remove'u8'(m: $Mutation (Vec (int)), i: int) returns (e: int, m': $Mutation (Vec (int))) +{ + var v: Vec (int); + + v := $Dereference(m); + + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + e := ReadVec(v, i); + m' := $UpdateMutation(m, RemoveAtVec(v, i)); +} + +procedure {:inline 1} $1_vector_swap_remove'u8'(m: $Mutation (Vec (int)), i: int) returns (e: int, m': $Mutation (Vec (int))) +{ + var len: int; + var v: Vec (int); + + v := $Dereference(m); + len := LenVec(v); + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + e := ReadVec(v, i); + m' := $UpdateMutation(m, RemoveVec(SwapVec(v, i, len-1))); +} + +procedure {:inline 1} $1_vector_contains'u8'(v: Vec (int), e: int) returns (res: bool) { + res := $ContainsVec'u8'(v, e); +} + +procedure {:inline 1} +$1_vector_index_of'u8'(v: Vec (int), e: int) returns (res1: bool, res2: int) { + res2 := $IndexOfVec'u8'(v, e); + if (res2 >= 0) { + res1 := true; + } else { + res1 := false; + res2 := 0; + } +} + + +// ---------------------------------------------------------------------------------- +// Native Vector implementation for element type `bv64` + +// Not inlined. It appears faster this way. +function $IsEqual'vec'bv64''(v1: Vec (bv64), v2: Vec (bv64)): bool { + LenVec(v1) == LenVec(v2) && + (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'bv64'(ReadVec(v1, i), ReadVec(v2, i))) +} + +// Not inlined. +function $IsPrefix'vec'bv64''(v: Vec (bv64), prefix: Vec (bv64)): bool { + LenVec(v) >= LenVec(prefix) && + (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'bv64'(ReadVec(v, i), ReadVec(prefix, i))) +} + +// Not inlined. +function $IsSuffix'vec'bv64''(v: Vec (bv64), suffix: Vec (bv64)): bool { + LenVec(v) >= LenVec(suffix) && + (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'bv64'(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) +} + +// Not inlined. +function $IsValid'vec'bv64''(v: Vec (bv64)): bool { + $IsValid'u64'(LenVec(v)) && + (forall i: int:: InRangeVec(v, i) ==> $IsValid'bv64'(ReadVec(v, i))) +} + + +function {:inline} $ContainsVec'bv64'(v: Vec (bv64), e: bv64): bool { + (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'bv64'(ReadVec(v, i), e)) +} + +function $IndexOfVec'bv64'(v: Vec (bv64), e: bv64): int; +axiom (forall v: Vec (bv64), e: bv64:: {$IndexOfVec'bv64'(v, e)} + (var i := $IndexOfVec'bv64'(v, e); + if (!$ContainsVec'bv64'(v, e)) then i == -1 + else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'bv64'(ReadVec(v, i), e) && + (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'bv64'(ReadVec(v, j), e)))); + + +function {:inline} $RangeVec'bv64'(v: Vec (bv64)): $Range { + $Range(0, LenVec(v)) +} + + +function {:inline} $EmptyVec'bv64'(): Vec (bv64) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_empty'bv64'() returns (v: Vec (bv64)) { + v := EmptyVec(); +} + +function {:inline} $1_vector_$empty'bv64'(): Vec (bv64) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_is_empty'bv64'(v: Vec (bv64)) returns (b: bool) { + b := IsEmptyVec(v); +} + +procedure {:inline 1} $1_vector_push_back'bv64'(m: $Mutation (Vec (bv64)), val: bv64) returns (m': $Mutation (Vec (bv64))) { + m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); +} + +function {:inline} $1_vector_$push_back'bv64'(v: Vec (bv64), val: bv64): Vec (bv64) { + ExtendVec(v, val) +} + +procedure {:inline 1} $1_vector_pop_back'bv64'(m: $Mutation (Vec (bv64))) returns (e: bv64, m': $Mutation (Vec (bv64))) { + var v: Vec (bv64); + var len: int; + v := $Dereference(m); + len := LenVec(v); + if (len == 0) { + call $ExecFailureAbort(); + return; + } + e := ReadVec(v, len-1); + m' := $UpdateMutation(m, RemoveVec(v)); +} + +procedure {:inline 1} $1_vector_append'bv64'(m: $Mutation (Vec (bv64)), other: Vec (bv64)) returns (m': $Mutation (Vec (bv64))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), other)); +} + +procedure {:inline 1} $1_vector_reverse'bv64'(m: $Mutation (Vec (bv64))) returns (m': $Mutation (Vec (bv64))) { + m' := $UpdateMutation(m, ReverseVec($Dereference(m))); +} + +procedure {:inline 1} $1_vector_reverse_append'bv64'(m: $Mutation (Vec (bv64)), other: Vec (bv64)) returns (m': $Mutation (Vec (bv64))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), ReverseVec(other))); +} + +procedure {:inline 1} $1_vector_trim_reverse'bv64'(m: $Mutation (Vec (bv64)), new_len: int) returns (v: (Vec (bv64)), m': $Mutation (Vec (bv64))) { + var len: int; + v := $Dereference(m); + if (LenVec(v) < new_len) { + call $ExecFailureAbort(); + return; + } + v := SliceVec(v, new_len, LenVec(v)); + v := ReverseVec(v); + m' := $UpdateMutation(m, SliceVec($Dereference(m), 0, new_len)); +} + +procedure {:inline 1} $1_vector_trim'bv64'(m: $Mutation (Vec (bv64)), new_len: int) returns (v: (Vec (bv64)), m': $Mutation (Vec (bv64))) { + var len: int; + v := $Dereference(m); + if (LenVec(v) < new_len) { + call $ExecFailureAbort(); + return; + } + v := SliceVec(v, new_len, LenVec(v)); + m' := $UpdateMutation(m, SliceVec($Dereference(m), 0, new_len)); +} + +procedure {:inline 1} $1_vector_reverse_slice'bv64'(m: $Mutation (Vec (bv64)), left: int, right: int) returns (m': $Mutation (Vec (bv64))) { + var left_vec: Vec (bv64); + var mid_vec: Vec (bv64); + var right_vec: Vec (bv64); + var v: Vec (bv64); + if (left > right) { + call $ExecFailureAbort(); + return; + } + if (left == right) { + m' := m; + return; + } + v := $Dereference(m); + if (!(right >= 0 && right <= LenVec(v))) { + call $ExecFailureAbort(); + return; + } + left_vec := SliceVec(v, 0, left); + right_vec := SliceVec(v, right, LenVec(v)); + mid_vec := ReverseVec(SliceVec(v, left, right)); + m' := $UpdateMutation(m, ConcatVec(left_vec, ConcatVec(mid_vec, right_vec))); +} + +procedure {:inline 1} $1_vector_rotate'bv64'(m: $Mutation (Vec (bv64)), rot: int) returns (n: int, m': $Mutation (Vec (bv64))) { + var v: Vec (bv64); + var len: int; + var left_vec: Vec (bv64); + var right_vec: Vec (bv64); + v := $Dereference(m); + if (!(rot >= 0 && rot <= LenVec(v))) { + call $ExecFailureAbort(); + return; + } + left_vec := SliceVec(v, 0, rot); + right_vec := SliceVec(v, rot, LenVec(v)); + m' := $UpdateMutation(m, ConcatVec(right_vec, left_vec)); + n := LenVec(v) - rot; +} + +procedure {:inline 1} $1_vector_rotate_slice'bv64'(m: $Mutation (Vec (bv64)), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec (bv64))) { + var left_vec: Vec (bv64); + var mid_vec: Vec (bv64); + var right_vec: Vec (bv64); + var mid_left_vec: Vec (bv64); + var mid_right_vec: Vec (bv64); + var v: Vec (bv64); + v := $Dereference(m); + if (!(left <= rot && rot <= right)) { + call $ExecFailureAbort(); + return; + } + if (!(right >= 0 && right <= LenVec(v))) { + call $ExecFailureAbort(); + return; + } + v := $Dereference(m); + left_vec := SliceVec(v, 0, left); + right_vec := SliceVec(v, right, LenVec(v)); + mid_left_vec := SliceVec(v, left, rot); + mid_right_vec := SliceVec(v, rot, right); + mid_vec := ConcatVec(mid_right_vec, mid_left_vec); + m' := $UpdateMutation(m, ConcatVec(left_vec, ConcatVec(mid_vec, right_vec))); + n := left + (right - rot); +} + +procedure {:inline 1} $1_vector_insert'bv64'(m: $Mutation (Vec (bv64)), i: int, e: bv64) returns (m': $Mutation (Vec (bv64))) { + var left_vec: Vec (bv64); + var right_vec: Vec (bv64); + var v: Vec (bv64); + v := $Dereference(m); + if (!(i >= 0 && i <= LenVec(v))) { + call $ExecFailureAbort(); + return; + } + if (i == LenVec(v)) { + m' := $UpdateMutation(m, ExtendVec(v, e)); + } else { + left_vec := ExtendVec(SliceVec(v, 0, i), e); + right_vec := SliceVec(v, i, LenVec(v)); + m' := $UpdateMutation(m, ConcatVec(left_vec, right_vec)); + } +} + +procedure {:inline 1} $1_vector_length'bv64'(v: Vec (bv64)) returns (l: int) { + l := LenVec(v); +} + +function {:inline} $1_vector_$length'bv64'(v: Vec (bv64)): int { + LenVec(v) +} + +procedure {:inline 1} $1_vector_borrow'bv64'(v: Vec (bv64), i: int) returns (dst: bv64) { + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + dst := ReadVec(v, i); +} + +function {:inline} $1_vector_$borrow'bv64'(v: Vec (bv64), i: int): bv64 { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_borrow_mut'bv64'(m: $Mutation (Vec (bv64)), index: int) +returns (dst: $Mutation (bv64), m': $Mutation (Vec (bv64))) +{ + var v: Vec (bv64); + v := $Dereference(m); + if (!InRangeVec(v, index)) { + call $ExecFailureAbort(); + return; + } + dst := $Mutation(l#$Mutation(m), ExtendVec(p#$Mutation(m), index), ReadVec(v, index)); + m' := m; +} + +function {:inline} $1_vector_$borrow_mut'bv64'(v: Vec (bv64), i: int): bv64 { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_destroy_empty'bv64'(v: Vec (bv64)) { + if (!IsEmptyVec(v)) { + call $ExecFailureAbort(); + } +} + +procedure {:inline 1} $1_vector_swap'bv64'(m: $Mutation (Vec (bv64)), i: int, j: int) returns (m': $Mutation (Vec (bv64))) +{ + var v: Vec (bv64); + v := $Dereference(m); + if (!InRangeVec(v, i) || !InRangeVec(v, j)) { + call $ExecFailureAbort(); + return; + } + m' := $UpdateMutation(m, SwapVec(v, i, j)); +} + +function {:inline} $1_vector_$swap'bv64'(v: Vec (bv64), i: int, j: int): Vec (bv64) { + SwapVec(v, i, j) +} + +procedure {:inline 1} $1_vector_remove'bv64'(m: $Mutation (Vec (bv64)), i: int) returns (e: bv64, m': $Mutation (Vec (bv64))) +{ + var v: Vec (bv64); + + v := $Dereference(m); + + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + e := ReadVec(v, i); + m' := $UpdateMutation(m, RemoveAtVec(v, i)); +} + +procedure {:inline 1} $1_vector_swap_remove'bv64'(m: $Mutation (Vec (bv64)), i: int) returns (e: bv64, m': $Mutation (Vec (bv64))) +{ + var len: int; + var v: Vec (bv64); + + v := $Dereference(m); + len := LenVec(v); + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + e := ReadVec(v, i); + m' := $UpdateMutation(m, RemoveVec(SwapVec(v, i, len-1))); +} + +procedure {:inline 1} $1_vector_contains'bv64'(v: Vec (bv64), e: bv64) returns (res: bool) { + res := $ContainsVec'bv64'(v, e); +} + +procedure {:inline 1} +$1_vector_index_of'bv64'(v: Vec (bv64), e: bv64) returns (res1: bool, res2: int) { + res2 := $IndexOfVec'bv64'(v, e); + if (res2 >= 0) { + res1 := true; + } else { + res1 := false; + res2 := 0; + } +} + + +// ---------------------------------------------------------------------------------- +// Native Vector implementation for element type `bv8` + +// Not inlined. It appears faster this way. +function $IsEqual'vec'bv8''(v1: Vec (bv8), v2: Vec (bv8)): bool { + LenVec(v1) == LenVec(v2) && + (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'bv8'(ReadVec(v1, i), ReadVec(v2, i))) +} + +// Not inlined. +function $IsPrefix'vec'bv8''(v: Vec (bv8), prefix: Vec (bv8)): bool { + LenVec(v) >= LenVec(prefix) && + (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'bv8'(ReadVec(v, i), ReadVec(prefix, i))) +} + +// Not inlined. +function $IsSuffix'vec'bv8''(v: Vec (bv8), suffix: Vec (bv8)): bool { + LenVec(v) >= LenVec(suffix) && + (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'bv8'(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) +} + +// Not inlined. +function $IsValid'vec'bv8''(v: Vec (bv8)): bool { + $IsValid'u64'(LenVec(v)) && + (forall i: int:: InRangeVec(v, i) ==> $IsValid'bv8'(ReadVec(v, i))) +} + + +function {:inline} $ContainsVec'bv8'(v: Vec (bv8), e: bv8): bool { + (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'bv8'(ReadVec(v, i), e)) +} + +function $IndexOfVec'bv8'(v: Vec (bv8), e: bv8): int; +axiom (forall v: Vec (bv8), e: bv8:: {$IndexOfVec'bv8'(v, e)} + (var i := $IndexOfVec'bv8'(v, e); + if (!$ContainsVec'bv8'(v, e)) then i == -1 + else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'bv8'(ReadVec(v, i), e) && + (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'bv8'(ReadVec(v, j), e)))); + + +function {:inline} $RangeVec'bv8'(v: Vec (bv8)): $Range { + $Range(0, LenVec(v)) +} + + +function {:inline} $EmptyVec'bv8'(): Vec (bv8) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_empty'bv8'() returns (v: Vec (bv8)) { + v := EmptyVec(); +} + +function {:inline} $1_vector_$empty'bv8'(): Vec (bv8) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_is_empty'bv8'(v: Vec (bv8)) returns (b: bool) { + b := IsEmptyVec(v); +} + +procedure {:inline 1} $1_vector_push_back'bv8'(m: $Mutation (Vec (bv8)), val: bv8) returns (m': $Mutation (Vec (bv8))) { + m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); +} + +function {:inline} $1_vector_$push_back'bv8'(v: Vec (bv8), val: bv8): Vec (bv8) { + ExtendVec(v, val) +} + +procedure {:inline 1} $1_vector_pop_back'bv8'(m: $Mutation (Vec (bv8))) returns (e: bv8, m': $Mutation (Vec (bv8))) { + var v: Vec (bv8); + var len: int; + v := $Dereference(m); + len := LenVec(v); + if (len == 0) { + call $ExecFailureAbort(); + return; + } + e := ReadVec(v, len-1); + m' := $UpdateMutation(m, RemoveVec(v)); +} + +procedure {:inline 1} $1_vector_append'bv8'(m: $Mutation (Vec (bv8)), other: Vec (bv8)) returns (m': $Mutation (Vec (bv8))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), other)); +} + +procedure {:inline 1} $1_vector_reverse'bv8'(m: $Mutation (Vec (bv8))) returns (m': $Mutation (Vec (bv8))) { + m' := $UpdateMutation(m, ReverseVec($Dereference(m))); +} + +procedure {:inline 1} $1_vector_reverse_append'bv8'(m: $Mutation (Vec (bv8)), other: Vec (bv8)) returns (m': $Mutation (Vec (bv8))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), ReverseVec(other))); +} + +procedure {:inline 1} $1_vector_trim_reverse'bv8'(m: $Mutation (Vec (bv8)), new_len: int) returns (v: (Vec (bv8)), m': $Mutation (Vec (bv8))) { + var len: int; + v := $Dereference(m); + if (LenVec(v) < new_len) { + call $ExecFailureAbort(); + return; + } + v := SliceVec(v, new_len, LenVec(v)); + v := ReverseVec(v); + m' := $UpdateMutation(m, SliceVec($Dereference(m), 0, new_len)); +} + +procedure {:inline 1} $1_vector_trim'bv8'(m: $Mutation (Vec (bv8)), new_len: int) returns (v: (Vec (bv8)), m': $Mutation (Vec (bv8))) { + var len: int; + v := $Dereference(m); + if (LenVec(v) < new_len) { + call $ExecFailureAbort(); + return; + } + v := SliceVec(v, new_len, LenVec(v)); + m' := $UpdateMutation(m, SliceVec($Dereference(m), 0, new_len)); +} + +procedure {:inline 1} $1_vector_reverse_slice'bv8'(m: $Mutation (Vec (bv8)), left: int, right: int) returns (m': $Mutation (Vec (bv8))) { + var left_vec: Vec (bv8); + var mid_vec: Vec (bv8); + var right_vec: Vec (bv8); + var v: Vec (bv8); + if (left > right) { + call $ExecFailureAbort(); + return; + } + if (left == right) { + m' := m; + return; + } + v := $Dereference(m); + if (!(right >= 0 && right <= LenVec(v))) { + call $ExecFailureAbort(); + return; + } + left_vec := SliceVec(v, 0, left); + right_vec := SliceVec(v, right, LenVec(v)); + mid_vec := ReverseVec(SliceVec(v, left, right)); + m' := $UpdateMutation(m, ConcatVec(left_vec, ConcatVec(mid_vec, right_vec))); +} + +procedure {:inline 1} $1_vector_rotate'bv8'(m: $Mutation (Vec (bv8)), rot: int) returns (n: int, m': $Mutation (Vec (bv8))) { + var v: Vec (bv8); + var len: int; + var left_vec: Vec (bv8); + var right_vec: Vec (bv8); + v := $Dereference(m); + if (!(rot >= 0 && rot <= LenVec(v))) { + call $ExecFailureAbort(); + return; + } + left_vec := SliceVec(v, 0, rot); + right_vec := SliceVec(v, rot, LenVec(v)); + m' := $UpdateMutation(m, ConcatVec(right_vec, left_vec)); + n := LenVec(v) - rot; +} + +procedure {:inline 1} $1_vector_rotate_slice'bv8'(m: $Mutation (Vec (bv8)), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec (bv8))) { + var left_vec: Vec (bv8); + var mid_vec: Vec (bv8); + var right_vec: Vec (bv8); + var mid_left_vec: Vec (bv8); + var mid_right_vec: Vec (bv8); + var v: Vec (bv8); + v := $Dereference(m); + if (!(left <= rot && rot <= right)) { + call $ExecFailureAbort(); + return; + } + if (!(right >= 0 && right <= LenVec(v))) { + call $ExecFailureAbort(); + return; + } + v := $Dereference(m); + left_vec := SliceVec(v, 0, left); + right_vec := SliceVec(v, right, LenVec(v)); + mid_left_vec := SliceVec(v, left, rot); + mid_right_vec := SliceVec(v, rot, right); + mid_vec := ConcatVec(mid_right_vec, mid_left_vec); + m' := $UpdateMutation(m, ConcatVec(left_vec, ConcatVec(mid_vec, right_vec))); + n := left + (right - rot); +} + +procedure {:inline 1} $1_vector_insert'bv8'(m: $Mutation (Vec (bv8)), i: int, e: bv8) returns (m': $Mutation (Vec (bv8))) { + var left_vec: Vec (bv8); + var right_vec: Vec (bv8); + var v: Vec (bv8); + v := $Dereference(m); + if (!(i >= 0 && i <= LenVec(v))) { + call $ExecFailureAbort(); + return; + } + if (i == LenVec(v)) { + m' := $UpdateMutation(m, ExtendVec(v, e)); + } else { + left_vec := ExtendVec(SliceVec(v, 0, i), e); + right_vec := SliceVec(v, i, LenVec(v)); + m' := $UpdateMutation(m, ConcatVec(left_vec, right_vec)); + } +} + +procedure {:inline 1} $1_vector_length'bv8'(v: Vec (bv8)) returns (l: int) { + l := LenVec(v); +} + +function {:inline} $1_vector_$length'bv8'(v: Vec (bv8)): int { + LenVec(v) +} + +procedure {:inline 1} $1_vector_borrow'bv8'(v: Vec (bv8), i: int) returns (dst: bv8) { + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + dst := ReadVec(v, i); +} + +function {:inline} $1_vector_$borrow'bv8'(v: Vec (bv8), i: int): bv8 { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_borrow_mut'bv8'(m: $Mutation (Vec (bv8)), index: int) +returns (dst: $Mutation (bv8), m': $Mutation (Vec (bv8))) +{ + var v: Vec (bv8); + v := $Dereference(m); + if (!InRangeVec(v, index)) { + call $ExecFailureAbort(); + return; + } + dst := $Mutation(l#$Mutation(m), ExtendVec(p#$Mutation(m), index), ReadVec(v, index)); + m' := m; +} + +function {:inline} $1_vector_$borrow_mut'bv8'(v: Vec (bv8), i: int): bv8 { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_destroy_empty'bv8'(v: Vec (bv8)) { + if (!IsEmptyVec(v)) { + call $ExecFailureAbort(); + } +} + +procedure {:inline 1} $1_vector_swap'bv8'(m: $Mutation (Vec (bv8)), i: int, j: int) returns (m': $Mutation (Vec (bv8))) +{ + var v: Vec (bv8); + v := $Dereference(m); + if (!InRangeVec(v, i) || !InRangeVec(v, j)) { + call $ExecFailureAbort(); + return; + } + m' := $UpdateMutation(m, SwapVec(v, i, j)); +} + +function {:inline} $1_vector_$swap'bv8'(v: Vec (bv8), i: int, j: int): Vec (bv8) { + SwapVec(v, i, j) +} + +procedure {:inline 1} $1_vector_remove'bv8'(m: $Mutation (Vec (bv8)), i: int) returns (e: bv8, m': $Mutation (Vec (bv8))) +{ + var v: Vec (bv8); + + v := $Dereference(m); + + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + e := ReadVec(v, i); + m' := $UpdateMutation(m, RemoveAtVec(v, i)); +} + +procedure {:inline 1} $1_vector_swap_remove'bv8'(m: $Mutation (Vec (bv8)), i: int) returns (e: bv8, m': $Mutation (Vec (bv8))) +{ + var len: int; + var v: Vec (bv8); + + v := $Dereference(m); + len := LenVec(v); + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + e := ReadVec(v, i); + m' := $UpdateMutation(m, RemoveVec(SwapVec(v, i, len-1))); +} + +procedure {:inline 1} $1_vector_contains'bv8'(v: Vec (bv8), e: bv8) returns (res: bool) { + res := $ContainsVec'bv8'(v, e); +} + +procedure {:inline 1} +$1_vector_index_of'bv8'(v: Vec (bv8), e: bv8) returns (res1: bool, res2: int) { + res2 := $IndexOfVec'bv8'(v, e); + if (res2 >= 0) { + res1 := true; + } else { + res1 := false; + res2 := 0; + } +} + + +// ================================================================================== +// Native Table + +// ---------------------------------------------------------------------------------- +// Native Table key encoding for type `address` + +function $EncodeKey'address'(k: int): int; +axiom ( + forall k1, k2: int :: {$EncodeKey'address'(k1), $EncodeKey'address'(k2)} + $IsEqual'address'(k1, k2) <==> $EncodeKey'address'(k1) == $EncodeKey'address'(k2) +); + + +// ---------------------------------------------------------------------------------- +// Native Table key encoding for type `$1_string_String` + +function $EncodeKey'$1_string_String'(k: $1_string_String): int; +axiom ( + forall k1, k2: $1_string_String :: {$EncodeKey'$1_string_String'(k1), $EncodeKey'$1_string_String'(k2)} + $IsEqual'$1_string_String'(k1, k2) <==> $EncodeKey'$1_string_String'(k1) == $EncodeKey'$1_string_String'(k2) +); + + +// ---------------------------------------------------------------------------------- +// Native Table implementation for type `(address,u64)` + +function $IsEqual'$1_simple_map_SimpleMap'address_u64''(t1: Table int (int), t2: Table int (int)): bool { + LenTable(t1) == LenTable(t2) && + (forall k: int :: ContainsTable(t1, k) <==> ContainsTable(t2, k)) && + (forall k: int :: ContainsTable(t1, k) ==> GetTable(t1, k) == GetTable(t2, k)) && + (forall k: int :: ContainsTable(t2, k) ==> GetTable(t1, k) == GetTable(t2, k)) +} + +// Not inlined. +function $IsValid'$1_simple_map_SimpleMap'address_u64''(t: Table int (int)): bool { + $IsValid'u64'(LenTable(t)) && + (forall i: int:: ContainsTable(t, i) ==> $IsValid'u64'(GetTable(t, i))) +} +procedure {:inline 2} $1_simple_map_create'address_u64'() returns (v: Table int (int)) { + v := EmptyTable(); +} +procedure {:inline 2} $1_simple_map_destroy_empty'address_u64'(t: Table int (int)) { + if (LenTable(t) != 0) { + call $Abort($StdError(1/*INVALID_STATE*/, 102/*ENOT_EMPTY*/)); + } +} +procedure {:inline 2} $1_simple_map_length'address_u64'(t: (Table int (int))) returns (l: int) { + l := LenTable(t); +} +procedure {:inline 2} $1_simple_map_contains_key'address_u64'(t: (Table int (int)), k: int) returns (r: bool) { + r := ContainsTable(t, $EncodeKey'address'(k)); +} +procedure {:inline 2} $1_simple_map_add'address_u64'(m: $Mutation (Table int (int)), k: int, v: int) returns (m': $Mutation(Table int (int))) { + var enc_k: int; + var t: Table int (int); + enc_k := $EncodeKey'address'(k); + t := $Dereference(m); + if (ContainsTable(t, enc_k)) { + call $Abort($StdError(7/*INVALID_ARGUMENTS*/, 100/*EALREADY_EXISTS*/)); + } else { + m' := $UpdateMutation(m, AddTable(t, enc_k, v)); + } +} +procedure {:inline 2} $1_simple_map_remove'address_u64'(m: $Mutation (Table int (int)), k: int) +returns (k': int, v: int, m': $Mutation(Table int (int))) { + var enc_k: int; + var t: Table int (int); + enc_k := $EncodeKey'address'(k); + t := $Dereference(m); + if (!ContainsTable(t, enc_k)) { + call $Abort($StdError(7/*INVALID_ARGUMENTS*/, 101/*ENOT_FOUND*/)); + } else { + k' := k; + v := GetTable(t, enc_k); + m' := $UpdateMutation(m, RemoveTable(t, enc_k)); + } +} +procedure {:inline 2} $1_simple_map_borrow'address_u64'(t: Table int (int), k: int) returns (v: int) { + var enc_k: int; + enc_k := $EncodeKey'address'(k); + if (!ContainsTable(t, enc_k)) { + call $Abort($StdError(7/*INVALID_ARGUMENTS*/, 101/*ENOT_FOUND*/)); + } else { + v := GetTable(t, $EncodeKey'address'(k)); + } +} +procedure {:inline 2} $1_simple_map_borrow_mut'address_u64'(m: $Mutation (Table int (int)), k: int) +returns (dst: $Mutation (int), m': $Mutation (Table int (int))) { + var enc_k: int; + var t: Table int (int); + enc_k := $EncodeKey'address'(k); + t := $Dereference(m); + if (!ContainsTable(t, enc_k)) { + call $Abort($StdError(7/*INVALID_ARGUMENTS*/, 101/*ENOT_FOUND*/)); + } else { + dst := $Mutation(l#$Mutation(m), ExtendVec(p#$Mutation(m), enc_k), GetTable(t, enc_k)); + m' := m; + } +} +function {:inline} $1_simple_map_spec_len'address_u64'(t: (Table int (int))): int { + LenTable(t) +} +function {:inline} $1_simple_map_spec_contains_key'address_u64'(t: (Table int (int)), k: int): bool { + ContainsTable(t, $EncodeKey'address'(k)) +} +function {:inline} $1_simple_map_spec_set'address_u64'(t: Table int (int), k: int, v: int): Table int (int) { + (var enc_k := $EncodeKey'address'(k); + if (ContainsTable(t, enc_k)) then + UpdateTable(t, enc_k, v) + else + AddTable(t, enc_k, v)) +} +function {:inline} $1_simple_map_spec_remove'address_u64'(t: Table int (int), k: int): Table int (int) { + RemoveTable(t, $EncodeKey'address'(k)) +} +function {:inline} $1_simple_map_spec_get'address_u64'(t: Table int (int), k: int): int { + GetTable(t, $EncodeKey'address'(k)) +} + + + +// ---------------------------------------------------------------------------------- +// Native Table implementation for type `(address,address)` + +function $IsEqual'$1_simple_map_SimpleMap'address_address''(t1: Table int (int), t2: Table int (int)): bool { + LenTable(t1) == LenTable(t2) && + (forall k: int :: ContainsTable(t1, k) <==> ContainsTable(t2, k)) && + (forall k: int :: ContainsTable(t1, k) ==> GetTable(t1, k) == GetTable(t2, k)) && + (forall k: int :: ContainsTable(t2, k) ==> GetTable(t1, k) == GetTable(t2, k)) +} + +// Not inlined. +function $IsValid'$1_simple_map_SimpleMap'address_address''(t: Table int (int)): bool { + $IsValid'u64'(LenTable(t)) && + (forall i: int:: ContainsTable(t, i) ==> $IsValid'address'(GetTable(t, i))) +} +procedure {:inline 2} $1_simple_map_create'address_address'() returns (v: Table int (int)) { + v := EmptyTable(); +} +procedure {:inline 2} $1_simple_map_destroy_empty'address_address'(t: Table int (int)) { + if (LenTable(t) != 0) { + call $Abort($StdError(1/*INVALID_STATE*/, 102/*ENOT_EMPTY*/)); + } +} +procedure {:inline 2} $1_simple_map_length'address_address'(t: (Table int (int))) returns (l: int) { + l := LenTable(t); +} +procedure {:inline 2} $1_simple_map_contains_key'address_address'(t: (Table int (int)), k: int) returns (r: bool) { + r := ContainsTable(t, $EncodeKey'address'(k)); +} +procedure {:inline 2} $1_simple_map_add'address_address'(m: $Mutation (Table int (int)), k: int, v: int) returns (m': $Mutation(Table int (int))) { + var enc_k: int; + var t: Table int (int); + enc_k := $EncodeKey'address'(k); + t := $Dereference(m); + if (ContainsTable(t, enc_k)) { + call $Abort($StdError(7/*INVALID_ARGUMENTS*/, 100/*EALREADY_EXISTS*/)); + } else { + m' := $UpdateMutation(m, AddTable(t, enc_k, v)); + } +} +procedure {:inline 2} $1_simple_map_remove'address_address'(m: $Mutation (Table int (int)), k: int) +returns (k': int, v: int, m': $Mutation(Table int (int))) { + var enc_k: int; + var t: Table int (int); + enc_k := $EncodeKey'address'(k); + t := $Dereference(m); + if (!ContainsTable(t, enc_k)) { + call $Abort($StdError(7/*INVALID_ARGUMENTS*/, 101/*ENOT_FOUND*/)); + } else { + k' := k; + v := GetTable(t, enc_k); + m' := $UpdateMutation(m, RemoveTable(t, enc_k)); + } +} +procedure {:inline 2} $1_simple_map_borrow'address_address'(t: Table int (int), k: int) returns (v: int) { + var enc_k: int; + enc_k := $EncodeKey'address'(k); + if (!ContainsTable(t, enc_k)) { + call $Abort($StdError(7/*INVALID_ARGUMENTS*/, 101/*ENOT_FOUND*/)); + } else { + v := GetTable(t, $EncodeKey'address'(k)); + } +} +procedure {:inline 2} $1_simple_map_borrow_mut'address_address'(m: $Mutation (Table int (int)), k: int) +returns (dst: $Mutation (int), m': $Mutation (Table int (int))) { + var enc_k: int; + var t: Table int (int); + enc_k := $EncodeKey'address'(k); + t := $Dereference(m); + if (!ContainsTable(t, enc_k)) { + call $Abort($StdError(7/*INVALID_ARGUMENTS*/, 101/*ENOT_FOUND*/)); + } else { + dst := $Mutation(l#$Mutation(m), ExtendVec(p#$Mutation(m), enc_k), GetTable(t, enc_k)); + m' := m; + } +} +function {:inline} $1_simple_map_spec_len'address_address'(t: (Table int (int))): int { + LenTable(t) +} +function {:inline} $1_simple_map_spec_contains_key'address_address'(t: (Table int (int)), k: int): bool { + ContainsTable(t, $EncodeKey'address'(k)) +} +function {:inline} $1_simple_map_spec_set'address_address'(t: Table int (int), k: int, v: int): Table int (int) { + (var enc_k := $EncodeKey'address'(k); + if (ContainsTable(t, enc_k)) then + UpdateTable(t, enc_k, v) + else + AddTable(t, enc_k, v)) +} +function {:inline} $1_simple_map_spec_remove'address_address'(t: Table int (int), k: int): Table int (int) { + RemoveTable(t, $EncodeKey'address'(k)) +} +function {:inline} $1_simple_map_spec_get'address_address'(t: Table int (int), k: int): int { + GetTable(t, $EncodeKey'address'(k)) +} + + + +// ---------------------------------------------------------------------------------- +// Native Table implementation for type `(address,$1_staking_contract_StakingContract)` + +function $IsEqual'$1_simple_map_SimpleMap'address_$1_staking_contract_StakingContract''(t1: Table int ($1_staking_contract_StakingContract), t2: Table int ($1_staking_contract_StakingContract)): bool { + LenTable(t1) == LenTable(t2) && + (forall k: int :: ContainsTable(t1, k) <==> ContainsTable(t2, k)) && + (forall k: int :: ContainsTable(t1, k) ==> GetTable(t1, k) == GetTable(t2, k)) && + (forall k: int :: ContainsTable(t2, k) ==> GetTable(t1, k) == GetTable(t2, k)) +} + +// Not inlined. +function $IsValid'$1_simple_map_SimpleMap'address_$1_staking_contract_StakingContract''(t: Table int ($1_staking_contract_StakingContract)): bool { + $IsValid'u64'(LenTable(t)) && + (forall i: int:: ContainsTable(t, i) ==> $IsValid'$1_staking_contract_StakingContract'(GetTable(t, i))) +} +procedure {:inline 2} $1_simple_map_create'address_$1_staking_contract_StakingContract'() returns (v: Table int ($1_staking_contract_StakingContract)) { + v := EmptyTable(); +} +procedure {:inline 2} $1_simple_map_destroy_empty'address_$1_staking_contract_StakingContract'(t: Table int ($1_staking_contract_StakingContract)) { + if (LenTable(t) != 0) { + call $Abort($StdError(1/*INVALID_STATE*/, 102/*ENOT_EMPTY*/)); + } +} +procedure {:inline 2} $1_simple_map_length'address_$1_staking_contract_StakingContract'(t: (Table int ($1_staking_contract_StakingContract))) returns (l: int) { + l := LenTable(t); +} +procedure {:inline 2} $1_simple_map_contains_key'address_$1_staking_contract_StakingContract'(t: (Table int ($1_staking_contract_StakingContract)), k: int) returns (r: bool) { + r := ContainsTable(t, $EncodeKey'address'(k)); +} +procedure {:inline 2} $1_simple_map_add'address_$1_staking_contract_StakingContract'(m: $Mutation (Table int ($1_staking_contract_StakingContract)), k: int, v: $1_staking_contract_StakingContract) returns (m': $Mutation(Table int ($1_staking_contract_StakingContract))) { + var enc_k: int; + var t: Table int ($1_staking_contract_StakingContract); + enc_k := $EncodeKey'address'(k); + t := $Dereference(m); + if (ContainsTable(t, enc_k)) { + call $Abort($StdError(7/*INVALID_ARGUMENTS*/, 100/*EALREADY_EXISTS*/)); + } else { + m' := $UpdateMutation(m, AddTable(t, enc_k, v)); + } +} +procedure {:inline 2} $1_simple_map_remove'address_$1_staking_contract_StakingContract'(m: $Mutation (Table int ($1_staking_contract_StakingContract)), k: int) +returns (k': int, v: $1_staking_contract_StakingContract, m': $Mutation(Table int ($1_staking_contract_StakingContract))) { + var enc_k: int; + var t: Table int ($1_staking_contract_StakingContract); + enc_k := $EncodeKey'address'(k); + t := $Dereference(m); + if (!ContainsTable(t, enc_k)) { + call $Abort($StdError(7/*INVALID_ARGUMENTS*/, 101/*ENOT_FOUND*/)); + } else { + k' := k; + v := GetTable(t, enc_k); + m' := $UpdateMutation(m, RemoveTable(t, enc_k)); + } +} +procedure {:inline 2} $1_simple_map_borrow'address_$1_staking_contract_StakingContract'(t: Table int ($1_staking_contract_StakingContract), k: int) returns (v: $1_staking_contract_StakingContract) { + var enc_k: int; + enc_k := $EncodeKey'address'(k); + if (!ContainsTable(t, enc_k)) { + call $Abort($StdError(7/*INVALID_ARGUMENTS*/, 101/*ENOT_FOUND*/)); + } else { + v := GetTable(t, $EncodeKey'address'(k)); + } +} +procedure {:inline 2} $1_simple_map_borrow_mut'address_$1_staking_contract_StakingContract'(m: $Mutation (Table int ($1_staking_contract_StakingContract)), k: int) +returns (dst: $Mutation ($1_staking_contract_StakingContract), m': $Mutation (Table int ($1_staking_contract_StakingContract))) { + var enc_k: int; + var t: Table int ($1_staking_contract_StakingContract); + enc_k := $EncodeKey'address'(k); + t := $Dereference(m); + if (!ContainsTable(t, enc_k)) { + call $Abort($StdError(7/*INVALID_ARGUMENTS*/, 101/*ENOT_FOUND*/)); + } else { + dst := $Mutation(l#$Mutation(m), ExtendVec(p#$Mutation(m), enc_k), GetTable(t, enc_k)); + m' := m; + } +} +function {:inline} $1_simple_map_spec_len'address_$1_staking_contract_StakingContract'(t: (Table int ($1_staking_contract_StakingContract))): int { + LenTable(t) +} +function {:inline} $1_simple_map_spec_contains_key'address_$1_staking_contract_StakingContract'(t: (Table int ($1_staking_contract_StakingContract)), k: int): bool { + ContainsTable(t, $EncodeKey'address'(k)) +} +function {:inline} $1_simple_map_spec_set'address_$1_staking_contract_StakingContract'(t: Table int ($1_staking_contract_StakingContract), k: int, v: $1_staking_contract_StakingContract): Table int ($1_staking_contract_StakingContract) { + (var enc_k := $EncodeKey'address'(k); + if (ContainsTable(t, enc_k)) then + UpdateTable(t, enc_k, v) + else + AddTable(t, enc_k, v)) +} +function {:inline} $1_simple_map_spec_remove'address_$1_staking_contract_StakingContract'(t: Table int ($1_staking_contract_StakingContract), k: int): Table int ($1_staking_contract_StakingContract) { + RemoveTable(t, $EncodeKey'address'(k)) +} +function {:inline} $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'(t: Table int ($1_staking_contract_StakingContract), k: int): $1_staking_contract_StakingContract { + GetTable(t, $EncodeKey'address'(k)) +} + + + +// ---------------------------------------------------------------------------------- +// Native Table implementation for type `($1_string_String,address)` + +function $IsEqual'$1_simple_map_SimpleMap'$1_string_String_address''(t1: Table int (int), t2: Table int (int)): bool { + LenTable(t1) == LenTable(t2) && + (forall k: int :: ContainsTable(t1, k) <==> ContainsTable(t2, k)) && + (forall k: int :: ContainsTable(t1, k) ==> GetTable(t1, k) == GetTable(t2, k)) && + (forall k: int :: ContainsTable(t2, k) ==> GetTable(t1, k) == GetTable(t2, k)) +} + +// Not inlined. +function $IsValid'$1_simple_map_SimpleMap'$1_string_String_address''(t: Table int (int)): bool { + $IsValid'u64'(LenTable(t)) && + (forall i: int:: ContainsTable(t, i) ==> $IsValid'address'(GetTable(t, i))) +} +procedure {:inline 2} $1_simple_map_create'$1_string_String_address'() returns (v: Table int (int)) { + v := EmptyTable(); +} +procedure {:inline 2} $1_simple_map_destroy_empty'$1_string_String_address'(t: Table int (int)) { + if (LenTable(t) != 0) { + call $Abort($StdError(1/*INVALID_STATE*/, 102/*ENOT_EMPTY*/)); + } +} +procedure {:inline 2} $1_simple_map_length'$1_string_String_address'(t: (Table int (int))) returns (l: int) { + l := LenTable(t); +} +procedure {:inline 2} $1_simple_map_contains_key'$1_string_String_address'(t: (Table int (int)), k: $1_string_String) returns (r: bool) { + r := ContainsTable(t, $EncodeKey'$1_string_String'(k)); +} +procedure {:inline 2} $1_simple_map_add'$1_string_String_address'(m: $Mutation (Table int (int)), k: $1_string_String, v: int) returns (m': $Mutation(Table int (int))) { + var enc_k: int; + var t: Table int (int); + enc_k := $EncodeKey'$1_string_String'(k); + t := $Dereference(m); + if (ContainsTable(t, enc_k)) { + call $Abort($StdError(7/*INVALID_ARGUMENTS*/, 100/*EALREADY_EXISTS*/)); + } else { + m' := $UpdateMutation(m, AddTable(t, enc_k, v)); + } +} +procedure {:inline 2} $1_simple_map_remove'$1_string_String_address'(m: $Mutation (Table int (int)), k: $1_string_String) +returns (k': $1_string_String, v: int, m': $Mutation(Table int (int))) { + var enc_k: int; + var t: Table int (int); + enc_k := $EncodeKey'$1_string_String'(k); + t := $Dereference(m); + if (!ContainsTable(t, enc_k)) { + call $Abort($StdError(7/*INVALID_ARGUMENTS*/, 101/*ENOT_FOUND*/)); + } else { + k' := k; + v := GetTable(t, enc_k); + m' := $UpdateMutation(m, RemoveTable(t, enc_k)); + } +} +procedure {:inline 2} $1_simple_map_borrow'$1_string_String_address'(t: Table int (int), k: $1_string_String) returns (v: int) { + var enc_k: int; + enc_k := $EncodeKey'$1_string_String'(k); + if (!ContainsTable(t, enc_k)) { + call $Abort($StdError(7/*INVALID_ARGUMENTS*/, 101/*ENOT_FOUND*/)); + } else { + v := GetTable(t, $EncodeKey'$1_string_String'(k)); + } +} +procedure {:inline 2} $1_simple_map_borrow_mut'$1_string_String_address'(m: $Mutation (Table int (int)), k: $1_string_String) +returns (dst: $Mutation (int), m': $Mutation (Table int (int))) { + var enc_k: int; + var t: Table int (int); + enc_k := $EncodeKey'$1_string_String'(k); + t := $Dereference(m); + if (!ContainsTable(t, enc_k)) { + call $Abort($StdError(7/*INVALID_ARGUMENTS*/, 101/*ENOT_FOUND*/)); + } else { + dst := $Mutation(l#$Mutation(m), ExtendVec(p#$Mutation(m), enc_k), GetTable(t, enc_k)); + m' := m; + } +} +function {:inline} $1_simple_map_spec_len'$1_string_String_address'(t: (Table int (int))): int { + LenTable(t) +} +function {:inline} $1_simple_map_spec_contains_key'$1_string_String_address'(t: (Table int (int)), k: $1_string_String): bool { + ContainsTable(t, $EncodeKey'$1_string_String'(k)) +} +function {:inline} $1_simple_map_spec_set'$1_string_String_address'(t: Table int (int), k: $1_string_String, v: int): Table int (int) { + (var enc_k := $EncodeKey'$1_string_String'(k); + if (ContainsTable(t, enc_k)) then + UpdateTable(t, enc_k, v) + else + AddTable(t, enc_k, v)) +} +function {:inline} $1_simple_map_spec_remove'$1_string_String_address'(t: Table int (int), k: $1_string_String): Table int (int) { + RemoveTable(t, $EncodeKey'$1_string_String'(k)) +} +function {:inline} $1_simple_map_spec_get'$1_string_String_address'(t: Table int (int), k: $1_string_String): int { + GetTable(t, $EncodeKey'$1_string_String'(k)) +} + + + +// ================================================================================== +// Native Hash + +// Hash is modeled as an otherwise uninterpreted injection. +// In truth, it is not an injection since the domain has greater cardinality +// (arbitrary length vectors) than the co-domain (vectors of length 32). But it is +// common to assume in code there are no hash collisions in practice. Fortunately, +// Boogie is not smart enough to recognized that there is an inconsistency. +// FIXME: If we were using a reliable extensional theory of arrays, and if we could use == +// instead of $IsEqual, we might be able to avoid so many quantified formulas by +// using a sha2_inverse function in the ensures conditions of Hash_sha2_256 to +// assert that sha2/3 are injections without using global quantified axioms. + + +function $1_hash_sha2(val: Vec int): Vec int; + +// This says that Hash_sha2 is bijective. +axiom (forall v1,v2: Vec int :: {$1_hash_sha2(v1), $1_hash_sha2(v2)} + $IsEqual'vec'u8''(v1, v2) <==> $IsEqual'vec'u8''($1_hash_sha2(v1), $1_hash_sha2(v2))); + +procedure $1_hash_sha2_256(val: Vec int) returns (res: Vec int); +ensures res == $1_hash_sha2(val); // returns Hash_sha2 Value +ensures $IsValid'vec'u8''(res); // result is a legal vector of U8s. +ensures LenVec(res) == 32; // result is 32 bytes. + +// Spec version of Move native function. +function {:inline} $1_hash_$sha2_256(val: Vec int): Vec int { + $1_hash_sha2(val) +} + +// similarly for Hash_sha3 +function $1_hash_sha3(val: Vec int): Vec int; + +axiom (forall v1,v2: Vec int :: {$1_hash_sha3(v1), $1_hash_sha3(v2)} + $IsEqual'vec'u8''(v1, v2) <==> $IsEqual'vec'u8''($1_hash_sha3(v1), $1_hash_sha3(v2))); + +procedure $1_hash_sha3_256(val: Vec int) returns (res: Vec int); +ensures res == $1_hash_sha3(val); // returns Hash_sha3 Value +ensures $IsValid'vec'u8''(res); // result is a legal vector of U8s. +ensures LenVec(res) == 32; // result is 32 bytes. + +// Spec version of Move native function. +function {:inline} $1_hash_$sha3_256(val: Vec int): Vec int { + $1_hash_sha3(val) +} + +// ================================================================================== +// Native string + +// TODO: correct implementation of strings + +procedure {:inline 1} $1_string_internal_check_utf8(x: Vec int) returns (r: bool) { +} + +procedure {:inline 1} $1_string_internal_sub_string(x: Vec int, i: int, j: int) returns (r: Vec int) { +} + +procedure {:inline 1} $1_string_internal_index_of(x: Vec int, y: Vec int) returns (r: int) { +} + +procedure {:inline 1} $1_string_internal_is_char_boundary(x: Vec int, i: int) returns (r: bool) { +} + + + + +// ================================================================================== +// Native diem_account + +procedure {:inline 1} $1_DiemAccount_create_signer( + addr: int +) returns (signer: $signer) { + // A signer is currently identical to an address. + signer := $signer(addr); +} + +procedure {:inline 1} $1_DiemAccount_destroy_signer( + signer: $signer +) { + return; +} + +// ================================================================================== +// Native account + +procedure {:inline 1} $1_Account_create_signer( + addr: int +) returns (signer: $signer) { + // A signer is currently identical to an address. + signer := $signer(addr); +} + +// ================================================================================== +// Native Signer + +type {:datatype} $signer; +function {:constructor} $signer($addr: int): $signer; +function {:inline} $IsValid'signer'(s: $signer): bool { + $IsValid'address'($addr#$signer(s)) +} +function {:inline} $IsEqual'signer'(s1: $signer, s2: $signer): bool { + s1 == s2 +} + +procedure {:inline 1} $1_signer_borrow_address(signer: $signer) returns (res: int) { + res := $addr#$signer(signer); +} + +function {:inline} $1_signer_$borrow_address(signer: $signer): int +{ + $addr#$signer(signer) +} + +function $1_signer_is_txn_signer(s: $signer): bool; + +function $1_signer_is_txn_signer_addr(a: int): bool; + + +// ================================================================================== +// Native signature + +// Signature related functionality is handled via uninterpreted functions. This is sound +// currently because we verify every code path based on signature verification with +// an arbitrary interpretation. + +function $1_Signature_$ed25519_validate_pubkey(public_key: Vec int): bool; +function $1_Signature_$ed25519_verify(signature: Vec int, public_key: Vec int, message: Vec int): bool; + +// Needed because we do not have extensional equality: +axiom (forall k1, k2: Vec int :: + {$1_Signature_$ed25519_validate_pubkey(k1), $1_Signature_$ed25519_validate_pubkey(k2)} + $IsEqual'vec'u8''(k1, k2) ==> $1_Signature_$ed25519_validate_pubkey(k1) == $1_Signature_$ed25519_validate_pubkey(k2)); +axiom (forall s1, s2, k1, k2, m1, m2: Vec int :: + {$1_Signature_$ed25519_verify(s1, k1, m1), $1_Signature_$ed25519_verify(s2, k2, m2)} + $IsEqual'vec'u8''(s1, s2) && $IsEqual'vec'u8''(k1, k2) && $IsEqual'vec'u8''(m1, m2) + ==> $1_Signature_$ed25519_verify(s1, k1, m1) == $1_Signature_$ed25519_verify(s2, k2, m2)); + + +procedure {:inline 1} $1_Signature_ed25519_validate_pubkey(public_key: Vec int) returns (res: bool) { + res := $1_Signature_$ed25519_validate_pubkey(public_key); +} + +procedure {:inline 1} $1_Signature_ed25519_verify( + signature: Vec int, public_key: Vec int, message: Vec int) returns (res: bool) { + res := $1_Signature_$ed25519_verify(signature, public_key, message); +} + + +// ================================================================================== +// Native bcs::serialize + +// ---------------------------------------------------------------------------------- +// Native BCS implementation for element type `address` + +// Serialize is modeled as an uninterpreted function, with an additional +// axiom to say it's an injection. + +function $1_bcs_serialize'address'(v: int): Vec int; + +axiom (forall v1, v2: int :: {$1_bcs_serialize'address'(v1), $1_bcs_serialize'address'(v2)} + $IsEqual'address'(v1, v2) <==> $IsEqual'vec'u8''($1_bcs_serialize'address'(v1), $1_bcs_serialize'address'(v2))); + +// This says that serialize returns a non-empty vec + +axiom (forall v: int :: {$1_bcs_serialize'address'(v)} + ( var r := $1_bcs_serialize'address'(v); $IsValid'vec'u8''(r) && LenVec(r) > 0 )); + + +procedure $1_bcs_to_bytes'address'(v: int) returns (res: Vec int); +ensures res == $1_bcs_serialize'address'(v); + +function {:inline} $1_bcs_$to_bytes'address'(v: int): Vec int { + $1_bcs_serialize'address'(v) +} + +// Serialized addresses should have the same length. +const $serialized_address_len: int; +// Serialized addresses should have the same length +axiom (forall v: int :: {$1_bcs_serialize'address'(v)} + ( var r := $1_bcs_serialize'address'(v); LenVec(r) == $serialized_address_len)); + + + +// ---------------------------------------------------------------------------------- +// Native BCS implementation for element type `u64` + +// Serialize is modeled as an uninterpreted function, with an additional +// axiom to say it's an injection. + +function $1_bcs_serialize'u64'(v: int): Vec int; + +axiom (forall v1, v2: int :: {$1_bcs_serialize'u64'(v1), $1_bcs_serialize'u64'(v2)} + $IsEqual'u64'(v1, v2) <==> $IsEqual'vec'u8''($1_bcs_serialize'u64'(v1), $1_bcs_serialize'u64'(v2))); + +// This says that serialize returns a non-empty vec + +axiom (forall v: int :: {$1_bcs_serialize'u64'(v)} + ( var r := $1_bcs_serialize'u64'(v); $IsValid'vec'u8''(r) && LenVec(r) > 0 )); + + +procedure $1_bcs_to_bytes'u64'(v: int) returns (res: Vec int); +ensures res == $1_bcs_serialize'u64'(v); + +function {:inline} $1_bcs_$to_bytes'u64'(v: int): Vec int { + $1_bcs_serialize'u64'(v) +} + + + + + +// ================================================================================== +// Native Event module + + + +procedure {:inline 1} $InitEventStore() { +} + +// ============================================================================================ +// Type Reflection on Type Parameters + +type {:datatype} $TypeParamInfo; + +function {:constructor} $TypeParamBool(): $TypeParamInfo; +function {:constructor} $TypeParamU8(): $TypeParamInfo; +function {:constructor} $TypeParamU16(): $TypeParamInfo; +function {:constructor} $TypeParamU32(): $TypeParamInfo; +function {:constructor} $TypeParamU64(): $TypeParamInfo; +function {:constructor} $TypeParamU128(): $TypeParamInfo; +function {:constructor} $TypeParamU256(): $TypeParamInfo; +function {:constructor} $TypeParamAddress(): $TypeParamInfo; +function {:constructor} $TypeParamSigner(): $TypeParamInfo; +function {:constructor} $TypeParamVector(e: $TypeParamInfo): $TypeParamInfo; +function {:constructor} $TypeParamStruct(a: int, m: Vec int, s: Vec int): $TypeParamInfo; + + + +//================================== +// Begin Translation + +function $TypeName(t: $TypeParamInfo): Vec int; +axiom (forall t: $TypeParamInfo :: {$TypeName(t)} is#$TypeParamBool(t) ==> $IsEqual'vec'u8''($TypeName(t), Vec(DefaultVecMap()[0 := 98][1 := 111][2 := 111][3 := 108], 4))); +axiom (forall t: $TypeParamInfo :: {$TypeName(t)} $IsEqual'vec'u8''($TypeName(t), Vec(DefaultVecMap()[0 := 98][1 := 111][2 := 111][3 := 108], 4)) ==> is#$TypeParamBool(t)); +axiom (forall t: $TypeParamInfo :: {$TypeName(t)} is#$TypeParamU8(t) ==> $IsEqual'vec'u8''($TypeName(t), Vec(DefaultVecMap()[0 := 117][1 := 56], 2))); +axiom (forall t: $TypeParamInfo :: {$TypeName(t)} $IsEqual'vec'u8''($TypeName(t), Vec(DefaultVecMap()[0 := 117][1 := 56], 2)) ==> is#$TypeParamU8(t)); +axiom (forall t: $TypeParamInfo :: {$TypeName(t)} is#$TypeParamU16(t) ==> $IsEqual'vec'u8''($TypeName(t), Vec(DefaultVecMap()[0 := 117][1 := 49][2 := 54], 3))); +axiom (forall t: $TypeParamInfo :: {$TypeName(t)} $IsEqual'vec'u8''($TypeName(t), Vec(DefaultVecMap()[0 := 117][1 := 49][2 := 54], 3)) ==> is#$TypeParamU16(t)); +axiom (forall t: $TypeParamInfo :: {$TypeName(t)} is#$TypeParamU32(t) ==> $IsEqual'vec'u8''($TypeName(t), Vec(DefaultVecMap()[0 := 117][1 := 51][2 := 50], 3))); +axiom (forall t: $TypeParamInfo :: {$TypeName(t)} $IsEqual'vec'u8''($TypeName(t), Vec(DefaultVecMap()[0 := 117][1 := 51][2 := 50], 3)) ==> is#$TypeParamU32(t)); +axiom (forall t: $TypeParamInfo :: {$TypeName(t)} is#$TypeParamU64(t) ==> $IsEqual'vec'u8''($TypeName(t), Vec(DefaultVecMap()[0 := 117][1 := 54][2 := 52], 3))); +axiom (forall t: $TypeParamInfo :: {$TypeName(t)} $IsEqual'vec'u8''($TypeName(t), Vec(DefaultVecMap()[0 := 117][1 := 54][2 := 52], 3)) ==> is#$TypeParamU64(t)); +axiom (forall t: $TypeParamInfo :: {$TypeName(t)} is#$TypeParamU128(t) ==> $IsEqual'vec'u8''($TypeName(t), Vec(DefaultVecMap()[0 := 117][1 := 49][2 := 50][3 := 56], 4))); +axiom (forall t: $TypeParamInfo :: {$TypeName(t)} $IsEqual'vec'u8''($TypeName(t), Vec(DefaultVecMap()[0 := 117][1 := 49][2 := 50][3 := 56], 4)) ==> is#$TypeParamU128(t)); +axiom (forall t: $TypeParamInfo :: {$TypeName(t)} is#$TypeParamU256(t) ==> $IsEqual'vec'u8''($TypeName(t), Vec(DefaultVecMap()[0 := 117][1 := 50][2 := 53][3 := 54], 4))); +axiom (forall t: $TypeParamInfo :: {$TypeName(t)} $IsEqual'vec'u8''($TypeName(t), Vec(DefaultVecMap()[0 := 117][1 := 50][2 := 53][3 := 54], 4)) ==> is#$TypeParamU256(t)); +axiom (forall t: $TypeParamInfo :: {$TypeName(t)} is#$TypeParamAddress(t) ==> $IsEqual'vec'u8''($TypeName(t), Vec(DefaultVecMap()[0 := 97][1 := 100][2 := 100][3 := 114][4 := 101][5 := 115][6 := 115], 7))); +axiom (forall t: $TypeParamInfo :: {$TypeName(t)} $IsEqual'vec'u8''($TypeName(t), Vec(DefaultVecMap()[0 := 97][1 := 100][2 := 100][3 := 114][4 := 101][5 := 115][6 := 115], 7)) ==> is#$TypeParamAddress(t)); +axiom (forall t: $TypeParamInfo :: {$TypeName(t)} is#$TypeParamSigner(t) ==> $IsEqual'vec'u8''($TypeName(t), Vec(DefaultVecMap()[0 := 115][1 := 105][2 := 103][3 := 110][4 := 101][5 := 114], 6))); +axiom (forall t: $TypeParamInfo :: {$TypeName(t)} $IsEqual'vec'u8''($TypeName(t), Vec(DefaultVecMap()[0 := 115][1 := 105][2 := 103][3 := 110][4 := 101][5 := 114], 6)) ==> is#$TypeParamSigner(t)); +axiom (forall t: $TypeParamInfo :: {$TypeName(t)} is#$TypeParamVector(t) ==> $IsEqual'vec'u8''($TypeName(t), ConcatVec(ConcatVec(Vec(DefaultVecMap()[0 := 118][1 := 101][2 := 99][3 := 116][4 := 111][5 := 114][6 := 60], 7), $TypeName(e#$TypeParamVector(t))), Vec(DefaultVecMap()[0 := 62], 1)))); +axiom (forall t: $TypeParamInfo :: {$TypeName(t)} ($IsPrefix'vec'u8''($TypeName(t), Vec(DefaultVecMap()[0 := 118][1 := 101][2 := 99][3 := 116][4 := 111][5 := 114][6 := 60], 7)) && $IsSuffix'vec'u8''($TypeName(t), Vec(DefaultVecMap()[0 := 62], 1))) ==> is#$TypeParamVector(t)); +axiom (forall t: $TypeParamInfo :: {$TypeName(t)} is#$TypeParamStruct(t) ==> $IsEqual'vec'u8''($TypeName(t), ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(Vec(DefaultVecMap()[0 := 48][1 := 120], 2), MakeVec1(a#$TypeParamStruct(t))), Vec(DefaultVecMap()[0 := 58][1 := 58], 2)), m#$TypeParamStruct(t)), Vec(DefaultVecMap()[0 := 58][1 := 58], 2)), s#$TypeParamStruct(t)))); +axiom (forall t: $TypeParamInfo :: {$TypeName(t)} $IsPrefix'vec'u8''($TypeName(t), Vec(DefaultVecMap()[0 := 48][1 := 120], 2)) ==> is#$TypeParamVector(t)); + + +// Given Types for Type Parameters + +type #0; +function {:inline} $IsEqual'#0'(x1: #0, x2: #0): bool { x1 == x2 } +function {:inline} $IsValid'#0'(x: #0): bool { true } +var #0_info: $TypeParamInfo; +var #0_$memory: $Memory #0; + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'bool'($1_from_bcs_deserialize'bool'(b1), $1_from_bcs_deserialize'bool'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'u8'($1_from_bcs_deserialize'u8'(b1), $1_from_bcs_deserialize'u8'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'u64'($1_from_bcs_deserialize'u64'(b1), $1_from_bcs_deserialize'u64'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'u128'($1_from_bcs_deserialize'u128'(b1), $1_from_bcs_deserialize'u128'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'u256'($1_from_bcs_deserialize'u256'(b1), $1_from_bcs_deserialize'u256'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance
+axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'address'($1_from_bcs_deserialize'address'(b1), $1_from_bcs_deserialize'address'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'signer'($1_from_bcs_deserialize'signer'(b1), $1_from_bcs_deserialize'signer'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''($1_from_bcs_deserialize'vec'u8''(b1), $1_from_bcs_deserialize'vec'u8''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u64''($1_from_bcs_deserialize'vec'u64''(b1), $1_from_bcs_deserialize'vec'u64''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'address''($1_from_bcs_deserialize'vec'address''(b1), $1_from_bcs_deserialize'vec'address''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'$1_aggregator_Aggregator''($1_from_bcs_deserialize'vec'$1_aggregator_Aggregator''(b1), $1_from_bcs_deserialize'vec'$1_aggregator_Aggregator''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'$1_optional_aggregator_Integer''($1_from_bcs_deserialize'vec'$1_optional_aggregator_Integer''(b1), $1_from_bcs_deserialize'vec'$1_optional_aggregator_Integer''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'$1_optional_aggregator_OptionalAggregator''($1_from_bcs_deserialize'vec'$1_optional_aggregator_OptionalAggregator''(b1), $1_from_bcs_deserialize'vec'$1_optional_aggregator_OptionalAggregator''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'$1_fixed_point32_FixedPoint32''($1_from_bcs_deserialize'vec'$1_fixed_point32_FixedPoint32''(b1), $1_from_bcs_deserialize'vec'$1_fixed_point32_FixedPoint32''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'$1_stake_IndividualValidatorPerformance''($1_from_bcs_deserialize'vec'$1_stake_IndividualValidatorPerformance''(b1), $1_from_bcs_deserialize'vec'$1_stake_IndividualValidatorPerformance''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'$1_stake_ValidatorInfo''($1_from_bcs_deserialize'vec'$1_stake_ValidatorInfo''(b1), $1_from_bcs_deserialize'vec'$1_stake_ValidatorInfo''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'#0''($1_from_bcs_deserialize'vec'#0''(b1), $1_from_bcs_deserialize'vec'#0''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_option_Option'u64''($1_from_bcs_deserialize'$1_option_Option'u64''(b1), $1_from_bcs_deserialize'$1_option_Option'u64''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_option_Option'address''($1_from_bcs_deserialize'$1_option_Option'address''(b1), $1_from_bcs_deserialize'$1_option_Option'address''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_option_Option'$1_aggregator_Aggregator''($1_from_bcs_deserialize'$1_option_Option'$1_aggregator_Aggregator''(b1), $1_from_bcs_deserialize'$1_option_Option'$1_aggregator_Aggregator''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_option_Option'$1_optional_aggregator_Integer''($1_from_bcs_deserialize'$1_option_Option'$1_optional_aggregator_Integer''(b1), $1_from_bcs_deserialize'$1_option_Option'$1_optional_aggregator_Integer''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_option_Option'$1_optional_aggregator_OptionalAggregator''($1_from_bcs_deserialize'$1_option_Option'$1_optional_aggregator_OptionalAggregator''(b1), $1_from_bcs_deserialize'$1_option_Option'$1_optional_aggregator_OptionalAggregator''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_string_String'($1_from_bcs_deserialize'$1_string_String'(b1), $1_from_bcs_deserialize'$1_string_String'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_type_info_TypeInfo'($1_from_bcs_deserialize'$1_type_info_TypeInfo'(b1), $1_from_bcs_deserialize'$1_type_info_TypeInfo'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_guid_GUID'($1_from_bcs_deserialize'$1_guid_GUID'(b1), $1_from_bcs_deserialize'$1_guid_GUID'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_guid_ID'($1_from_bcs_deserialize'$1_guid_ID'(b1), $1_from_bcs_deserialize'$1_guid_ID'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_event_EventHandle'$1_account_CoinRegisterEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_account_CoinRegisterEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_account_CoinRegisterEvent''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_event_EventHandle'$1_account_KeyRotationEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_account_KeyRotationEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_account_KeyRotationEvent''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_event_EventHandle'$1_coin_DepositEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_coin_DepositEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_coin_DepositEvent''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_event_EventHandle'$1_coin_WithdrawEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_coin_WithdrawEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_coin_WithdrawEvent''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_event_EventHandle'$1_aptos_account_DirectCoinTransferConfigUpdatedEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_aptos_account_DirectCoinTransferConfigUpdatedEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_aptos_account_DirectCoinTransferConfigUpdatedEvent''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_event_EventHandle'$1_stake_AddStakeEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_AddStakeEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_AddStakeEvent''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_event_EventHandle'$1_stake_DistributeRewardsEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_DistributeRewardsEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_DistributeRewardsEvent''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_event_EventHandle'$1_stake_IncreaseLockupEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_IncreaseLockupEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_IncreaseLockupEvent''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_event_EventHandle'$1_stake_JoinValidatorSetEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_JoinValidatorSetEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_JoinValidatorSetEvent''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_event_EventHandle'$1_stake_LeaveValidatorSetEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_LeaveValidatorSetEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_LeaveValidatorSetEvent''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_event_EventHandle'$1_stake_ReactivateStakeEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_ReactivateStakeEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_ReactivateStakeEvent''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_event_EventHandle'$1_stake_RegisterValidatorCandidateEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_RegisterValidatorCandidateEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_RegisterValidatorCandidateEvent''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_event_EventHandle'$1_stake_RotateConsensusKeyEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_RotateConsensusKeyEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_RotateConsensusKeyEvent''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_event_EventHandle'$1_stake_SetOperatorEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_SetOperatorEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_SetOperatorEvent''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_event_EventHandle'$1_stake_UnlockStakeEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_UnlockStakeEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_UnlockStakeEvent''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_event_EventHandle'$1_stake_UpdateNetworkAndFullnodeAddressesEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_UpdateNetworkAndFullnodeAddressesEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_UpdateNetworkAndFullnodeAddressesEvent''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_event_EventHandle'$1_stake_WithdrawStakeEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_WithdrawStakeEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_WithdrawStakeEvent''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_event_EventHandle'$1_reconfiguration_NewEpochEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_reconfiguration_NewEpochEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_reconfiguration_NewEpochEvent''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_event_EventHandle'$1_staking_contract_AddStakeEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_AddStakeEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_AddStakeEvent''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_event_EventHandle'$1_staking_contract_UnlockStakeEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_UnlockStakeEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_UnlockStakeEvent''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_event_EventHandle'$1_staking_contract_DistributeEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_DistributeEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_DistributeEvent''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_event_EventHandle'$1_staking_contract_RequestCommissionEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_RequestCommissionEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_RequestCommissionEvent''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_event_EventHandle'$1_staking_contract_ResetLockupEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_ResetLockupEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_ResetLockupEvent''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_event_EventHandle'$1_staking_contract_UpdateVoterEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_UpdateVoterEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_UpdateVoterEvent''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_event_EventHandle'$1_vesting_DistributeEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_DistributeEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_DistributeEvent''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_event_EventHandle'$1_vesting_ResetLockupEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_ResetLockupEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_ResetLockupEvent''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_event_EventHandle'$1_vesting_UpdateVoterEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_UpdateVoterEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_UpdateVoterEvent''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_event_EventHandle'$1_vesting_AdminWithdrawEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_AdminWithdrawEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_AdminWithdrawEvent''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_event_EventHandle'$1_vesting_CreateVestingContractEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_CreateVestingContractEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_CreateVestingContractEvent''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_event_EventHandle'$1_vesting_SetBeneficiaryEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_SetBeneficiaryEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_SetBeneficiaryEvent''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_event_EventHandle'$1_vesting_TerminateEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_TerminateEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_TerminateEvent''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_event_EventHandle'$1_vesting_UnlockRewardsEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_UnlockRewardsEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_UnlockRewardsEvent''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_event_EventHandle'$1_vesting_UpdateOperatorEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_UpdateOperatorEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_UpdateOperatorEvent''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_event_EventHandle'$1_vesting_VestEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_VestEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_VestEvent''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_account_Account'($1_from_bcs_deserialize'$1_account_Account'(b1), $1_from_bcs_deserialize'$1_account_Account'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_account_CapabilityOffer'$1_account_RotationCapability''($1_from_bcs_deserialize'$1_account_CapabilityOffer'$1_account_RotationCapability''(b1), $1_from_bcs_deserialize'$1_account_CapabilityOffer'$1_account_RotationCapability''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_account_CapabilityOffer'$1_account_SignerCapability''($1_from_bcs_deserialize'$1_account_CapabilityOffer'$1_account_SignerCapability''(b1), $1_from_bcs_deserialize'$1_account_CapabilityOffer'$1_account_SignerCapability''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_account_CoinRegisterEvent'($1_from_bcs_deserialize'$1_account_CoinRegisterEvent'(b1), $1_from_bcs_deserialize'$1_account_CoinRegisterEvent'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_account_SignerCapability'($1_from_bcs_deserialize'$1_account_SignerCapability'(b1), $1_from_bcs_deserialize'$1_account_SignerCapability'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_aggregator_Aggregator'($1_from_bcs_deserialize'$1_aggregator_Aggregator'(b1), $1_from_bcs_deserialize'$1_aggregator_Aggregator'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_optional_aggregator_Integer'($1_from_bcs_deserialize'$1_optional_aggregator_Integer'(b1), $1_from_bcs_deserialize'$1_optional_aggregator_Integer'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_optional_aggregator_OptionalAggregator'($1_from_bcs_deserialize'$1_optional_aggregator_OptionalAggregator'(b1), $1_from_bcs_deserialize'$1_optional_aggregator_OptionalAggregator'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_coin_Coin'$1_aptos_coin_AptosCoin''($1_from_bcs_deserialize'$1_coin_Coin'$1_aptos_coin_AptosCoin''(b1), $1_from_bcs_deserialize'$1_coin_Coin'$1_aptos_coin_AptosCoin''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_coin_CoinInfo'$1_aptos_coin_AptosCoin''($1_from_bcs_deserialize'$1_coin_CoinInfo'$1_aptos_coin_AptosCoin''(b1), $1_from_bcs_deserialize'$1_coin_CoinInfo'$1_aptos_coin_AptosCoin''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''($1_from_bcs_deserialize'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''(b1), $1_from_bcs_deserialize'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_coin_DepositEvent'($1_from_bcs_deserialize'$1_coin_DepositEvent'(b1), $1_from_bcs_deserialize'$1_coin_DepositEvent'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_coin_WithdrawEvent'($1_from_bcs_deserialize'$1_coin_WithdrawEvent'(b1), $1_from_bcs_deserialize'$1_coin_WithdrawEvent'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin''($1_from_bcs_deserialize'$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin''(b1), $1_from_bcs_deserialize'$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin''($1_from_bcs_deserialize'$1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin''(b1), $1_from_bcs_deserialize'$1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_aptos_coin_AptosCoin'($1_from_bcs_deserialize'$1_aptos_coin_AptosCoin'(b1), $1_from_bcs_deserialize'$1_aptos_coin_AptosCoin'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_aptos_account_DirectTransferConfig'($1_from_bcs_deserialize'$1_aptos_account_DirectTransferConfig'(b1), $1_from_bcs_deserialize'$1_aptos_account_DirectTransferConfig'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_chain_status_GenesisEndMarker'($1_from_bcs_deserialize'$1_chain_status_GenesisEndMarker'(b1), $1_from_bcs_deserialize'$1_chain_status_GenesisEndMarker'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_timestamp_CurrentTimeMicroseconds'($1_from_bcs_deserialize'$1_timestamp_CurrentTimeMicroseconds'(b1), $1_from_bcs_deserialize'$1_timestamp_CurrentTimeMicroseconds'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_simple_map_SimpleMap'address_u64''($1_from_bcs_deserialize'$1_simple_map_SimpleMap'address_u64''(b1), $1_from_bcs_deserialize'$1_simple_map_SimpleMap'address_u64''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_simple_map_SimpleMap'address_address''($1_from_bcs_deserialize'$1_simple_map_SimpleMap'address_address''(b1), $1_from_bcs_deserialize'$1_simple_map_SimpleMap'address_address''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_simple_map_SimpleMap'address_$1_staking_contract_StakingContract''($1_from_bcs_deserialize'$1_simple_map_SimpleMap'address_$1_staking_contract_StakingContract''(b1), $1_from_bcs_deserialize'$1_simple_map_SimpleMap'address_$1_staking_contract_StakingContract''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_simple_map_SimpleMap'$1_string_String_address''($1_from_bcs_deserialize'$1_simple_map_SimpleMap'$1_string_String_address''(b1), $1_from_bcs_deserialize'$1_simple_map_SimpleMap'$1_string_String_address''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_fixed_point32_FixedPoint32'($1_from_bcs_deserialize'$1_fixed_point32_FixedPoint32'(b1), $1_from_bcs_deserialize'$1_fixed_point32_FixedPoint32'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_staking_config_StakingConfig'($1_from_bcs_deserialize'$1_staking_config_StakingConfig'(b1), $1_from_bcs_deserialize'$1_staking_config_StakingConfig'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_stake_IncreaseLockupEvent'($1_from_bcs_deserialize'$1_stake_IncreaseLockupEvent'(b1), $1_from_bcs_deserialize'$1_stake_IncreaseLockupEvent'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_stake_OwnerCapability'($1_from_bcs_deserialize'$1_stake_OwnerCapability'(b1), $1_from_bcs_deserialize'$1_stake_OwnerCapability'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_stake_SetOperatorEvent'($1_from_bcs_deserialize'$1_stake_SetOperatorEvent'(b1), $1_from_bcs_deserialize'$1_stake_SetOperatorEvent'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_stake_StakePool'($1_from_bcs_deserialize'$1_stake_StakePool'(b1), $1_from_bcs_deserialize'$1_stake_StakePool'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_stake_UnlockStakeEvent'($1_from_bcs_deserialize'$1_stake_UnlockStakeEvent'(b1), $1_from_bcs_deserialize'$1_stake_UnlockStakeEvent'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_stake_ValidatorConfig'($1_from_bcs_deserialize'$1_stake_ValidatorConfig'(b1), $1_from_bcs_deserialize'$1_stake_ValidatorConfig'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_stake_ValidatorInfo'($1_from_bcs_deserialize'$1_stake_ValidatorInfo'(b1), $1_from_bcs_deserialize'$1_stake_ValidatorInfo'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_stake_ValidatorPerformance'($1_from_bcs_deserialize'$1_stake_ValidatorPerformance'(b1), $1_from_bcs_deserialize'$1_stake_ValidatorPerformance'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_stake_ValidatorSet'($1_from_bcs_deserialize'$1_stake_ValidatorSet'(b1), $1_from_bcs_deserialize'$1_stake_ValidatorSet'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_stake_WithdrawStakeEvent'($1_from_bcs_deserialize'$1_stake_WithdrawStakeEvent'(b1), $1_from_bcs_deserialize'$1_stake_WithdrawStakeEvent'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_reconfiguration_Configuration'($1_from_bcs_deserialize'$1_reconfiguration_Configuration'(b1), $1_from_bcs_deserialize'$1_reconfiguration_Configuration'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_pool_u64_Pool'($1_from_bcs_deserialize'$1_pool_u64_Pool'(b1), $1_from_bcs_deserialize'$1_pool_u64_Pool'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_staking_contract_UnlockStakeEvent'($1_from_bcs_deserialize'$1_staking_contract_UnlockStakeEvent'(b1), $1_from_bcs_deserialize'$1_staking_contract_UnlockStakeEvent'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_staking_contract_AddDistributionEvent'($1_from_bcs_deserialize'$1_staking_contract_AddDistributionEvent'(b1), $1_from_bcs_deserialize'$1_staking_contract_AddDistributionEvent'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_staking_contract_DistributeEvent'($1_from_bcs_deserialize'$1_staking_contract_DistributeEvent'(b1), $1_from_bcs_deserialize'$1_staking_contract_DistributeEvent'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_staking_contract_RequestCommissionEvent'($1_from_bcs_deserialize'$1_staking_contract_RequestCommissionEvent'(b1), $1_from_bcs_deserialize'$1_staking_contract_RequestCommissionEvent'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_staking_contract_ResetLockupEvent'($1_from_bcs_deserialize'$1_staking_contract_ResetLockupEvent'(b1), $1_from_bcs_deserialize'$1_staking_contract_ResetLockupEvent'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_staking_contract_StakingContract'($1_from_bcs_deserialize'$1_staking_contract_StakingContract'(b1), $1_from_bcs_deserialize'$1_staking_contract_StakingContract'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_staking_contract_Store'($1_from_bcs_deserialize'$1_staking_contract_Store'(b1), $1_from_bcs_deserialize'$1_staking_contract_Store'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_staking_contract_SwitchOperatorEvent'($1_from_bcs_deserialize'$1_staking_contract_SwitchOperatorEvent'(b1), $1_from_bcs_deserialize'$1_staking_contract_SwitchOperatorEvent'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_staking_contract_UpdateVoterEvent'($1_from_bcs_deserialize'$1_staking_contract_UpdateVoterEvent'(b1), $1_from_bcs_deserialize'$1_staking_contract_UpdateVoterEvent'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_vesting_DistributeEvent'($1_from_bcs_deserialize'$1_vesting_DistributeEvent'(b1), $1_from_bcs_deserialize'$1_vesting_DistributeEvent'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_vesting_ResetLockupEvent'($1_from_bcs_deserialize'$1_vesting_ResetLockupEvent'(b1), $1_from_bcs_deserialize'$1_vesting_ResetLockupEvent'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_vesting_UpdateVoterEvent'($1_from_bcs_deserialize'$1_vesting_UpdateVoterEvent'(b1), $1_from_bcs_deserialize'$1_vesting_UpdateVoterEvent'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_vesting_AdminStore'($1_from_bcs_deserialize'$1_vesting_AdminStore'(b1), $1_from_bcs_deserialize'$1_vesting_AdminStore'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_vesting_AdminWithdrawEvent'($1_from_bcs_deserialize'$1_vesting_AdminWithdrawEvent'(b1), $1_from_bcs_deserialize'$1_vesting_AdminWithdrawEvent'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_vesting_SetBeneficiaryEvent'($1_from_bcs_deserialize'$1_vesting_SetBeneficiaryEvent'(b1), $1_from_bcs_deserialize'$1_vesting_SetBeneficiaryEvent'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_vesting_StakingInfo'($1_from_bcs_deserialize'$1_vesting_StakingInfo'(b1), $1_from_bcs_deserialize'$1_vesting_StakingInfo'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_vesting_TerminateEvent'($1_from_bcs_deserialize'$1_vesting_TerminateEvent'(b1), $1_from_bcs_deserialize'$1_vesting_TerminateEvent'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_vesting_UpdateOperatorEvent'($1_from_bcs_deserialize'$1_vesting_UpdateOperatorEvent'(b1), $1_from_bcs_deserialize'$1_vesting_UpdateOperatorEvent'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_vesting_VestEvent'($1_from_bcs_deserialize'$1_vesting_VestEvent'(b1), $1_from_bcs_deserialize'$1_vesting_VestEvent'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_vesting_VestingAccountManagement'($1_from_bcs_deserialize'$1_vesting_VestingAccountManagement'(b1), $1_from_bcs_deserialize'$1_vesting_VestingAccountManagement'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_vesting_VestingContract'($1_from_bcs_deserialize'$1_vesting_VestingContract'(b1), $1_from_bcs_deserialize'$1_vesting_VestingContract'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_vesting_VestingSchedule'($1_from_bcs_deserialize'$1_vesting_VestingSchedule'(b1), $1_from_bcs_deserialize'$1_vesting_VestingSchedule'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance <#0> +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'#0'($1_from_bcs_deserialize'#0'(b1), $1_from_bcs_deserialize'#0'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'bool'(b1), $1_from_bcs_deserializable'bool'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'u8'(b1), $1_from_bcs_deserializable'u8'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'u64'(b1), $1_from_bcs_deserializable'u64'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'u128'(b1), $1_from_bcs_deserializable'u128'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'u256'(b1), $1_from_bcs_deserializable'u256'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance
+axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'address'(b1), $1_from_bcs_deserializable'address'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'signer'(b1), $1_from_bcs_deserializable'signer'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'vec'u8''(b1), $1_from_bcs_deserializable'vec'u8''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'vec'u64''(b1), $1_from_bcs_deserializable'vec'u64''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'vec'address''(b1), $1_from_bcs_deserializable'vec'address''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'vec'$1_aggregator_Aggregator''(b1), $1_from_bcs_deserializable'vec'$1_aggregator_Aggregator''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'vec'$1_optional_aggregator_Integer''(b1), $1_from_bcs_deserializable'vec'$1_optional_aggregator_Integer''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'vec'$1_optional_aggregator_OptionalAggregator''(b1), $1_from_bcs_deserializable'vec'$1_optional_aggregator_OptionalAggregator''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'vec'$1_fixed_point32_FixedPoint32''(b1), $1_from_bcs_deserializable'vec'$1_fixed_point32_FixedPoint32''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'vec'$1_stake_IndividualValidatorPerformance''(b1), $1_from_bcs_deserializable'vec'$1_stake_IndividualValidatorPerformance''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'vec'$1_stake_ValidatorInfo''(b1), $1_from_bcs_deserializable'vec'$1_stake_ValidatorInfo''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'vec'#0''(b1), $1_from_bcs_deserializable'vec'#0''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_option_Option'u64''(b1), $1_from_bcs_deserializable'$1_option_Option'u64''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_option_Option'address''(b1), $1_from_bcs_deserializable'$1_option_Option'address''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_option_Option'$1_aggregator_Aggregator''(b1), $1_from_bcs_deserializable'$1_option_Option'$1_aggregator_Aggregator''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_option_Option'$1_optional_aggregator_Integer''(b1), $1_from_bcs_deserializable'$1_option_Option'$1_optional_aggregator_Integer''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_option_Option'$1_optional_aggregator_OptionalAggregator''(b1), $1_from_bcs_deserializable'$1_option_Option'$1_optional_aggregator_OptionalAggregator''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_string_String'(b1), $1_from_bcs_deserializable'$1_string_String'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_type_info_TypeInfo'(b1), $1_from_bcs_deserializable'$1_type_info_TypeInfo'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_guid_GUID'(b1), $1_from_bcs_deserializable'$1_guid_GUID'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_guid_ID'(b1), $1_from_bcs_deserializable'$1_guid_ID'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_event_EventHandle'$1_account_CoinRegisterEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_account_CoinRegisterEvent''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_event_EventHandle'$1_account_KeyRotationEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_account_KeyRotationEvent''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_event_EventHandle'$1_coin_DepositEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_coin_DepositEvent''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_event_EventHandle'$1_coin_WithdrawEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_coin_WithdrawEvent''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_event_EventHandle'$1_aptos_account_DirectCoinTransferConfigUpdatedEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_aptos_account_DirectCoinTransferConfigUpdatedEvent''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_AddStakeEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_AddStakeEvent''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_DistributeRewardsEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_DistributeRewardsEvent''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_IncreaseLockupEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_IncreaseLockupEvent''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_JoinValidatorSetEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_JoinValidatorSetEvent''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_LeaveValidatorSetEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_LeaveValidatorSetEvent''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_ReactivateStakeEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_ReactivateStakeEvent''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_RegisterValidatorCandidateEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_RegisterValidatorCandidateEvent''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_RotateConsensusKeyEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_RotateConsensusKeyEvent''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_SetOperatorEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_SetOperatorEvent''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_UnlockStakeEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_UnlockStakeEvent''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_UpdateNetworkAndFullnodeAddressesEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_UpdateNetworkAndFullnodeAddressesEvent''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_WithdrawStakeEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_WithdrawStakeEvent''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_event_EventHandle'$1_reconfiguration_NewEpochEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_reconfiguration_NewEpochEvent''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_event_EventHandle'$1_staking_contract_AddStakeEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_staking_contract_AddStakeEvent''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_event_EventHandle'$1_staking_contract_UnlockStakeEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_staking_contract_UnlockStakeEvent''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_event_EventHandle'$1_staking_contract_DistributeEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_staking_contract_DistributeEvent''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_event_EventHandle'$1_staking_contract_RequestCommissionEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_staking_contract_RequestCommissionEvent''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_event_EventHandle'$1_staking_contract_ResetLockupEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_staking_contract_ResetLockupEvent''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_event_EventHandle'$1_staking_contract_UpdateVoterEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_staking_contract_UpdateVoterEvent''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_event_EventHandle'$1_vesting_DistributeEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_vesting_DistributeEvent''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_event_EventHandle'$1_vesting_ResetLockupEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_vesting_ResetLockupEvent''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_event_EventHandle'$1_vesting_UpdateVoterEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_vesting_UpdateVoterEvent''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_event_EventHandle'$1_vesting_AdminWithdrawEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_vesting_AdminWithdrawEvent''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_event_EventHandle'$1_vesting_CreateVestingContractEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_vesting_CreateVestingContractEvent''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_event_EventHandle'$1_vesting_SetBeneficiaryEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_vesting_SetBeneficiaryEvent''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_event_EventHandle'$1_vesting_TerminateEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_vesting_TerminateEvent''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_event_EventHandle'$1_vesting_UnlockRewardsEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_vesting_UnlockRewardsEvent''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_event_EventHandle'$1_vesting_UpdateOperatorEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_vesting_UpdateOperatorEvent''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_event_EventHandle'$1_vesting_VestEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_vesting_VestEvent''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_account_Account'(b1), $1_from_bcs_deserializable'$1_account_Account'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_account_CapabilityOffer'$1_account_RotationCapability''(b1), $1_from_bcs_deserializable'$1_account_CapabilityOffer'$1_account_RotationCapability''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_account_CapabilityOffer'$1_account_SignerCapability''(b1), $1_from_bcs_deserializable'$1_account_CapabilityOffer'$1_account_SignerCapability''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_account_CoinRegisterEvent'(b1), $1_from_bcs_deserializable'$1_account_CoinRegisterEvent'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_account_SignerCapability'(b1), $1_from_bcs_deserializable'$1_account_SignerCapability'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_aggregator_Aggregator'(b1), $1_from_bcs_deserializable'$1_aggregator_Aggregator'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_optional_aggregator_Integer'(b1), $1_from_bcs_deserializable'$1_optional_aggregator_Integer'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_optional_aggregator_OptionalAggregator'(b1), $1_from_bcs_deserializable'$1_optional_aggregator_OptionalAggregator'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_coin_Coin'$1_aptos_coin_AptosCoin''(b1), $1_from_bcs_deserializable'$1_coin_Coin'$1_aptos_coin_AptosCoin''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_coin_CoinInfo'$1_aptos_coin_AptosCoin''(b1), $1_from_bcs_deserializable'$1_coin_CoinInfo'$1_aptos_coin_AptosCoin''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''(b1), $1_from_bcs_deserializable'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_coin_DepositEvent'(b1), $1_from_bcs_deserializable'$1_coin_DepositEvent'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_coin_WithdrawEvent'(b1), $1_from_bcs_deserializable'$1_coin_WithdrawEvent'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin''(b1), $1_from_bcs_deserializable'$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin''(b1), $1_from_bcs_deserializable'$1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_aptos_coin_AptosCoin'(b1), $1_from_bcs_deserializable'$1_aptos_coin_AptosCoin'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_aptos_account_DirectTransferConfig'(b1), $1_from_bcs_deserializable'$1_aptos_account_DirectTransferConfig'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_chain_status_GenesisEndMarker'(b1), $1_from_bcs_deserializable'$1_chain_status_GenesisEndMarker'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_timestamp_CurrentTimeMicroseconds'(b1), $1_from_bcs_deserializable'$1_timestamp_CurrentTimeMicroseconds'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_simple_map_SimpleMap'address_u64''(b1), $1_from_bcs_deserializable'$1_simple_map_SimpleMap'address_u64''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_simple_map_SimpleMap'address_address''(b1), $1_from_bcs_deserializable'$1_simple_map_SimpleMap'address_address''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_simple_map_SimpleMap'address_$1_staking_contract_StakingContract''(b1), $1_from_bcs_deserializable'$1_simple_map_SimpleMap'address_$1_staking_contract_StakingContract''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_simple_map_SimpleMap'$1_string_String_address''(b1), $1_from_bcs_deserializable'$1_simple_map_SimpleMap'$1_string_String_address''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_fixed_point32_FixedPoint32'(b1), $1_from_bcs_deserializable'$1_fixed_point32_FixedPoint32'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_staking_config_StakingConfig'(b1), $1_from_bcs_deserializable'$1_staking_config_StakingConfig'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_stake_IncreaseLockupEvent'(b1), $1_from_bcs_deserializable'$1_stake_IncreaseLockupEvent'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_stake_OwnerCapability'(b1), $1_from_bcs_deserializable'$1_stake_OwnerCapability'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_stake_SetOperatorEvent'(b1), $1_from_bcs_deserializable'$1_stake_SetOperatorEvent'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_stake_StakePool'(b1), $1_from_bcs_deserializable'$1_stake_StakePool'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_stake_UnlockStakeEvent'(b1), $1_from_bcs_deserializable'$1_stake_UnlockStakeEvent'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_stake_ValidatorConfig'(b1), $1_from_bcs_deserializable'$1_stake_ValidatorConfig'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_stake_ValidatorInfo'(b1), $1_from_bcs_deserializable'$1_stake_ValidatorInfo'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_stake_ValidatorPerformance'(b1), $1_from_bcs_deserializable'$1_stake_ValidatorPerformance'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_stake_ValidatorSet'(b1), $1_from_bcs_deserializable'$1_stake_ValidatorSet'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_stake_WithdrawStakeEvent'(b1), $1_from_bcs_deserializable'$1_stake_WithdrawStakeEvent'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_reconfiguration_Configuration'(b1), $1_from_bcs_deserializable'$1_reconfiguration_Configuration'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_pool_u64_Pool'(b1), $1_from_bcs_deserializable'$1_pool_u64_Pool'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_staking_contract_UnlockStakeEvent'(b1), $1_from_bcs_deserializable'$1_staking_contract_UnlockStakeEvent'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_staking_contract_AddDistributionEvent'(b1), $1_from_bcs_deserializable'$1_staking_contract_AddDistributionEvent'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_staking_contract_DistributeEvent'(b1), $1_from_bcs_deserializable'$1_staking_contract_DistributeEvent'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_staking_contract_RequestCommissionEvent'(b1), $1_from_bcs_deserializable'$1_staking_contract_RequestCommissionEvent'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_staking_contract_ResetLockupEvent'(b1), $1_from_bcs_deserializable'$1_staking_contract_ResetLockupEvent'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_staking_contract_StakingContract'(b1), $1_from_bcs_deserializable'$1_staking_contract_StakingContract'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_staking_contract_Store'(b1), $1_from_bcs_deserializable'$1_staking_contract_Store'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_staking_contract_SwitchOperatorEvent'(b1), $1_from_bcs_deserializable'$1_staking_contract_SwitchOperatorEvent'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_staking_contract_UpdateVoterEvent'(b1), $1_from_bcs_deserializable'$1_staking_contract_UpdateVoterEvent'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_vesting_DistributeEvent'(b1), $1_from_bcs_deserializable'$1_vesting_DistributeEvent'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_vesting_ResetLockupEvent'(b1), $1_from_bcs_deserializable'$1_vesting_ResetLockupEvent'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_vesting_UpdateVoterEvent'(b1), $1_from_bcs_deserializable'$1_vesting_UpdateVoterEvent'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_vesting_AdminStore'(b1), $1_from_bcs_deserializable'$1_vesting_AdminStore'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_vesting_AdminWithdrawEvent'(b1), $1_from_bcs_deserializable'$1_vesting_AdminWithdrawEvent'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_vesting_SetBeneficiaryEvent'(b1), $1_from_bcs_deserializable'$1_vesting_SetBeneficiaryEvent'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_vesting_StakingInfo'(b1), $1_from_bcs_deserializable'$1_vesting_StakingInfo'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_vesting_TerminateEvent'(b1), $1_from_bcs_deserializable'$1_vesting_TerminateEvent'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_vesting_UpdateOperatorEvent'(b1), $1_from_bcs_deserializable'$1_vesting_UpdateOperatorEvent'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_vesting_VestEvent'(b1), $1_from_bcs_deserializable'$1_vesting_VestEvent'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_vesting_VestingAccountManagement'(b1), $1_from_bcs_deserializable'$1_vesting_VestingAccountManagement'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_vesting_VestingContract'(b1), $1_from_bcs_deserializable'$1_vesting_VestingContract'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_vesting_VestingSchedule'(b1), $1_from_bcs_deserializable'$1_vesting_VestingSchedule'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance <#0> +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'#0'(b1), $1_from_bcs_deserializable'#0'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserialize'bool'(b1), $1_from_bcs_deserialize'bool'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'u8'($1_from_bcs_deserialize'u8'(b1), $1_from_bcs_deserialize'u8'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'u64'($1_from_bcs_deserialize'u64'(b1), $1_from_bcs_deserialize'u64'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'u128'($1_from_bcs_deserialize'u128'(b1), $1_from_bcs_deserialize'u128'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'u256'($1_from_bcs_deserialize'u256'(b1), $1_from_bcs_deserialize'u256'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance
+axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'address'($1_from_bcs_deserialize'address'(b1), $1_from_bcs_deserialize'address'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'signer'($1_from_bcs_deserialize'signer'(b1), $1_from_bcs_deserialize'signer'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'vec'u8''($1_from_bcs_deserialize'vec'u8''(b1), $1_from_bcs_deserialize'vec'u8''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'vec'u64''($1_from_bcs_deserialize'vec'u64''(b1), $1_from_bcs_deserialize'vec'u64''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'vec'address''($1_from_bcs_deserialize'vec'address''(b1), $1_from_bcs_deserialize'vec'address''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'vec'$1_aggregator_Aggregator''($1_from_bcs_deserialize'vec'$1_aggregator_Aggregator''(b1), $1_from_bcs_deserialize'vec'$1_aggregator_Aggregator''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'vec'$1_optional_aggregator_Integer''($1_from_bcs_deserialize'vec'$1_optional_aggregator_Integer''(b1), $1_from_bcs_deserialize'vec'$1_optional_aggregator_Integer''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'vec'$1_optional_aggregator_OptionalAggregator''($1_from_bcs_deserialize'vec'$1_optional_aggregator_OptionalAggregator''(b1), $1_from_bcs_deserialize'vec'$1_optional_aggregator_OptionalAggregator''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'vec'$1_fixed_point32_FixedPoint32''($1_from_bcs_deserialize'vec'$1_fixed_point32_FixedPoint32''(b1), $1_from_bcs_deserialize'vec'$1_fixed_point32_FixedPoint32''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'vec'$1_stake_IndividualValidatorPerformance''($1_from_bcs_deserialize'vec'$1_stake_IndividualValidatorPerformance''(b1), $1_from_bcs_deserialize'vec'$1_stake_IndividualValidatorPerformance''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'vec'$1_stake_ValidatorInfo''($1_from_bcs_deserialize'vec'$1_stake_ValidatorInfo''(b1), $1_from_bcs_deserialize'vec'$1_stake_ValidatorInfo''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'vec'#0''($1_from_bcs_deserialize'vec'#0''(b1), $1_from_bcs_deserialize'vec'#0''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_option_Option'u64''($1_from_bcs_deserialize'$1_option_Option'u64''(b1), $1_from_bcs_deserialize'$1_option_Option'u64''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_option_Option'address''($1_from_bcs_deserialize'$1_option_Option'address''(b1), $1_from_bcs_deserialize'$1_option_Option'address''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_option_Option'$1_aggregator_Aggregator''($1_from_bcs_deserialize'$1_option_Option'$1_aggregator_Aggregator''(b1), $1_from_bcs_deserialize'$1_option_Option'$1_aggregator_Aggregator''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_option_Option'$1_optional_aggregator_Integer''($1_from_bcs_deserialize'$1_option_Option'$1_optional_aggregator_Integer''(b1), $1_from_bcs_deserialize'$1_option_Option'$1_optional_aggregator_Integer''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_option_Option'$1_optional_aggregator_OptionalAggregator''($1_from_bcs_deserialize'$1_option_Option'$1_optional_aggregator_OptionalAggregator''(b1), $1_from_bcs_deserialize'$1_option_Option'$1_optional_aggregator_OptionalAggregator''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_string_String'($1_from_bcs_deserialize'$1_string_String'(b1), $1_from_bcs_deserialize'$1_string_String'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_type_info_TypeInfo'($1_from_bcs_deserialize'$1_type_info_TypeInfo'(b1), $1_from_bcs_deserialize'$1_type_info_TypeInfo'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_guid_GUID'($1_from_bcs_deserialize'$1_guid_GUID'(b1), $1_from_bcs_deserialize'$1_guid_GUID'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_guid_ID'($1_from_bcs_deserialize'$1_guid_ID'(b1), $1_from_bcs_deserialize'$1_guid_ID'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_event_EventHandle'$1_account_CoinRegisterEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_account_CoinRegisterEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_account_CoinRegisterEvent''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_event_EventHandle'$1_account_KeyRotationEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_account_KeyRotationEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_account_KeyRotationEvent''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_event_EventHandle'$1_coin_DepositEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_coin_DepositEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_coin_DepositEvent''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_event_EventHandle'$1_coin_WithdrawEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_coin_WithdrawEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_coin_WithdrawEvent''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_event_EventHandle'$1_aptos_account_DirectCoinTransferConfigUpdatedEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_aptos_account_DirectCoinTransferConfigUpdatedEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_aptos_account_DirectCoinTransferConfigUpdatedEvent''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_event_EventHandle'$1_stake_AddStakeEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_AddStakeEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_AddStakeEvent''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_event_EventHandle'$1_stake_DistributeRewardsEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_DistributeRewardsEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_DistributeRewardsEvent''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_event_EventHandle'$1_stake_IncreaseLockupEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_IncreaseLockupEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_IncreaseLockupEvent''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_event_EventHandle'$1_stake_JoinValidatorSetEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_JoinValidatorSetEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_JoinValidatorSetEvent''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_event_EventHandle'$1_stake_LeaveValidatorSetEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_LeaveValidatorSetEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_LeaveValidatorSetEvent''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_event_EventHandle'$1_stake_ReactivateStakeEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_ReactivateStakeEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_ReactivateStakeEvent''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_event_EventHandle'$1_stake_RegisterValidatorCandidateEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_RegisterValidatorCandidateEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_RegisterValidatorCandidateEvent''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_event_EventHandle'$1_stake_RotateConsensusKeyEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_RotateConsensusKeyEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_RotateConsensusKeyEvent''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_event_EventHandle'$1_stake_SetOperatorEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_SetOperatorEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_SetOperatorEvent''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_event_EventHandle'$1_stake_UnlockStakeEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_UnlockStakeEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_UnlockStakeEvent''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_event_EventHandle'$1_stake_UpdateNetworkAndFullnodeAddressesEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_UpdateNetworkAndFullnodeAddressesEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_UpdateNetworkAndFullnodeAddressesEvent''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_event_EventHandle'$1_stake_WithdrawStakeEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_WithdrawStakeEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_WithdrawStakeEvent''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_event_EventHandle'$1_reconfiguration_NewEpochEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_reconfiguration_NewEpochEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_reconfiguration_NewEpochEvent''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_event_EventHandle'$1_staking_contract_AddStakeEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_AddStakeEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_AddStakeEvent''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_event_EventHandle'$1_staking_contract_UnlockStakeEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_UnlockStakeEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_UnlockStakeEvent''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_event_EventHandle'$1_staking_contract_DistributeEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_DistributeEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_DistributeEvent''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_event_EventHandle'$1_staking_contract_RequestCommissionEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_RequestCommissionEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_RequestCommissionEvent''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_event_EventHandle'$1_staking_contract_ResetLockupEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_ResetLockupEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_ResetLockupEvent''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_event_EventHandle'$1_staking_contract_UpdateVoterEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_UpdateVoterEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_UpdateVoterEvent''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_event_EventHandle'$1_vesting_DistributeEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_DistributeEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_DistributeEvent''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_event_EventHandle'$1_vesting_ResetLockupEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_ResetLockupEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_ResetLockupEvent''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_event_EventHandle'$1_vesting_UpdateVoterEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_UpdateVoterEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_UpdateVoterEvent''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_event_EventHandle'$1_vesting_AdminWithdrawEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_AdminWithdrawEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_AdminWithdrawEvent''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_event_EventHandle'$1_vesting_CreateVestingContractEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_CreateVestingContractEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_CreateVestingContractEvent''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_event_EventHandle'$1_vesting_SetBeneficiaryEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_SetBeneficiaryEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_SetBeneficiaryEvent''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_event_EventHandle'$1_vesting_TerminateEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_TerminateEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_TerminateEvent''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_event_EventHandle'$1_vesting_UnlockRewardsEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_UnlockRewardsEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_UnlockRewardsEvent''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_event_EventHandle'$1_vesting_UpdateOperatorEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_UpdateOperatorEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_UpdateOperatorEvent''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_event_EventHandle'$1_vesting_VestEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_VestEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_VestEvent''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_account_Account'($1_from_bcs_deserialize'$1_account_Account'(b1), $1_from_bcs_deserialize'$1_account_Account'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_account_CapabilityOffer'$1_account_RotationCapability''($1_from_bcs_deserialize'$1_account_CapabilityOffer'$1_account_RotationCapability''(b1), $1_from_bcs_deserialize'$1_account_CapabilityOffer'$1_account_RotationCapability''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_account_CapabilityOffer'$1_account_SignerCapability''($1_from_bcs_deserialize'$1_account_CapabilityOffer'$1_account_SignerCapability''(b1), $1_from_bcs_deserialize'$1_account_CapabilityOffer'$1_account_SignerCapability''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_account_CoinRegisterEvent'($1_from_bcs_deserialize'$1_account_CoinRegisterEvent'(b1), $1_from_bcs_deserialize'$1_account_CoinRegisterEvent'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_account_SignerCapability'($1_from_bcs_deserialize'$1_account_SignerCapability'(b1), $1_from_bcs_deserialize'$1_account_SignerCapability'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_aggregator_Aggregator'($1_from_bcs_deserialize'$1_aggregator_Aggregator'(b1), $1_from_bcs_deserialize'$1_aggregator_Aggregator'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_optional_aggregator_Integer'($1_from_bcs_deserialize'$1_optional_aggregator_Integer'(b1), $1_from_bcs_deserialize'$1_optional_aggregator_Integer'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_optional_aggregator_OptionalAggregator'($1_from_bcs_deserialize'$1_optional_aggregator_OptionalAggregator'(b1), $1_from_bcs_deserialize'$1_optional_aggregator_OptionalAggregator'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_coin_Coin'$1_aptos_coin_AptosCoin''($1_from_bcs_deserialize'$1_coin_Coin'$1_aptos_coin_AptosCoin''(b1), $1_from_bcs_deserialize'$1_coin_Coin'$1_aptos_coin_AptosCoin''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_coin_CoinInfo'$1_aptos_coin_AptosCoin''($1_from_bcs_deserialize'$1_coin_CoinInfo'$1_aptos_coin_AptosCoin''(b1), $1_from_bcs_deserialize'$1_coin_CoinInfo'$1_aptos_coin_AptosCoin''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''($1_from_bcs_deserialize'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''(b1), $1_from_bcs_deserialize'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_coin_DepositEvent'($1_from_bcs_deserialize'$1_coin_DepositEvent'(b1), $1_from_bcs_deserialize'$1_coin_DepositEvent'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_coin_WithdrawEvent'($1_from_bcs_deserialize'$1_coin_WithdrawEvent'(b1), $1_from_bcs_deserialize'$1_coin_WithdrawEvent'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin''($1_from_bcs_deserialize'$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin''(b1), $1_from_bcs_deserialize'$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin''($1_from_bcs_deserialize'$1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin''(b1), $1_from_bcs_deserialize'$1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_aptos_coin_AptosCoin'($1_from_bcs_deserialize'$1_aptos_coin_AptosCoin'(b1), $1_from_bcs_deserialize'$1_aptos_coin_AptosCoin'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_aptos_account_DirectTransferConfig'($1_from_bcs_deserialize'$1_aptos_account_DirectTransferConfig'(b1), $1_from_bcs_deserialize'$1_aptos_account_DirectTransferConfig'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_chain_status_GenesisEndMarker'($1_from_bcs_deserialize'$1_chain_status_GenesisEndMarker'(b1), $1_from_bcs_deserialize'$1_chain_status_GenesisEndMarker'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_timestamp_CurrentTimeMicroseconds'($1_from_bcs_deserialize'$1_timestamp_CurrentTimeMicroseconds'(b1), $1_from_bcs_deserialize'$1_timestamp_CurrentTimeMicroseconds'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_simple_map_SimpleMap'address_u64''($1_from_bcs_deserialize'$1_simple_map_SimpleMap'address_u64''(b1), $1_from_bcs_deserialize'$1_simple_map_SimpleMap'address_u64''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_simple_map_SimpleMap'address_address''($1_from_bcs_deserialize'$1_simple_map_SimpleMap'address_address''(b1), $1_from_bcs_deserialize'$1_simple_map_SimpleMap'address_address''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_simple_map_SimpleMap'address_$1_staking_contract_StakingContract''($1_from_bcs_deserialize'$1_simple_map_SimpleMap'address_$1_staking_contract_StakingContract''(b1), $1_from_bcs_deserialize'$1_simple_map_SimpleMap'address_$1_staking_contract_StakingContract''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_simple_map_SimpleMap'$1_string_String_address''($1_from_bcs_deserialize'$1_simple_map_SimpleMap'$1_string_String_address''(b1), $1_from_bcs_deserialize'$1_simple_map_SimpleMap'$1_string_String_address''(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_fixed_point32_FixedPoint32'($1_from_bcs_deserialize'$1_fixed_point32_FixedPoint32'(b1), $1_from_bcs_deserialize'$1_fixed_point32_FixedPoint32'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_staking_config_StakingConfig'($1_from_bcs_deserialize'$1_staking_config_StakingConfig'(b1), $1_from_bcs_deserialize'$1_staking_config_StakingConfig'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_stake_IncreaseLockupEvent'($1_from_bcs_deserialize'$1_stake_IncreaseLockupEvent'(b1), $1_from_bcs_deserialize'$1_stake_IncreaseLockupEvent'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_stake_OwnerCapability'($1_from_bcs_deserialize'$1_stake_OwnerCapability'(b1), $1_from_bcs_deserialize'$1_stake_OwnerCapability'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_stake_SetOperatorEvent'($1_from_bcs_deserialize'$1_stake_SetOperatorEvent'(b1), $1_from_bcs_deserialize'$1_stake_SetOperatorEvent'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_stake_StakePool'($1_from_bcs_deserialize'$1_stake_StakePool'(b1), $1_from_bcs_deserialize'$1_stake_StakePool'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_stake_UnlockStakeEvent'($1_from_bcs_deserialize'$1_stake_UnlockStakeEvent'(b1), $1_from_bcs_deserialize'$1_stake_UnlockStakeEvent'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_stake_ValidatorConfig'($1_from_bcs_deserialize'$1_stake_ValidatorConfig'(b1), $1_from_bcs_deserialize'$1_stake_ValidatorConfig'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_stake_ValidatorInfo'($1_from_bcs_deserialize'$1_stake_ValidatorInfo'(b1), $1_from_bcs_deserialize'$1_stake_ValidatorInfo'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_stake_ValidatorPerformance'($1_from_bcs_deserialize'$1_stake_ValidatorPerformance'(b1), $1_from_bcs_deserialize'$1_stake_ValidatorPerformance'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_stake_ValidatorSet'($1_from_bcs_deserialize'$1_stake_ValidatorSet'(b1), $1_from_bcs_deserialize'$1_stake_ValidatorSet'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_stake_WithdrawStakeEvent'($1_from_bcs_deserialize'$1_stake_WithdrawStakeEvent'(b1), $1_from_bcs_deserialize'$1_stake_WithdrawStakeEvent'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_reconfiguration_Configuration'($1_from_bcs_deserialize'$1_reconfiguration_Configuration'(b1), $1_from_bcs_deserialize'$1_reconfiguration_Configuration'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_pool_u64_Pool'($1_from_bcs_deserialize'$1_pool_u64_Pool'(b1), $1_from_bcs_deserialize'$1_pool_u64_Pool'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_staking_contract_UnlockStakeEvent'($1_from_bcs_deserialize'$1_staking_contract_UnlockStakeEvent'(b1), $1_from_bcs_deserialize'$1_staking_contract_UnlockStakeEvent'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_staking_contract_AddDistributionEvent'($1_from_bcs_deserialize'$1_staking_contract_AddDistributionEvent'(b1), $1_from_bcs_deserialize'$1_staking_contract_AddDistributionEvent'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_staking_contract_DistributeEvent'($1_from_bcs_deserialize'$1_staking_contract_DistributeEvent'(b1), $1_from_bcs_deserialize'$1_staking_contract_DistributeEvent'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_staking_contract_RequestCommissionEvent'($1_from_bcs_deserialize'$1_staking_contract_RequestCommissionEvent'(b1), $1_from_bcs_deserialize'$1_staking_contract_RequestCommissionEvent'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_staking_contract_ResetLockupEvent'($1_from_bcs_deserialize'$1_staking_contract_ResetLockupEvent'(b1), $1_from_bcs_deserialize'$1_staking_contract_ResetLockupEvent'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_staking_contract_StakingContract'($1_from_bcs_deserialize'$1_staking_contract_StakingContract'(b1), $1_from_bcs_deserialize'$1_staking_contract_StakingContract'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_staking_contract_Store'($1_from_bcs_deserialize'$1_staking_contract_Store'(b1), $1_from_bcs_deserialize'$1_staking_contract_Store'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_staking_contract_SwitchOperatorEvent'($1_from_bcs_deserialize'$1_staking_contract_SwitchOperatorEvent'(b1), $1_from_bcs_deserialize'$1_staking_contract_SwitchOperatorEvent'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_staking_contract_UpdateVoterEvent'($1_from_bcs_deserialize'$1_staking_contract_UpdateVoterEvent'(b1), $1_from_bcs_deserialize'$1_staking_contract_UpdateVoterEvent'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_vesting_DistributeEvent'($1_from_bcs_deserialize'$1_vesting_DistributeEvent'(b1), $1_from_bcs_deserialize'$1_vesting_DistributeEvent'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_vesting_ResetLockupEvent'($1_from_bcs_deserialize'$1_vesting_ResetLockupEvent'(b1), $1_from_bcs_deserialize'$1_vesting_ResetLockupEvent'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_vesting_UpdateVoterEvent'($1_from_bcs_deserialize'$1_vesting_UpdateVoterEvent'(b1), $1_from_bcs_deserialize'$1_vesting_UpdateVoterEvent'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_vesting_AdminStore'($1_from_bcs_deserialize'$1_vesting_AdminStore'(b1), $1_from_bcs_deserialize'$1_vesting_AdminStore'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_vesting_AdminWithdrawEvent'($1_from_bcs_deserialize'$1_vesting_AdminWithdrawEvent'(b1), $1_from_bcs_deserialize'$1_vesting_AdminWithdrawEvent'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_vesting_SetBeneficiaryEvent'($1_from_bcs_deserialize'$1_vesting_SetBeneficiaryEvent'(b1), $1_from_bcs_deserialize'$1_vesting_SetBeneficiaryEvent'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_vesting_StakingInfo'($1_from_bcs_deserialize'$1_vesting_StakingInfo'(b1), $1_from_bcs_deserialize'$1_vesting_StakingInfo'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_vesting_TerminateEvent'($1_from_bcs_deserialize'$1_vesting_TerminateEvent'(b1), $1_from_bcs_deserialize'$1_vesting_TerminateEvent'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_vesting_UpdateOperatorEvent'($1_from_bcs_deserialize'$1_vesting_UpdateOperatorEvent'(b1), $1_from_bcs_deserialize'$1_vesting_UpdateOperatorEvent'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_vesting_VestEvent'($1_from_bcs_deserialize'$1_vesting_VestEvent'(b1), $1_from_bcs_deserialize'$1_vesting_VestEvent'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_vesting_VestingAccountManagement'($1_from_bcs_deserialize'$1_vesting_VestingAccountManagement'(b1), $1_from_bcs_deserialize'$1_vesting_VestingAccountManagement'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_vesting_VestingContract'($1_from_bcs_deserialize'$1_vesting_VestingContract'(b1), $1_from_bcs_deserialize'$1_vesting_VestingContract'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_vesting_VestingSchedule'($1_from_bcs_deserialize'$1_vesting_VestingSchedule'(b1), $1_from_bcs_deserialize'$1_vesting_VestingSchedule'(b2))))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance <#0> +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'#0'($1_from_bcs_deserialize'#0'(b1), $1_from_bcs_deserialize'#0'(b2))))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:146:5+86 +function {:inline} $1_vector_$is_empty'u64'(v: Vec (int)): bool { + $IsEqual'u64'($1_vector_$length'u64'(v), 0) +} + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:146:5+86 +function {:inline} $1_vector_$is_empty'address'(v: Vec (int)): bool { + $IsEqual'u64'($1_vector_$length'address'(v), 0) +} + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:146:5+86 +function {:inline} $1_vector_$is_empty'$1_aggregator_Aggregator'(v: Vec ($1_aggregator_Aggregator)): bool { + $IsEqual'u64'($1_vector_$length'$1_aggregator_Aggregator'(v), 0) +} + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:146:5+86 +function {:inline} $1_vector_$is_empty'$1_optional_aggregator_Integer'(v: Vec ($1_optional_aggregator_Integer)): bool { + $IsEqual'u64'($1_vector_$length'$1_optional_aggregator_Integer'(v), 0) +} + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:608:9+110 +function {:inline} $1_vector_spec_contains'address'(v: Vec (int), e: int): bool { + (var $range_0 := v; (exists $i_1: int :: InRangeVec($range_0, $i_1) && (var x := ReadVec($range_0, $i_1); + ($IsEqual'address'(x, e))))) +} + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/option.move:102:5+145 +function {:inline} $1_option_$borrow'u64'(t: $1_option_Option'u64'): int { + $1_vector_$borrow'u64'($vec#$1_option_Option'u64'(t), 0) +} + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/option.move:102:5+145 +function {:inline} $1_option_$borrow'$1_aggregator_Aggregator'(t: $1_option_Option'$1_aggregator_Aggregator'): $1_aggregator_Aggregator { + $1_vector_$borrow'$1_aggregator_Aggregator'($vec#$1_option_Option'$1_aggregator_Aggregator'(t), 0) +} + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/option.move:102:5+145 +function {:inline} $1_option_$borrow'$1_optional_aggregator_Integer'(t: $1_option_Option'$1_optional_aggregator_Integer'): $1_optional_aggregator_Integer { + $1_vector_$borrow'$1_optional_aggregator_Integer'($vec#$1_option_Option'$1_optional_aggregator_Integer'(t), 0) +} + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/option.move:61:5+95 +function {:inline} $1_option_$is_none'u64'(t: $1_option_Option'u64'): bool { + $1_vector_$is_empty'u64'($vec#$1_option_Option'u64'(t)) +} + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/option.move:61:5+95 +function {:inline} $1_option_$is_none'$1_aggregator_Aggregator'(t: $1_option_Option'$1_aggregator_Aggregator'): bool { + $1_vector_$is_empty'$1_aggregator_Aggregator'($vec#$1_option_Option'$1_aggregator_Aggregator'(t)) +} + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/option.move:61:5+95 +function {:inline} $1_option_$is_none'$1_optional_aggregator_Integer'(t: $1_option_Option'$1_optional_aggregator_Integer'): bool { + $1_vector_$is_empty'$1_optional_aggregator_Integer'($vec#$1_option_Option'$1_optional_aggregator_Integer'(t)) +} + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/option.move:74:5+96 +function {:inline} $1_option_$is_some'u64'(t: $1_option_Option'u64'): bool { + !$1_vector_$is_empty'u64'($vec#$1_option_Option'u64'(t)) +} + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/option.move:74:5+96 +function {:inline} $1_option_$is_some'$1_aggregator_Aggregator'(t: $1_option_Option'$1_aggregator_Aggregator'): bool { + !$1_vector_$is_empty'$1_aggregator_Aggregator'($vec#$1_option_Option'$1_aggregator_Aggregator'(t)) +} + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/option.move:74:5+96 +function {:inline} $1_option_$is_some'$1_optional_aggregator_Integer'(t: $1_option_Option'$1_optional_aggregator_Integer'): bool { + !$1_vector_$is_empty'$1_optional_aggregator_Integer'($vec#$1_option_Option'$1_optional_aggregator_Integer'(t)) +} + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/option.move:34:10+78 +function {:inline} $1_option_spec_none'address'(): $1_option_Option'address' { + $1_option_Option'address'($EmptyVec'address'()) +} + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/option.move:47:10+89 +function {:inline} $1_option_spec_some'address'(e: int): $1_option_Option'address' { + $1_option_Option'address'(MakeVec1(e)) +} + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/option.move:69:10+91 +function {:inline} $1_option_spec_is_none'address'(t: $1_option_Option'address'): bool { + $1_vector_$is_empty'address'($vec#$1_option_Option'address'(t)) +} + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/option.move:82:10+92 +function {:inline} $1_option_spec_is_some'u64'(t: $1_option_Option'u64'): bool { + !$1_vector_$is_empty'u64'($vec#$1_option_Option'u64'(t)) +} + +// struct option::Option at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/option.move:7:5+81 +type {:datatype} $1_option_Option'u64'; +function {:constructor} $1_option_Option'u64'($vec: Vec (int)): $1_option_Option'u64'; +function {:inline} $Update'$1_option_Option'u64''_vec(s: $1_option_Option'u64', x: Vec (int)): $1_option_Option'u64' { + $1_option_Option'u64'(x) +} +function $IsValid'$1_option_Option'u64''(s: $1_option_Option'u64'): bool { + $IsValid'vec'u64''($vec#$1_option_Option'u64'(s)) +} +function {:inline} $IsEqual'$1_option_Option'u64''(s1: $1_option_Option'u64', s2: $1_option_Option'u64'): bool { + $IsEqual'vec'u64''($vec#$1_option_Option'u64'(s1), $vec#$1_option_Option'u64'(s2))} + +// struct option::Option
at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/option.move:7:5+81 +type {:datatype} $1_option_Option'address'; +function {:constructor} $1_option_Option'address'($vec: Vec (int)): $1_option_Option'address'; +function {:inline} $Update'$1_option_Option'address''_vec(s: $1_option_Option'address', x: Vec (int)): $1_option_Option'address' { + $1_option_Option'address'(x) +} +function $IsValid'$1_option_Option'address''(s: $1_option_Option'address'): bool { + $IsValid'vec'address''($vec#$1_option_Option'address'(s)) +} +function {:inline} $IsEqual'$1_option_Option'address''(s1: $1_option_Option'address', s2: $1_option_Option'address'): bool { + $IsEqual'vec'address''($vec#$1_option_Option'address'(s1), $vec#$1_option_Option'address'(s2))} + +// struct option::Option at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/option.move:7:5+81 +type {:datatype} $1_option_Option'$1_aggregator_Aggregator'; +function {:constructor} $1_option_Option'$1_aggregator_Aggregator'($vec: Vec ($1_aggregator_Aggregator)): $1_option_Option'$1_aggregator_Aggregator'; +function {:inline} $Update'$1_option_Option'$1_aggregator_Aggregator''_vec(s: $1_option_Option'$1_aggregator_Aggregator', x: Vec ($1_aggregator_Aggregator)): $1_option_Option'$1_aggregator_Aggregator' { + $1_option_Option'$1_aggregator_Aggregator'(x) +} +function $IsValid'$1_option_Option'$1_aggregator_Aggregator''(s: $1_option_Option'$1_aggregator_Aggregator'): bool { + $IsValid'vec'$1_aggregator_Aggregator''($vec#$1_option_Option'$1_aggregator_Aggregator'(s)) +} +function {:inline} $IsEqual'$1_option_Option'$1_aggregator_Aggregator''(s1: $1_option_Option'$1_aggregator_Aggregator', s2: $1_option_Option'$1_aggregator_Aggregator'): bool { + $IsEqual'vec'$1_aggregator_Aggregator''($vec#$1_option_Option'$1_aggregator_Aggregator'(s1), $vec#$1_option_Option'$1_aggregator_Aggregator'(s2))} + +// struct option::Option at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/option.move:7:5+81 +type {:datatype} $1_option_Option'$1_optional_aggregator_Integer'; +function {:constructor} $1_option_Option'$1_optional_aggregator_Integer'($vec: Vec ($1_optional_aggregator_Integer)): $1_option_Option'$1_optional_aggregator_Integer'; +function {:inline} $Update'$1_option_Option'$1_optional_aggregator_Integer''_vec(s: $1_option_Option'$1_optional_aggregator_Integer', x: Vec ($1_optional_aggregator_Integer)): $1_option_Option'$1_optional_aggregator_Integer' { + $1_option_Option'$1_optional_aggregator_Integer'(x) +} +function $IsValid'$1_option_Option'$1_optional_aggregator_Integer''(s: $1_option_Option'$1_optional_aggregator_Integer'): bool { + $IsValid'vec'$1_optional_aggregator_Integer''($vec#$1_option_Option'$1_optional_aggregator_Integer'(s)) +} +function {:inline} $IsEqual'$1_option_Option'$1_optional_aggregator_Integer''(s1: $1_option_Option'$1_optional_aggregator_Integer', s2: $1_option_Option'$1_optional_aggregator_Integer'): bool { + $IsEqual'vec'$1_optional_aggregator_Integer''($vec#$1_option_Option'$1_optional_aggregator_Integer'(s1), $vec#$1_option_Option'$1_optional_aggregator_Integer'(s2))} + +// struct option::Option at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/option.move:7:5+81 +type {:datatype} $1_option_Option'$1_optional_aggregator_OptionalAggregator'; +function {:constructor} $1_option_Option'$1_optional_aggregator_OptionalAggregator'($vec: Vec ($1_optional_aggregator_OptionalAggregator)): $1_option_Option'$1_optional_aggregator_OptionalAggregator'; +function {:inline} $Update'$1_option_Option'$1_optional_aggregator_OptionalAggregator''_vec(s: $1_option_Option'$1_optional_aggregator_OptionalAggregator', x: Vec ($1_optional_aggregator_OptionalAggregator)): $1_option_Option'$1_optional_aggregator_OptionalAggregator' { + $1_option_Option'$1_optional_aggregator_OptionalAggregator'(x) +} +function $IsValid'$1_option_Option'$1_optional_aggregator_OptionalAggregator''(s: $1_option_Option'$1_optional_aggregator_OptionalAggregator'): bool { + $IsValid'vec'$1_optional_aggregator_OptionalAggregator''($vec#$1_option_Option'$1_optional_aggregator_OptionalAggregator'(s)) +} +function {:inline} $IsEqual'$1_option_Option'$1_optional_aggregator_OptionalAggregator''(s1: $1_option_Option'$1_optional_aggregator_OptionalAggregator', s2: $1_option_Option'$1_optional_aggregator_OptionalAggregator'): bool { + $IsEqual'vec'$1_optional_aggregator_OptionalAggregator''($vec#$1_option_Option'$1_optional_aggregator_OptionalAggregator'(s1), $vec#$1_option_Option'$1_optional_aggregator_OptionalAggregator'(s2))} + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/string.spec.move:23:10+70 +function {:inline} $1_string_spec_utf8(bytes: Vec (int)): $1_string_String { + $1_string_String(bytes) +} + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/string.spec.move:28:9+50 +function $1_string_spec_internal_check_utf8(v: Vec (int)): bool; +axiom (forall v: Vec (int) :: +(var $$res := $1_string_spec_internal_check_utf8(v); +$IsValid'bool'($$res))); + +// struct string::String at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/string.move:13:5+70 +type {:datatype} $1_string_String; +function {:constructor} $1_string_String($bytes: Vec (int)): $1_string_String; +function {:inline} $Update'$1_string_String'_bytes(s: $1_string_String, x: Vec (int)): $1_string_String { + $1_string_String(x) +} +function $IsValid'$1_string_String'(s: $1_string_String): bool { + $IsValid'vec'u8''($bytes#$1_string_String(s)) +} +function {:inline} $IsEqual'$1_string_String'(s1: $1_string_String, s2: $1_string_String): bool { + $IsEqual'vec'u8''($bytes#$1_string_String(s1), $bytes#$1_string_String(s2))} + +// fun string::utf8 [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/string.move:18:5+133 +procedure {:inline 1} $1_string_utf8(_$t0: Vec (int)) returns ($ret0: $1_string_String) +{ + // declare local variables + var $t1: bool; + var $t2: int; + var $t3: $1_string_String; + var $t0: Vec (int); + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[bytes]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/string.move:18:5+1 + assume {:print "$at(15,573,574)"} true; + assume {:print "$track_local(2,13,0):", $t0} $t0 == $t0; + + // $t1 := opaque begin: string::internal_check_utf8($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/string.move:19:17+27 + assume {:print "$at(15,634,661)"} true; + + // assume WellFormed($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/string.move:19:17+27 + assume $IsValid'bool'($t1); + + // assume Eq($t1, string::spec_internal_check_utf8($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/string.move:19:17+27 + assume $IsEqual'bool'($t1, $1_string_spec_internal_check_utf8($t0)); + + // $t1 := opaque end: string::internal_check_utf8($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/string.move:19:17+27 + + // if ($t1) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/string.move:19:9+51 + if ($t1) { goto L1; } else { goto L0; } + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/string.move:19:9+51 +L1: + + // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/string.move:19:9+51 + assume {:print "$at(15,626,677)"} true; + goto L2; + + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/string.move:19:46+13 +L0: + + // $t2 := 1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/string.move:19:46+13 + assume {:print "$at(15,663,676)"} true; + $t2 := 1; + assume $IsValid'u64'($t2); + + // trace_abort($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/string.move:19:9+51 + assume {:print "$at(15,626,677)"} true; + assume {:print "$track_abort(2,13):", $t2} $t2 == $t2; + + // goto L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/string.move:19:9+51 + goto L4; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/string.move:20:16+5 + assume {:print "$at(15,694,699)"} true; +L2: + + // $t3 := pack string::String($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/string.move:20:9+13 + assume {:print "$at(15,687,700)"} true; + $t3 := $1_string_String($t0); + + // trace_return[0]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/string.move:20:9+13 + assume {:print "$track_return(2,13,0):", $t3} $t3 == $t3; + + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/string.move:21:5+1 + assume {:print "$at(15,705,706)"} true; +L3: + + // return $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/string.move:21:5+1 + assume {:print "$at(15,705,706)"} true; + $ret0 := $t3; + return; + + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/string.move:21:5+1 +L4: + + // abort($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/string.move:21:5+1 + assume {:print "$at(15,705,706)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/signer.move:12:5+77 +function {:inline} $1_signer_$address_of(s: $signer): int { + $1_signer_$borrow_address(s) +} + +// fun signer::address_of [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/signer.move:12:5+77 +procedure {:inline 1} $1_signer_address_of(_$t0: $signer) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t0: $signer; + var $temp_0'address': int; + var $temp_0'signer': $signer; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[s]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/signer.move:12:5+1 + assume {:print "$at(14,396,397)"} true; + assume {:print "$track_local(3,0,0):", $t0} $t0 == $t0; + + // $t1 := signer::borrow_address($t0) on_abort goto L2 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/signer.move:13:10+17 + assume {:print "$at(14,450,467)"} true; + call $t1 := $1_signer_borrow_address($t0); + if ($abort_flag) { + assume {:print "$at(14,450,467)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(3,0):", $t2} $t2 == $t2; + goto L2; + } + + // trace_return[0]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/signer.move:13:9+18 + assume {:print "$track_return(3,0,0):", $t1} $t1 == $t1; + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/signer.move:14:5+1 + assume {:print "$at(14,472,473)"} true; +L1: + + // return $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/signer.move:14:5+1 + assume {:print "$at(14,472,473)"} true; + $ret0 := $t1; + return; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/signer.move:14:5+1 +L2: + + // abort($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/signer.move:14:5+1 + assume {:print "$at(14,472,473)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun error::already_exists [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:83:3+71 +procedure {:inline 1} $1_error_already_exists(_$t0: int) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t0: int; + var $temp_0'u64': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[r]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:83:3+1 + assume {:print "$at(10,3585,3586)"} true; + assume {:print "$track_local(4,1,0):", $t0} $t0 == $t0; + + // $t1 := 8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:83:54+14 + $t1 := 8; + assume $IsValid'u64'($t1); + + // assume Identical($t2, Shl($t1, 16)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:69:5+29 + assume {:print "$at(10,2844,2873)"} true; + assume ($t2 == $shlU64($t1, 16)); + + // $t3 := opaque begin: error::canonical($t1, $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:83:44+28 + assume {:print "$at(10,3626,3654)"} true; + + // assume WellFormed($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:83:44+28 + assume $IsValid'u64'($t3); + + // assume Eq($t3, $t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:83:44+28 + assume $IsEqual'u64'($t3, $t1); + + // $t3 := opaque end: error::canonical($t1, $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:83:44+28 + + // trace_return[0]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:83:44+28 + assume {:print "$track_return(4,1,0):", $t3} $t3 == $t3; + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:83:73+1 +L1: + + // return $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:83:73+1 + assume {:print "$at(10,3655,3656)"} true; + $ret0 := $t3; + return; + +} + +// fun error::invalid_argument [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:76:3+76 +procedure {:inline 1} $1_error_invalid_argument(_$t0: int) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t0: int; + var $temp_0'u64': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[r]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:76:3+1 + assume {:print "$at(10,3082,3083)"} true; + assume {:print "$track_local(4,4,0):", $t0} $t0 == $t0; + + // $t1 := 1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:76:57+16 + $t1 := 1; + assume $IsValid'u64'($t1); + + // assume Identical($t2, Shl($t1, 16)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:69:5+29 + assume {:print "$at(10,2844,2873)"} true; + assume ($t2 == $shlU64($t1, 16)); + + // $t3 := opaque begin: error::canonical($t1, $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:76:47+30 + assume {:print "$at(10,3126,3156)"} true; + + // assume WellFormed($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:76:47+30 + assume $IsValid'u64'($t3); + + // assume Eq($t3, $t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:76:47+30 + assume $IsEqual'u64'($t3, $t1); + + // $t3 := opaque end: error::canonical($t1, $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:76:47+30 + + // trace_return[0]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:76:47+30 + assume {:print "$track_return(4,4,0):", $t3} $t3 == $t3; + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:76:78+1 +L1: + + // return $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:76:78+1 + assume {:print "$at(10,3157,3158)"} true; + $ret0 := $t3; + return; + +} + +// fun error::invalid_state [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:78:3+70 +procedure {:inline 1} $1_error_invalid_state(_$t0: int) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t0: int; + var $temp_0'u64': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[r]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:78:3+1 + assume {:print "$at(10,3232,3233)"} true; + assume {:print "$track_local(4,5,0):", $t0} $t0 == $t0; + + // $t1 := 3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:78:54+13 + $t1 := 3; + assume $IsValid'u64'($t1); + + // assume Identical($t2, Shl($t1, 16)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:69:5+29 + assume {:print "$at(10,2844,2873)"} true; + assume ($t2 == $shlU64($t1, 16)); + + // $t3 := opaque begin: error::canonical($t1, $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:78:44+27 + assume {:print "$at(10,3273,3300)"} true; + + // assume WellFormed($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:78:44+27 + assume $IsValid'u64'($t3); + + // assume Eq($t3, $t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:78:44+27 + assume $IsEqual'u64'($t3, $t1); + + // $t3 := opaque end: error::canonical($t1, $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:78:44+27 + + // trace_return[0]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:78:44+27 + assume {:print "$track_return(4,5,0):", $t3} $t3 == $t3; + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:78:72+1 +L1: + + // return $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:78:72+1 + assume {:print "$at(10,3301,3302)"} true; + $ret0 := $t3; + return; + +} + +// fun error::not_found [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:81:3+61 +procedure {:inline 1} $1_error_not_found(_$t0: int) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t0: int; + var $temp_0'u64': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[r]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:81:3+1 + assume {:print "$at(10,3461,3462)"} true; + assume {:print "$track_local(4,6,0):", $t0} $t0 == $t0; + + // $t1 := 6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:81:49+9 + $t1 := 6; + assume $IsValid'u64'($t1); + + // assume Identical($t2, Shl($t1, 16)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:69:5+29 + assume {:print "$at(10,2844,2873)"} true; + assume ($t2 == $shlU64($t1, 16)); + + // $t3 := opaque begin: error::canonical($t1, $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:81:39+23 + assume {:print "$at(10,3497,3520)"} true; + + // assume WellFormed($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:81:39+23 + assume $IsValid'u64'($t3); + + // assume Eq($t3, $t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:81:39+23 + assume $IsEqual'u64'($t3, $t1); + + // $t3 := opaque end: error::canonical($t1, $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:81:39+23 + + // trace_return[0]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:81:39+23 + assume {:print "$track_return(4,6,0):", $t3} $t3 == $t3; + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:81:63+1 +L1: + + // return $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:81:63+1 + assume {:print "$at(10,3521,3522)"} true; + $ret0 := $t3; + return; + +} + +// fun error::out_of_range [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:77:3+68 +procedure {:inline 1} $1_error_out_of_range(_$t0: int) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t0: int; + var $temp_0'u64': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[r]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:77:3+1 + assume {:print "$at(10,3161,3162)"} true; + assume {:print "$track_local(4,8,0):", $t0} $t0 == $t0; + + // $t1 := 2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:77:53+12 + $t1 := 2; + assume $IsValid'u64'($t1); + + // assume Identical($t2, Shl($t1, 16)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:69:5+29 + assume {:print "$at(10,2844,2873)"} true; + assume ($t2 == $shlU64($t1, 16)); + + // $t3 := opaque begin: error::canonical($t1, $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:77:43+26 + assume {:print "$at(10,3201,3227)"} true; + + // assume WellFormed($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:77:43+26 + assume $IsValid'u64'($t3); + + // assume Eq($t3, $t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:77:43+26 + assume $IsEqual'u64'($t3, $t1); + + // $t3 := opaque end: error::canonical($t1, $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:77:43+26 + + // trace_return[0]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:77:43+26 + assume {:print "$track_return(4,8,0):", $t3} $t3 == $t3; + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:77:70+1 +L1: + + // return $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:77:70+1 + assume {:print "$at(10,3228,3229)"} true; + $ret0 := $t3; + return; + +} + +// fun error::permission_denied [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:80:3+77 +procedure {:inline 1} $1_error_permission_denied(_$t0: int) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t0: int; + var $temp_0'u64': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[r]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:80:3+1 + assume {:print "$at(10,3381,3382)"} true; + assume {:print "$track_local(4,9,0):", $t0} $t0 == $t0; + + // $t1 := 5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:80:57+17 + $t1 := 5; + assume $IsValid'u64'($t1); + + // assume Identical($t2, Shl($t1, 16)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:69:5+29 + assume {:print "$at(10,2844,2873)"} true; + assume ($t2 == $shlU64($t1, 16)); + + // $t3 := opaque begin: error::canonical($t1, $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:80:47+31 + assume {:print "$at(10,3425,3456)"} true; + + // assume WellFormed($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:80:47+31 + assume $IsValid'u64'($t3); + + // assume Eq($t3, $t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:80:47+31 + assume $IsEqual'u64'($t3, $t1); + + // $t3 := opaque end: error::canonical($t1, $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:80:47+31 + + // trace_return[0]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:80:47+31 + assume {:print "$track_return(4,9,0):", $t3} $t3 == $t3; + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:80:79+1 +L1: + + // return $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:80:79+1 + assume {:print "$at(10,3457,3458)"} true; + $ret0 := $t3; + return; + +} + +// fun error::unauthenticated [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:79:3+73 +procedure {:inline 1} $1_error_unauthenticated(_$t0: int) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t0: int; + var $temp_0'u64': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[r]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:79:3+1 + assume {:print "$at(10,3305,3306)"} true; + assume {:print "$track_local(4,11,0):", $t0} $t0 == $t0; + + // $t1 := 4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:79:55+15 + $t1 := 4; + assume $IsValid'u64'($t1); + + // assume Identical($t2, Shl($t1, 16)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:69:5+29 + assume {:print "$at(10,2844,2873)"} true; + assume ($t2 == $shlU64($t1, 16)); + + // $t3 := opaque begin: error::canonical($t1, $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:79:45+29 + assume {:print "$at(10,3347,3376)"} true; + + // assume WellFormed($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:79:45+29 + assume $IsValid'u64'($t3); + + // assume Eq($t3, $t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:79:45+29 + assume $IsEqual'u64'($t3, $t1); + + // $t3 := opaque end: error::canonical($t1, $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:79:45+29 + + // trace_return[0]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:79:45+29 + assume {:print "$track_return(4,11,0):", $t3} $t3 == $t3; + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:79:75+1 +L1: + + // return $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:79:75+1 + assume {:print "$at(10,3377,3378)"} true; + $ret0 := $t3; + return; + +} + +// struct type_info::TypeInfo at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/type_info.move:17:5+145 +type {:datatype} $1_type_info_TypeInfo; +function {:constructor} $1_type_info_TypeInfo($account_address: int, $module_name: Vec (int), $struct_name: Vec (int)): $1_type_info_TypeInfo; +function {:inline} $Update'$1_type_info_TypeInfo'_account_address(s: $1_type_info_TypeInfo, x: int): $1_type_info_TypeInfo { + $1_type_info_TypeInfo(x, $module_name#$1_type_info_TypeInfo(s), $struct_name#$1_type_info_TypeInfo(s)) +} +function {:inline} $Update'$1_type_info_TypeInfo'_module_name(s: $1_type_info_TypeInfo, x: Vec (int)): $1_type_info_TypeInfo { + $1_type_info_TypeInfo($account_address#$1_type_info_TypeInfo(s), x, $struct_name#$1_type_info_TypeInfo(s)) +} +function {:inline} $Update'$1_type_info_TypeInfo'_struct_name(s: $1_type_info_TypeInfo, x: Vec (int)): $1_type_info_TypeInfo { + $1_type_info_TypeInfo($account_address#$1_type_info_TypeInfo(s), $module_name#$1_type_info_TypeInfo(s), x) +} +function $IsValid'$1_type_info_TypeInfo'(s: $1_type_info_TypeInfo): bool { + $IsValid'address'($account_address#$1_type_info_TypeInfo(s)) + && $IsValid'vec'u8''($module_name#$1_type_info_TypeInfo(s)) + && $IsValid'vec'u8''($struct_name#$1_type_info_TypeInfo(s)) +} +function {:inline} $IsEqual'$1_type_info_TypeInfo'(s1: $1_type_info_TypeInfo, s2: $1_type_info_TypeInfo): bool { + $IsEqual'address'($account_address#$1_type_info_TypeInfo(s1), $account_address#$1_type_info_TypeInfo(s2)) + && $IsEqual'vec'u8''($module_name#$1_type_info_TypeInfo(s1), $module_name#$1_type_info_TypeInfo(s2)) + && $IsEqual'vec'u8''($struct_name#$1_type_info_TypeInfo(s1), $struct_name#$1_type_info_TypeInfo(s2))} + +// struct guid::GUID at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/guid.move:7:5+50 +type {:datatype} $1_guid_GUID; +function {:constructor} $1_guid_GUID($id: $1_guid_ID): $1_guid_GUID; +function {:inline} $Update'$1_guid_GUID'_id(s: $1_guid_GUID, x: $1_guid_ID): $1_guid_GUID { + $1_guid_GUID(x) +} +function $IsValid'$1_guid_GUID'(s: $1_guid_GUID): bool { + $IsValid'$1_guid_ID'($id#$1_guid_GUID(s)) +} +function {:inline} $IsEqual'$1_guid_GUID'(s1: $1_guid_GUID, s2: $1_guid_GUID): bool { + s1 == s2 +} + +// struct guid::ID at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/guid.move:12:5+209 +type {:datatype} $1_guid_ID; +function {:constructor} $1_guid_ID($creation_num: int, $addr: int): $1_guid_ID; +function {:inline} $Update'$1_guid_ID'_creation_num(s: $1_guid_ID, x: int): $1_guid_ID { + $1_guid_ID(x, $addr#$1_guid_ID(s)) +} +function {:inline} $Update'$1_guid_ID'_addr(s: $1_guid_ID, x: int): $1_guid_ID { + $1_guid_ID($creation_num#$1_guid_ID(s), x) +} +function $IsValid'$1_guid_ID'(s: $1_guid_ID): bool { + $IsValid'u64'($creation_num#$1_guid_ID(s)) + && $IsValid'address'($addr#$1_guid_ID(s)) +} +function {:inline} $IsEqual'$1_guid_ID'(s1: $1_guid_ID, s2: $1_guid_ID): bool { + s1 == s2 +} + +// fun guid::create [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/guid.move:23:5+286 +procedure {:inline 1} $1_guid_create(_$t0: int, _$t1: $Mutation (int)) returns ($ret0: $1_guid_GUID, $ret1: $Mutation (int)) +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: $1_guid_ID; + var $t8: $1_guid_GUID; + var $t0: int; + var $t1: $Mutation (int); + var $temp_0'$1_guid_GUID': $1_guid_GUID; + var $temp_0'address': int; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[addr]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/guid.move:23:5+1 + assume {:print "$at(118,836,837)"} true; + assume {:print "$track_local(13,0,0):", $t0} $t0 == $t0; + + // trace_local[creation_num_ref]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/guid.move:23:5+1 + $temp_0'u64' := $Dereference($t1); + assume {:print "$track_local(13,0,1):", $temp_0'u64'} $temp_0'u64' == $temp_0'u64'; + + // $t3 := read_ref($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/guid.move:24:28+17 + assume {:print "$at(118,940,957)"} true; + $t3 := $Dereference($t1); + + // trace_local[creation_num]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/guid.move:24:13+12 + assume {:print "$track_local(13,0,2):", $t3} $t3 == $t3; + + // $t4 := 1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/guid.move:25:44+1 + assume {:print "$at(118,1002,1003)"} true; + $t4 := 1; + assume $IsValid'u64'($t4); + + // $t5 := +($t3, $t4) on_abort goto L2 with $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/guid.move:25:42+1 + call $t5 := $AddU64($t3, $t4); + if ($abort_flag) { + assume {:print "$at(118,1000,1001)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(13,0):", $t6} $t6 == $t6; + goto L2; + } + + // write_ref($t1, $t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/guid.move:25:9+36 + $t1 := $UpdateMutation($t1, $t5); + + // $t7 := pack guid::ID($t3, $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/guid.move:27:17+70 + assume {:print "$at(118,1036,1106)"} true; + $t7 := $1_guid_ID($t3, $t0); + + // $t8 := pack guid::GUID($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/guid.move:26:9+103 + assume {:print "$at(118,1013,1116)"} true; + $t8 := $1_guid_GUID($t7); + + // trace_return[0]($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/guid.move:26:9+103 + assume {:print "$track_return(13,0,0):", $t8} $t8 == $t8; + + // trace_local[creation_num_ref]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/guid.move:26:9+103 + $temp_0'u64' := $Dereference($t1); + assume {:print "$track_local(13,0,1):", $temp_0'u64'} $temp_0'u64' == $temp_0'u64'; + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/guid.move:32:5+1 + assume {:print "$at(118,1121,1122)"} true; +L1: + + // return $t8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/guid.move:32:5+1 + assume {:print "$at(118,1121,1122)"} true; + $ret0 := $t8; + $ret1 := $t1; + return; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/guid.move:32:5+1 +L2: + + // abort($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/guid.move:32:5+1 + assume {:print "$at(118,1121,1122)"} true; + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'bool'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'bool'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'u8'(bytes: Vec (int)): int; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'u8'(bytes); +$IsValid'u8'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'u64'(bytes: Vec (int)): int; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'u64'(bytes); +$IsValid'u64'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'u128'(bytes: Vec (int)): int; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'u128'(bytes); +$IsValid'u128'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'u256'(bytes: Vec (int)): int; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'u256'(bytes); +$IsValid'u256'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'address'(bytes: Vec (int)): int; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'address'(bytes); +$IsValid'address'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'signer'(bytes: Vec (int)): $signer; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'signer'(bytes); +$IsValid'signer'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'vec'u8''(bytes: Vec (int)): Vec (int); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'vec'u8''(bytes); +$IsValid'vec'u8''($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'vec'u64''(bytes: Vec (int)): Vec (int); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'vec'u64''(bytes); +$IsValid'vec'u64''($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'vec'address''(bytes: Vec (int)): Vec (int); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'vec'address''(bytes); +$IsValid'vec'address''($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'vec'$1_aggregator_Aggregator''(bytes: Vec (int)): Vec ($1_aggregator_Aggregator); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'vec'$1_aggregator_Aggregator''(bytes); +$IsValid'vec'$1_aggregator_Aggregator''($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'vec'$1_optional_aggregator_Integer''(bytes: Vec (int)): Vec ($1_optional_aggregator_Integer); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'vec'$1_optional_aggregator_Integer''(bytes); +$IsValid'vec'$1_optional_aggregator_Integer''($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'vec'$1_optional_aggregator_OptionalAggregator''(bytes: Vec (int)): Vec ($1_optional_aggregator_OptionalAggregator); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'vec'$1_optional_aggregator_OptionalAggregator''(bytes); +$IsValid'vec'$1_optional_aggregator_OptionalAggregator''($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'vec'$1_fixed_point32_FixedPoint32''(bytes: Vec (int)): Vec ($1_fixed_point32_FixedPoint32); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'vec'$1_fixed_point32_FixedPoint32''(bytes); +$IsValid'vec'$1_fixed_point32_FixedPoint32''($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'vec'$1_stake_IndividualValidatorPerformance''(bytes: Vec (int)): Vec ($1_stake_IndividualValidatorPerformance); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'vec'$1_stake_IndividualValidatorPerformance''(bytes); +$IsValid'vec'$1_stake_IndividualValidatorPerformance''($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'vec'$1_stake_ValidatorInfo''(bytes: Vec (int)): Vec ($1_stake_ValidatorInfo); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'vec'$1_stake_ValidatorInfo''(bytes); +$IsValid'vec'$1_stake_ValidatorInfo''($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'vec'#0''(bytes: Vec (int)): Vec (#0); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'vec'#0''(bytes); +$IsValid'vec'#0''($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_option_Option'u64''(bytes: Vec (int)): $1_option_Option'u64'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_option_Option'u64''(bytes); +$IsValid'$1_option_Option'u64''($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_option_Option'address''(bytes: Vec (int)): $1_option_Option'address'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_option_Option'address''(bytes); +$IsValid'$1_option_Option'address''($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_option_Option'$1_aggregator_Aggregator''(bytes: Vec (int)): $1_option_Option'$1_aggregator_Aggregator'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_option_Option'$1_aggregator_Aggregator''(bytes); +$IsValid'$1_option_Option'$1_aggregator_Aggregator''($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_option_Option'$1_optional_aggregator_Integer''(bytes: Vec (int)): $1_option_Option'$1_optional_aggregator_Integer'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_option_Option'$1_optional_aggregator_Integer''(bytes); +$IsValid'$1_option_Option'$1_optional_aggregator_Integer''($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_option_Option'$1_optional_aggregator_OptionalAggregator''(bytes: Vec (int)): $1_option_Option'$1_optional_aggregator_OptionalAggregator'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_option_Option'$1_optional_aggregator_OptionalAggregator''(bytes); +$IsValid'$1_option_Option'$1_optional_aggregator_OptionalAggregator''($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_string_String'(bytes: Vec (int)): $1_string_String; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_string_String'(bytes); +$IsValid'$1_string_String'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_type_info_TypeInfo'(bytes: Vec (int)): $1_type_info_TypeInfo; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_type_info_TypeInfo'(bytes); +$IsValid'$1_type_info_TypeInfo'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_guid_GUID'(bytes: Vec (int)): $1_guid_GUID; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_guid_GUID'(bytes); +$IsValid'$1_guid_GUID'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_guid_ID'(bytes: Vec (int)): $1_guid_ID; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_guid_ID'(bytes); +$IsValid'$1_guid_ID'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_event_EventHandle'$1_account_CoinRegisterEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_account_CoinRegisterEvent'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_account_CoinRegisterEvent''(bytes); +$IsValid'$1_event_EventHandle'$1_account_CoinRegisterEvent''($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_event_EventHandle'$1_account_KeyRotationEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_account_KeyRotationEvent'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_account_KeyRotationEvent''(bytes); +$IsValid'$1_event_EventHandle'$1_account_KeyRotationEvent''($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_event_EventHandle'$1_coin_DepositEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_coin_DepositEvent'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_coin_DepositEvent''(bytes); +$IsValid'$1_event_EventHandle'$1_coin_DepositEvent''($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_event_EventHandle'$1_coin_WithdrawEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_coin_WithdrawEvent'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_coin_WithdrawEvent''(bytes); +$IsValid'$1_event_EventHandle'$1_coin_WithdrawEvent''($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_event_EventHandle'$1_aptos_account_DirectCoinTransferConfigUpdatedEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_aptos_account_DirectCoinTransferConfigUpdatedEvent'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_aptos_account_DirectCoinTransferConfigUpdatedEvent''(bytes); +$IsValid'$1_event_EventHandle'$1_aptos_account_DirectCoinTransferConfigUpdatedEvent''($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_AddStakeEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_stake_AddStakeEvent'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_AddStakeEvent''(bytes); +$IsValid'$1_event_EventHandle'$1_stake_AddStakeEvent''($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_DistributeRewardsEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_stake_DistributeRewardsEvent'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_DistributeRewardsEvent''(bytes); +$IsValid'$1_event_EventHandle'$1_stake_DistributeRewardsEvent''($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_IncreaseLockupEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_stake_IncreaseLockupEvent'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_IncreaseLockupEvent''(bytes); +$IsValid'$1_event_EventHandle'$1_stake_IncreaseLockupEvent''($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_JoinValidatorSetEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_stake_JoinValidatorSetEvent'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_JoinValidatorSetEvent''(bytes); +$IsValid'$1_event_EventHandle'$1_stake_JoinValidatorSetEvent''($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_LeaveValidatorSetEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_stake_LeaveValidatorSetEvent'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_LeaveValidatorSetEvent''(bytes); +$IsValid'$1_event_EventHandle'$1_stake_LeaveValidatorSetEvent''($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_ReactivateStakeEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_stake_ReactivateStakeEvent'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_ReactivateStakeEvent''(bytes); +$IsValid'$1_event_EventHandle'$1_stake_ReactivateStakeEvent''($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_RegisterValidatorCandidateEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_stake_RegisterValidatorCandidateEvent'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_RegisterValidatorCandidateEvent''(bytes); +$IsValid'$1_event_EventHandle'$1_stake_RegisterValidatorCandidateEvent''($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_RotateConsensusKeyEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_stake_RotateConsensusKeyEvent'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_RotateConsensusKeyEvent''(bytes); +$IsValid'$1_event_EventHandle'$1_stake_RotateConsensusKeyEvent''($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_SetOperatorEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_stake_SetOperatorEvent'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_SetOperatorEvent''(bytes); +$IsValid'$1_event_EventHandle'$1_stake_SetOperatorEvent''($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_UnlockStakeEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_stake_UnlockStakeEvent'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_UnlockStakeEvent''(bytes); +$IsValid'$1_event_EventHandle'$1_stake_UnlockStakeEvent''($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_UpdateNetworkAndFullnodeAddressesEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_stake_UpdateNetworkAndFullnodeAddressesEvent'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_UpdateNetworkAndFullnodeAddressesEvent''(bytes); +$IsValid'$1_event_EventHandle'$1_stake_UpdateNetworkAndFullnodeAddressesEvent''($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_WithdrawStakeEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_stake_WithdrawStakeEvent'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_WithdrawStakeEvent''(bytes); +$IsValid'$1_event_EventHandle'$1_stake_WithdrawStakeEvent''($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_event_EventHandle'$1_reconfiguration_NewEpochEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_reconfiguration_NewEpochEvent'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_reconfiguration_NewEpochEvent''(bytes); +$IsValid'$1_event_EventHandle'$1_reconfiguration_NewEpochEvent''($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_AddStakeEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_staking_contract_AddStakeEvent'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_AddStakeEvent''(bytes); +$IsValid'$1_event_EventHandle'$1_staking_contract_AddStakeEvent''($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_UnlockStakeEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_staking_contract_UnlockStakeEvent'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_UnlockStakeEvent''(bytes); +$IsValid'$1_event_EventHandle'$1_staking_contract_UnlockStakeEvent''($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_staking_contract_AddDistributionEvent'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent''(bytes); +$IsValid'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent''($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent''(bytes); +$IsValid'$1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent''($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_DistributeEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_staking_contract_DistributeEvent'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_DistributeEvent''(bytes); +$IsValid'$1_event_EventHandle'$1_staking_contract_DistributeEvent''($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_RequestCommissionEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_staking_contract_RequestCommissionEvent'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_RequestCommissionEvent''(bytes); +$IsValid'$1_event_EventHandle'$1_staking_contract_RequestCommissionEvent''($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_ResetLockupEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_staking_contract_ResetLockupEvent'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_ResetLockupEvent''(bytes); +$IsValid'$1_event_EventHandle'$1_staking_contract_ResetLockupEvent''($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent''(bytes); +$IsValid'$1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent''($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_UpdateVoterEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_staking_contract_UpdateVoterEvent'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_UpdateVoterEvent''(bytes); +$IsValid'$1_event_EventHandle'$1_staking_contract_UpdateVoterEvent''($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_DistributeEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_vesting_DistributeEvent'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_DistributeEvent''(bytes); +$IsValid'$1_event_EventHandle'$1_vesting_DistributeEvent''($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_ResetLockupEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_vesting_ResetLockupEvent'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_ResetLockupEvent''(bytes); +$IsValid'$1_event_EventHandle'$1_vesting_ResetLockupEvent''($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_UpdateVoterEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_vesting_UpdateVoterEvent'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_UpdateVoterEvent''(bytes); +$IsValid'$1_event_EventHandle'$1_vesting_UpdateVoterEvent''($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_AdminWithdrawEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_vesting_AdminWithdrawEvent'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_AdminWithdrawEvent''(bytes); +$IsValid'$1_event_EventHandle'$1_vesting_AdminWithdrawEvent''($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_CreateVestingContractEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_vesting_CreateVestingContractEvent'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_CreateVestingContractEvent''(bytes); +$IsValid'$1_event_EventHandle'$1_vesting_CreateVestingContractEvent''($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_SetBeneficiaryEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_vesting_SetBeneficiaryEvent'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_SetBeneficiaryEvent''(bytes); +$IsValid'$1_event_EventHandle'$1_vesting_SetBeneficiaryEvent''($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_TerminateEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_vesting_TerminateEvent'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_TerminateEvent''(bytes); +$IsValid'$1_event_EventHandle'$1_vesting_TerminateEvent''($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_UnlockRewardsEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_vesting_UnlockRewardsEvent'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_UnlockRewardsEvent''(bytes); +$IsValid'$1_event_EventHandle'$1_vesting_UnlockRewardsEvent''($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_UpdateOperatorEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_vesting_UpdateOperatorEvent'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_UpdateOperatorEvent''(bytes); +$IsValid'$1_event_EventHandle'$1_vesting_UpdateOperatorEvent''($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_VestEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_vesting_VestEvent'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_VestEvent''(bytes); +$IsValid'$1_event_EventHandle'$1_vesting_VestEvent''($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_account_Account'(bytes: Vec (int)): $1_account_Account; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_account_Account'(bytes); +$IsValid'$1_account_Account'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_account_CapabilityOffer'$1_account_RotationCapability''(bytes: Vec (int)): $1_account_CapabilityOffer'$1_account_RotationCapability'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_account_CapabilityOffer'$1_account_RotationCapability''(bytes); +$IsValid'$1_account_CapabilityOffer'$1_account_RotationCapability''($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_account_CapabilityOffer'$1_account_SignerCapability''(bytes: Vec (int)): $1_account_CapabilityOffer'$1_account_SignerCapability'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_account_CapabilityOffer'$1_account_SignerCapability''(bytes); +$IsValid'$1_account_CapabilityOffer'$1_account_SignerCapability''($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_account_CoinRegisterEvent'(bytes: Vec (int)): $1_account_CoinRegisterEvent; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_account_CoinRegisterEvent'(bytes); +$IsValid'$1_account_CoinRegisterEvent'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_account_SignerCapability'(bytes: Vec (int)): $1_account_SignerCapability; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_account_SignerCapability'(bytes); +$IsValid'$1_account_SignerCapability'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_aggregator_Aggregator'(bytes: Vec (int)): $1_aggregator_Aggregator; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_aggregator_Aggregator'(bytes); +$IsValid'$1_aggregator_Aggregator'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_optional_aggregator_Integer'(bytes: Vec (int)): $1_optional_aggregator_Integer; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_optional_aggregator_Integer'(bytes); +$IsValid'$1_optional_aggregator_Integer'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_optional_aggregator_OptionalAggregator'(bytes: Vec (int)): $1_optional_aggregator_OptionalAggregator; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_optional_aggregator_OptionalAggregator'(bytes); +$IsValid'$1_optional_aggregator_OptionalAggregator'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_coin_Coin'$1_aptos_coin_AptosCoin''(bytes: Vec (int)): $1_coin_Coin'$1_aptos_coin_AptosCoin'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_coin_Coin'$1_aptos_coin_AptosCoin''(bytes); +$IsValid'$1_coin_Coin'$1_aptos_coin_AptosCoin''($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_coin_CoinInfo'$1_aptos_coin_AptosCoin''(bytes: Vec (int)): $1_coin_CoinInfo'$1_aptos_coin_AptosCoin'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_coin_CoinInfo'$1_aptos_coin_AptosCoin''(bytes); +$IsValid'$1_coin_CoinInfo'$1_aptos_coin_AptosCoin''($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''(bytes: Vec (int)): $1_coin_CoinStore'$1_aptos_coin_AptosCoin'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''(bytes); +$IsValid'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_coin_DepositEvent'(bytes: Vec (int)): $1_coin_DepositEvent; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_coin_DepositEvent'(bytes); +$IsValid'$1_coin_DepositEvent'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_coin_WithdrawEvent'(bytes: Vec (int)): $1_coin_WithdrawEvent; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_coin_WithdrawEvent'(bytes); +$IsValid'$1_coin_WithdrawEvent'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin''(bytes: Vec (int)): $1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin''(bytes); +$IsValid'$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin''($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin''(bytes: Vec (int)): $1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin''(bytes); +$IsValid'$1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin''($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_aptos_coin_AptosCoin'(bytes: Vec (int)): $1_aptos_coin_AptosCoin; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_aptos_coin_AptosCoin'(bytes); +$IsValid'$1_aptos_coin_AptosCoin'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_aptos_account_DirectTransferConfig'(bytes: Vec (int)): $1_aptos_account_DirectTransferConfig; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_aptos_account_DirectTransferConfig'(bytes); +$IsValid'$1_aptos_account_DirectTransferConfig'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_chain_status_GenesisEndMarker'(bytes: Vec (int)): $1_chain_status_GenesisEndMarker; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_chain_status_GenesisEndMarker'(bytes); +$IsValid'$1_chain_status_GenesisEndMarker'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_timestamp_CurrentTimeMicroseconds'(bytes: Vec (int)): $1_timestamp_CurrentTimeMicroseconds; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_timestamp_CurrentTimeMicroseconds'(bytes); +$IsValid'$1_timestamp_CurrentTimeMicroseconds'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_simple_map_SimpleMap'address_u64''(bytes: Vec (int)): Table int (int); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_simple_map_SimpleMap'address_u64''(bytes); +$IsValid'$1_simple_map_SimpleMap'address_u64''($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_simple_map_SimpleMap'address_address''(bytes: Vec (int)): Table int (int); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_simple_map_SimpleMap'address_address''(bytes); +$IsValid'$1_simple_map_SimpleMap'address_address''($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_simple_map_SimpleMap'address_$1_staking_contract_StakingContract''(bytes: Vec (int)): Table int ($1_staking_contract_StakingContract); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_simple_map_SimpleMap'address_$1_staking_contract_StakingContract''(bytes); +$IsValid'$1_simple_map_SimpleMap'address_$1_staking_contract_StakingContract''($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_simple_map_SimpleMap'$1_string_String_address''(bytes: Vec (int)): Table int (int); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_simple_map_SimpleMap'$1_string_String_address''(bytes); +$IsValid'$1_simple_map_SimpleMap'$1_string_String_address''($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_fixed_point32_FixedPoint32'(bytes: Vec (int)): $1_fixed_point32_FixedPoint32; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_fixed_point32_FixedPoint32'(bytes); +$IsValid'$1_fixed_point32_FixedPoint32'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_staking_config_StakingConfig'(bytes: Vec (int)): $1_staking_config_StakingConfig; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_staking_config_StakingConfig'(bytes); +$IsValid'$1_staking_config_StakingConfig'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_stake_IncreaseLockupEvent'(bytes: Vec (int)): $1_stake_IncreaseLockupEvent; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_stake_IncreaseLockupEvent'(bytes); +$IsValid'$1_stake_IncreaseLockupEvent'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_stake_OwnerCapability'(bytes: Vec (int)): $1_stake_OwnerCapability; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_stake_OwnerCapability'(bytes); +$IsValid'$1_stake_OwnerCapability'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_stake_SetOperatorEvent'(bytes: Vec (int)): $1_stake_SetOperatorEvent; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_stake_SetOperatorEvent'(bytes); +$IsValid'$1_stake_SetOperatorEvent'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_stake_StakePool'(bytes: Vec (int)): $1_stake_StakePool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_stake_StakePool'(bytes); +$IsValid'$1_stake_StakePool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_stake_UnlockStakeEvent'(bytes: Vec (int)): $1_stake_UnlockStakeEvent; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_stake_UnlockStakeEvent'(bytes); +$IsValid'$1_stake_UnlockStakeEvent'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_stake_ValidatorConfig'(bytes: Vec (int)): $1_stake_ValidatorConfig; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_stake_ValidatorConfig'(bytes); +$IsValid'$1_stake_ValidatorConfig'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_stake_ValidatorInfo'(bytes: Vec (int)): $1_stake_ValidatorInfo; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_stake_ValidatorInfo'(bytes); +$IsValid'$1_stake_ValidatorInfo'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_stake_ValidatorPerformance'(bytes: Vec (int)): $1_stake_ValidatorPerformance; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_stake_ValidatorPerformance'(bytes); +$IsValid'$1_stake_ValidatorPerformance'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_stake_ValidatorSet'(bytes: Vec (int)): $1_stake_ValidatorSet; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_stake_ValidatorSet'(bytes); +$IsValid'$1_stake_ValidatorSet'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_stake_WithdrawStakeEvent'(bytes: Vec (int)): $1_stake_WithdrawStakeEvent; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_stake_WithdrawStakeEvent'(bytes); +$IsValid'$1_stake_WithdrawStakeEvent'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_reconfiguration_Configuration'(bytes: Vec (int)): $1_reconfiguration_Configuration; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_reconfiguration_Configuration'(bytes); +$IsValid'$1_reconfiguration_Configuration'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_pool_u64_Pool'(bytes: Vec (int)): $1_pool_u64_Pool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_pool_u64_Pool'(bytes); +$IsValid'$1_pool_u64_Pool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_staking_contract_UnlockStakeEvent'(bytes: Vec (int)): $1_staking_contract_UnlockStakeEvent; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_staking_contract_UnlockStakeEvent'(bytes); +$IsValid'$1_staking_contract_UnlockStakeEvent'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_staking_contract_AddDistributionEvent'(bytes: Vec (int)): $1_staking_contract_AddDistributionEvent; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_staking_contract_AddDistributionEvent'(bytes); +$IsValid'$1_staking_contract_AddDistributionEvent'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_staking_contract_DistributeEvent'(bytes: Vec (int)): $1_staking_contract_DistributeEvent; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_staking_contract_DistributeEvent'(bytes); +$IsValid'$1_staking_contract_DistributeEvent'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_staking_contract_RequestCommissionEvent'(bytes: Vec (int)): $1_staking_contract_RequestCommissionEvent; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_staking_contract_RequestCommissionEvent'(bytes); +$IsValid'$1_staking_contract_RequestCommissionEvent'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_staking_contract_ResetLockupEvent'(bytes: Vec (int)): $1_staking_contract_ResetLockupEvent; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_staking_contract_ResetLockupEvent'(bytes); +$IsValid'$1_staking_contract_ResetLockupEvent'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_staking_contract_StakingContract'(bytes: Vec (int)): $1_staking_contract_StakingContract; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_staking_contract_StakingContract'(bytes); +$IsValid'$1_staking_contract_StakingContract'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_staking_contract_Store'(bytes: Vec (int)): $1_staking_contract_Store; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_staking_contract_Store'(bytes); +$IsValid'$1_staking_contract_Store'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_staking_contract_SwitchOperatorEvent'(bytes: Vec (int)): $1_staking_contract_SwitchOperatorEvent; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_staking_contract_SwitchOperatorEvent'(bytes); +$IsValid'$1_staking_contract_SwitchOperatorEvent'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_staking_contract_UpdateVoterEvent'(bytes: Vec (int)): $1_staking_contract_UpdateVoterEvent; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_staking_contract_UpdateVoterEvent'(bytes); +$IsValid'$1_staking_contract_UpdateVoterEvent'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_vesting_DistributeEvent'(bytes: Vec (int)): $1_vesting_DistributeEvent; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_vesting_DistributeEvent'(bytes); +$IsValid'$1_vesting_DistributeEvent'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_vesting_ResetLockupEvent'(bytes: Vec (int)): $1_vesting_ResetLockupEvent; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_vesting_ResetLockupEvent'(bytes); +$IsValid'$1_vesting_ResetLockupEvent'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_vesting_UpdateVoterEvent'(bytes: Vec (int)): $1_vesting_UpdateVoterEvent; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_vesting_UpdateVoterEvent'(bytes); +$IsValid'$1_vesting_UpdateVoterEvent'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_vesting_AdminStore'(bytes: Vec (int)): $1_vesting_AdminStore; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_vesting_AdminStore'(bytes); +$IsValid'$1_vesting_AdminStore'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_vesting_AdminWithdrawEvent'(bytes: Vec (int)): $1_vesting_AdminWithdrawEvent; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_vesting_AdminWithdrawEvent'(bytes); +$IsValid'$1_vesting_AdminWithdrawEvent'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_vesting_SetBeneficiaryEvent'(bytes: Vec (int)): $1_vesting_SetBeneficiaryEvent; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_vesting_SetBeneficiaryEvent'(bytes); +$IsValid'$1_vesting_SetBeneficiaryEvent'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_vesting_StakingInfo'(bytes: Vec (int)): $1_vesting_StakingInfo; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_vesting_StakingInfo'(bytes); +$IsValid'$1_vesting_StakingInfo'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_vesting_TerminateEvent'(bytes: Vec (int)): $1_vesting_TerminateEvent; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_vesting_TerminateEvent'(bytes); +$IsValid'$1_vesting_TerminateEvent'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_vesting_UpdateOperatorEvent'(bytes: Vec (int)): $1_vesting_UpdateOperatorEvent; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_vesting_UpdateOperatorEvent'(bytes); +$IsValid'$1_vesting_UpdateOperatorEvent'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_vesting_VestEvent'(bytes: Vec (int)): $1_vesting_VestEvent; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_vesting_VestEvent'(bytes); +$IsValid'$1_vesting_VestEvent'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_vesting_VestingAccountManagement'(bytes: Vec (int)): $1_vesting_VestingAccountManagement; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_vesting_VestingAccountManagement'(bytes); +$IsValid'$1_vesting_VestingAccountManagement'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_vesting_VestingContract'(bytes: Vec (int)): $1_vesting_VestingContract; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_vesting_VestingContract'(bytes); +$IsValid'$1_vesting_VestingContract'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_vesting_VestingSchedule'(bytes: Vec (int)): $1_vesting_VestingSchedule; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_vesting_VestingSchedule'(bytes); +$IsValid'$1_vesting_VestingSchedule'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'#0'(bytes: Vec (int)): #0; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'#0'(bytes); +$IsValid'#0'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'bool'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'bool'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'u8'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'u8'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'u64'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'u64'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'u128'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'u128'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'u256'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'u256'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'address'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'address'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'signer'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'signer'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'vec'u8''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'vec'u8''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'vec'u64''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'vec'u64''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'vec'address''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'vec'address''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'vec'$1_aggregator_Aggregator''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'vec'$1_aggregator_Aggregator''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'vec'$1_optional_aggregator_Integer''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'vec'$1_optional_aggregator_Integer''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'vec'$1_optional_aggregator_OptionalAggregator''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'vec'$1_optional_aggregator_OptionalAggregator''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'vec'$1_fixed_point32_FixedPoint32''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'vec'$1_fixed_point32_FixedPoint32''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'vec'$1_stake_IndividualValidatorPerformance''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'vec'$1_stake_IndividualValidatorPerformance''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'vec'$1_stake_ValidatorInfo''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'vec'$1_stake_ValidatorInfo''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'vec'#0''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'vec'#0''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_option_Option'u64''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_option_Option'u64''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_option_Option'address''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_option_Option'address''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_option_Option'$1_aggregator_Aggregator''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_option_Option'$1_aggregator_Aggregator''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_option_Option'$1_optional_aggregator_Integer''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_option_Option'$1_optional_aggregator_Integer''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_option_Option'$1_optional_aggregator_OptionalAggregator''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_option_Option'$1_optional_aggregator_OptionalAggregator''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_string_String'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_string_String'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_type_info_TypeInfo'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_type_info_TypeInfo'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_guid_GUID'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_guid_GUID'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_guid_ID'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_guid_ID'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_event_EventHandle'$1_account_CoinRegisterEvent''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_account_CoinRegisterEvent''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_event_EventHandle'$1_account_KeyRotationEvent''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_account_KeyRotationEvent''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_event_EventHandle'$1_coin_DepositEvent''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_coin_DepositEvent''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_event_EventHandle'$1_coin_WithdrawEvent''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_coin_WithdrawEvent''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_event_EventHandle'$1_aptos_account_DirectCoinTransferConfigUpdatedEvent''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_aptos_account_DirectCoinTransferConfigUpdatedEvent''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_AddStakeEvent''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_AddStakeEvent''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_DistributeRewardsEvent''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_DistributeRewardsEvent''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_IncreaseLockupEvent''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_IncreaseLockupEvent''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_JoinValidatorSetEvent''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_JoinValidatorSetEvent''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_LeaveValidatorSetEvent''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_LeaveValidatorSetEvent''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_ReactivateStakeEvent''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_ReactivateStakeEvent''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_RegisterValidatorCandidateEvent''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_RegisterValidatorCandidateEvent''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_RotateConsensusKeyEvent''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_RotateConsensusKeyEvent''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_SetOperatorEvent''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_SetOperatorEvent''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_UnlockStakeEvent''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_UnlockStakeEvent''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_UpdateNetworkAndFullnodeAddressesEvent''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_UpdateNetworkAndFullnodeAddressesEvent''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_WithdrawStakeEvent''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_WithdrawStakeEvent''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_event_EventHandle'$1_reconfiguration_NewEpochEvent''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_reconfiguration_NewEpochEvent''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_event_EventHandle'$1_staking_contract_AddStakeEvent''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_staking_contract_AddStakeEvent''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_event_EventHandle'$1_staking_contract_UnlockStakeEvent''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_staking_contract_UnlockStakeEvent''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_event_EventHandle'$1_staking_contract_DistributeEvent''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_staking_contract_DistributeEvent''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_event_EventHandle'$1_staking_contract_RequestCommissionEvent''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_staking_contract_RequestCommissionEvent''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_event_EventHandle'$1_staking_contract_ResetLockupEvent''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_staking_contract_ResetLockupEvent''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_event_EventHandle'$1_staking_contract_UpdateVoterEvent''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_staking_contract_UpdateVoterEvent''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_event_EventHandle'$1_vesting_DistributeEvent''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_vesting_DistributeEvent''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_event_EventHandle'$1_vesting_ResetLockupEvent''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_vesting_ResetLockupEvent''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_event_EventHandle'$1_vesting_UpdateVoterEvent''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_vesting_UpdateVoterEvent''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_event_EventHandle'$1_vesting_AdminWithdrawEvent''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_vesting_AdminWithdrawEvent''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_event_EventHandle'$1_vesting_CreateVestingContractEvent''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_vesting_CreateVestingContractEvent''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_event_EventHandle'$1_vesting_SetBeneficiaryEvent''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_vesting_SetBeneficiaryEvent''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_event_EventHandle'$1_vesting_TerminateEvent''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_vesting_TerminateEvent''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_event_EventHandle'$1_vesting_UnlockRewardsEvent''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_vesting_UnlockRewardsEvent''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_event_EventHandle'$1_vesting_UpdateOperatorEvent''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_vesting_UpdateOperatorEvent''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_event_EventHandle'$1_vesting_VestEvent''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_vesting_VestEvent''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_account_Account'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_account_Account'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_account_CapabilityOffer'$1_account_RotationCapability''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_account_CapabilityOffer'$1_account_RotationCapability''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_account_CapabilityOffer'$1_account_SignerCapability''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_account_CapabilityOffer'$1_account_SignerCapability''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_account_CoinRegisterEvent'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_account_CoinRegisterEvent'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_account_SignerCapability'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_account_SignerCapability'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_aggregator_Aggregator'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_aggregator_Aggregator'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_optional_aggregator_Integer'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_optional_aggregator_Integer'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_optional_aggregator_OptionalAggregator'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_optional_aggregator_OptionalAggregator'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_coin_Coin'$1_aptos_coin_AptosCoin''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_coin_Coin'$1_aptos_coin_AptosCoin''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_coin_CoinInfo'$1_aptos_coin_AptosCoin''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_coin_CoinInfo'$1_aptos_coin_AptosCoin''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_coin_DepositEvent'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_coin_DepositEvent'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_coin_WithdrawEvent'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_coin_WithdrawEvent'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_aptos_coin_AptosCoin'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_aptos_coin_AptosCoin'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_aptos_account_DirectTransferConfig'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_aptos_account_DirectTransferConfig'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_chain_status_GenesisEndMarker'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_chain_status_GenesisEndMarker'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_timestamp_CurrentTimeMicroseconds'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_timestamp_CurrentTimeMicroseconds'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_simple_map_SimpleMap'address_u64''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_simple_map_SimpleMap'address_u64''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_simple_map_SimpleMap'address_address''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_simple_map_SimpleMap'address_address''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_simple_map_SimpleMap'address_$1_staking_contract_StakingContract''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_simple_map_SimpleMap'address_$1_staking_contract_StakingContract''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_simple_map_SimpleMap'$1_string_String_address''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_simple_map_SimpleMap'$1_string_String_address''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_fixed_point32_FixedPoint32'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_fixed_point32_FixedPoint32'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_staking_config_StakingConfig'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_staking_config_StakingConfig'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_stake_IncreaseLockupEvent'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_stake_IncreaseLockupEvent'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_stake_OwnerCapability'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_stake_OwnerCapability'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_stake_SetOperatorEvent'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_stake_SetOperatorEvent'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_stake_StakePool'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_stake_StakePool'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_stake_UnlockStakeEvent'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_stake_UnlockStakeEvent'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_stake_ValidatorConfig'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_stake_ValidatorConfig'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_stake_ValidatorInfo'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_stake_ValidatorInfo'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_stake_ValidatorPerformance'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_stake_ValidatorPerformance'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_stake_ValidatorSet'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_stake_ValidatorSet'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_stake_WithdrawStakeEvent'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_stake_WithdrawStakeEvent'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_reconfiguration_Configuration'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_reconfiguration_Configuration'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_pool_u64_Pool'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_pool_u64_Pool'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_staking_contract_UnlockStakeEvent'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_staking_contract_UnlockStakeEvent'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_staking_contract_AddDistributionEvent'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_staking_contract_AddDistributionEvent'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_staking_contract_DistributeEvent'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_staking_contract_DistributeEvent'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_staking_contract_RequestCommissionEvent'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_staking_contract_RequestCommissionEvent'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_staking_contract_ResetLockupEvent'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_staking_contract_ResetLockupEvent'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_staking_contract_StakingContract'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_staking_contract_StakingContract'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_staking_contract_Store'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_staking_contract_Store'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_staking_contract_SwitchOperatorEvent'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_staking_contract_SwitchOperatorEvent'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_staking_contract_UpdateVoterEvent'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_staking_contract_UpdateVoterEvent'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_vesting_DistributeEvent'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_vesting_DistributeEvent'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_vesting_ResetLockupEvent'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_vesting_ResetLockupEvent'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_vesting_UpdateVoterEvent'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_vesting_UpdateVoterEvent'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_vesting_AdminStore'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_vesting_AdminStore'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_vesting_AdminWithdrawEvent'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_vesting_AdminWithdrawEvent'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_vesting_SetBeneficiaryEvent'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_vesting_SetBeneficiaryEvent'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_vesting_StakingInfo'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_vesting_StakingInfo'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_vesting_TerminateEvent'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_vesting_TerminateEvent'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_vesting_UpdateOperatorEvent'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_vesting_UpdateOperatorEvent'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_vesting_VestEvent'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_vesting_VestEvent'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_vesting_VestingAccountManagement'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_vesting_VestingAccountManagement'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_vesting_VestingContract'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_vesting_VestingContract'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_vesting_VestingSchedule'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_vesting_VestingSchedule'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'#0'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'#0'(bytes); +$IsValid'bool'($$res))); + +// struct event::EventHandle at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:16:5+224 +type {:datatype} $1_event_EventHandle'$1_account_CoinRegisterEvent'; +function {:constructor} $1_event_EventHandle'$1_account_CoinRegisterEvent'($counter: int, $guid: $1_guid_GUID): $1_event_EventHandle'$1_account_CoinRegisterEvent'; +function {:inline} $Update'$1_event_EventHandle'$1_account_CoinRegisterEvent''_counter(s: $1_event_EventHandle'$1_account_CoinRegisterEvent', x: int): $1_event_EventHandle'$1_account_CoinRegisterEvent' { + $1_event_EventHandle'$1_account_CoinRegisterEvent'(x, $guid#$1_event_EventHandle'$1_account_CoinRegisterEvent'(s)) +} +function {:inline} $Update'$1_event_EventHandle'$1_account_CoinRegisterEvent''_guid(s: $1_event_EventHandle'$1_account_CoinRegisterEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_account_CoinRegisterEvent' { + $1_event_EventHandle'$1_account_CoinRegisterEvent'($counter#$1_event_EventHandle'$1_account_CoinRegisterEvent'(s), x) +} +function $IsValid'$1_event_EventHandle'$1_account_CoinRegisterEvent''(s: $1_event_EventHandle'$1_account_CoinRegisterEvent'): bool { + $IsValid'u64'($counter#$1_event_EventHandle'$1_account_CoinRegisterEvent'(s)) + && $IsValid'$1_guid_GUID'($guid#$1_event_EventHandle'$1_account_CoinRegisterEvent'(s)) +} +function {:inline} $IsEqual'$1_event_EventHandle'$1_account_CoinRegisterEvent''(s1: $1_event_EventHandle'$1_account_CoinRegisterEvent', s2: $1_event_EventHandle'$1_account_CoinRegisterEvent'): bool { + s1 == s2 +} + +// struct event::EventHandle at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:16:5+224 +type {:datatype} $1_event_EventHandle'$1_account_KeyRotationEvent'; +function {:constructor} $1_event_EventHandle'$1_account_KeyRotationEvent'($counter: int, $guid: $1_guid_GUID): $1_event_EventHandle'$1_account_KeyRotationEvent'; +function {:inline} $Update'$1_event_EventHandle'$1_account_KeyRotationEvent''_counter(s: $1_event_EventHandle'$1_account_KeyRotationEvent', x: int): $1_event_EventHandle'$1_account_KeyRotationEvent' { + $1_event_EventHandle'$1_account_KeyRotationEvent'(x, $guid#$1_event_EventHandle'$1_account_KeyRotationEvent'(s)) +} +function {:inline} $Update'$1_event_EventHandle'$1_account_KeyRotationEvent''_guid(s: $1_event_EventHandle'$1_account_KeyRotationEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_account_KeyRotationEvent' { + $1_event_EventHandle'$1_account_KeyRotationEvent'($counter#$1_event_EventHandle'$1_account_KeyRotationEvent'(s), x) +} +function $IsValid'$1_event_EventHandle'$1_account_KeyRotationEvent''(s: $1_event_EventHandle'$1_account_KeyRotationEvent'): bool { + $IsValid'u64'($counter#$1_event_EventHandle'$1_account_KeyRotationEvent'(s)) + && $IsValid'$1_guid_GUID'($guid#$1_event_EventHandle'$1_account_KeyRotationEvent'(s)) +} +function {:inline} $IsEqual'$1_event_EventHandle'$1_account_KeyRotationEvent''(s1: $1_event_EventHandle'$1_account_KeyRotationEvent', s2: $1_event_EventHandle'$1_account_KeyRotationEvent'): bool { + s1 == s2 +} + +// struct event::EventHandle at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:16:5+224 +type {:datatype} $1_event_EventHandle'$1_coin_DepositEvent'; +function {:constructor} $1_event_EventHandle'$1_coin_DepositEvent'($counter: int, $guid: $1_guid_GUID): $1_event_EventHandle'$1_coin_DepositEvent'; +function {:inline} $Update'$1_event_EventHandle'$1_coin_DepositEvent''_counter(s: $1_event_EventHandle'$1_coin_DepositEvent', x: int): $1_event_EventHandle'$1_coin_DepositEvent' { + $1_event_EventHandle'$1_coin_DepositEvent'(x, $guid#$1_event_EventHandle'$1_coin_DepositEvent'(s)) +} +function {:inline} $Update'$1_event_EventHandle'$1_coin_DepositEvent''_guid(s: $1_event_EventHandle'$1_coin_DepositEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_coin_DepositEvent' { + $1_event_EventHandle'$1_coin_DepositEvent'($counter#$1_event_EventHandle'$1_coin_DepositEvent'(s), x) +} +function $IsValid'$1_event_EventHandle'$1_coin_DepositEvent''(s: $1_event_EventHandle'$1_coin_DepositEvent'): bool { + $IsValid'u64'($counter#$1_event_EventHandle'$1_coin_DepositEvent'(s)) + && $IsValid'$1_guid_GUID'($guid#$1_event_EventHandle'$1_coin_DepositEvent'(s)) +} +function {:inline} $IsEqual'$1_event_EventHandle'$1_coin_DepositEvent''(s1: $1_event_EventHandle'$1_coin_DepositEvent', s2: $1_event_EventHandle'$1_coin_DepositEvent'): bool { + s1 == s2 +} + +// struct event::EventHandle at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:16:5+224 +type {:datatype} $1_event_EventHandle'$1_coin_WithdrawEvent'; +function {:constructor} $1_event_EventHandle'$1_coin_WithdrawEvent'($counter: int, $guid: $1_guid_GUID): $1_event_EventHandle'$1_coin_WithdrawEvent'; +function {:inline} $Update'$1_event_EventHandle'$1_coin_WithdrawEvent''_counter(s: $1_event_EventHandle'$1_coin_WithdrawEvent', x: int): $1_event_EventHandle'$1_coin_WithdrawEvent' { + $1_event_EventHandle'$1_coin_WithdrawEvent'(x, $guid#$1_event_EventHandle'$1_coin_WithdrawEvent'(s)) +} +function {:inline} $Update'$1_event_EventHandle'$1_coin_WithdrawEvent''_guid(s: $1_event_EventHandle'$1_coin_WithdrawEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_coin_WithdrawEvent' { + $1_event_EventHandle'$1_coin_WithdrawEvent'($counter#$1_event_EventHandle'$1_coin_WithdrawEvent'(s), x) +} +function $IsValid'$1_event_EventHandle'$1_coin_WithdrawEvent''(s: $1_event_EventHandle'$1_coin_WithdrawEvent'): bool { + $IsValid'u64'($counter#$1_event_EventHandle'$1_coin_WithdrawEvent'(s)) + && $IsValid'$1_guid_GUID'($guid#$1_event_EventHandle'$1_coin_WithdrawEvent'(s)) +} +function {:inline} $IsEqual'$1_event_EventHandle'$1_coin_WithdrawEvent''(s1: $1_event_EventHandle'$1_coin_WithdrawEvent', s2: $1_event_EventHandle'$1_coin_WithdrawEvent'): bool { + s1 == s2 +} + +// struct event::EventHandle at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:16:5+224 +type {:datatype} $1_event_EventHandle'$1_aptos_account_DirectCoinTransferConfigUpdatedEvent'; +function {:constructor} $1_event_EventHandle'$1_aptos_account_DirectCoinTransferConfigUpdatedEvent'($counter: int, $guid: $1_guid_GUID): $1_event_EventHandle'$1_aptos_account_DirectCoinTransferConfigUpdatedEvent'; +function {:inline} $Update'$1_event_EventHandle'$1_aptos_account_DirectCoinTransferConfigUpdatedEvent''_counter(s: $1_event_EventHandle'$1_aptos_account_DirectCoinTransferConfigUpdatedEvent', x: int): $1_event_EventHandle'$1_aptos_account_DirectCoinTransferConfigUpdatedEvent' { + $1_event_EventHandle'$1_aptos_account_DirectCoinTransferConfigUpdatedEvent'(x, $guid#$1_event_EventHandle'$1_aptos_account_DirectCoinTransferConfigUpdatedEvent'(s)) +} +function {:inline} $Update'$1_event_EventHandle'$1_aptos_account_DirectCoinTransferConfigUpdatedEvent''_guid(s: $1_event_EventHandle'$1_aptos_account_DirectCoinTransferConfigUpdatedEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_aptos_account_DirectCoinTransferConfigUpdatedEvent' { + $1_event_EventHandle'$1_aptos_account_DirectCoinTransferConfigUpdatedEvent'($counter#$1_event_EventHandle'$1_aptos_account_DirectCoinTransferConfigUpdatedEvent'(s), x) +} +function $IsValid'$1_event_EventHandle'$1_aptos_account_DirectCoinTransferConfigUpdatedEvent''(s: $1_event_EventHandle'$1_aptos_account_DirectCoinTransferConfigUpdatedEvent'): bool { + $IsValid'u64'($counter#$1_event_EventHandle'$1_aptos_account_DirectCoinTransferConfigUpdatedEvent'(s)) + && $IsValid'$1_guid_GUID'($guid#$1_event_EventHandle'$1_aptos_account_DirectCoinTransferConfigUpdatedEvent'(s)) +} +function {:inline} $IsEqual'$1_event_EventHandle'$1_aptos_account_DirectCoinTransferConfigUpdatedEvent''(s1: $1_event_EventHandle'$1_aptos_account_DirectCoinTransferConfigUpdatedEvent', s2: $1_event_EventHandle'$1_aptos_account_DirectCoinTransferConfigUpdatedEvent'): bool { + s1 == s2 +} + +// struct event::EventHandle at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:16:5+224 +type {:datatype} $1_event_EventHandle'$1_stake_AddStakeEvent'; +function {:constructor} $1_event_EventHandle'$1_stake_AddStakeEvent'($counter: int, $guid: $1_guid_GUID): $1_event_EventHandle'$1_stake_AddStakeEvent'; +function {:inline} $Update'$1_event_EventHandle'$1_stake_AddStakeEvent''_counter(s: $1_event_EventHandle'$1_stake_AddStakeEvent', x: int): $1_event_EventHandle'$1_stake_AddStakeEvent' { + $1_event_EventHandle'$1_stake_AddStakeEvent'(x, $guid#$1_event_EventHandle'$1_stake_AddStakeEvent'(s)) +} +function {:inline} $Update'$1_event_EventHandle'$1_stake_AddStakeEvent''_guid(s: $1_event_EventHandle'$1_stake_AddStakeEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_stake_AddStakeEvent' { + $1_event_EventHandle'$1_stake_AddStakeEvent'($counter#$1_event_EventHandle'$1_stake_AddStakeEvent'(s), x) +} +function $IsValid'$1_event_EventHandle'$1_stake_AddStakeEvent''(s: $1_event_EventHandle'$1_stake_AddStakeEvent'): bool { + $IsValid'u64'($counter#$1_event_EventHandle'$1_stake_AddStakeEvent'(s)) + && $IsValid'$1_guid_GUID'($guid#$1_event_EventHandle'$1_stake_AddStakeEvent'(s)) +} +function {:inline} $IsEqual'$1_event_EventHandle'$1_stake_AddStakeEvent''(s1: $1_event_EventHandle'$1_stake_AddStakeEvent', s2: $1_event_EventHandle'$1_stake_AddStakeEvent'): bool { + s1 == s2 +} + +// struct event::EventHandle at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:16:5+224 +type {:datatype} $1_event_EventHandle'$1_stake_DistributeRewardsEvent'; +function {:constructor} $1_event_EventHandle'$1_stake_DistributeRewardsEvent'($counter: int, $guid: $1_guid_GUID): $1_event_EventHandle'$1_stake_DistributeRewardsEvent'; +function {:inline} $Update'$1_event_EventHandle'$1_stake_DistributeRewardsEvent''_counter(s: $1_event_EventHandle'$1_stake_DistributeRewardsEvent', x: int): $1_event_EventHandle'$1_stake_DistributeRewardsEvent' { + $1_event_EventHandle'$1_stake_DistributeRewardsEvent'(x, $guid#$1_event_EventHandle'$1_stake_DistributeRewardsEvent'(s)) +} +function {:inline} $Update'$1_event_EventHandle'$1_stake_DistributeRewardsEvent''_guid(s: $1_event_EventHandle'$1_stake_DistributeRewardsEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_stake_DistributeRewardsEvent' { + $1_event_EventHandle'$1_stake_DistributeRewardsEvent'($counter#$1_event_EventHandle'$1_stake_DistributeRewardsEvent'(s), x) +} +function $IsValid'$1_event_EventHandle'$1_stake_DistributeRewardsEvent''(s: $1_event_EventHandle'$1_stake_DistributeRewardsEvent'): bool { + $IsValid'u64'($counter#$1_event_EventHandle'$1_stake_DistributeRewardsEvent'(s)) + && $IsValid'$1_guid_GUID'($guid#$1_event_EventHandle'$1_stake_DistributeRewardsEvent'(s)) +} +function {:inline} $IsEqual'$1_event_EventHandle'$1_stake_DistributeRewardsEvent''(s1: $1_event_EventHandle'$1_stake_DistributeRewardsEvent', s2: $1_event_EventHandle'$1_stake_DistributeRewardsEvent'): bool { + s1 == s2 +} + +// struct event::EventHandle at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:16:5+224 +type {:datatype} $1_event_EventHandle'$1_stake_IncreaseLockupEvent'; +function {:constructor} $1_event_EventHandle'$1_stake_IncreaseLockupEvent'($counter: int, $guid: $1_guid_GUID): $1_event_EventHandle'$1_stake_IncreaseLockupEvent'; +function {:inline} $Update'$1_event_EventHandle'$1_stake_IncreaseLockupEvent''_counter(s: $1_event_EventHandle'$1_stake_IncreaseLockupEvent', x: int): $1_event_EventHandle'$1_stake_IncreaseLockupEvent' { + $1_event_EventHandle'$1_stake_IncreaseLockupEvent'(x, $guid#$1_event_EventHandle'$1_stake_IncreaseLockupEvent'(s)) +} +function {:inline} $Update'$1_event_EventHandle'$1_stake_IncreaseLockupEvent''_guid(s: $1_event_EventHandle'$1_stake_IncreaseLockupEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_stake_IncreaseLockupEvent' { + $1_event_EventHandle'$1_stake_IncreaseLockupEvent'($counter#$1_event_EventHandle'$1_stake_IncreaseLockupEvent'(s), x) +} +function $IsValid'$1_event_EventHandle'$1_stake_IncreaseLockupEvent''(s: $1_event_EventHandle'$1_stake_IncreaseLockupEvent'): bool { + $IsValid'u64'($counter#$1_event_EventHandle'$1_stake_IncreaseLockupEvent'(s)) + && $IsValid'$1_guid_GUID'($guid#$1_event_EventHandle'$1_stake_IncreaseLockupEvent'(s)) +} +function {:inline} $IsEqual'$1_event_EventHandle'$1_stake_IncreaseLockupEvent''(s1: $1_event_EventHandle'$1_stake_IncreaseLockupEvent', s2: $1_event_EventHandle'$1_stake_IncreaseLockupEvent'): bool { + s1 == s2 +} + +// struct event::EventHandle at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:16:5+224 +type {:datatype} $1_event_EventHandle'$1_stake_JoinValidatorSetEvent'; +function {:constructor} $1_event_EventHandle'$1_stake_JoinValidatorSetEvent'($counter: int, $guid: $1_guid_GUID): $1_event_EventHandle'$1_stake_JoinValidatorSetEvent'; +function {:inline} $Update'$1_event_EventHandle'$1_stake_JoinValidatorSetEvent''_counter(s: $1_event_EventHandle'$1_stake_JoinValidatorSetEvent', x: int): $1_event_EventHandle'$1_stake_JoinValidatorSetEvent' { + $1_event_EventHandle'$1_stake_JoinValidatorSetEvent'(x, $guid#$1_event_EventHandle'$1_stake_JoinValidatorSetEvent'(s)) +} +function {:inline} $Update'$1_event_EventHandle'$1_stake_JoinValidatorSetEvent''_guid(s: $1_event_EventHandle'$1_stake_JoinValidatorSetEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_stake_JoinValidatorSetEvent' { + $1_event_EventHandle'$1_stake_JoinValidatorSetEvent'($counter#$1_event_EventHandle'$1_stake_JoinValidatorSetEvent'(s), x) +} +function $IsValid'$1_event_EventHandle'$1_stake_JoinValidatorSetEvent''(s: $1_event_EventHandle'$1_stake_JoinValidatorSetEvent'): bool { + $IsValid'u64'($counter#$1_event_EventHandle'$1_stake_JoinValidatorSetEvent'(s)) + && $IsValid'$1_guid_GUID'($guid#$1_event_EventHandle'$1_stake_JoinValidatorSetEvent'(s)) +} +function {:inline} $IsEqual'$1_event_EventHandle'$1_stake_JoinValidatorSetEvent''(s1: $1_event_EventHandle'$1_stake_JoinValidatorSetEvent', s2: $1_event_EventHandle'$1_stake_JoinValidatorSetEvent'): bool { + s1 == s2 +} + +// struct event::EventHandle at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:16:5+224 +type {:datatype} $1_event_EventHandle'$1_stake_LeaveValidatorSetEvent'; +function {:constructor} $1_event_EventHandle'$1_stake_LeaveValidatorSetEvent'($counter: int, $guid: $1_guid_GUID): $1_event_EventHandle'$1_stake_LeaveValidatorSetEvent'; +function {:inline} $Update'$1_event_EventHandle'$1_stake_LeaveValidatorSetEvent''_counter(s: $1_event_EventHandle'$1_stake_LeaveValidatorSetEvent', x: int): $1_event_EventHandle'$1_stake_LeaveValidatorSetEvent' { + $1_event_EventHandle'$1_stake_LeaveValidatorSetEvent'(x, $guid#$1_event_EventHandle'$1_stake_LeaveValidatorSetEvent'(s)) +} +function {:inline} $Update'$1_event_EventHandle'$1_stake_LeaveValidatorSetEvent''_guid(s: $1_event_EventHandle'$1_stake_LeaveValidatorSetEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_stake_LeaveValidatorSetEvent' { + $1_event_EventHandle'$1_stake_LeaveValidatorSetEvent'($counter#$1_event_EventHandle'$1_stake_LeaveValidatorSetEvent'(s), x) +} +function $IsValid'$1_event_EventHandle'$1_stake_LeaveValidatorSetEvent''(s: $1_event_EventHandle'$1_stake_LeaveValidatorSetEvent'): bool { + $IsValid'u64'($counter#$1_event_EventHandle'$1_stake_LeaveValidatorSetEvent'(s)) + && $IsValid'$1_guid_GUID'($guid#$1_event_EventHandle'$1_stake_LeaveValidatorSetEvent'(s)) +} +function {:inline} $IsEqual'$1_event_EventHandle'$1_stake_LeaveValidatorSetEvent''(s1: $1_event_EventHandle'$1_stake_LeaveValidatorSetEvent', s2: $1_event_EventHandle'$1_stake_LeaveValidatorSetEvent'): bool { + s1 == s2 +} + +// struct event::EventHandle at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:16:5+224 +type {:datatype} $1_event_EventHandle'$1_stake_ReactivateStakeEvent'; +function {:constructor} $1_event_EventHandle'$1_stake_ReactivateStakeEvent'($counter: int, $guid: $1_guid_GUID): $1_event_EventHandle'$1_stake_ReactivateStakeEvent'; +function {:inline} $Update'$1_event_EventHandle'$1_stake_ReactivateStakeEvent''_counter(s: $1_event_EventHandle'$1_stake_ReactivateStakeEvent', x: int): $1_event_EventHandle'$1_stake_ReactivateStakeEvent' { + $1_event_EventHandle'$1_stake_ReactivateStakeEvent'(x, $guid#$1_event_EventHandle'$1_stake_ReactivateStakeEvent'(s)) +} +function {:inline} $Update'$1_event_EventHandle'$1_stake_ReactivateStakeEvent''_guid(s: $1_event_EventHandle'$1_stake_ReactivateStakeEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_stake_ReactivateStakeEvent' { + $1_event_EventHandle'$1_stake_ReactivateStakeEvent'($counter#$1_event_EventHandle'$1_stake_ReactivateStakeEvent'(s), x) +} +function $IsValid'$1_event_EventHandle'$1_stake_ReactivateStakeEvent''(s: $1_event_EventHandle'$1_stake_ReactivateStakeEvent'): bool { + $IsValid'u64'($counter#$1_event_EventHandle'$1_stake_ReactivateStakeEvent'(s)) + && $IsValid'$1_guid_GUID'($guid#$1_event_EventHandle'$1_stake_ReactivateStakeEvent'(s)) +} +function {:inline} $IsEqual'$1_event_EventHandle'$1_stake_ReactivateStakeEvent''(s1: $1_event_EventHandle'$1_stake_ReactivateStakeEvent', s2: $1_event_EventHandle'$1_stake_ReactivateStakeEvent'): bool { + s1 == s2 +} + +// struct event::EventHandle at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:16:5+224 +type {:datatype} $1_event_EventHandle'$1_stake_RegisterValidatorCandidateEvent'; +function {:constructor} $1_event_EventHandle'$1_stake_RegisterValidatorCandidateEvent'($counter: int, $guid: $1_guid_GUID): $1_event_EventHandle'$1_stake_RegisterValidatorCandidateEvent'; +function {:inline} $Update'$1_event_EventHandle'$1_stake_RegisterValidatorCandidateEvent''_counter(s: $1_event_EventHandle'$1_stake_RegisterValidatorCandidateEvent', x: int): $1_event_EventHandle'$1_stake_RegisterValidatorCandidateEvent' { + $1_event_EventHandle'$1_stake_RegisterValidatorCandidateEvent'(x, $guid#$1_event_EventHandle'$1_stake_RegisterValidatorCandidateEvent'(s)) +} +function {:inline} $Update'$1_event_EventHandle'$1_stake_RegisterValidatorCandidateEvent''_guid(s: $1_event_EventHandle'$1_stake_RegisterValidatorCandidateEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_stake_RegisterValidatorCandidateEvent' { + $1_event_EventHandle'$1_stake_RegisterValidatorCandidateEvent'($counter#$1_event_EventHandle'$1_stake_RegisterValidatorCandidateEvent'(s), x) +} +function $IsValid'$1_event_EventHandle'$1_stake_RegisterValidatorCandidateEvent''(s: $1_event_EventHandle'$1_stake_RegisterValidatorCandidateEvent'): bool { + $IsValid'u64'($counter#$1_event_EventHandle'$1_stake_RegisterValidatorCandidateEvent'(s)) + && $IsValid'$1_guid_GUID'($guid#$1_event_EventHandle'$1_stake_RegisterValidatorCandidateEvent'(s)) +} +function {:inline} $IsEqual'$1_event_EventHandle'$1_stake_RegisterValidatorCandidateEvent''(s1: $1_event_EventHandle'$1_stake_RegisterValidatorCandidateEvent', s2: $1_event_EventHandle'$1_stake_RegisterValidatorCandidateEvent'): bool { + s1 == s2 +} + +// struct event::EventHandle at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:16:5+224 +type {:datatype} $1_event_EventHandle'$1_stake_RotateConsensusKeyEvent'; +function {:constructor} $1_event_EventHandle'$1_stake_RotateConsensusKeyEvent'($counter: int, $guid: $1_guid_GUID): $1_event_EventHandle'$1_stake_RotateConsensusKeyEvent'; +function {:inline} $Update'$1_event_EventHandle'$1_stake_RotateConsensusKeyEvent''_counter(s: $1_event_EventHandle'$1_stake_RotateConsensusKeyEvent', x: int): $1_event_EventHandle'$1_stake_RotateConsensusKeyEvent' { + $1_event_EventHandle'$1_stake_RotateConsensusKeyEvent'(x, $guid#$1_event_EventHandle'$1_stake_RotateConsensusKeyEvent'(s)) +} +function {:inline} $Update'$1_event_EventHandle'$1_stake_RotateConsensusKeyEvent''_guid(s: $1_event_EventHandle'$1_stake_RotateConsensusKeyEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_stake_RotateConsensusKeyEvent' { + $1_event_EventHandle'$1_stake_RotateConsensusKeyEvent'($counter#$1_event_EventHandle'$1_stake_RotateConsensusKeyEvent'(s), x) +} +function $IsValid'$1_event_EventHandle'$1_stake_RotateConsensusKeyEvent''(s: $1_event_EventHandle'$1_stake_RotateConsensusKeyEvent'): bool { + $IsValid'u64'($counter#$1_event_EventHandle'$1_stake_RotateConsensusKeyEvent'(s)) + && $IsValid'$1_guid_GUID'($guid#$1_event_EventHandle'$1_stake_RotateConsensusKeyEvent'(s)) +} +function {:inline} $IsEqual'$1_event_EventHandle'$1_stake_RotateConsensusKeyEvent''(s1: $1_event_EventHandle'$1_stake_RotateConsensusKeyEvent', s2: $1_event_EventHandle'$1_stake_RotateConsensusKeyEvent'): bool { + s1 == s2 +} + +// struct event::EventHandle at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:16:5+224 +type {:datatype} $1_event_EventHandle'$1_stake_SetOperatorEvent'; +function {:constructor} $1_event_EventHandle'$1_stake_SetOperatorEvent'($counter: int, $guid: $1_guid_GUID): $1_event_EventHandle'$1_stake_SetOperatorEvent'; +function {:inline} $Update'$1_event_EventHandle'$1_stake_SetOperatorEvent''_counter(s: $1_event_EventHandle'$1_stake_SetOperatorEvent', x: int): $1_event_EventHandle'$1_stake_SetOperatorEvent' { + $1_event_EventHandle'$1_stake_SetOperatorEvent'(x, $guid#$1_event_EventHandle'$1_stake_SetOperatorEvent'(s)) +} +function {:inline} $Update'$1_event_EventHandle'$1_stake_SetOperatorEvent''_guid(s: $1_event_EventHandle'$1_stake_SetOperatorEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_stake_SetOperatorEvent' { + $1_event_EventHandle'$1_stake_SetOperatorEvent'($counter#$1_event_EventHandle'$1_stake_SetOperatorEvent'(s), x) +} +function $IsValid'$1_event_EventHandle'$1_stake_SetOperatorEvent''(s: $1_event_EventHandle'$1_stake_SetOperatorEvent'): bool { + $IsValid'u64'($counter#$1_event_EventHandle'$1_stake_SetOperatorEvent'(s)) + && $IsValid'$1_guid_GUID'($guid#$1_event_EventHandle'$1_stake_SetOperatorEvent'(s)) +} +function {:inline} $IsEqual'$1_event_EventHandle'$1_stake_SetOperatorEvent''(s1: $1_event_EventHandle'$1_stake_SetOperatorEvent', s2: $1_event_EventHandle'$1_stake_SetOperatorEvent'): bool { + s1 == s2 +} + +// struct event::EventHandle at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:16:5+224 +type {:datatype} $1_event_EventHandle'$1_stake_UnlockStakeEvent'; +function {:constructor} $1_event_EventHandle'$1_stake_UnlockStakeEvent'($counter: int, $guid: $1_guid_GUID): $1_event_EventHandle'$1_stake_UnlockStakeEvent'; +function {:inline} $Update'$1_event_EventHandle'$1_stake_UnlockStakeEvent''_counter(s: $1_event_EventHandle'$1_stake_UnlockStakeEvent', x: int): $1_event_EventHandle'$1_stake_UnlockStakeEvent' { + $1_event_EventHandle'$1_stake_UnlockStakeEvent'(x, $guid#$1_event_EventHandle'$1_stake_UnlockStakeEvent'(s)) +} +function {:inline} $Update'$1_event_EventHandle'$1_stake_UnlockStakeEvent''_guid(s: $1_event_EventHandle'$1_stake_UnlockStakeEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_stake_UnlockStakeEvent' { + $1_event_EventHandle'$1_stake_UnlockStakeEvent'($counter#$1_event_EventHandle'$1_stake_UnlockStakeEvent'(s), x) +} +function $IsValid'$1_event_EventHandle'$1_stake_UnlockStakeEvent''(s: $1_event_EventHandle'$1_stake_UnlockStakeEvent'): bool { + $IsValid'u64'($counter#$1_event_EventHandle'$1_stake_UnlockStakeEvent'(s)) + && $IsValid'$1_guid_GUID'($guid#$1_event_EventHandle'$1_stake_UnlockStakeEvent'(s)) +} +function {:inline} $IsEqual'$1_event_EventHandle'$1_stake_UnlockStakeEvent''(s1: $1_event_EventHandle'$1_stake_UnlockStakeEvent', s2: $1_event_EventHandle'$1_stake_UnlockStakeEvent'): bool { + s1 == s2 +} + +// struct event::EventHandle at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:16:5+224 +type {:datatype} $1_event_EventHandle'$1_stake_UpdateNetworkAndFullnodeAddressesEvent'; +function {:constructor} $1_event_EventHandle'$1_stake_UpdateNetworkAndFullnodeAddressesEvent'($counter: int, $guid: $1_guid_GUID): $1_event_EventHandle'$1_stake_UpdateNetworkAndFullnodeAddressesEvent'; +function {:inline} $Update'$1_event_EventHandle'$1_stake_UpdateNetworkAndFullnodeAddressesEvent''_counter(s: $1_event_EventHandle'$1_stake_UpdateNetworkAndFullnodeAddressesEvent', x: int): $1_event_EventHandle'$1_stake_UpdateNetworkAndFullnodeAddressesEvent' { + $1_event_EventHandle'$1_stake_UpdateNetworkAndFullnodeAddressesEvent'(x, $guid#$1_event_EventHandle'$1_stake_UpdateNetworkAndFullnodeAddressesEvent'(s)) +} +function {:inline} $Update'$1_event_EventHandle'$1_stake_UpdateNetworkAndFullnodeAddressesEvent''_guid(s: $1_event_EventHandle'$1_stake_UpdateNetworkAndFullnodeAddressesEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_stake_UpdateNetworkAndFullnodeAddressesEvent' { + $1_event_EventHandle'$1_stake_UpdateNetworkAndFullnodeAddressesEvent'($counter#$1_event_EventHandle'$1_stake_UpdateNetworkAndFullnodeAddressesEvent'(s), x) +} +function $IsValid'$1_event_EventHandle'$1_stake_UpdateNetworkAndFullnodeAddressesEvent''(s: $1_event_EventHandle'$1_stake_UpdateNetworkAndFullnodeAddressesEvent'): bool { + $IsValid'u64'($counter#$1_event_EventHandle'$1_stake_UpdateNetworkAndFullnodeAddressesEvent'(s)) + && $IsValid'$1_guid_GUID'($guid#$1_event_EventHandle'$1_stake_UpdateNetworkAndFullnodeAddressesEvent'(s)) +} +function {:inline} $IsEqual'$1_event_EventHandle'$1_stake_UpdateNetworkAndFullnodeAddressesEvent''(s1: $1_event_EventHandle'$1_stake_UpdateNetworkAndFullnodeAddressesEvent', s2: $1_event_EventHandle'$1_stake_UpdateNetworkAndFullnodeAddressesEvent'): bool { + s1 == s2 +} + +// struct event::EventHandle at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:16:5+224 +type {:datatype} $1_event_EventHandle'$1_stake_WithdrawStakeEvent'; +function {:constructor} $1_event_EventHandle'$1_stake_WithdrawStakeEvent'($counter: int, $guid: $1_guid_GUID): $1_event_EventHandle'$1_stake_WithdrawStakeEvent'; +function {:inline} $Update'$1_event_EventHandle'$1_stake_WithdrawStakeEvent''_counter(s: $1_event_EventHandle'$1_stake_WithdrawStakeEvent', x: int): $1_event_EventHandle'$1_stake_WithdrawStakeEvent' { + $1_event_EventHandle'$1_stake_WithdrawStakeEvent'(x, $guid#$1_event_EventHandle'$1_stake_WithdrawStakeEvent'(s)) +} +function {:inline} $Update'$1_event_EventHandle'$1_stake_WithdrawStakeEvent''_guid(s: $1_event_EventHandle'$1_stake_WithdrawStakeEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_stake_WithdrawStakeEvent' { + $1_event_EventHandle'$1_stake_WithdrawStakeEvent'($counter#$1_event_EventHandle'$1_stake_WithdrawStakeEvent'(s), x) +} +function $IsValid'$1_event_EventHandle'$1_stake_WithdrawStakeEvent''(s: $1_event_EventHandle'$1_stake_WithdrawStakeEvent'): bool { + $IsValid'u64'($counter#$1_event_EventHandle'$1_stake_WithdrawStakeEvent'(s)) + && $IsValid'$1_guid_GUID'($guid#$1_event_EventHandle'$1_stake_WithdrawStakeEvent'(s)) +} +function {:inline} $IsEqual'$1_event_EventHandle'$1_stake_WithdrawStakeEvent''(s1: $1_event_EventHandle'$1_stake_WithdrawStakeEvent', s2: $1_event_EventHandle'$1_stake_WithdrawStakeEvent'): bool { + s1 == s2 +} + +// struct event::EventHandle at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:16:5+224 +type {:datatype} $1_event_EventHandle'$1_reconfiguration_NewEpochEvent'; +function {:constructor} $1_event_EventHandle'$1_reconfiguration_NewEpochEvent'($counter: int, $guid: $1_guid_GUID): $1_event_EventHandle'$1_reconfiguration_NewEpochEvent'; +function {:inline} $Update'$1_event_EventHandle'$1_reconfiguration_NewEpochEvent''_counter(s: $1_event_EventHandle'$1_reconfiguration_NewEpochEvent', x: int): $1_event_EventHandle'$1_reconfiguration_NewEpochEvent' { + $1_event_EventHandle'$1_reconfiguration_NewEpochEvent'(x, $guid#$1_event_EventHandle'$1_reconfiguration_NewEpochEvent'(s)) +} +function {:inline} $Update'$1_event_EventHandle'$1_reconfiguration_NewEpochEvent''_guid(s: $1_event_EventHandle'$1_reconfiguration_NewEpochEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_reconfiguration_NewEpochEvent' { + $1_event_EventHandle'$1_reconfiguration_NewEpochEvent'($counter#$1_event_EventHandle'$1_reconfiguration_NewEpochEvent'(s), x) +} +function $IsValid'$1_event_EventHandle'$1_reconfiguration_NewEpochEvent''(s: $1_event_EventHandle'$1_reconfiguration_NewEpochEvent'): bool { + $IsValid'u64'($counter#$1_event_EventHandle'$1_reconfiguration_NewEpochEvent'(s)) + && $IsValid'$1_guid_GUID'($guid#$1_event_EventHandle'$1_reconfiguration_NewEpochEvent'(s)) +} +function {:inline} $IsEqual'$1_event_EventHandle'$1_reconfiguration_NewEpochEvent''(s1: $1_event_EventHandle'$1_reconfiguration_NewEpochEvent', s2: $1_event_EventHandle'$1_reconfiguration_NewEpochEvent'): bool { + s1 == s2 +} + +// struct event::EventHandle at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:16:5+224 +type {:datatype} $1_event_EventHandle'$1_staking_contract_AddStakeEvent'; +function {:constructor} $1_event_EventHandle'$1_staking_contract_AddStakeEvent'($counter: int, $guid: $1_guid_GUID): $1_event_EventHandle'$1_staking_contract_AddStakeEvent'; +function {:inline} $Update'$1_event_EventHandle'$1_staking_contract_AddStakeEvent''_counter(s: $1_event_EventHandle'$1_staking_contract_AddStakeEvent', x: int): $1_event_EventHandle'$1_staking_contract_AddStakeEvent' { + $1_event_EventHandle'$1_staking_contract_AddStakeEvent'(x, $guid#$1_event_EventHandle'$1_staking_contract_AddStakeEvent'(s)) +} +function {:inline} $Update'$1_event_EventHandle'$1_staking_contract_AddStakeEvent''_guid(s: $1_event_EventHandle'$1_staking_contract_AddStakeEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_staking_contract_AddStakeEvent' { + $1_event_EventHandle'$1_staking_contract_AddStakeEvent'($counter#$1_event_EventHandle'$1_staking_contract_AddStakeEvent'(s), x) +} +function $IsValid'$1_event_EventHandle'$1_staking_contract_AddStakeEvent''(s: $1_event_EventHandle'$1_staking_contract_AddStakeEvent'): bool { + $IsValid'u64'($counter#$1_event_EventHandle'$1_staking_contract_AddStakeEvent'(s)) + && $IsValid'$1_guid_GUID'($guid#$1_event_EventHandle'$1_staking_contract_AddStakeEvent'(s)) +} +function {:inline} $IsEqual'$1_event_EventHandle'$1_staking_contract_AddStakeEvent''(s1: $1_event_EventHandle'$1_staking_contract_AddStakeEvent', s2: $1_event_EventHandle'$1_staking_contract_AddStakeEvent'): bool { + s1 == s2 +} + +// struct event::EventHandle at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:16:5+224 +type {:datatype} $1_event_EventHandle'$1_staking_contract_UnlockStakeEvent'; +function {:constructor} $1_event_EventHandle'$1_staking_contract_UnlockStakeEvent'($counter: int, $guid: $1_guid_GUID): $1_event_EventHandle'$1_staking_contract_UnlockStakeEvent'; +function {:inline} $Update'$1_event_EventHandle'$1_staking_contract_UnlockStakeEvent''_counter(s: $1_event_EventHandle'$1_staking_contract_UnlockStakeEvent', x: int): $1_event_EventHandle'$1_staking_contract_UnlockStakeEvent' { + $1_event_EventHandle'$1_staking_contract_UnlockStakeEvent'(x, $guid#$1_event_EventHandle'$1_staking_contract_UnlockStakeEvent'(s)) +} +function {:inline} $Update'$1_event_EventHandle'$1_staking_contract_UnlockStakeEvent''_guid(s: $1_event_EventHandle'$1_staking_contract_UnlockStakeEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_staking_contract_UnlockStakeEvent' { + $1_event_EventHandle'$1_staking_contract_UnlockStakeEvent'($counter#$1_event_EventHandle'$1_staking_contract_UnlockStakeEvent'(s), x) +} +function $IsValid'$1_event_EventHandle'$1_staking_contract_UnlockStakeEvent''(s: $1_event_EventHandle'$1_staking_contract_UnlockStakeEvent'): bool { + $IsValid'u64'($counter#$1_event_EventHandle'$1_staking_contract_UnlockStakeEvent'(s)) + && $IsValid'$1_guid_GUID'($guid#$1_event_EventHandle'$1_staking_contract_UnlockStakeEvent'(s)) +} +function {:inline} $IsEqual'$1_event_EventHandle'$1_staking_contract_UnlockStakeEvent''(s1: $1_event_EventHandle'$1_staking_contract_UnlockStakeEvent', s2: $1_event_EventHandle'$1_staking_contract_UnlockStakeEvent'): bool { + s1 == s2 +} + +// struct event::EventHandle at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:16:5+224 +type {:datatype} $1_event_EventHandle'$1_staking_contract_AddDistributionEvent'; +function {:constructor} $1_event_EventHandle'$1_staking_contract_AddDistributionEvent'($counter: int, $guid: $1_guid_GUID): $1_event_EventHandle'$1_staking_contract_AddDistributionEvent'; +function {:inline} $Update'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent''_counter(s: $1_event_EventHandle'$1_staking_contract_AddDistributionEvent', x: int): $1_event_EventHandle'$1_staking_contract_AddDistributionEvent' { + $1_event_EventHandle'$1_staking_contract_AddDistributionEvent'(x, $guid#$1_event_EventHandle'$1_staking_contract_AddDistributionEvent'(s)) +} +function {:inline} $Update'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent''_guid(s: $1_event_EventHandle'$1_staking_contract_AddDistributionEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_staking_contract_AddDistributionEvent' { + $1_event_EventHandle'$1_staking_contract_AddDistributionEvent'($counter#$1_event_EventHandle'$1_staking_contract_AddDistributionEvent'(s), x) +} +function $IsValid'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent''(s: $1_event_EventHandle'$1_staking_contract_AddDistributionEvent'): bool { + $IsValid'u64'($counter#$1_event_EventHandle'$1_staking_contract_AddDistributionEvent'(s)) + && $IsValid'$1_guid_GUID'($guid#$1_event_EventHandle'$1_staking_contract_AddDistributionEvent'(s)) +} +function {:inline} $IsEqual'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent''(s1: $1_event_EventHandle'$1_staking_contract_AddDistributionEvent', s2: $1_event_EventHandle'$1_staking_contract_AddDistributionEvent'): bool { + s1 == s2 +} + +// struct event::EventHandle at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:16:5+224 +type {:datatype} $1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent'; +function {:constructor} $1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent'($counter: int, $guid: $1_guid_GUID): $1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent'; +function {:inline} $Update'$1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent''_counter(s: $1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent', x: int): $1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent' { + $1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent'(x, $guid#$1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent'(s)) +} +function {:inline} $Update'$1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent''_guid(s: $1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent' { + $1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent'($counter#$1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent'(s), x) +} +function $IsValid'$1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent''(s: $1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent'): bool { + $IsValid'u64'($counter#$1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent'(s)) + && $IsValid'$1_guid_GUID'($guid#$1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent'(s)) +} +function {:inline} $IsEqual'$1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent''(s1: $1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent', s2: $1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent'): bool { + s1 == s2 +} + +// struct event::EventHandle at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:16:5+224 +type {:datatype} $1_event_EventHandle'$1_staking_contract_DistributeEvent'; +function {:constructor} $1_event_EventHandle'$1_staking_contract_DistributeEvent'($counter: int, $guid: $1_guid_GUID): $1_event_EventHandle'$1_staking_contract_DistributeEvent'; +function {:inline} $Update'$1_event_EventHandle'$1_staking_contract_DistributeEvent''_counter(s: $1_event_EventHandle'$1_staking_contract_DistributeEvent', x: int): $1_event_EventHandle'$1_staking_contract_DistributeEvent' { + $1_event_EventHandle'$1_staking_contract_DistributeEvent'(x, $guid#$1_event_EventHandle'$1_staking_contract_DistributeEvent'(s)) +} +function {:inline} $Update'$1_event_EventHandle'$1_staking_contract_DistributeEvent''_guid(s: $1_event_EventHandle'$1_staking_contract_DistributeEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_staking_contract_DistributeEvent' { + $1_event_EventHandle'$1_staking_contract_DistributeEvent'($counter#$1_event_EventHandle'$1_staking_contract_DistributeEvent'(s), x) +} +function $IsValid'$1_event_EventHandle'$1_staking_contract_DistributeEvent''(s: $1_event_EventHandle'$1_staking_contract_DistributeEvent'): bool { + $IsValid'u64'($counter#$1_event_EventHandle'$1_staking_contract_DistributeEvent'(s)) + && $IsValid'$1_guid_GUID'($guid#$1_event_EventHandle'$1_staking_contract_DistributeEvent'(s)) +} +function {:inline} $IsEqual'$1_event_EventHandle'$1_staking_contract_DistributeEvent''(s1: $1_event_EventHandle'$1_staking_contract_DistributeEvent', s2: $1_event_EventHandle'$1_staking_contract_DistributeEvent'): bool { + s1 == s2 +} + +// struct event::EventHandle at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:16:5+224 +type {:datatype} $1_event_EventHandle'$1_staking_contract_RequestCommissionEvent'; +function {:constructor} $1_event_EventHandle'$1_staking_contract_RequestCommissionEvent'($counter: int, $guid: $1_guid_GUID): $1_event_EventHandle'$1_staking_contract_RequestCommissionEvent'; +function {:inline} $Update'$1_event_EventHandle'$1_staking_contract_RequestCommissionEvent''_counter(s: $1_event_EventHandle'$1_staking_contract_RequestCommissionEvent', x: int): $1_event_EventHandle'$1_staking_contract_RequestCommissionEvent' { + $1_event_EventHandle'$1_staking_contract_RequestCommissionEvent'(x, $guid#$1_event_EventHandle'$1_staking_contract_RequestCommissionEvent'(s)) +} +function {:inline} $Update'$1_event_EventHandle'$1_staking_contract_RequestCommissionEvent''_guid(s: $1_event_EventHandle'$1_staking_contract_RequestCommissionEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_staking_contract_RequestCommissionEvent' { + $1_event_EventHandle'$1_staking_contract_RequestCommissionEvent'($counter#$1_event_EventHandle'$1_staking_contract_RequestCommissionEvent'(s), x) +} +function $IsValid'$1_event_EventHandle'$1_staking_contract_RequestCommissionEvent''(s: $1_event_EventHandle'$1_staking_contract_RequestCommissionEvent'): bool { + $IsValid'u64'($counter#$1_event_EventHandle'$1_staking_contract_RequestCommissionEvent'(s)) + && $IsValid'$1_guid_GUID'($guid#$1_event_EventHandle'$1_staking_contract_RequestCommissionEvent'(s)) +} +function {:inline} $IsEqual'$1_event_EventHandle'$1_staking_contract_RequestCommissionEvent''(s1: $1_event_EventHandle'$1_staking_contract_RequestCommissionEvent', s2: $1_event_EventHandle'$1_staking_contract_RequestCommissionEvent'): bool { + s1 == s2 +} + +// struct event::EventHandle at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:16:5+224 +type {:datatype} $1_event_EventHandle'$1_staking_contract_ResetLockupEvent'; +function {:constructor} $1_event_EventHandle'$1_staking_contract_ResetLockupEvent'($counter: int, $guid: $1_guid_GUID): $1_event_EventHandle'$1_staking_contract_ResetLockupEvent'; +function {:inline} $Update'$1_event_EventHandle'$1_staking_contract_ResetLockupEvent''_counter(s: $1_event_EventHandle'$1_staking_contract_ResetLockupEvent', x: int): $1_event_EventHandle'$1_staking_contract_ResetLockupEvent' { + $1_event_EventHandle'$1_staking_contract_ResetLockupEvent'(x, $guid#$1_event_EventHandle'$1_staking_contract_ResetLockupEvent'(s)) +} +function {:inline} $Update'$1_event_EventHandle'$1_staking_contract_ResetLockupEvent''_guid(s: $1_event_EventHandle'$1_staking_contract_ResetLockupEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_staking_contract_ResetLockupEvent' { + $1_event_EventHandle'$1_staking_contract_ResetLockupEvent'($counter#$1_event_EventHandle'$1_staking_contract_ResetLockupEvent'(s), x) +} +function $IsValid'$1_event_EventHandle'$1_staking_contract_ResetLockupEvent''(s: $1_event_EventHandle'$1_staking_contract_ResetLockupEvent'): bool { + $IsValid'u64'($counter#$1_event_EventHandle'$1_staking_contract_ResetLockupEvent'(s)) + && $IsValid'$1_guid_GUID'($guid#$1_event_EventHandle'$1_staking_contract_ResetLockupEvent'(s)) +} +function {:inline} $IsEqual'$1_event_EventHandle'$1_staking_contract_ResetLockupEvent''(s1: $1_event_EventHandle'$1_staking_contract_ResetLockupEvent', s2: $1_event_EventHandle'$1_staking_contract_ResetLockupEvent'): bool { + s1 == s2 +} + +// struct event::EventHandle at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:16:5+224 +type {:datatype} $1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent'; +function {:constructor} $1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent'($counter: int, $guid: $1_guid_GUID): $1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent'; +function {:inline} $Update'$1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent''_counter(s: $1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent', x: int): $1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent' { + $1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent'(x, $guid#$1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent'(s)) +} +function {:inline} $Update'$1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent''_guid(s: $1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent' { + $1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent'($counter#$1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent'(s), x) +} +function $IsValid'$1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent''(s: $1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent'): bool { + $IsValid'u64'($counter#$1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent'(s)) + && $IsValid'$1_guid_GUID'($guid#$1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent'(s)) +} +function {:inline} $IsEqual'$1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent''(s1: $1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent', s2: $1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent'): bool { + s1 == s2 +} + +// struct event::EventHandle at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:16:5+224 +type {:datatype} $1_event_EventHandle'$1_staking_contract_UpdateVoterEvent'; +function {:constructor} $1_event_EventHandle'$1_staking_contract_UpdateVoterEvent'($counter: int, $guid: $1_guid_GUID): $1_event_EventHandle'$1_staking_contract_UpdateVoterEvent'; +function {:inline} $Update'$1_event_EventHandle'$1_staking_contract_UpdateVoterEvent''_counter(s: $1_event_EventHandle'$1_staking_contract_UpdateVoterEvent', x: int): $1_event_EventHandle'$1_staking_contract_UpdateVoterEvent' { + $1_event_EventHandle'$1_staking_contract_UpdateVoterEvent'(x, $guid#$1_event_EventHandle'$1_staking_contract_UpdateVoterEvent'(s)) +} +function {:inline} $Update'$1_event_EventHandle'$1_staking_contract_UpdateVoterEvent''_guid(s: $1_event_EventHandle'$1_staking_contract_UpdateVoterEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_staking_contract_UpdateVoterEvent' { + $1_event_EventHandle'$1_staking_contract_UpdateVoterEvent'($counter#$1_event_EventHandle'$1_staking_contract_UpdateVoterEvent'(s), x) +} +function $IsValid'$1_event_EventHandle'$1_staking_contract_UpdateVoterEvent''(s: $1_event_EventHandle'$1_staking_contract_UpdateVoterEvent'): bool { + $IsValid'u64'($counter#$1_event_EventHandle'$1_staking_contract_UpdateVoterEvent'(s)) + && $IsValid'$1_guid_GUID'($guid#$1_event_EventHandle'$1_staking_contract_UpdateVoterEvent'(s)) +} +function {:inline} $IsEqual'$1_event_EventHandle'$1_staking_contract_UpdateVoterEvent''(s1: $1_event_EventHandle'$1_staking_contract_UpdateVoterEvent', s2: $1_event_EventHandle'$1_staking_contract_UpdateVoterEvent'): bool { + s1 == s2 +} + +// struct event::EventHandle at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:16:5+224 +type {:datatype} $1_event_EventHandle'$1_vesting_DistributeEvent'; +function {:constructor} $1_event_EventHandle'$1_vesting_DistributeEvent'($counter: int, $guid: $1_guid_GUID): $1_event_EventHandle'$1_vesting_DistributeEvent'; +function {:inline} $Update'$1_event_EventHandle'$1_vesting_DistributeEvent''_counter(s: $1_event_EventHandle'$1_vesting_DistributeEvent', x: int): $1_event_EventHandle'$1_vesting_DistributeEvent' { + $1_event_EventHandle'$1_vesting_DistributeEvent'(x, $guid#$1_event_EventHandle'$1_vesting_DistributeEvent'(s)) +} +function {:inline} $Update'$1_event_EventHandle'$1_vesting_DistributeEvent''_guid(s: $1_event_EventHandle'$1_vesting_DistributeEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_vesting_DistributeEvent' { + $1_event_EventHandle'$1_vesting_DistributeEvent'($counter#$1_event_EventHandle'$1_vesting_DistributeEvent'(s), x) +} +function $IsValid'$1_event_EventHandle'$1_vesting_DistributeEvent''(s: $1_event_EventHandle'$1_vesting_DistributeEvent'): bool { + $IsValid'u64'($counter#$1_event_EventHandle'$1_vesting_DistributeEvent'(s)) + && $IsValid'$1_guid_GUID'($guid#$1_event_EventHandle'$1_vesting_DistributeEvent'(s)) +} +function {:inline} $IsEqual'$1_event_EventHandle'$1_vesting_DistributeEvent''(s1: $1_event_EventHandle'$1_vesting_DistributeEvent', s2: $1_event_EventHandle'$1_vesting_DistributeEvent'): bool { + s1 == s2 +} + +// struct event::EventHandle at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:16:5+224 +type {:datatype} $1_event_EventHandle'$1_vesting_ResetLockupEvent'; +function {:constructor} $1_event_EventHandle'$1_vesting_ResetLockupEvent'($counter: int, $guid: $1_guid_GUID): $1_event_EventHandle'$1_vesting_ResetLockupEvent'; +function {:inline} $Update'$1_event_EventHandle'$1_vesting_ResetLockupEvent''_counter(s: $1_event_EventHandle'$1_vesting_ResetLockupEvent', x: int): $1_event_EventHandle'$1_vesting_ResetLockupEvent' { + $1_event_EventHandle'$1_vesting_ResetLockupEvent'(x, $guid#$1_event_EventHandle'$1_vesting_ResetLockupEvent'(s)) +} +function {:inline} $Update'$1_event_EventHandle'$1_vesting_ResetLockupEvent''_guid(s: $1_event_EventHandle'$1_vesting_ResetLockupEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_vesting_ResetLockupEvent' { + $1_event_EventHandle'$1_vesting_ResetLockupEvent'($counter#$1_event_EventHandle'$1_vesting_ResetLockupEvent'(s), x) +} +function $IsValid'$1_event_EventHandle'$1_vesting_ResetLockupEvent''(s: $1_event_EventHandle'$1_vesting_ResetLockupEvent'): bool { + $IsValid'u64'($counter#$1_event_EventHandle'$1_vesting_ResetLockupEvent'(s)) + && $IsValid'$1_guid_GUID'($guid#$1_event_EventHandle'$1_vesting_ResetLockupEvent'(s)) +} +function {:inline} $IsEqual'$1_event_EventHandle'$1_vesting_ResetLockupEvent''(s1: $1_event_EventHandle'$1_vesting_ResetLockupEvent', s2: $1_event_EventHandle'$1_vesting_ResetLockupEvent'): bool { + s1 == s2 +} + +// struct event::EventHandle at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:16:5+224 +type {:datatype} $1_event_EventHandle'$1_vesting_UpdateVoterEvent'; +function {:constructor} $1_event_EventHandle'$1_vesting_UpdateVoterEvent'($counter: int, $guid: $1_guid_GUID): $1_event_EventHandle'$1_vesting_UpdateVoterEvent'; +function {:inline} $Update'$1_event_EventHandle'$1_vesting_UpdateVoterEvent''_counter(s: $1_event_EventHandle'$1_vesting_UpdateVoterEvent', x: int): $1_event_EventHandle'$1_vesting_UpdateVoterEvent' { + $1_event_EventHandle'$1_vesting_UpdateVoterEvent'(x, $guid#$1_event_EventHandle'$1_vesting_UpdateVoterEvent'(s)) +} +function {:inline} $Update'$1_event_EventHandle'$1_vesting_UpdateVoterEvent''_guid(s: $1_event_EventHandle'$1_vesting_UpdateVoterEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_vesting_UpdateVoterEvent' { + $1_event_EventHandle'$1_vesting_UpdateVoterEvent'($counter#$1_event_EventHandle'$1_vesting_UpdateVoterEvent'(s), x) +} +function $IsValid'$1_event_EventHandle'$1_vesting_UpdateVoterEvent''(s: $1_event_EventHandle'$1_vesting_UpdateVoterEvent'): bool { + $IsValid'u64'($counter#$1_event_EventHandle'$1_vesting_UpdateVoterEvent'(s)) + && $IsValid'$1_guid_GUID'($guid#$1_event_EventHandle'$1_vesting_UpdateVoterEvent'(s)) +} +function {:inline} $IsEqual'$1_event_EventHandle'$1_vesting_UpdateVoterEvent''(s1: $1_event_EventHandle'$1_vesting_UpdateVoterEvent', s2: $1_event_EventHandle'$1_vesting_UpdateVoterEvent'): bool { + s1 == s2 +} + +// struct event::EventHandle at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:16:5+224 +type {:datatype} $1_event_EventHandle'$1_vesting_AdminWithdrawEvent'; +function {:constructor} $1_event_EventHandle'$1_vesting_AdminWithdrawEvent'($counter: int, $guid: $1_guid_GUID): $1_event_EventHandle'$1_vesting_AdminWithdrawEvent'; +function {:inline} $Update'$1_event_EventHandle'$1_vesting_AdminWithdrawEvent''_counter(s: $1_event_EventHandle'$1_vesting_AdminWithdrawEvent', x: int): $1_event_EventHandle'$1_vesting_AdminWithdrawEvent' { + $1_event_EventHandle'$1_vesting_AdminWithdrawEvent'(x, $guid#$1_event_EventHandle'$1_vesting_AdminWithdrawEvent'(s)) +} +function {:inline} $Update'$1_event_EventHandle'$1_vesting_AdminWithdrawEvent''_guid(s: $1_event_EventHandle'$1_vesting_AdminWithdrawEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_vesting_AdminWithdrawEvent' { + $1_event_EventHandle'$1_vesting_AdminWithdrawEvent'($counter#$1_event_EventHandle'$1_vesting_AdminWithdrawEvent'(s), x) +} +function $IsValid'$1_event_EventHandle'$1_vesting_AdminWithdrawEvent''(s: $1_event_EventHandle'$1_vesting_AdminWithdrawEvent'): bool { + $IsValid'u64'($counter#$1_event_EventHandle'$1_vesting_AdminWithdrawEvent'(s)) + && $IsValid'$1_guid_GUID'($guid#$1_event_EventHandle'$1_vesting_AdminWithdrawEvent'(s)) +} +function {:inline} $IsEqual'$1_event_EventHandle'$1_vesting_AdminWithdrawEvent''(s1: $1_event_EventHandle'$1_vesting_AdminWithdrawEvent', s2: $1_event_EventHandle'$1_vesting_AdminWithdrawEvent'): bool { + s1 == s2 +} + +// struct event::EventHandle at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:16:5+224 +type {:datatype} $1_event_EventHandle'$1_vesting_CreateVestingContractEvent'; +function {:constructor} $1_event_EventHandle'$1_vesting_CreateVestingContractEvent'($counter: int, $guid: $1_guid_GUID): $1_event_EventHandle'$1_vesting_CreateVestingContractEvent'; +function {:inline} $Update'$1_event_EventHandle'$1_vesting_CreateVestingContractEvent''_counter(s: $1_event_EventHandle'$1_vesting_CreateVestingContractEvent', x: int): $1_event_EventHandle'$1_vesting_CreateVestingContractEvent' { + $1_event_EventHandle'$1_vesting_CreateVestingContractEvent'(x, $guid#$1_event_EventHandle'$1_vesting_CreateVestingContractEvent'(s)) +} +function {:inline} $Update'$1_event_EventHandle'$1_vesting_CreateVestingContractEvent''_guid(s: $1_event_EventHandle'$1_vesting_CreateVestingContractEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_vesting_CreateVestingContractEvent' { + $1_event_EventHandle'$1_vesting_CreateVestingContractEvent'($counter#$1_event_EventHandle'$1_vesting_CreateVestingContractEvent'(s), x) +} +function $IsValid'$1_event_EventHandle'$1_vesting_CreateVestingContractEvent''(s: $1_event_EventHandle'$1_vesting_CreateVestingContractEvent'): bool { + $IsValid'u64'($counter#$1_event_EventHandle'$1_vesting_CreateVestingContractEvent'(s)) + && $IsValid'$1_guid_GUID'($guid#$1_event_EventHandle'$1_vesting_CreateVestingContractEvent'(s)) +} +function {:inline} $IsEqual'$1_event_EventHandle'$1_vesting_CreateVestingContractEvent''(s1: $1_event_EventHandle'$1_vesting_CreateVestingContractEvent', s2: $1_event_EventHandle'$1_vesting_CreateVestingContractEvent'): bool { + s1 == s2 +} + +// struct event::EventHandle at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:16:5+224 +type {:datatype} $1_event_EventHandle'$1_vesting_SetBeneficiaryEvent'; +function {:constructor} $1_event_EventHandle'$1_vesting_SetBeneficiaryEvent'($counter: int, $guid: $1_guid_GUID): $1_event_EventHandle'$1_vesting_SetBeneficiaryEvent'; +function {:inline} $Update'$1_event_EventHandle'$1_vesting_SetBeneficiaryEvent''_counter(s: $1_event_EventHandle'$1_vesting_SetBeneficiaryEvent', x: int): $1_event_EventHandle'$1_vesting_SetBeneficiaryEvent' { + $1_event_EventHandle'$1_vesting_SetBeneficiaryEvent'(x, $guid#$1_event_EventHandle'$1_vesting_SetBeneficiaryEvent'(s)) +} +function {:inline} $Update'$1_event_EventHandle'$1_vesting_SetBeneficiaryEvent''_guid(s: $1_event_EventHandle'$1_vesting_SetBeneficiaryEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_vesting_SetBeneficiaryEvent' { + $1_event_EventHandle'$1_vesting_SetBeneficiaryEvent'($counter#$1_event_EventHandle'$1_vesting_SetBeneficiaryEvent'(s), x) +} +function $IsValid'$1_event_EventHandle'$1_vesting_SetBeneficiaryEvent''(s: $1_event_EventHandle'$1_vesting_SetBeneficiaryEvent'): bool { + $IsValid'u64'($counter#$1_event_EventHandle'$1_vesting_SetBeneficiaryEvent'(s)) + && $IsValid'$1_guid_GUID'($guid#$1_event_EventHandle'$1_vesting_SetBeneficiaryEvent'(s)) +} +function {:inline} $IsEqual'$1_event_EventHandle'$1_vesting_SetBeneficiaryEvent''(s1: $1_event_EventHandle'$1_vesting_SetBeneficiaryEvent', s2: $1_event_EventHandle'$1_vesting_SetBeneficiaryEvent'): bool { + s1 == s2 +} + +// struct event::EventHandle at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:16:5+224 +type {:datatype} $1_event_EventHandle'$1_vesting_TerminateEvent'; +function {:constructor} $1_event_EventHandle'$1_vesting_TerminateEvent'($counter: int, $guid: $1_guid_GUID): $1_event_EventHandle'$1_vesting_TerminateEvent'; +function {:inline} $Update'$1_event_EventHandle'$1_vesting_TerminateEvent''_counter(s: $1_event_EventHandle'$1_vesting_TerminateEvent', x: int): $1_event_EventHandle'$1_vesting_TerminateEvent' { + $1_event_EventHandle'$1_vesting_TerminateEvent'(x, $guid#$1_event_EventHandle'$1_vesting_TerminateEvent'(s)) +} +function {:inline} $Update'$1_event_EventHandle'$1_vesting_TerminateEvent''_guid(s: $1_event_EventHandle'$1_vesting_TerminateEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_vesting_TerminateEvent' { + $1_event_EventHandle'$1_vesting_TerminateEvent'($counter#$1_event_EventHandle'$1_vesting_TerminateEvent'(s), x) +} +function $IsValid'$1_event_EventHandle'$1_vesting_TerminateEvent''(s: $1_event_EventHandle'$1_vesting_TerminateEvent'): bool { + $IsValid'u64'($counter#$1_event_EventHandle'$1_vesting_TerminateEvent'(s)) + && $IsValid'$1_guid_GUID'($guid#$1_event_EventHandle'$1_vesting_TerminateEvent'(s)) +} +function {:inline} $IsEqual'$1_event_EventHandle'$1_vesting_TerminateEvent''(s1: $1_event_EventHandle'$1_vesting_TerminateEvent', s2: $1_event_EventHandle'$1_vesting_TerminateEvent'): bool { + s1 == s2 +} + +// struct event::EventHandle at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:16:5+224 +type {:datatype} $1_event_EventHandle'$1_vesting_UnlockRewardsEvent'; +function {:constructor} $1_event_EventHandle'$1_vesting_UnlockRewardsEvent'($counter: int, $guid: $1_guid_GUID): $1_event_EventHandle'$1_vesting_UnlockRewardsEvent'; +function {:inline} $Update'$1_event_EventHandle'$1_vesting_UnlockRewardsEvent''_counter(s: $1_event_EventHandle'$1_vesting_UnlockRewardsEvent', x: int): $1_event_EventHandle'$1_vesting_UnlockRewardsEvent' { + $1_event_EventHandle'$1_vesting_UnlockRewardsEvent'(x, $guid#$1_event_EventHandle'$1_vesting_UnlockRewardsEvent'(s)) +} +function {:inline} $Update'$1_event_EventHandle'$1_vesting_UnlockRewardsEvent''_guid(s: $1_event_EventHandle'$1_vesting_UnlockRewardsEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_vesting_UnlockRewardsEvent' { + $1_event_EventHandle'$1_vesting_UnlockRewardsEvent'($counter#$1_event_EventHandle'$1_vesting_UnlockRewardsEvent'(s), x) +} +function $IsValid'$1_event_EventHandle'$1_vesting_UnlockRewardsEvent''(s: $1_event_EventHandle'$1_vesting_UnlockRewardsEvent'): bool { + $IsValid'u64'($counter#$1_event_EventHandle'$1_vesting_UnlockRewardsEvent'(s)) + && $IsValid'$1_guid_GUID'($guid#$1_event_EventHandle'$1_vesting_UnlockRewardsEvent'(s)) +} +function {:inline} $IsEqual'$1_event_EventHandle'$1_vesting_UnlockRewardsEvent''(s1: $1_event_EventHandle'$1_vesting_UnlockRewardsEvent', s2: $1_event_EventHandle'$1_vesting_UnlockRewardsEvent'): bool { + s1 == s2 +} + +// struct event::EventHandle at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:16:5+224 +type {:datatype} $1_event_EventHandle'$1_vesting_UpdateOperatorEvent'; +function {:constructor} $1_event_EventHandle'$1_vesting_UpdateOperatorEvent'($counter: int, $guid: $1_guid_GUID): $1_event_EventHandle'$1_vesting_UpdateOperatorEvent'; +function {:inline} $Update'$1_event_EventHandle'$1_vesting_UpdateOperatorEvent''_counter(s: $1_event_EventHandle'$1_vesting_UpdateOperatorEvent', x: int): $1_event_EventHandle'$1_vesting_UpdateOperatorEvent' { + $1_event_EventHandle'$1_vesting_UpdateOperatorEvent'(x, $guid#$1_event_EventHandle'$1_vesting_UpdateOperatorEvent'(s)) +} +function {:inline} $Update'$1_event_EventHandle'$1_vesting_UpdateOperatorEvent''_guid(s: $1_event_EventHandle'$1_vesting_UpdateOperatorEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_vesting_UpdateOperatorEvent' { + $1_event_EventHandle'$1_vesting_UpdateOperatorEvent'($counter#$1_event_EventHandle'$1_vesting_UpdateOperatorEvent'(s), x) +} +function $IsValid'$1_event_EventHandle'$1_vesting_UpdateOperatorEvent''(s: $1_event_EventHandle'$1_vesting_UpdateOperatorEvent'): bool { + $IsValid'u64'($counter#$1_event_EventHandle'$1_vesting_UpdateOperatorEvent'(s)) + && $IsValid'$1_guid_GUID'($guid#$1_event_EventHandle'$1_vesting_UpdateOperatorEvent'(s)) +} +function {:inline} $IsEqual'$1_event_EventHandle'$1_vesting_UpdateOperatorEvent''(s1: $1_event_EventHandle'$1_vesting_UpdateOperatorEvent', s2: $1_event_EventHandle'$1_vesting_UpdateOperatorEvent'): bool { + s1 == s2 +} + +// struct event::EventHandle at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:16:5+224 +type {:datatype} $1_event_EventHandle'$1_vesting_VestEvent'; +function {:constructor} $1_event_EventHandle'$1_vesting_VestEvent'($counter: int, $guid: $1_guid_GUID): $1_event_EventHandle'$1_vesting_VestEvent'; +function {:inline} $Update'$1_event_EventHandle'$1_vesting_VestEvent''_counter(s: $1_event_EventHandle'$1_vesting_VestEvent', x: int): $1_event_EventHandle'$1_vesting_VestEvent' { + $1_event_EventHandle'$1_vesting_VestEvent'(x, $guid#$1_event_EventHandle'$1_vesting_VestEvent'(s)) +} +function {:inline} $Update'$1_event_EventHandle'$1_vesting_VestEvent''_guid(s: $1_event_EventHandle'$1_vesting_VestEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_vesting_VestEvent' { + $1_event_EventHandle'$1_vesting_VestEvent'($counter#$1_event_EventHandle'$1_vesting_VestEvent'(s), x) +} +function $IsValid'$1_event_EventHandle'$1_vesting_VestEvent''(s: $1_event_EventHandle'$1_vesting_VestEvent'): bool { + $IsValid'u64'($counter#$1_event_EventHandle'$1_vesting_VestEvent'(s)) + && $IsValid'$1_guid_GUID'($guid#$1_event_EventHandle'$1_vesting_VestEvent'(s)) +} +function {:inline} $IsEqual'$1_event_EventHandle'$1_vesting_VestEvent''(s1: $1_event_EventHandle'$1_vesting_VestEvent', s2: $1_event_EventHandle'$1_vesting_VestEvent'): bool { + s1 == s2 +} + +// fun event::new_event_handle [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:24:5+165 +procedure {:inline 1} $1_event_new_event_handle'$1_account_CoinRegisterEvent'(_$t0: $1_guid_GUID) returns ($ret0: $1_event_EventHandle'$1_account_CoinRegisterEvent') +{ + // declare local variables + var $t1: int; + var $t2: $1_event_EventHandle'$1_account_CoinRegisterEvent'; + var $t0: $1_guid_GUID; + var $temp_0'$1_event_EventHandle'$1_account_CoinRegisterEvent'': $1_event_EventHandle'$1_account_CoinRegisterEvent'; + var $temp_0'$1_guid_GUID': $1_guid_GUID; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[guid]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:24:5+1 + assume {:print "$at(110,978,979)"} true; + assume {:print "$track_local(15,4,0):", $t0} $t0 == $t0; + + // $t1 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:26:22+1 + assume {:print "$at(110,1107,1108)"} true; + $t1 := 0; + assume $IsValid'u64'($t1); + + // $t2 := pack event::EventHandle<#0>($t1, $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:25:9+68 + assume {:print "$at(110,1069,1137)"} true; + $t2 := $1_event_EventHandle'$1_account_CoinRegisterEvent'($t1, $t0); + + // trace_return[0]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:25:9+68 + assume {:print "$track_return(15,4,0):", $t2} $t2 == $t2; + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:29:5+1 + assume {:print "$at(110,1142,1143)"} true; +L1: + + // return $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:29:5+1 + assume {:print "$at(110,1142,1143)"} true; + $ret0 := $t2; + return; + +} + +// fun event::new_event_handle [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:24:5+165 +procedure {:inline 1} $1_event_new_event_handle'$1_account_KeyRotationEvent'(_$t0: $1_guid_GUID) returns ($ret0: $1_event_EventHandle'$1_account_KeyRotationEvent') +{ + // declare local variables + var $t1: int; + var $t2: $1_event_EventHandle'$1_account_KeyRotationEvent'; + var $t0: $1_guid_GUID; + var $temp_0'$1_event_EventHandle'$1_account_KeyRotationEvent'': $1_event_EventHandle'$1_account_KeyRotationEvent'; + var $temp_0'$1_guid_GUID': $1_guid_GUID; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[guid]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:24:5+1 + assume {:print "$at(110,978,979)"} true; + assume {:print "$track_local(15,4,0):", $t0} $t0 == $t0; + + // $t1 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:26:22+1 + assume {:print "$at(110,1107,1108)"} true; + $t1 := 0; + assume $IsValid'u64'($t1); + + // $t2 := pack event::EventHandle<#0>($t1, $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:25:9+68 + assume {:print "$at(110,1069,1137)"} true; + $t2 := $1_event_EventHandle'$1_account_KeyRotationEvent'($t1, $t0); + + // trace_return[0]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:25:9+68 + assume {:print "$track_return(15,4,0):", $t2} $t2 == $t2; + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:29:5+1 + assume {:print "$at(110,1142,1143)"} true; +L1: + + // return $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:29:5+1 + assume {:print "$at(110,1142,1143)"} true; + $ret0 := $t2; + return; + +} + +// fun event::new_event_handle [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:24:5+165 +procedure {:inline 1} $1_event_new_event_handle'$1_coin_DepositEvent'(_$t0: $1_guid_GUID) returns ($ret0: $1_event_EventHandle'$1_coin_DepositEvent') +{ + // declare local variables + var $t1: int; + var $t2: $1_event_EventHandle'$1_coin_DepositEvent'; + var $t0: $1_guid_GUID; + var $temp_0'$1_event_EventHandle'$1_coin_DepositEvent'': $1_event_EventHandle'$1_coin_DepositEvent'; + var $temp_0'$1_guid_GUID': $1_guid_GUID; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[guid]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:24:5+1 + assume {:print "$at(110,978,979)"} true; + assume {:print "$track_local(15,4,0):", $t0} $t0 == $t0; + + // $t1 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:26:22+1 + assume {:print "$at(110,1107,1108)"} true; + $t1 := 0; + assume $IsValid'u64'($t1); + + // $t2 := pack event::EventHandle<#0>($t1, $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:25:9+68 + assume {:print "$at(110,1069,1137)"} true; + $t2 := $1_event_EventHandle'$1_coin_DepositEvent'($t1, $t0); + + // trace_return[0]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:25:9+68 + assume {:print "$track_return(15,4,0):", $t2} $t2 == $t2; + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:29:5+1 + assume {:print "$at(110,1142,1143)"} true; +L1: + + // return $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:29:5+1 + assume {:print "$at(110,1142,1143)"} true; + $ret0 := $t2; + return; + +} + +// fun event::new_event_handle [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:24:5+165 +procedure {:inline 1} $1_event_new_event_handle'$1_coin_WithdrawEvent'(_$t0: $1_guid_GUID) returns ($ret0: $1_event_EventHandle'$1_coin_WithdrawEvent') +{ + // declare local variables + var $t1: int; + var $t2: $1_event_EventHandle'$1_coin_WithdrawEvent'; + var $t0: $1_guid_GUID; + var $temp_0'$1_event_EventHandle'$1_coin_WithdrawEvent'': $1_event_EventHandle'$1_coin_WithdrawEvent'; + var $temp_0'$1_guid_GUID': $1_guid_GUID; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[guid]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:24:5+1 + assume {:print "$at(110,978,979)"} true; + assume {:print "$track_local(15,4,0):", $t0} $t0 == $t0; + + // $t1 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:26:22+1 + assume {:print "$at(110,1107,1108)"} true; + $t1 := 0; + assume $IsValid'u64'($t1); + + // $t2 := pack event::EventHandle<#0>($t1, $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:25:9+68 + assume {:print "$at(110,1069,1137)"} true; + $t2 := $1_event_EventHandle'$1_coin_WithdrawEvent'($t1, $t0); + + // trace_return[0]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:25:9+68 + assume {:print "$track_return(15,4,0):", $t2} $t2 == $t2; + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:29:5+1 + assume {:print "$at(110,1142,1143)"} true; +L1: + + // return $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:29:5+1 + assume {:print "$at(110,1142,1143)"} true; + $ret0 := $t2; + return; + +} + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:224:5+79 +function {:inline} $1_account_$exists_at($1_account_Account_$memory: $Memory $1_account_Account, addr: int): bool { + $ResourceExists($1_account_Account_$memory, addr) +} + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:393:10+77 +function $1_account_spec_create_resource_address(source: int, seed: Vec (int)): int; +axiom (forall source: int, seed: Vec (int) :: +(var $$res := $1_account_spec_create_resource_address(source, seed); +$IsValid'address'($$res))); + +// struct account::Account at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:26:5+401 +type {:datatype} $1_account_Account; +function {:constructor} $1_account_Account($authentication_key: Vec (int), $sequence_number: int, $guid_creation_num: int, $coin_register_events: $1_event_EventHandle'$1_account_CoinRegisterEvent', $key_rotation_events: $1_event_EventHandle'$1_account_KeyRotationEvent', $rotation_capability_offer: $1_account_CapabilityOffer'$1_account_RotationCapability', $signer_capability_offer: $1_account_CapabilityOffer'$1_account_SignerCapability'): $1_account_Account; +function {:inline} $Update'$1_account_Account'_authentication_key(s: $1_account_Account, x: Vec (int)): $1_account_Account { + $1_account_Account(x, $sequence_number#$1_account_Account(s), $guid_creation_num#$1_account_Account(s), $coin_register_events#$1_account_Account(s), $key_rotation_events#$1_account_Account(s), $rotation_capability_offer#$1_account_Account(s), $signer_capability_offer#$1_account_Account(s)) +} +function {:inline} $Update'$1_account_Account'_sequence_number(s: $1_account_Account, x: int): $1_account_Account { + $1_account_Account($authentication_key#$1_account_Account(s), x, $guid_creation_num#$1_account_Account(s), $coin_register_events#$1_account_Account(s), $key_rotation_events#$1_account_Account(s), $rotation_capability_offer#$1_account_Account(s), $signer_capability_offer#$1_account_Account(s)) +} +function {:inline} $Update'$1_account_Account'_guid_creation_num(s: $1_account_Account, x: int): $1_account_Account { + $1_account_Account($authentication_key#$1_account_Account(s), $sequence_number#$1_account_Account(s), x, $coin_register_events#$1_account_Account(s), $key_rotation_events#$1_account_Account(s), $rotation_capability_offer#$1_account_Account(s), $signer_capability_offer#$1_account_Account(s)) +} +function {:inline} $Update'$1_account_Account'_coin_register_events(s: $1_account_Account, x: $1_event_EventHandle'$1_account_CoinRegisterEvent'): $1_account_Account { + $1_account_Account($authentication_key#$1_account_Account(s), $sequence_number#$1_account_Account(s), $guid_creation_num#$1_account_Account(s), x, $key_rotation_events#$1_account_Account(s), $rotation_capability_offer#$1_account_Account(s), $signer_capability_offer#$1_account_Account(s)) +} +function {:inline} $Update'$1_account_Account'_key_rotation_events(s: $1_account_Account, x: $1_event_EventHandle'$1_account_KeyRotationEvent'): $1_account_Account { + $1_account_Account($authentication_key#$1_account_Account(s), $sequence_number#$1_account_Account(s), $guid_creation_num#$1_account_Account(s), $coin_register_events#$1_account_Account(s), x, $rotation_capability_offer#$1_account_Account(s), $signer_capability_offer#$1_account_Account(s)) +} +function {:inline} $Update'$1_account_Account'_rotation_capability_offer(s: $1_account_Account, x: $1_account_CapabilityOffer'$1_account_RotationCapability'): $1_account_Account { + $1_account_Account($authentication_key#$1_account_Account(s), $sequence_number#$1_account_Account(s), $guid_creation_num#$1_account_Account(s), $coin_register_events#$1_account_Account(s), $key_rotation_events#$1_account_Account(s), x, $signer_capability_offer#$1_account_Account(s)) +} +function {:inline} $Update'$1_account_Account'_signer_capability_offer(s: $1_account_Account, x: $1_account_CapabilityOffer'$1_account_SignerCapability'): $1_account_Account { + $1_account_Account($authentication_key#$1_account_Account(s), $sequence_number#$1_account_Account(s), $guid_creation_num#$1_account_Account(s), $coin_register_events#$1_account_Account(s), $key_rotation_events#$1_account_Account(s), $rotation_capability_offer#$1_account_Account(s), x) +} +function $IsValid'$1_account_Account'(s: $1_account_Account): bool { + $IsValid'vec'u8''($authentication_key#$1_account_Account(s)) + && $IsValid'u64'($sequence_number#$1_account_Account(s)) + && $IsValid'u64'($guid_creation_num#$1_account_Account(s)) + && $IsValid'$1_event_EventHandle'$1_account_CoinRegisterEvent''($coin_register_events#$1_account_Account(s)) + && $IsValid'$1_event_EventHandle'$1_account_KeyRotationEvent''($key_rotation_events#$1_account_Account(s)) + && $IsValid'$1_account_CapabilityOffer'$1_account_RotationCapability''($rotation_capability_offer#$1_account_Account(s)) + && $IsValid'$1_account_CapabilityOffer'$1_account_SignerCapability''($signer_capability_offer#$1_account_Account(s)) +} +function {:inline} $IsEqual'$1_account_Account'(s1: $1_account_Account, s2: $1_account_Account): bool { + $IsEqual'vec'u8''($authentication_key#$1_account_Account(s1), $authentication_key#$1_account_Account(s2)) + && $IsEqual'u64'($sequence_number#$1_account_Account(s1), $sequence_number#$1_account_Account(s2)) + && $IsEqual'u64'($guid_creation_num#$1_account_Account(s1), $guid_creation_num#$1_account_Account(s2)) + && $IsEqual'$1_event_EventHandle'$1_account_CoinRegisterEvent''($coin_register_events#$1_account_Account(s1), $coin_register_events#$1_account_Account(s2)) + && $IsEqual'$1_event_EventHandle'$1_account_KeyRotationEvent''($key_rotation_events#$1_account_Account(s1), $key_rotation_events#$1_account_Account(s2)) + && $IsEqual'$1_account_CapabilityOffer'$1_account_RotationCapability''($rotation_capability_offer#$1_account_Account(s1), $rotation_capability_offer#$1_account_Account(s2)) + && $IsEqual'$1_account_CapabilityOffer'$1_account_SignerCapability''($signer_capability_offer#$1_account_Account(s1), $signer_capability_offer#$1_account_Account(s2))} +var $1_account_Account_$memory: $Memory $1_account_Account; + +// struct account::CapabilityOffer at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:45:5+68 +type {:datatype} $1_account_CapabilityOffer'$1_account_RotationCapability'; +function {:constructor} $1_account_CapabilityOffer'$1_account_RotationCapability'($for: $1_option_Option'address'): $1_account_CapabilityOffer'$1_account_RotationCapability'; +function {:inline} $Update'$1_account_CapabilityOffer'$1_account_RotationCapability''_for(s: $1_account_CapabilityOffer'$1_account_RotationCapability', x: $1_option_Option'address'): $1_account_CapabilityOffer'$1_account_RotationCapability' { + $1_account_CapabilityOffer'$1_account_RotationCapability'(x) +} +function $IsValid'$1_account_CapabilityOffer'$1_account_RotationCapability''(s: $1_account_CapabilityOffer'$1_account_RotationCapability'): bool { + $IsValid'$1_option_Option'address''($for#$1_account_CapabilityOffer'$1_account_RotationCapability'(s)) +} +function {:inline} $IsEqual'$1_account_CapabilityOffer'$1_account_RotationCapability''(s1: $1_account_CapabilityOffer'$1_account_RotationCapability', s2: $1_account_CapabilityOffer'$1_account_RotationCapability'): bool { + $IsEqual'$1_option_Option'address''($for#$1_account_CapabilityOffer'$1_account_RotationCapability'(s1), $for#$1_account_CapabilityOffer'$1_account_RotationCapability'(s2))} + +// struct account::CapabilityOffer at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:45:5+68 +type {:datatype} $1_account_CapabilityOffer'$1_account_SignerCapability'; +function {:constructor} $1_account_CapabilityOffer'$1_account_SignerCapability'($for: $1_option_Option'address'): $1_account_CapabilityOffer'$1_account_SignerCapability'; +function {:inline} $Update'$1_account_CapabilityOffer'$1_account_SignerCapability''_for(s: $1_account_CapabilityOffer'$1_account_SignerCapability', x: $1_option_Option'address'): $1_account_CapabilityOffer'$1_account_SignerCapability' { + $1_account_CapabilityOffer'$1_account_SignerCapability'(x) +} +function $IsValid'$1_account_CapabilityOffer'$1_account_SignerCapability''(s: $1_account_CapabilityOffer'$1_account_SignerCapability'): bool { + $IsValid'$1_option_Option'address''($for#$1_account_CapabilityOffer'$1_account_SignerCapability'(s)) +} +function {:inline} $IsEqual'$1_account_CapabilityOffer'$1_account_SignerCapability''(s1: $1_account_CapabilityOffer'$1_account_SignerCapability', s2: $1_account_CapabilityOffer'$1_account_SignerCapability'): bool { + $IsEqual'$1_option_Option'address''($for#$1_account_CapabilityOffer'$1_account_SignerCapability'(s1), $for#$1_account_CapabilityOffer'$1_account_SignerCapability'(s2))} + +// struct account::CoinRegisterEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:41:5+77 +type {:datatype} $1_account_CoinRegisterEvent; +function {:constructor} $1_account_CoinRegisterEvent($type_info: $1_type_info_TypeInfo): $1_account_CoinRegisterEvent; +function {:inline} $Update'$1_account_CoinRegisterEvent'_type_info(s: $1_account_CoinRegisterEvent, x: $1_type_info_TypeInfo): $1_account_CoinRegisterEvent { + $1_account_CoinRegisterEvent(x) +} +function $IsValid'$1_account_CoinRegisterEvent'(s: $1_account_CoinRegisterEvent): bool { + $IsValid'$1_type_info_TypeInfo'($type_info#$1_account_CoinRegisterEvent(s)) +} +function {:inline} $IsEqual'$1_account_CoinRegisterEvent'(s1: $1_account_CoinRegisterEvent, s2: $1_account_CoinRegisterEvent): bool { + $IsEqual'$1_type_info_TypeInfo'($type_info#$1_account_CoinRegisterEvent(s1), $type_info#$1_account_CoinRegisterEvent(s2))} + +// struct account::KeyRotationEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:36:5+135 +type {:datatype} $1_account_KeyRotationEvent; +function {:constructor} $1_account_KeyRotationEvent($old_authentication_key: Vec (int), $new_authentication_key: Vec (int)): $1_account_KeyRotationEvent; +function {:inline} $Update'$1_account_KeyRotationEvent'_old_authentication_key(s: $1_account_KeyRotationEvent, x: Vec (int)): $1_account_KeyRotationEvent { + $1_account_KeyRotationEvent(x, $new_authentication_key#$1_account_KeyRotationEvent(s)) +} +function {:inline} $Update'$1_account_KeyRotationEvent'_new_authentication_key(s: $1_account_KeyRotationEvent, x: Vec (int)): $1_account_KeyRotationEvent { + $1_account_KeyRotationEvent($old_authentication_key#$1_account_KeyRotationEvent(s), x) +} +function $IsValid'$1_account_KeyRotationEvent'(s: $1_account_KeyRotationEvent): bool { + $IsValid'vec'u8''($old_authentication_key#$1_account_KeyRotationEvent(s)) + && $IsValid'vec'u8''($new_authentication_key#$1_account_KeyRotationEvent(s)) +} +function {:inline} $IsEqual'$1_account_KeyRotationEvent'(s1: $1_account_KeyRotationEvent, s2: $1_account_KeyRotationEvent): bool { + $IsEqual'vec'u8''($old_authentication_key#$1_account_KeyRotationEvent(s1), $old_authentication_key#$1_account_KeyRotationEvent(s2)) + && $IsEqual'vec'u8''($new_authentication_key#$1_account_KeyRotationEvent(s1), $new_authentication_key#$1_account_KeyRotationEvent(s2))} + +// struct account::RotationCapability at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:47:5+62 +type {:datatype} $1_account_RotationCapability; +function {:constructor} $1_account_RotationCapability($account: int): $1_account_RotationCapability; +function {:inline} $Update'$1_account_RotationCapability'_account(s: $1_account_RotationCapability, x: int): $1_account_RotationCapability { + $1_account_RotationCapability(x) +} +function $IsValid'$1_account_RotationCapability'(s: $1_account_RotationCapability): bool { + $IsValid'address'($account#$1_account_RotationCapability(s)) +} +function {:inline} $IsEqual'$1_account_RotationCapability'(s1: $1_account_RotationCapability, s2: $1_account_RotationCapability): bool { + s1 == s2 +} + +// struct account::SignerCapability at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:49:5+60 +type {:datatype} $1_account_SignerCapability; +function {:constructor} $1_account_SignerCapability($account: int): $1_account_SignerCapability; +function {:inline} $Update'$1_account_SignerCapability'_account(s: $1_account_SignerCapability, x: int): $1_account_SignerCapability { + $1_account_SignerCapability(x) +} +function $IsValid'$1_account_SignerCapability'(s: $1_account_SignerCapability): bool { + $IsValid'address'($account#$1_account_SignerCapability(s)) +} +function {:inline} $IsEqual'$1_account_SignerCapability'(s1: $1_account_SignerCapability, s2: $1_account_SignerCapability): bool { + s1 == s2 +} + +// fun account::new_event_handle [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:669:5+157 +procedure {:inline 1} $1_account_new_event_handle'$1_coin_DepositEvent'(_$t0: $signer) returns ($ret0: $1_event_EventHandle'$1_coin_DepositEvent') +{ + // declare local variables + var $t1: int; + var $t2: $1_account_Account; + var $t3: int; + var $t4: int; + var $t5: $1_account_Account; + var $t6: $1_guid_GUID; + var $t7: int; + var $t8: $1_event_EventHandle'$1_coin_DepositEvent'; + var $t0: $signer; + var $temp_0'$1_event_EventHandle'$1_coin_DepositEvent'': $1_event_EventHandle'$1_coin_DepositEvent'; + var $temp_0'signer': $signer; + $t0 := _$t0; + + // bytecode translation starts here + // assume Identical($t1, signer::$address_of($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:444:9+39 + assume {:print "$at(73,21650,21689)"} true; + assume ($t1 == $1_signer_$address_of($t0)); + + // assume Identical($t2, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:445:9+36 + assume {:print "$at(73,21698,21734)"} true; + assume ($t2 == $ResourceValue($1_account_Account_$memory, $t1)); + + // trace_local[account]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:669:5+1 + assume {:print "$at(72,38254,38255)"} true; + assume {:print "$track_local(18,18,0):", $t0} $t0 == $t0; + + // assume Identical($t3, signer::$address_of($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:430:9+46 + assume {:print "$at(73,21158,21204)"} true; + assume ($t3 == $1_signer_$address_of($t0)); + + // assume Identical($t4, signer::$address_of($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:444:9+39 + assume {:print "$at(73,21650,21689)"} true; + assume ($t4 == $1_signer_$address_of($t0)); + + // assume Identical($t5, global($t4)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:445:9+36 + assume {:print "$at(73,21698,21734)"} true; + assume ($t5 == $ResourceValue($1_account_Account_$memory, $t4)); + + // $t6 := account::create_guid($t0) on_abort goto L2 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:670:33+20 + assume {:print "$at(72,38384,38404)"} true; + call $t6 := $1_account_create_guid($t0); + if ($abort_flag) { + assume {:print "$at(72,38384,38404)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(18,18):", $t7} $t7 == $t7; + goto L2; + } + + // $t8 := event::new_event_handle<#0>($t6) on_abort goto L2 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:670:9+45 + call $t8 := $1_event_new_event_handle'$1_coin_DepositEvent'($t6); + if ($abort_flag) { + assume {:print "$at(72,38360,38405)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(18,18):", $t7} $t7 == $t7; + goto L2; + } + + // trace_return[0]($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:670:9+45 + assume {:print "$track_return(18,18,0):", $t8} $t8 == $t8; + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:671:5+1 + assume {:print "$at(72,38410,38411)"} true; +L1: + + // return $t8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:671:5+1 + assume {:print "$at(72,38410,38411)"} true; + $ret0 := $t8; + return; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:671:5+1 +L2: + + // abort($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:671:5+1 + assume {:print "$at(72,38410,38411)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun account::new_event_handle [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:669:5+157 +procedure {:inline 1} $1_account_new_event_handle'$1_coin_WithdrawEvent'(_$t0: $signer) returns ($ret0: $1_event_EventHandle'$1_coin_WithdrawEvent') +{ + // declare local variables + var $t1: int; + var $t2: $1_account_Account; + var $t3: int; + var $t4: int; + var $t5: $1_account_Account; + var $t6: $1_guid_GUID; + var $t7: int; + var $t8: $1_event_EventHandle'$1_coin_WithdrawEvent'; + var $t0: $signer; + var $temp_0'$1_event_EventHandle'$1_coin_WithdrawEvent'': $1_event_EventHandle'$1_coin_WithdrawEvent'; + var $temp_0'signer': $signer; + $t0 := _$t0; + + // bytecode translation starts here + // assume Identical($t1, signer::$address_of($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:444:9+39 + assume {:print "$at(73,21650,21689)"} true; + assume ($t1 == $1_signer_$address_of($t0)); + + // assume Identical($t2, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:445:9+36 + assume {:print "$at(73,21698,21734)"} true; + assume ($t2 == $ResourceValue($1_account_Account_$memory, $t1)); + + // trace_local[account]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:669:5+1 + assume {:print "$at(72,38254,38255)"} true; + assume {:print "$track_local(18,18,0):", $t0} $t0 == $t0; + + // assume Identical($t3, signer::$address_of($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:430:9+46 + assume {:print "$at(73,21158,21204)"} true; + assume ($t3 == $1_signer_$address_of($t0)); + + // assume Identical($t4, signer::$address_of($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:444:9+39 + assume {:print "$at(73,21650,21689)"} true; + assume ($t4 == $1_signer_$address_of($t0)); + + // assume Identical($t5, global($t4)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:445:9+36 + assume {:print "$at(73,21698,21734)"} true; + assume ($t5 == $ResourceValue($1_account_Account_$memory, $t4)); + + // $t6 := account::create_guid($t0) on_abort goto L2 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:670:33+20 + assume {:print "$at(72,38384,38404)"} true; + call $t6 := $1_account_create_guid($t0); + if ($abort_flag) { + assume {:print "$at(72,38384,38404)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(18,18):", $t7} $t7 == $t7; + goto L2; + } + + // $t8 := event::new_event_handle<#0>($t6) on_abort goto L2 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:670:9+45 + call $t8 := $1_event_new_event_handle'$1_coin_WithdrawEvent'($t6); + if ($abort_flag) { + assume {:print "$at(72,38360,38405)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(18,18):", $t7} $t7 == $t7; + goto L2; + } + + // trace_return[0]($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:670:9+45 + assume {:print "$track_return(18,18,0):", $t8} $t8 == $t8; + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:671:5+1 + assume {:print "$at(72,38410,38411)"} true; +L1: + + // return $t8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:671:5+1 + assume {:print "$at(72,38410,38411)"} true; + $ret0 := $t8; + return; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:671:5+1 +L2: + + // abort($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:671:5+1 + assume {:print "$at(72,38410,38411)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun account::create_account [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:178:5+589 +procedure {:inline 1} $1_account_create_account(_$t0: int) returns ($ret0: $signer) +{ + // declare local variables + var $t1: bool; + var $t2: bool; + var $t3: Vec (int); + var $t4: bool; + var $t5: bool; + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: bool; + var $t11: int; + var $t12: bool; + var $t13: int; + var $t14: bool; + var $t15: int; + var $t16: int; + var $t17: Vec (int); + var $t18: $signer; + var $t0: int; + var $temp_0'address': int; + var $temp_0'signer': $signer; + $t0 := _$t0; + + // bytecode translation starts here + // assume Identical($t3, bcs::$to_bytes
($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:34:9+45 + assume {:print "$at(73,1495,1540)"} true; + assume ($t3 == $1_bcs_$to_bytes'address'($t0)); + + // trace_local[new_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:178:5+1 + assume {:print "$at(72,9572,9573)"} true; + assume {:print "$track_local(18,1,0):", $t0} $t0 == $t0; + + // $t4 := exists($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:180:18+6 + assume {:print "$at(72,9726,9732)"} true; + $t4 := $ResourceExists($1_account_Account_$memory, $t0); + + // $t5 := !($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:180:17+1 + call $t5 := $Not($t4); + + // if ($t5) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:180:9+86 + if ($t5) { goto L1; } else { goto L0; } + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:180:9+86 +L1: + + // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:180:9+86 + assume {:print "$at(72,9717,9803)"} true; + goto L2; + + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:180:70+23 +L0: + + // $t6 := 1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:180:70+23 + assume {:print "$at(72,9778,9801)"} true; + $t6 := 1; + assume $IsValid'u64'($t6); + + // $t7 := error::already_exists($t6) on_abort goto L13 with $t8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:180:48+46 + call $t7 := $1_error_already_exists($t6); + if ($abort_flag) { + assume {:print "$at(72,9756,9802)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(18,1):", $t8} $t8 == $t8; + goto L13; + } + + // trace_abort($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:180:9+86 + assume {:print "$at(72,9717,9803)"} true; + assume {:print "$track_abort(18,1):", $t7} $t7 == $t7; + + // $t8 := move($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:180:9+86 + $t8 := $t7; + + // goto L13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:180:9+86 + goto L13; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:184:13+11 + assume {:print "$at(72,9941,9952)"} true; +L2: + + // $t9 := 0x0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:184:28+12 + assume {:print "$at(72,9956,9968)"} true; + $t9 := 0; + assume $IsValid'address'($t9); + + // $t10 := !=($t0, $t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:184:25+2 + $t10 := !$IsEqual'address'($t0, $t9); + + // if ($t10) goto L4 else goto L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:184:13+62 + if ($t10) { goto L4; } else { goto L3; } + + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:184:44+11 +L4: + + // $t11 := 0x1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:184:59+16 + assume {:print "$at(72,9987,10003)"} true; + $t11 := 1; + assume $IsValid'address'($t11); + + // $t1 := !=($t0, $t11) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:184:56+2 + $t1 := !$IsEqual'address'($t0, $t11); + + // goto L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:184:13+62 + goto L5; + + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:184:13+62 +L3: + + // $t12 := false at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:184:13+62 + assume {:print "$at(72,9941,10003)"} true; + $t12 := false; + assume $IsValid'bool'($t12); + + // $t1 := $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:184:13+62 + $t1 := $t12; + + // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:184:13+62 +L5: + + // if ($t1) goto L7 else goto L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:184:13+93 + assume {:print "$at(72,9941,10034)"} true; + if ($t1) { goto L7; } else { goto L6; } + + // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:184:79+11 +L7: + + // $t13 := 0x3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:184:94+12 + assume {:print "$at(72,10022,10034)"} true; + $t13 := 3; + assume $IsValid'address'($t13); + + // $t2 := !=($t0, $t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:184:91+2 + $t2 := !$IsEqual'address'($t0, $t13); + + // goto L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:184:13+93 + goto L8; + + // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:184:13+93 +L6: + + // $t14 := false at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:184:13+93 + assume {:print "$at(72,9941,10034)"} true; + $t14 := false; + assume $IsValid'bool'($t14); + + // $t2 := $t14 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:184:13+93 + $t2 := $t14; + + // label L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:184:13+93 +L8: + + // if ($t2) goto L10 else goto L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:183:9+187 + assume {:print "$at(72,9920,10107)"} true; + if ($t2) { goto L10; } else { goto L9; } + + // label L10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:183:9+187 +L10: + + // goto L11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:183:9+187 + assume {:print "$at(72,9920,10107)"} true; + goto L11; + + // label L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:185:37+24 + assume {:print "$at(72,10072,10096)"} true; +L9: + + // $t15 := 5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:185:37+24 + assume {:print "$at(72,10072,10096)"} true; + $t15 := 5; + assume $IsValid'u64'($t15); + + // $t16 := error::invalid_argument($t15) on_abort goto L13 with $t8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:185:13+49 + call $t16 := $1_error_invalid_argument($t15); + if ($abort_flag) { + assume {:print "$at(72,10048,10097)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(18,1):", $t8} $t8 == $t8; + goto L13; + } + + // trace_abort($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:183:9+187 + assume {:print "$at(72,9920,10107)"} true; + assume {:print "$track_abort(18,1):", $t16} $t16 == $t16; + + // $t8 := move($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:183:9+187 + $t8 := $t16; + + // goto L13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:183:9+187 + goto L13; + + // label L11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:188:34+11 + assume {:print "$at(72,10143,10154)"} true; +L11: + + // assume Identical($t17, bcs::$to_bytes
($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:34:9+45 + assume {:print "$at(73,1495,1540)"} true; + assume ($t17 == $1_bcs_$to_bytes'address'($t0)); + + // $t18 := account::create_account_unchecked($t0) on_abort goto L13 with $t8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:188:9+37 + assume {:print "$at(72,10118,10155)"} true; + call $t18 := $1_account_create_account_unchecked($t0); + if ($abort_flag) { + assume {:print "$at(72,10118,10155)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(18,1):", $t8} $t8 == $t8; + goto L13; + } + + // trace_return[0]($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:188:9+37 + assume {:print "$track_return(18,1,0):", $t18} $t18 == $t18; + + // label L12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:189:5+1 + assume {:print "$at(72,10160,10161)"} true; +L12: + + // return $t18 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:189:5+1 + assume {:print "$at(72,10160,10161)"} true; + $ret0 := $t18; + return; + + // label L13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:189:5+1 +L13: + + // abort($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:189:5+1 + assume {:print "$at(72,10160,10161)"} true; + $abort_code := $t8; + $abort_flag := true; + return; + +} + +// fun account::create_account_unchecked [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:191:5+1182 +procedure {:inline 1} $1_account_create_account_unchecked(_$t0: int) returns ($ret0: $signer) +{ + // declare local variables + var $t1: Vec (int); + var $t2: $1_event_EventHandle'$1_account_CoinRegisterEvent'; + var $t3: int; + var $t4: $1_event_EventHandle'$1_account_KeyRotationEvent'; + var $t5: $signer; + var $t6: Vec (int); + var $t7: $signer; + var $t8: Vec (int); + var $t9: int; + var $t10: int; + var $t11: int; + var $t12: bool; + var $t13: int; + var $t14: int; + var $t15: int; + var $t16: $Mutation (int); + var $t17: $1_guid_GUID; + var $t18: $1_event_EventHandle'$1_account_CoinRegisterEvent'; + var $t19: $Mutation (int); + var $t20: $1_guid_GUID; + var $t21: $1_event_EventHandle'$1_account_KeyRotationEvent'; + var $t22: int; + var $t23: int; + var $t24: $1_option_Option'address'; + var $t25: $1_account_CapabilityOffer'$1_account_RotationCapability'; + var $t26: $1_option_Option'address'; + var $t27: $1_account_CapabilityOffer'$1_account_SignerCapability'; + var $t28: $1_account_Account; + var $t0: int; + var $temp_0'$1_event_EventHandle'$1_account_CoinRegisterEvent'': $1_event_EventHandle'$1_account_CoinRegisterEvent'; + var $temp_0'$1_event_EventHandle'$1_account_KeyRotationEvent'': $1_event_EventHandle'$1_account_KeyRotationEvent'; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $temp_0'u64': int; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // bytecode translation starts here + // assume Identical($t6, bcs::$to_bytes
($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:34:9+45 + assume {:print "$at(73,1495,1540)"} true; + assume ($t6 == $1_bcs_$to_bytes'address'($t0)); + + // trace_local[new_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:191:5+1 + assume {:print "$at(72,10167,10168)"} true; + assume {:print "$track_local(18,2,0):", $t0} $t0 == $t0; + + // $t7 := opaque begin: create_signer::create_signer($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:192:27+26 + assume {:print "$at(72,10254,10280)"} true; + + // assume WellFormed($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:192:27+26 + assume $IsValid'signer'($t7) && $1_signer_is_txn_signer($t7) && $1_signer_is_txn_signer_addr($addr#$signer($t7)); + + // assume Eq
(signer::$address_of($t7), $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:192:27+26 + assume $IsEqual'address'($1_signer_$address_of($t7), $t0); + + // $t7 := opaque end: create_signer::create_signer($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:192:27+26 + + // trace_local[new_account]($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:192:13+11 + assume {:print "$track_local(18,2,5):", $t7} $t7 == $t7; + + // $t8 := bcs::to_bytes
($t0) on_abort goto L4 with $t9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:193:34+27 + assume {:print "$at(72,10315,10342)"} true; + call $t8 := $1_bcs_to_bytes'address'($t0); + if ($abort_flag) { + assume {:print "$at(72,10315,10342)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(18,2):", $t9} $t9 == $t9; + goto L4; + } + + // trace_local[authentication_key]($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:193:13+18 + assume {:print "$track_local(18,2,1):", $t8} $t8 == $t8; + + // $t10 := vector::length($t8) on_abort goto L4 with $t9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:195:13+35 + assume {:print "$at(72,10373,10408)"} true; + call $t10 := $1_vector_length'u8'($t8); + if ($abort_flag) { + assume {:print "$at(72,10373,10408)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(18,2):", $t9} $t9 == $t9; + goto L4; + } + + // $t11 := 32 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:195:52+2 + $t11 := 32; + assume $IsValid'u64'($t11); + + // $t12 := ==($t10, $t11) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:195:49+2 + $t12 := $IsEqual'u64'($t10, $t11); + + // if ($t12) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:194:9+140 + assume {:print "$at(72,10352,10492)"} true; + if ($t12) { goto L1; } else { goto L0; } + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:194:9+140 +L1: + + // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:194:9+140 + assume {:print "$at(72,10352,10492)"} true; + goto L2; + + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:196:37+29 + assume {:print "$at(72,10452,10481)"} true; +L0: + + // $t13 := 4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:196:37+29 + assume {:print "$at(72,10452,10481)"} true; + $t13 := 4; + assume $IsValid'u64'($t13); + + // $t14 := error::invalid_argument($t13) on_abort goto L4 with $t9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:196:13+54 + call $t14 := $1_error_invalid_argument($t13); + if ($abort_flag) { + assume {:print "$at(72,10428,10482)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(18,2):", $t9} $t9 == $t9; + goto L4; + } + + // trace_abort($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:194:9+140 + assume {:print "$at(72,10352,10492)"} true; + assume {:print "$track_abort(18,2):", $t14} $t14 == $t14; + + // $t9 := move($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:194:9+140 + $t9 := $t14; + + // goto L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:194:9+140 + goto L4; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:199:33+1 + assume {:print "$at(72,10527,10528)"} true; +L2: + + // $t15 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:199:33+1 + assume {:print "$at(72,10527,10528)"} true; + $t15 := 0; + assume $IsValid'u64'($t15); + + // $t3 := $t15 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:199:13+17 + $t3 := $t15; + + // trace_local[guid_creation_num]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:199:13+17 + assume {:print "$track_local(18,2,3):", $t3} $t3 == $t3; + + // $t16 := borrow_local($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:201:55+22 + assume {:print "$at(72,10585,10607)"} true; + $t16 := $Mutation($Local(3), EmptyVec(), $t3); + + // $t17 := guid::create($t0, $t16) on_abort goto L4 with $t9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:201:29+49 + call $t17,$t16 := $1_guid_create($t0, $t16); + if ($abort_flag) { + assume {:print "$at(72,10559,10608)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(18,2):", $t9} $t9 == $t9; + goto L4; + } + + // write_back[LocalRoot($t3)@]($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:201:29+49 + $t3 := $Dereference($t16); + + // trace_local[guid_creation_num]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:201:29+49 + assume {:print "$track_local(18,2,3):", $t3} $t3 == $t3; + + // $t18 := event::new_event_handle($t17) on_abort goto L4 with $t9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:202:36+57 + assume {:print "$at(72,10645,10702)"} true; + call $t18 := $1_event_new_event_handle'$1_account_CoinRegisterEvent'($t17); + if ($abort_flag) { + assume {:print "$at(72,10645,10702)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(18,2):", $t9} $t9 == $t9; + goto L4; + } + + // trace_local[coin_register_events]($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:202:13+20 + assume {:print "$track_local(18,2,2):", $t18} $t18 == $t18; + + // $t19 := borrow_local($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:204:59+22 + assume {:print "$at(72,10763,10785)"} true; + $t19 := $Mutation($Local(3), EmptyVec(), $t3); + + // $t20 := guid::create($t0, $t19) on_abort goto L4 with $t9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:204:33+49 + call $t20,$t19 := $1_guid_create($t0, $t19); + if ($abort_flag) { + assume {:print "$at(72,10737,10786)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(18,2):", $t9} $t9 == $t9; + goto L4; + } + + // write_back[LocalRoot($t3)@]($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:204:33+49 + $t3 := $Dereference($t19); + + // trace_local[guid_creation_num]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:204:33+49 + assume {:print "$track_local(18,2,3):", $t3} $t3 == $t3; + + // $t21 := event::new_event_handle($t20) on_abort goto L4 with $t9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:205:35+60 + assume {:print "$at(72,10822,10882)"} true; + call $t21 := $1_event_new_event_handle'$1_account_KeyRotationEvent'($t20); + if ($abort_flag) { + assume {:print "$at(72,10822,10882)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(18,2):", $t9} $t9 == $t9; + goto L4; + } + + // trace_local[key_rotation_events]($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:205:13+19 + assume {:print "$track_local(18,2,4):", $t21} $t21 == $t21; + + // $t22 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:211:34+1 + assume {:print "$at(72,11019,11020)"} true; + $t22 := 0; + assume $IsValid'u64'($t22); + + // $t23 := move($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:212:17+17 + assume {:print "$at(72,11038,11055)"} true; + $t23 := $t3; + + // $t24 := opaque begin: option::none
() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:215:67+14 + assume {:print "$at(72,11198,11212)"} true; + + // assume And(WellFormed($t24), Le(Len
(select option::Option.vec($t24)), 1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:215:67+14 + assume ($IsValid'$1_option_Option'address''($t24) && (LenVec($vec#$1_option_Option'address'($t24)) <= 1)); + + // assume Eq>($t24, option::spec_none
()) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:215:67+14 + assume $IsEqual'$1_option_Option'address''($t24, $1_option_spec_none'address'()); + + // $t24 := opaque end: option::none
() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:215:67+14 + + // $t25 := pack account::CapabilityOffer($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:215:44+39 + $t25 := $1_account_CapabilityOffer'$1_account_RotationCapability'($t24); + + // $t26 := opaque begin: option::none
() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:216:65+14 + assume {:print "$at(72,11280,11294)"} true; + + // assume And(WellFormed($t26), Le(Len
(select option::Option.vec($t26)), 1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:216:65+14 + assume ($IsValid'$1_option_Option'address''($t26) && (LenVec($vec#$1_option_Option'address'($t26)) <= 1)); + + // assume Eq>($t26, option::spec_none
()) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:216:65+14 + assume $IsEqual'$1_option_Option'address''($t26, $1_option_spec_none'address'()); + + // $t26 := opaque end: option::none
() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:216:65+14 + + // $t27 := pack account::CapabilityOffer($t26) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:216:42+39 + $t27 := $1_account_CapabilityOffer'$1_account_SignerCapability'($t26); + + // $t28 := pack account::Account($t8, $t22, $t23, $t18, $t21, $t25, $t27) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:209:13+371 + assume {:print "$at(72,10940,11311)"} true; + $t28 := $1_account_Account($t8, $t22, $t23, $t18, $t21, $t25, $t27); + + // move_to($t28, $t7) on_abort goto L4 with $t9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:207:9+7 + assume {:print "$at(72,10893,10900)"} true; + if ($ResourceExists($1_account_Account_$memory, $addr#$signer($t7))) { + call $ExecFailureAbort(); + } else { + $1_account_Account_$memory := $ResourceUpdate($1_account_Account_$memory, $addr#$signer($t7), $t28); + } + if ($abort_flag) { + assume {:print "$at(72,10893,10900)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(18,2):", $t9} $t9 == $t9; + goto L4; + } + + // trace_return[0]($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:220:9+11 + assume {:print "$at(72,11332,11343)"} true; + assume {:print "$track_return(18,2,0):", $t7} $t7 == $t7; + + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:221:5+1 + assume {:print "$at(72,11348,11349)"} true; +L3: + + // return $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:221:5+1 + assume {:print "$at(72,11348,11349)"} true; + $ret0 := $t7; + return; + + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:221:5+1 +L4: + + // abort($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:221:5+1 + assume {:print "$at(72,11348,11349)"} true; + $abort_code := $t9; + $abort_flag := true; + return; + +} + +// fun account::create_guid [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:654:5+436 +procedure {:inline 1} $1_account_create_guid(_$t0: $signer) returns ($ret0: $1_guid_GUID) +{ + // declare local variables + var $t1: $Mutation ($1_account_Account); + var $t2: int; + var $t3: $1_guid_GUID; + var $t4: int; + var $t5: int; + var $t6: $1_account_Account; + var $t7: int; + var $t8: int; + var $t9: $Mutation ($1_account_Account); + var $t10: $Mutation (int); + var $t11: $1_guid_GUID; + var $t12: int; + var $t13: int; + var $t14: bool; + var $t15: int; + var $t16: int; + var $t0: $signer; + var $1_account_Account_$modifies: [int]bool; + var $temp_0'$1_account_Account': $1_account_Account; + var $temp_0'$1_guid_GUID': $1_guid_GUID; + var $temp_0'address': int; + var $temp_0'signer': $signer; + $t0 := _$t0; + + // bytecode translation starts here + // assume Identical($t4, signer::$address_of($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:430:9+46 + assume {:print "$at(73,21158,21204)"} true; + assume ($t4 == $1_signer_$address_of($t0)); + + // assume Identical($t5, signer::$address_of($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:444:9+39 + assume {:print "$at(73,21650,21689)"} true; + assume ($t5 == $1_signer_$address_of($t0)); + + // assume Identical($t6, global($t5)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:445:9+36 + assume {:print "$at(73,21698,21734)"} true; + assume ($t6 == $ResourceValue($1_account_Account_$memory, $t5)); + + // trace_local[account_signer]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:654:5+1 + assume {:print "$at(72,37618,37619)"} true; + assume {:print "$track_local(18,5,0):", $t0} $t0 == $t0; + + // $t7 := signer::address_of($t0) on_abort goto L4 with $t8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:655:20+34 + assume {:print "$at(72,37716,37750)"} true; + call $t7 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(72,37716,37750)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(18,5):", $t8} $t8 == $t8; + goto L4; + } + + // trace_local[addr]($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:655:13+4 + assume {:print "$track_local(18,5,2):", $t7} $t7 == $t7; + + // $t9 := borrow_global($t7) on_abort goto L4 with $t8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:656:23+17 + assume {:print "$at(72,37774,37791)"} true; + if (!$ResourceExists($1_account_Account_$memory, $t7)) { + call $ExecFailureAbort(); + } else { + $t9 := $Mutation($Global($t7), EmptyVec(), $ResourceValue($1_account_Account_$memory, $t7)); + } + if ($abort_flag) { + assume {:print "$at(72,37774,37791)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(18,5):", $t8} $t8 == $t8; + goto L4; + } + + // trace_local[account]($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:656:13+7 + $temp_0'$1_account_Account' := $Dereference($t9); + assume {:print "$track_local(18,5,1):", $temp_0'$1_account_Account'} $temp_0'$1_account_Account' == $temp_0'$1_account_Account'; + + // $t10 := borrow_field.guid_creation_num($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:657:39+30 + assume {:print "$at(72,37846,37876)"} true; + $t10 := $ChildMutation($t9, 2, $guid_creation_num#$1_account_Account($Dereference($t9))); + + // $t11 := guid::create($t7, $t10) on_abort goto L4 with $t8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:657:20+50 + call $t11,$t10 := $1_guid_create($t7, $t10); + if ($abort_flag) { + assume {:print "$at(72,37827,37877)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(18,5):", $t8} $t8 == $t8; + goto L4; + } + + // write_back[Reference($t9).guid_creation_num (u64)]($t10) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:657:20+50 + $t9 := $UpdateMutation($t9, $Update'$1_account_Account'_guid_creation_num($Dereference($t9), $Dereference($t10))); + + // trace_local[guid]($t11) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:657:13+4 + assume {:print "$track_local(18,5,3):", $t11} $t11 == $t11; + + // $t12 := get_field.guid_creation_num($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:659:13+25 + assume {:print "$at(72,37908,37933)"} true; + $t12 := $guid_creation_num#$1_account_Account($Dereference($t9)); + + // pack_ref_deep($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:659:13+25 + + // write_back[account::Account@]($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:659:13+25 + $1_account_Account_$memory := $ResourceUpdate($1_account_Account_$memory, $GlobalLocationAddress($t9), + $Dereference($t9)); + + // $t13 := 1125899906842624 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:659:41+21 + $t13 := 1125899906842624; + assume $IsValid'u64'($t13); + + // $t14 := <($t12, $t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:659:39+1 + call $t14 := $Lt($t12, $t13); + + // if ($t14) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:658:9+147 + assume {:print "$at(72,37887,38034)"} true; + if ($t14) { goto L1; } else { goto L0; } + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:658:9+147 +L1: + + // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:658:9+147 + assume {:print "$at(72,37887,38034)"} true; + goto L2; + + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:660:33+31 + assume {:print "$at(72,37991,38022)"} true; +L0: + + // $t15 := 20 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:660:33+31 + assume {:print "$at(72,37991,38022)"} true; + $t15 := 20; + assume $IsValid'u64'($t15); + + // $t16 := error::out_of_range($t15) on_abort goto L4 with $t8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:660:13+52 + call $t16 := $1_error_out_of_range($t15); + if ($abort_flag) { + assume {:print "$at(72,37971,38023)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(18,5):", $t8} $t8 == $t8; + goto L4; + } + + // trace_abort($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:658:9+147 + assume {:print "$at(72,37887,38034)"} true; + assume {:print "$track_abort(18,5):", $t16} $t16 == $t16; + + // $t8 := move($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:658:9+147 + $t8 := $t16; + + // goto L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:658:9+147 + goto L4; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:662:9+4 + assume {:print "$at(72,38044,38048)"} true; +L2: + + // trace_return[0]($t11) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:662:9+4 + assume {:print "$at(72,38044,38048)"} true; + assume {:print "$track_return(18,5,0):", $t11} $t11 == $t11; + + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:663:5+1 + assume {:print "$at(72,38053,38054)"} true; +L3: + + // return $t11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:663:5+1 + assume {:print "$at(72,38053,38054)"} true; + $ret0 := $t11; + return; + + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:663:5+1 +L4: + + // abort($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:663:5+1 + assume {:print "$at(72,38053,38054)"} true; + $abort_code := $t8; + $abort_flag := true; + return; + +} + +// fun account::create_resource_account [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:602:5+1378 +procedure {:inline 1} $1_account_create_resource_account(_$t0: $signer, _$t1: Vec (int)) returns ($ret0: $signer, $ret1: $1_account_SignerCapability) +{ + // declare local variables + var $t2: int; + var $t3: $signer; + var $t4: $1_account_Account; + var $t5: $Mutation ($1_account_Account); + var $t6: $signer; + var $t7: int; + var $t8: $1_account_SignerCapability; + var $t9: int; + var $t10: int; + var $t11: $1_account_Account; + var $t12: Vec (int); + var $t13: int; + var $t14: int; + var $t15: int; + var $t16: bool; + var $t17: $1_account_Account; + var $t18: $1_account_CapabilityOffer'$1_account_SignerCapability'; + var $t19: $1_option_Option'address'; + var $t20: bool; + var $t21: int; + var $t22: int; + var $t23: int; + var $t24: int; + var $t25: bool; + var $t26: int; + var $t27: int; + var $t28: Vec (int); + var $t29: Vec (int); + var $t30: int; + var $t31: $Mutation ($1_account_Account); + var $t32: $1_option_Option'address'; + var $t33: $Mutation ($1_account_CapabilityOffer'$1_account_SignerCapability'); + var $t34: $Mutation ($1_option_Option'address'); + var $t35: $1_account_SignerCapability; + var $t0: $signer; + var $t1: Vec (int); + var $temp_0'$1_account_Account': $1_account_Account; + var $temp_0'$1_account_SignerCapability': $1_account_SignerCapability; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // assume Identical($t9, signer::$address_of($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:396:9+45 + assume {:print "$at(73,19766,19811)"} true; + assume ($t9 == $1_signer_$address_of($t0)); + + // assume Identical($t10, account::spec_create_resource_address($t9, $t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:397:9+68 + assume {:print "$at(73,19820,19888)"} true; + assume ($t10 == $1_account_spec_create_resource_address($t9, $t1)); + + // assume Identical($t11, global($t10)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:464:9+45 + assume {:print "$at(73,22404,22449)"} true; + assume ($t11 == $ResourceValue($1_account_Account_$memory, $t10)); + + // assume Identical($t12, bcs::$to_bytes
($t10)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:34:9+45 + assume {:print "$at(73,1495,1540)"} true; + assume ($t12 == $1_bcs_$to_bytes'address'($t10)); + + // trace_local[source]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:602:5+1 + assume {:print "$at(72,35313,35314)"} true; + assume {:print "$track_local(18,6,0):", $t0} $t0 == $t0; + + // trace_local[seed]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:602:5+1 + assume {:print "$track_local(18,6,1):", $t1} $t1 == $t1; + + // $t13 := signer::address_of($t0) on_abort goto L10 with $t14 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:603:54+26 + assume {:print "$at(72,35483,35509)"} true; + call $t13 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(72,35483,35509)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(18,6):", $t14} $t14 == $t14; + goto L10; + } + + // $t15 := opaque begin: account::create_resource_address($t13, $t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:603:29+58 + + // assume WellFormed($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:603:29+58 + assume $IsValid'address'($t15); + + // assume Eq
($t15, account::spec_create_resource_address($t13, $t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:603:29+58 + assume $IsEqual'address'($t15, $1_account_spec_create_resource_address($t13, $t1)); + + // $t15 := opaque end: account::create_resource_address($t13, $t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:603:29+58 + + // trace_local[resource_addr]($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:603:13+13 + assume {:print "$track_local(18,6,7):", $t15} $t15 == $t15; + + // $t16 := account::exists_at($t15) on_abort goto L10 with $t14 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:604:28+24 + assume {:print "$at(72,35545,35569)"} true; + call $t16 := $1_account_exists_at($t15); + if ($abort_flag) { + assume {:print "$at(72,35545,35569)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(18,6):", $t14} $t14 == $t14; + goto L10; + } + + // if ($t16) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:604:24+532 + if ($t16) { goto L1; } else { goto L0; } + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:605:50+13 + assume {:print "$at(72,35622,35635)"} true; +L1: + + // $t17 := get_global($t15) on_abort goto L10 with $t14 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:605:27+13 + assume {:print "$at(72,35599,35612)"} true; + if (!$ResourceExists($1_account_Account_$memory, $t15)) { + call $ExecFailureAbort(); + } else { + $t17 := $ResourceValue($1_account_Account_$memory, $t15); + } + if ($abort_flag) { + assume {:print "$at(72,35599,35612)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(18,6):", $t14} $t14 == $t14; + goto L10; + } + + // trace_local[account]($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:605:17+7 + assume {:print "$track_local(18,6,4):", $t17} $t17 == $t17; + + // $t18 := get_field.signer_capability_offer($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:607:34+31 + assume {:print "$at(72,35692,35723)"} true; + $t18 := $signer_capability_offer#$1_account_Account($t17); + + // $t19 := get_field>.for($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:607:33+36 + $t19 := $for#$1_account_CapabilityOffer'$1_account_SignerCapability'($t18); + + // $t20 := opaque begin: option::is_none
($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:607:17+53 + + // assume WellFormed($t20) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:607:17+53 + assume $IsValid'bool'($t20); + + // assume Eq($t20, option::spec_is_none
($t19)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:607:17+53 + assume $IsEqual'bool'($t20, $1_option_spec_is_none'address'($t19)); + + // $t20 := opaque end: option::is_none
($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:607:17+53 + + // if ($t20) goto L3 else goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:606:13+159 + assume {:print "$at(72,35650,35809)"} true; + if ($t20) { goto L3; } else { goto L2; } + + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:606:13+159 +L3: + + // goto L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:606:13+159 + assume {:print "$at(72,35650,35809)"} true; + goto L4; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:606:13+159 +L2: + + // $t21 := 15 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:608:39+25 + assume {:print "$at(72,35768,35793)"} true; + $t21 := 15; + assume $IsValid'u64'($t21); + + // $t22 := error::already_exists($t21) on_abort goto L10 with $t14 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:608:17+48 + call $t22 := $1_error_already_exists($t21); + if ($abort_flag) { + assume {:print "$at(72,35746,35794)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(18,6):", $t14} $t14 == $t14; + goto L10; + } + + // trace_abort($t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:606:13+159 + assume {:print "$at(72,35650,35809)"} true; + assume {:print "$track_abort(18,6):", $t22} $t22 == $t22; + + // $t14 := move($t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:606:13+159 + $t14 := $t22; + + // goto L10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:606:13+159 + goto L10; + + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:611:17+7 + assume {:print "$at(72,35848,35855)"} true; +L4: + + // $t23 := get_field.sequence_number($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:611:17+23 + assume {:print "$at(72,35848,35871)"} true; + $t23 := $sequence_number#$1_account_Account($t17); + + // $t24 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:611:44+1 + $t24 := 0; + assume $IsValid'u64'($t24); + + // $t25 := ==($t23, $t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:611:41+2 + $t25 := $IsEqual'u64'($t23, $t24); + + // if ($t25) goto L6 else goto L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:610:13+129 + assume {:print "$at(72,35823,35952)"} true; + if ($t25) { goto L6; } else { goto L5; } + + // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:610:13+129 +L6: + + // goto L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:610:13+129 + assume {:print "$at(72,35823,35952)"} true; + goto L7; + + // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:612:38+21 + assume {:print "$at(72,35915,35936)"} true; +L5: + + // $t26 := 16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:612:38+21 + assume {:print "$at(72,35915,35936)"} true; + $t26 := 16; + assume $IsValid'u64'($t26); + + // $t27 := error::invalid_state($t26) on_abort goto L10 with $t14 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:612:17+43 + call $t27 := $1_error_invalid_state($t26); + if ($abort_flag) { + assume {:print "$at(72,35894,35937)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(18,6):", $t14} $t14 == $t14; + goto L10; + } + + // trace_abort($t27) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:610:13+129 + assume {:print "$at(72,35823,35952)"} true; + assume {:print "$track_abort(18,6):", $t27} $t27 == $t27; + + // $t14 := move($t27) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:610:13+129 + $t14 := $t27; + + // goto L10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:610:13+129 + goto L10; + + // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:614:27+13 + assume {:print "$at(72,35980,35993)"} true; +L7: + + // $t3 := opaque begin: create_signer::create_signer($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:614:13+28 + assume {:print "$at(72,35966,35994)"} true; + + // assume WellFormed($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:614:13+28 + assume $IsValid'signer'($t3) && $1_signer_is_txn_signer($t3) && $1_signer_is_txn_signer_addr($addr#$signer($t3)); + + // assume Eq
(signer::$address_of($t3), $t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:614:13+28 + assume $IsEqual'address'($1_signer_$address_of($t3), $t15); + + // $t3 := opaque end: create_signer::create_signer($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:614:13+28 + + // goto L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:604:24+532 + assume {:print "$at(72,35541,36073)"} true; + goto L8; + + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:616:38+13 + assume {:print "$at(72,36049,36062)"} true; +L0: + + // assume Identical($t28, bcs::$to_bytes
($t15)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:34:9+45 + assume {:print "$at(73,1495,1540)"} true; + assume ($t28 == $1_bcs_$to_bytes'address'($t15)); + + // $t3 := account::create_account_unchecked($t15) on_abort goto L10 with $t14 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:616:13+39 + assume {:print "$at(72,36024,36063)"} true; + call $t3 := $1_account_create_account_unchecked($t15); + if ($abort_flag) { + assume {:print "$at(72,36024,36063)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(18,6):", $t14} $t14 == $t14; + goto L10; + } + + // label L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:604:24+532 + assume {:print "$at(72,35541,36073)"} true; +L8: + + // trace_local[resource]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:604:13+8 + assume {:print "$at(72,35530,35538)"} true; + assume {:print "$track_local(18,6,6):", $t3} $t3 == $t3; + + // $t29 := [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:622:55+13 + assume {:print "$at(72,36428,36441)"} true; + $t29 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(0, 0, 0, 0), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)); + assume $IsValid'vec'u8''($t29); + + // assume Identical($t30, signer::$address_of($t3)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:68:9+39 + assume {:print "$at(73,2861,2900)"} true; + assume ($t30 == $1_signer_$address_of($t3)); + + // account::rotate_authentication_key_internal($t3, $t29) on_abort goto L10 with $t14 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:622:9+60 + assume {:print "$at(72,36382,36442)"} true; + call $1_account_rotate_authentication_key_internal($t3, $t29); + if ($abort_flag) { + assume {:print "$at(72,36382,36442)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(18,6):", $t14} $t14 == $t14; + goto L10; + } + + // $t31 := borrow_global($t15) on_abort goto L10 with $t14 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:624:23+17 + assume {:print "$at(72,36467,36484)"} true; + if (!$ResourceExists($1_account_Account_$memory, $t15)) { + call $ExecFailureAbort(); + } else { + $t31 := $Mutation($Global($t15), EmptyVec(), $ResourceValue($1_account_Account_$memory, $t15)); + } + if ($abort_flag) { + assume {:print "$at(72,36467,36484)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(18,6):", $t14} $t14 == $t14; + goto L10; + } + + // trace_local[account#3]($t31) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:624:13+7 + $temp_0'$1_account_Account' := $Dereference($t31); + assume {:print "$track_local(18,6,5):", $temp_0'$1_account_Account'} $temp_0'$1_account_Account' == $temp_0'$1_account_Account'; + + // $t32 := opaque begin: option::some
($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:625:47+27 + assume {:print "$at(72,36556,36583)"} true; + + // assume And(WellFormed($t32), Le(Len
(select option::Option.vec($t32)), 1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:625:47+27 + assume ($IsValid'$1_option_Option'address''($t32) && (LenVec($vec#$1_option_Option'address'($t32)) <= 1)); + + // assume Eq>($t32, option::spec_some
($t15)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:625:47+27 + assume $IsEqual'$1_option_Option'address''($t32, $1_option_spec_some'address'($t15)); + + // $t32 := opaque end: option::some
($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:625:47+27 + + // $t33 := borrow_field.signer_capability_offer($t31) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:625:9+31 + $t33 := $ChildMutation($t31, 6, $signer_capability_offer#$1_account_Account($Dereference($t31))); + + // $t34 := borrow_field>.for($t33) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:625:9+35 + $t34 := $ChildMutation($t33, 0, $for#$1_account_CapabilityOffer'$1_account_SignerCapability'($Dereference($t33))); + + // write_ref($t34, $t32) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:625:9+65 + $t34 := $UpdateMutation($t34, $t32); + + // write_back[Reference($t33).for (option::Option
)]($t34) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:625:9+65 + $t33 := $UpdateMutation($t33, $Update'$1_account_CapabilityOffer'$1_account_SignerCapability''_for($Dereference($t33), $Dereference($t34))); + + // write_back[Reference($t31).signer_capability_offer (account::CapabilityOffer)]($t33) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:625:9+65 + $t31 := $UpdateMutation($t31, $Update'$1_account_Account'_signer_capability_offer($Dereference($t31), $Dereference($t33))); + + // pack_ref_deep($t31) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:625:9+65 + + // write_back[account::Account@]($t31) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:625:9+65 + $1_account_Account_$memory := $ResourceUpdate($1_account_Account_$memory, $GlobalLocationAddress($t31), + $Dereference($t31)); + + // $t35 := pack account::SignerCapability($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:626:26+43 + assume {:print "$at(72,36610,36653)"} true; + $t35 := $1_account_SignerCapability($t15); + + // trace_local[signer_cap]($t35) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:626:13+10 + assume {:print "$track_local(18,6,8):", $t35} $t35 == $t35; + + // trace_return[0]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:627:9+22 + assume {:print "$at(72,36663,36685)"} true; + assume {:print "$track_return(18,6,0):", $t3} $t3 == $t3; + + // trace_return[1]($t35) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:627:9+22 + assume {:print "$track_return(18,6,1):", $t35} $t35 == $t35; + + // label L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:628:5+1 + assume {:print "$at(72,36690,36691)"} true; +L9: + + // return ($t3, $t35) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:628:5+1 + assume {:print "$at(72,36690,36691)"} true; + $ret0 := $t3; + $ret1 := $t35; + return; + + // label L10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:628:5+1 +L10: + + // abort($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:628:5+1 + assume {:print "$at(72,36690,36691)"} true; + $abort_code := $t14; + $abort_flag := true; + return; + +} + +// fun account::create_signer_with_capability [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:707:5+156 +procedure {:inline 1} $1_account_create_signer_with_capability(_$t0: $1_account_SignerCapability) returns ($ret0: $signer) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: $signer; + var $t0: $1_account_SignerCapability; + var $temp_0'$1_account_SignerCapability': $1_account_SignerCapability; + var $temp_0'signer': $signer; + $t0 := _$t0; + + // bytecode translation starts here + // assume Identical($t1, select account::SignerCapability.account($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:458:9+30 + assume {:print "$at(73,22226,22256)"} true; + assume ($t1 == $account#$1_account_SignerCapability($t0)); + + // trace_local[capability]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:707:5+1 + assume {:print "$at(72,39859,39860)"} true; + assume {:print "$track_local(18,8,0):", $t0} $t0 == $t0; + + // $t2 := get_field.account($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:708:20+19 + assume {:print "$at(72,39960,39979)"} true; + $t2 := $account#$1_account_SignerCapability($t0); + + // $t3 := opaque begin: create_signer::create_signer($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:709:9+20 + assume {:print "$at(72,39989,40009)"} true; + + // assume WellFormed($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:709:9+20 + assume $IsValid'signer'($t3) && $1_signer_is_txn_signer($t3) && $1_signer_is_txn_signer_addr($addr#$signer($t3)); + + // assume Eq
(signer::$address_of($t3), $t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:709:9+20 + assume $IsEqual'address'($1_signer_$address_of($t3), $t2); + + // $t3 := opaque end: create_signer::create_signer($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:709:9+20 + + // trace_return[0]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:709:9+20 + assume {:print "$track_return(18,8,0):", $t3} $t3 == $t3; + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:710:5+1 + assume {:print "$at(72,40014,40015)"} true; +L1: + + // return $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:710:5+1 + assume {:print "$at(72,40014,40015)"} true; + $ret0 := $t3; + return; + +} + +// fun account::exists_at [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:224:5+79 +procedure {:inline 1} $1_account_exists_at(_$t0: int) returns ($ret0: bool) +{ + // declare local variables + var $t1: bool; + var $t0: int; + var $temp_0'address': int; + var $temp_0'bool': bool; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[addr]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:224:5+1 + assume {:print "$at(72,11367,11368)"} true; + assume {:print "$track_local(18,9,0):", $t0} $t0 == $t0; + + // $t1 := exists($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:225:9+6 + assume {:print "$at(72,11419,11425)"} true; + $t1 := $ResourceExists($1_account_Account_$memory, $t0); + + // trace_return[0]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:225:9+21 + assume {:print "$track_return(18,9,0):", $t1} $t1 == $t1; + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:226:5+1 + assume {:print "$at(72,11445,11446)"} true; +L1: + + // return $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:226:5+1 + assume {:print "$at(72,11445,11446)"} true; + $ret0 := $t1; + return; + +} + +// fun account::register_coin [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:677:5+364 +procedure {:inline 1} $1_account_register_coin'$1_aptos_coin_AptosCoin'(_$t0: int) returns () +{ + // declare local variables + var $t1: $Mutation ($1_account_Account); + var $t2: int; + var $t3: $Mutation ($1_event_EventHandle'$1_account_CoinRegisterEvent'); + var $t4: $1_type_info_TypeInfo; + var $t5: $1_account_CoinRegisterEvent; + var $t0: int; + var $1_account_Account_$modifies: [int]bool; + var $temp_0'address': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[account_addr]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:677:5+1 + assume {:print "$at(72,38611,38612)"} true; + assume {:print "$track_local(18,21,0):", $t0} $t0 == $t0; + + // $t1 := borrow_global($t0) on_abort goto L2 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:678:23+17 + assume {:print "$at(72,38718,38735)"} true; + if (!$ResourceExists($1_account_Account_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t1 := $Mutation($Global($t0), EmptyVec(), $ResourceValue($1_account_Account_$memory, $t0)); + } + if ($abort_flag) { + assume {:print "$at(72,38718,38735)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(18,21):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := borrow_field.coin_register_events($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:680:13+33 + assume {:print "$at(72,38818,38851)"} true; + $t3 := $ChildMutation($t1, 3, $coin_register_events#$1_account_Account($Dereference($t1))); + + // $t4 := type_info::type_of<#0>() on_abort goto L2 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:682:28+30 + assume {:print "$at(72,38912,38942)"} true; + if (!true) { + call $ExecFailureAbort(); + } + else { + $t4 := $1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)); + } + if ($abort_flag) { + assume {:print "$at(72,38912,38942)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(18,21):", $t2} $t2 == $t2; + goto L2; + } + + // $t5 := pack account::CoinRegisterEvent($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:681:13+92 + assume {:print "$at(72,38865,38957)"} true; + $t5 := $1_account_CoinRegisterEvent($t4); + + // opaque begin: event::emit_event($t3, $t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:679:9+200 + assume {:print "$at(72,38768,38968)"} true; + + // opaque end: event::emit_event($t3, $t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:679:9+200 + + // write_back[Reference($t1).coin_register_events (event::EventHandle)]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:679:9+200 + $t1 := $UpdateMutation($t1, $Update'$1_account_Account'_coin_register_events($Dereference($t1), $Dereference($t3))); + + // pack_ref_deep($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:679:9+200 + + // write_back[account::Account@]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:679:9+200 + $1_account_Account_$memory := $ResourceUpdate($1_account_Account_$memory, $GlobalLocationAddress($t1), + $Dereference($t1)); + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:685:5+1 + assume {:print "$at(72,38974,38975)"} true; +L1: + + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:685:5+1 + assume {:print "$at(72,38974,38975)"} true; + return; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:685:5+1 +L2: + + // abort($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:685:5+1 + assume {:print "$at(72,38974,38975)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun account::rotate_authentication_key_internal [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:256:5+516 +procedure {:inline 1} $1_account_rotate_authentication_key_internal(_$t0: $signer, _$t1: Vec (int)) returns () +{ + // declare local variables + var $t2: $Mutation ($1_account_Account); + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: bool; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: int; + var $t12: bool; + var $t13: int; + var $t14: int; + var $t15: $Mutation ($1_account_Account); + var $t16: $Mutation (Vec (int)); + var $t0: $signer; + var $t1: Vec (int); + var $1_account_Account_$modifies: [int]bool; + var $temp_0'$1_account_Account': $1_account_Account; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // assume Identical($t4, signer::$address_of($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:68:9+39 + assume {:print "$at(73,2861,2900)"} true; + assume ($t4 == $1_signer_$address_of($t0)); + + // trace_local[account]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:256:5+1 + assume {:print "$at(72,12425,12426)"} true; + assume {:print "$track_local(18,27,0):", $t0} $t0 == $t0; + + // trace_local[new_auth_key]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:256:5+1 + assume {:print "$track_local(18,27,1):", $t1} $t1 == $t1; + + // $t5 := signer::address_of($t0) on_abort goto L7 with $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:257:20+27 + assume {:print "$at(72,12561,12588)"} true; + call $t5 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(72,12561,12588)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(18,27):", $t6} $t6 == $t6; + goto L7; + } + + // trace_local[addr]($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:257:13+4 + assume {:print "$track_local(18,27,3):", $t5} $t5 == $t5; + + // $t7 := account::exists_at($t5) on_abort goto L7 with $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:258:17+15 + assume {:print "$at(72,12606,12621)"} true; + call $t7 := $1_account_exists_at($t5); + if ($abort_flag) { + assume {:print "$at(72,12606,12621)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(18,27):", $t6} $t6 == $t6; + goto L7; + } + + // if ($t7) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:258:9+67 + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:258:9+67 +L1: + + // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:258:9+67 + assume {:print "$at(72,12598,12665)"} true; + goto L2; + + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:258:51+23 +L0: + + // $t8 := 2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:258:51+23 + assume {:print "$at(72,12640,12663)"} true; + $t8 := 2; + assume $IsValid'u64'($t8); + + // $t9 := error::not_found($t8) on_abort goto L7 with $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:258:34+41 + call $t9 := $1_error_not_found($t8); + if ($abort_flag) { + assume {:print "$at(72,12623,12664)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(18,27):", $t6} $t6 == $t6; + goto L7; + } + + // trace_abort($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:258:9+67 + assume {:print "$at(72,12598,12665)"} true; + assume {:print "$track_abort(18,27):", $t9} $t9 == $t9; + + // $t6 := move($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:258:9+67 + $t6 := $t9; + + // goto L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:258:9+67 + goto L7; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:260:28+13 + assume {:print "$at(72,12711,12724)"} true; +L2: + + // $t10 := vector::length($t1) on_abort goto L7 with $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:260:13+29 + assume {:print "$at(72,12696,12725)"} true; + call $t10 := $1_vector_length'u8'($t1); + if ($abort_flag) { + assume {:print "$at(72,12696,12725)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(18,27):", $t6} $t6 == $t6; + goto L7; + } + + // $t11 := 32 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:260:46+2 + $t11 := 32; + assume $IsValid'u64'($t11); + + // $t12 := ==($t10, $t11) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:260:43+2 + $t12 := $IsEqual'u64'($t10, $t11); + + // if ($t12) goto L4 else goto L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:259:9+134 + assume {:print "$at(72,12675,12809)"} true; + if ($t12) { goto L4; } else { goto L3; } + + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:259:9+134 +L4: + + // goto L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:259:9+134 + assume {:print "$at(72,12675,12809)"} true; + goto L5; + + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:261:37+29 + assume {:print "$at(72,12769,12798)"} true; +L3: + + // $t13 := 4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:261:37+29 + assume {:print "$at(72,12769,12798)"} true; + $t13 := 4; + assume $IsValid'u64'($t13); + + // $t14 := error::invalid_argument($t13) on_abort goto L7 with $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:261:13+54 + call $t14 := $1_error_invalid_argument($t13); + if ($abort_flag) { + assume {:print "$at(72,12745,12799)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(18,27):", $t6} $t6 == $t6; + goto L7; + } + + // trace_abort($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:259:9+134 + assume {:print "$at(72,12675,12809)"} true; + assume {:print "$track_abort(18,27):", $t14} $t14 == $t14; + + // $t6 := move($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:259:9+134 + $t6 := $t14; + + // goto L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:259:9+134 + goto L7; + + // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:263:59+4 + assume {:print "$at(72,12869,12873)"} true; +L5: + + // $t15 := borrow_global($t5) on_abort goto L7 with $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:263:32+17 + assume {:print "$at(72,12842,12859)"} true; + if (!$ResourceExists($1_account_Account_$memory, $t5)) { + call $ExecFailureAbort(); + } else { + $t15 := $Mutation($Global($t5), EmptyVec(), $ResourceValue($1_account_Account_$memory, $t5)); + } + if ($abort_flag) { + assume {:print "$at(72,12842,12859)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(18,27):", $t6} $t6 == $t6; + goto L7; + } + + // trace_local[account_resource]($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:263:13+16 + $temp_0'$1_account_Account' := $Dereference($t15); + assume {:print "$track_local(18,27,2):", $temp_0'$1_account_Account'} $temp_0'$1_account_Account' == $temp_0'$1_account_Account'; + + // $t16 := borrow_field.authentication_key($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:264:9+35 + assume {:print "$at(72,12884,12919)"} true; + $t16 := $ChildMutation($t15, 0, $authentication_key#$1_account_Account($Dereference($t15))); + + // write_ref($t16, $t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:264:9+50 + $t16 := $UpdateMutation($t16, $t1); + + // write_back[Reference($t15).authentication_key (vector)]($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:264:9+50 + $t15 := $UpdateMutation($t15, $Update'$1_account_Account'_authentication_key($Dereference($t15), $Dereference($t16))); + + // pack_ref_deep($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:264:9+50 + + // write_back[account::Account@]($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:264:9+50 + $1_account_Account_$memory := $ResourceUpdate($1_account_Account_$memory, $GlobalLocationAddress($t15), + $Dereference($t15)); + + // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:265:5+1 + assume {:print "$at(72,12940,12941)"} true; +L6: + + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:265:5+1 + assume {:print "$at(72,12940,12941)"} true; + return; + + // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:265:5+1 +L7: + + // abort($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:265:5+1 + assume {:print "$at(72,12940,12941)"} true; + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// struct optional_aggregator::Integer at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aggregator/optional_aggregator.move:20:5+74 +type {:datatype} $1_optional_aggregator_Integer; +function {:constructor} $1_optional_aggregator_Integer($value: int, $limit: int): $1_optional_aggregator_Integer; +function {:inline} $Update'$1_optional_aggregator_Integer'_value(s: $1_optional_aggregator_Integer, x: int): $1_optional_aggregator_Integer { + $1_optional_aggregator_Integer(x, $limit#$1_optional_aggregator_Integer(s)) +} +function {:inline} $Update'$1_optional_aggregator_Integer'_limit(s: $1_optional_aggregator_Integer, x: int): $1_optional_aggregator_Integer { + $1_optional_aggregator_Integer($value#$1_optional_aggregator_Integer(s), x) +} +function $IsValid'$1_optional_aggregator_Integer'(s: $1_optional_aggregator_Integer): bool { + $IsValid'u128'($value#$1_optional_aggregator_Integer(s)) + && $IsValid'u128'($limit#$1_optional_aggregator_Integer(s)) +} +function {:inline} $IsEqual'$1_optional_aggregator_Integer'(s1: $1_optional_aggregator_Integer, s2: $1_optional_aggregator_Integer): bool { + s1 == s2 +} + +// struct optional_aggregator::OptionalAggregator at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aggregator/optional_aggregator.move:64:5+175 +type {:datatype} $1_optional_aggregator_OptionalAggregator; +function {:constructor} $1_optional_aggregator_OptionalAggregator($aggregator: $1_option_Option'$1_aggregator_Aggregator', $integer: $1_option_Option'$1_optional_aggregator_Integer'): $1_optional_aggregator_OptionalAggregator; +function {:inline} $Update'$1_optional_aggregator_OptionalAggregator'_aggregator(s: $1_optional_aggregator_OptionalAggregator, x: $1_option_Option'$1_aggregator_Aggregator'): $1_optional_aggregator_OptionalAggregator { + $1_optional_aggregator_OptionalAggregator(x, $integer#$1_optional_aggregator_OptionalAggregator(s)) +} +function {:inline} $Update'$1_optional_aggregator_OptionalAggregator'_integer(s: $1_optional_aggregator_OptionalAggregator, x: $1_option_Option'$1_optional_aggregator_Integer'): $1_optional_aggregator_OptionalAggregator { + $1_optional_aggregator_OptionalAggregator($aggregator#$1_optional_aggregator_OptionalAggregator(s), x) +} +function $IsValid'$1_optional_aggregator_OptionalAggregator'(s: $1_optional_aggregator_OptionalAggregator): bool { + $IsValid'$1_option_Option'$1_aggregator_Aggregator''($aggregator#$1_optional_aggregator_OptionalAggregator(s)) + && $IsValid'$1_option_Option'$1_optional_aggregator_Integer''($integer#$1_optional_aggregator_OptionalAggregator(s)) +} +function {:inline} $IsEqual'$1_optional_aggregator_OptionalAggregator'(s1: $1_optional_aggregator_OptionalAggregator, s2: $1_optional_aggregator_OptionalAggregator): bool { + $IsEqual'$1_option_Option'$1_aggregator_Aggregator''($aggregator#$1_optional_aggregator_OptionalAggregator(s1), $aggregator#$1_optional_aggregator_OptionalAggregator(s2)) + && $IsEqual'$1_option_Option'$1_optional_aggregator_Integer''($integer#$1_optional_aggregator_OptionalAggregator(s1), $integer#$1_optional_aggregator_OptionalAggregator(s2))} + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:255:5+129 +function {:inline} $1_coin_$is_account_registered'$1_aptos_coin_AptosCoin'($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory: $Memory $1_coin_CoinStore'$1_aptos_coin_AptosCoin', account_addr: int): bool { + $ResourceExists($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, account_addr) +} + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:566:5+81 +function {:inline} $1_coin_$value'$1_aptos_coin_AptosCoin'(coin: $1_coin_Coin'$1_aptos_coin_AptosCoin'): int { + $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'(coin) +} + +// struct coin::Coin at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:74:5+112 +type {:datatype} $1_coin_Coin'$1_aptos_coin_AptosCoin'; +function {:constructor} $1_coin_Coin'$1_aptos_coin_AptosCoin'($value: int): $1_coin_Coin'$1_aptos_coin_AptosCoin'; +function {:inline} $Update'$1_coin_Coin'$1_aptos_coin_AptosCoin''_value(s: $1_coin_Coin'$1_aptos_coin_AptosCoin', x: int): $1_coin_Coin'$1_aptos_coin_AptosCoin' { + $1_coin_Coin'$1_aptos_coin_AptosCoin'(x) +} +function $IsValid'$1_coin_Coin'$1_aptos_coin_AptosCoin''(s: $1_coin_Coin'$1_aptos_coin_AptosCoin'): bool { + $IsValid'u64'($value#$1_coin_Coin'$1_aptos_coin_AptosCoin'(s)) +} +function {:inline} $IsEqual'$1_coin_Coin'$1_aptos_coin_AptosCoin''(s1: $1_coin_Coin'$1_aptos_coin_AptosCoin', s2: $1_coin_Coin'$1_aptos_coin_AptosCoin'): bool { + s1 == s2 +} + +// struct coin::CoinInfo at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:109:5+564 +type {:datatype} $1_coin_CoinInfo'$1_aptos_coin_AptosCoin'; +function {:constructor} $1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($name: $1_string_String, $symbol: $1_string_String, $decimals: int, $supply: $1_option_Option'$1_optional_aggregator_OptionalAggregator'): $1_coin_CoinInfo'$1_aptos_coin_AptosCoin'; +function {:inline} $Update'$1_coin_CoinInfo'$1_aptos_coin_AptosCoin''_name(s: $1_coin_CoinInfo'$1_aptos_coin_AptosCoin', x: $1_string_String): $1_coin_CoinInfo'$1_aptos_coin_AptosCoin' { + $1_coin_CoinInfo'$1_aptos_coin_AptosCoin'(x, $symbol#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'(s), $decimals#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'(s), $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'(s)) +} +function {:inline} $Update'$1_coin_CoinInfo'$1_aptos_coin_AptosCoin''_symbol(s: $1_coin_CoinInfo'$1_aptos_coin_AptosCoin', x: $1_string_String): $1_coin_CoinInfo'$1_aptos_coin_AptosCoin' { + $1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($name#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'(s), x, $decimals#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'(s), $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'(s)) +} +function {:inline} $Update'$1_coin_CoinInfo'$1_aptos_coin_AptosCoin''_decimals(s: $1_coin_CoinInfo'$1_aptos_coin_AptosCoin', x: int): $1_coin_CoinInfo'$1_aptos_coin_AptosCoin' { + $1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($name#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'(s), $symbol#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'(s), x, $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'(s)) +} +function {:inline} $Update'$1_coin_CoinInfo'$1_aptos_coin_AptosCoin''_supply(s: $1_coin_CoinInfo'$1_aptos_coin_AptosCoin', x: $1_option_Option'$1_optional_aggregator_OptionalAggregator'): $1_coin_CoinInfo'$1_aptos_coin_AptosCoin' { + $1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($name#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'(s), $symbol#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'(s), $decimals#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'(s), x) +} +function $IsValid'$1_coin_CoinInfo'$1_aptos_coin_AptosCoin''(s: $1_coin_CoinInfo'$1_aptos_coin_AptosCoin'): bool { + $IsValid'$1_string_String'($name#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'(s)) + && $IsValid'$1_string_String'($symbol#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'(s)) + && $IsValid'u8'($decimals#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'(s)) + && $IsValid'$1_option_Option'$1_optional_aggregator_OptionalAggregator''($supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'(s)) +} +function {:inline} $IsEqual'$1_coin_CoinInfo'$1_aptos_coin_AptosCoin''(s1: $1_coin_CoinInfo'$1_aptos_coin_AptosCoin', s2: $1_coin_CoinInfo'$1_aptos_coin_AptosCoin'): bool { + $IsEqual'$1_string_String'($name#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'(s1), $name#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'(s2)) + && $IsEqual'$1_string_String'($symbol#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'(s1), $symbol#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'(s2)) + && $IsEqual'u8'($decimals#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'(s1), $decimals#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'(s2)) + && $IsEqual'$1_option_Option'$1_optional_aggregator_OptionalAggregator''($supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'(s1), $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'(s2))} +var $1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory: $Memory $1_coin_CoinInfo'$1_aptos_coin_AptosCoin'; + +// struct coin::CoinStore at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:92:5+206 +type {:datatype} $1_coin_CoinStore'$1_aptos_coin_AptosCoin'; +function {:constructor} $1_coin_CoinStore'$1_aptos_coin_AptosCoin'($coin: $1_coin_Coin'$1_aptos_coin_AptosCoin', $frozen: bool, $deposit_events: $1_event_EventHandle'$1_coin_DepositEvent', $withdraw_events: $1_event_EventHandle'$1_coin_WithdrawEvent'): $1_coin_CoinStore'$1_aptos_coin_AptosCoin'; +function {:inline} $Update'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''_coin(s: $1_coin_CoinStore'$1_aptos_coin_AptosCoin', x: $1_coin_Coin'$1_aptos_coin_AptosCoin'): $1_coin_CoinStore'$1_aptos_coin_AptosCoin' { + $1_coin_CoinStore'$1_aptos_coin_AptosCoin'(x, $frozen#$1_coin_CoinStore'$1_aptos_coin_AptosCoin'(s), $deposit_events#$1_coin_CoinStore'$1_aptos_coin_AptosCoin'(s), $withdraw_events#$1_coin_CoinStore'$1_aptos_coin_AptosCoin'(s)) +} +function {:inline} $Update'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''_frozen(s: $1_coin_CoinStore'$1_aptos_coin_AptosCoin', x: bool): $1_coin_CoinStore'$1_aptos_coin_AptosCoin' { + $1_coin_CoinStore'$1_aptos_coin_AptosCoin'($coin#$1_coin_CoinStore'$1_aptos_coin_AptosCoin'(s), x, $deposit_events#$1_coin_CoinStore'$1_aptos_coin_AptosCoin'(s), $withdraw_events#$1_coin_CoinStore'$1_aptos_coin_AptosCoin'(s)) +} +function {:inline} $Update'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''_deposit_events(s: $1_coin_CoinStore'$1_aptos_coin_AptosCoin', x: $1_event_EventHandle'$1_coin_DepositEvent'): $1_coin_CoinStore'$1_aptos_coin_AptosCoin' { + $1_coin_CoinStore'$1_aptos_coin_AptosCoin'($coin#$1_coin_CoinStore'$1_aptos_coin_AptosCoin'(s), $frozen#$1_coin_CoinStore'$1_aptos_coin_AptosCoin'(s), x, $withdraw_events#$1_coin_CoinStore'$1_aptos_coin_AptosCoin'(s)) +} +function {:inline} $Update'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''_withdraw_events(s: $1_coin_CoinStore'$1_aptos_coin_AptosCoin', x: $1_event_EventHandle'$1_coin_WithdrawEvent'): $1_coin_CoinStore'$1_aptos_coin_AptosCoin' { + $1_coin_CoinStore'$1_aptos_coin_AptosCoin'($coin#$1_coin_CoinStore'$1_aptos_coin_AptosCoin'(s), $frozen#$1_coin_CoinStore'$1_aptos_coin_AptosCoin'(s), $deposit_events#$1_coin_CoinStore'$1_aptos_coin_AptosCoin'(s), x) +} +function $IsValid'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''(s: $1_coin_CoinStore'$1_aptos_coin_AptosCoin'): bool { + $IsValid'$1_coin_Coin'$1_aptos_coin_AptosCoin''($coin#$1_coin_CoinStore'$1_aptos_coin_AptosCoin'(s)) + && $IsValid'bool'($frozen#$1_coin_CoinStore'$1_aptos_coin_AptosCoin'(s)) + && $IsValid'$1_event_EventHandle'$1_coin_DepositEvent''($deposit_events#$1_coin_CoinStore'$1_aptos_coin_AptosCoin'(s)) + && $IsValid'$1_event_EventHandle'$1_coin_WithdrawEvent''($withdraw_events#$1_coin_CoinStore'$1_aptos_coin_AptosCoin'(s)) +} +function {:inline} $IsEqual'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''(s1: $1_coin_CoinStore'$1_aptos_coin_AptosCoin', s2: $1_coin_CoinStore'$1_aptos_coin_AptosCoin'): bool { + s1 == s2 +} +var $1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory: $Memory $1_coin_CoinStore'$1_aptos_coin_AptosCoin'; + +// struct coin::DepositEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:123:5+64 +type {:datatype} $1_coin_DepositEvent; +function {:constructor} $1_coin_DepositEvent($amount: int): $1_coin_DepositEvent; +function {:inline} $Update'$1_coin_DepositEvent'_amount(s: $1_coin_DepositEvent, x: int): $1_coin_DepositEvent { + $1_coin_DepositEvent(x) +} +function $IsValid'$1_coin_DepositEvent'(s: $1_coin_DepositEvent): bool { + $IsValid'u64'($amount#$1_coin_DepositEvent(s)) +} +function {:inline} $IsEqual'$1_coin_DepositEvent'(s1: $1_coin_DepositEvent, s2: $1_coin_DepositEvent): bool { + s1 == s2 +} + +// struct coin::WithdrawEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:128:5+65 +type {:datatype} $1_coin_WithdrawEvent; +function {:constructor} $1_coin_WithdrawEvent($amount: int): $1_coin_WithdrawEvent; +function {:inline} $Update'$1_coin_WithdrawEvent'_amount(s: $1_coin_WithdrawEvent, x: int): $1_coin_WithdrawEvent { + $1_coin_WithdrawEvent(x) +} +function $IsValid'$1_coin_WithdrawEvent'(s: $1_coin_WithdrawEvent): bool { + $IsValid'u64'($amount#$1_coin_WithdrawEvent(s)) +} +function {:inline} $IsEqual'$1_coin_WithdrawEvent'(s1: $1_coin_WithdrawEvent, s2: $1_coin_WithdrawEvent): bool { + s1 == s2 +} + +// struct coin::Ghost$supply at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:4:9+29 +type {:datatype} $1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'; +function {:constructor} $1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'($v: int): $1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'; +function {:inline} $Update'$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin''_v(s: $1_coin_Ghost$supply'$1_aptos_coin_AptosCoin', x: int): $1_coin_Ghost$supply'$1_aptos_coin_AptosCoin' { + $1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'(x) +} +function $IsValid'$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin''(s: $1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'): bool { + $IsValid'num'($v#$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'(s)) +} +function {:inline} $IsEqual'$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin''(s1: $1_coin_Ghost$supply'$1_aptos_coin_AptosCoin', s2: $1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'): bool { + s1 == s2 +} +var $1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory: $Memory $1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'; + +// struct coin::Ghost$aggregate_supply at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:5:9+39 +type {:datatype} $1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'; +function {:constructor} $1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'($v: int): $1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'; +function {:inline} $Update'$1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin''_v(s: $1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin', x: int): $1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin' { + $1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'(x) +} +function $IsValid'$1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin''(s: $1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'): bool { + $IsValid'num'($v#$1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'(s)) +} +function {:inline} $IsEqual'$1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin''(s1: $1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin', s2: $1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'): bool { + s1 == s2 +} +var $1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory: $Memory $1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'; + +// fun coin::extract [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:366:5+434 +procedure {:inline 1} $1_coin_extract'$1_aptos_coin_AptosCoin'(_$t0: $Mutation ($1_coin_Coin'$1_aptos_coin_AptosCoin'), _$t1: int) returns ($ret0: $1_coin_Coin'$1_aptos_coin_AptosCoin', $ret1: $Mutation ($1_coin_Coin'$1_aptos_coin_AptosCoin')) +{ + // declare local variables + var $t2: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t3: int; + var $t4: bool; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: $1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'; + var $t9: int; + var $t10: $Mutation ($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'); + var $t11: int; + var $t12: int; + var $t13: $Mutation (int); + var $t14: $1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'; + var $t15: int; + var $t16: $Mutation ($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'); + var $t17: $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $t0: $Mutation ($1_coin_Coin'$1_aptos_coin_AptosCoin'); + var $t1: int; + var $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin'': $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // assume Identical($t2, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + assume {:print "$at(95,1664,1763)"} true; + assume ($t2 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + + // trace_local[coin]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:366:5+1 + assume {:print "$at(94,13880,13881)"} true; + $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin'' := $Dereference($t0); + assume {:print "$track_local(23,13,0):", $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin''} $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin'' == $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin''; + + // trace_local[amount]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:366:5+1 + assume {:print "$track_local(23,13,1):", $t1} $t1 == $t1; + + // $t3 := get_field>.value($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:367:17+10 + assume {:print "$at(94,13983,13993)"} true; + $t3 := $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($Dereference($t0)); + + // $t4 := >=($t3, $t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:367:28+2 + call $t4 := $Ge($t3, $t1); + + // if ($t4) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:367:9+77 + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:367:9+77 +L1: + + // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:367:9+77 + assume {:print "$at(94,13975,14052)"} true; + goto L2; + + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:367:9+77 +L0: + + // destroy($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:367:9+77 + assume {:print "$at(94,13975,14052)"} true; + + // $t5 := 6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:367:63+21 + $t5 := 6; + assume $IsValid'u64'($t5); + + // $t6 := error::invalid_argument($t5) on_abort goto L4 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:367:39+46 + call $t6 := $1_error_invalid_argument($t5); + if ($abort_flag) { + assume {:print "$at(94,14005,14051)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(23,13):", $t7} $t7 == $t7; + goto L4; + } + + // trace_abort($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:367:9+77 + assume {:print "$at(94,13975,14052)"} true; + assume {:print "$track_abort(23,13):", $t6} $t6 == $t6; + + // $t7 := move($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:367:9+77 + $t7 := $t6; + + // goto L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:367:9+77 + goto L4; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:368:9+81 + assume {:print "$at(94,14062,14143)"} true; +L2: + + // assume Identical($t8, pack coin::Ghost$supply<#0>(Sub(select coin::Ghost$supply.v<#0>(global>(0x0)), $t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:369:13+52 + assume {:print "$at(94,14081,14133)"} true; + assume ($t8 == $1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'(($v#$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, 0)) - $t1))); + + // assume Identical($t9, 0x0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:369:13+52 + assume ($t9 == 0); + + // $t10 := borrow_global>($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:369:13+52 + if (!$ResourceExists($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $t9)) { + call $ExecFailureAbort(); + } else { + $t10 := $Mutation($Global($t9), EmptyVec(), $ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $t9)); + } + + // write_ref($t10, $t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:369:13+52 + $t10 := $UpdateMutation($t10, $t8); + + // write_back[coin::Ghost$supply<#0>@]($t10) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:369:13+52 + $1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory := $ResourceUpdate($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $GlobalLocationAddress($t10), + $Dereference($t10)); + + // $t11 := get_field>.value($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:371:22+10 + assume {:print "$at(94,14166,14176)"} true; + $t11 := $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($Dereference($t0)); + + // $t12 := -($t11, $t1) on_abort goto L4 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:371:33+1 + call $t12 := $Sub($t11, $t1); + if ($abort_flag) { + assume {:print "$at(94,14177,14178)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(23,13):", $t7} $t7 == $t7; + goto L4; + } + + // $t13 := borrow_field>.value($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:371:9+10 + $t13 := $ChildMutation($t0, 0, $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($Dereference($t0))); + + // write_ref($t13, $t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:371:9+32 + $t13 := $UpdateMutation($t13, $t12); + + // write_back[Reference($t0).value (u64)]($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:371:9+32 + $t0 := $UpdateMutation($t0, $Update'$1_coin_Coin'$1_aptos_coin_AptosCoin''_value($Dereference($t0), $Dereference($t13))); + + // trace_local[coin]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:371:9+32 + $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin'' := $Dereference($t0); + assume {:print "$track_local(23,13,0):", $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin''} $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin'' == $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin''; + + // assume Identical($t14, pack coin::Ghost$supply<#0>(Add(select coin::Ghost$supply.v<#0>(global>(0x0)), $t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:373:13+52 + assume {:print "$at(94,14214,14266)"} true; + assume ($t14 == $1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'(($v#$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, 0)) + $t1))); + + // assume Identical($t15, 0x0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:373:13+52 + assume ($t15 == 0); + + // $t16 := borrow_global>($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:373:13+52 + if (!$ResourceExists($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $t15)) { + call $ExecFailureAbort(); + } else { + $t16 := $Mutation($Global($t15), EmptyVec(), $ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $t15)); + } + + // write_ref($t16, $t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:373:13+52 + $t16 := $UpdateMutation($t16, $t14); + + // write_back[coin::Ghost$supply<#0>@]($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:373:13+52 + $1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory := $ResourceUpdate($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $GlobalLocationAddress($t16), + $Dereference($t16)); + + // $t17 := pack coin::Coin<#0>($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:375:9+22 + assume {:print "$at(94,14286,14308)"} true; + $t17 := $1_coin_Coin'$1_aptos_coin_AptosCoin'($t1); + + // trace_return[0]($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:375:9+22 + assume {:print "$track_return(23,13,0):", $t17} $t17 == $t17; + + // trace_local[coin]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:375:9+22 + $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin'' := $Dereference($t0); + assume {:print "$track_local(23,13,0):", $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin''} $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin'' == $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin''; + + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:376:5+1 + assume {:print "$at(94,14313,14314)"} true; +L3: + + // return $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:376:5+1 + assume {:print "$at(94,14313,14314)"} true; + $ret0 := $t17; + $ret1 := $t0; + return; + + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:376:5+1 +L4: + + // abort($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:376:5+1 + assume {:print "$at(94,14313,14314)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun coin::value [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:566:5+81 +procedure {:inline 1} $1_coin_value'$1_aptos_coin_AptosCoin'(_$t0: $1_coin_Coin'$1_aptos_coin_AptosCoin') returns ($ret0: int) +{ + // declare local variables + var $t1: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t2: int; + var $t0: $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin'': $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $temp_0'u64': int; + $t0 := _$t0; + + // bytecode translation starts here + // assume Identical($t1, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + assume {:print "$at(95,1664,1763)"} true; + assume ($t1 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + + // trace_local[coin]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:566:5+1 + assume {:print "$at(94,21587,21588)"} true; + assume {:print "$track_local(23,34,0):", $t0} $t0 == $t0; + + // $t2 := get_field>.value($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:567:9+10 + assume {:print "$at(94,21652,21662)"} true; + $t2 := $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($t0); + + // trace_return[0]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:567:9+10 + assume {:print "$track_return(23,34,0):", $t2} $t2 == $t2; + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:568:5+1 + assume {:print "$at(94,21667,21668)"} true; +L1: + + // return $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:568:5+1 + assume {:print "$at(94,21667,21668)"} true; + $ret0 := $t2; + return; + +} + +// fun coin::balance [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:239:5+274 +procedure {:inline 1} $1_coin_balance'$1_aptos_coin_AptosCoin'(_$t0: int) returns ($ret0: int) +{ + // declare local variables + var $t1: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t2: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t3: bool; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: $1_coin_CoinStore'$1_aptos_coin_AptosCoin'; + var $t8: $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $t9: int; + var $t0: int; + var $temp_0'address': int; + var $temp_0'u64': int; + $t0 := _$t0; + + // bytecode translation starts here + // assume Identical($t1, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + assume {:print "$at(95,1664,1763)"} true; + assume ($t1 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + + // trace_local[owner]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:239:5+1 + assume {:print "$at(94,8778,8779)"} true; + assume {:print "$track_local(23,1,0):", $t0} $t0 == $t0; + + // assume Identical($t2, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + assume {:print "$at(95,1664,1763)"} true; + assume ($t2 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + + // $t3 := coin::is_account_registered<#0>($t0) on_abort goto L4 with $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:241:13+38 + assume {:print "$at(94,8878,8916)"} true; + call $t3 := $1_coin_is_account_registered'$1_aptos_coin_AptosCoin'($t0); + if ($abort_flag) { + assume {:print "$at(94,8878,8916)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(23,1):", $t4} $t4 == $t4; + goto L4; + } + + // if ($t3) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:240:9+127 + assume {:print "$at(94,8857,8984)"} true; + if ($t3) { goto L1; } else { goto L0; } + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:240:9+127 +L1: + + // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:240:9+127 + assume {:print "$at(94,8857,8984)"} true; + goto L2; + + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:242:30+25 + assume {:print "$at(94,8947,8972)"} true; +L0: + + // $t5 := 5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:242:30+25 + assume {:print "$at(94,8947,8972)"} true; + $t5 := 5; + assume $IsValid'u64'($t5); + + // $t6 := error::not_found($t5) on_abort goto L4 with $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:242:13+43 + call $t6 := $1_error_not_found($t5); + if ($abort_flag) { + assume {:print "$at(94,8930,8973)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(23,1):", $t4} $t4 == $t4; + goto L4; + } + + // trace_abort($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:240:9+127 + assume {:print "$at(94,8857,8984)"} true; + assume {:print "$track_abort(23,1):", $t6} $t6 == $t6; + + // $t4 := move($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:240:9+127 + $t4 := $t6; + + // goto L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:240:9+127 + goto L4; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:244:44+5 + assume {:print "$at(94,9029,9034)"} true; +L2: + + // $t7 := get_global>($t0) on_abort goto L4 with $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:244:9+13 + assume {:print "$at(94,8994,9007)"} true; + if (!$ResourceExists($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t7 := $ResourceValue($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(94,8994,9007)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(23,1):", $t4} $t4 == $t4; + goto L4; + } + + // $t8 := get_field>.coin($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:244:9+46 + $t8 := $coin#$1_coin_CoinStore'$1_aptos_coin_AptosCoin'($t7); + + // $t9 := get_field>.value($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:244:9+52 + $t9 := $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($t8); + + // trace_return[0]($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:244:9+52 + assume {:print "$track_return(23,1,0):", $t9} $t9 == $t9; + + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:245:5+1 + assume {:print "$at(94,9051,9052)"} true; +L3: + + // return $t9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:245:5+1 + assume {:print "$at(94,9051,9052)"} true; + $ret0 := $t9; + return; + + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:245:5+1 +L4: + + // abort($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:245:5+1 + assume {:print "$at(94,9051,9052)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun coin::deposit [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:334:5+621 +procedure {:inline 1} $1_coin_deposit'$1_aptos_coin_AptosCoin'(_$t0: int, _$t1: $1_coin_Coin'$1_aptos_coin_AptosCoin') returns () +{ + // declare local variables + var $t2: $Mutation ($1_coin_CoinStore'$1_aptos_coin_AptosCoin'); + var $t3: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t4: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t5: bool; + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: $Mutation ($1_coin_CoinStore'$1_aptos_coin_AptosCoin'); + var $t10: bool; + var $t11: bool; + var $t12: int; + var $t13: int; + var $t14: $Mutation ($1_event_EventHandle'$1_coin_DepositEvent'); + var $t15: int; + var $t16: $1_coin_DepositEvent; + var $t17: $Mutation ($1_coin_Coin'$1_aptos_coin_AptosCoin'); + var $t18: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t0: int; + var $t1: $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$modifies: [int]bool; + var $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin'': $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $temp_0'$1_coin_CoinStore'$1_aptos_coin_AptosCoin'': $1_coin_CoinStore'$1_aptos_coin_AptosCoin'; + var $temp_0'address': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // assume Identical($t3, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + assume {:print "$at(95,1664,1763)"} true; + assume ($t3 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + + // trace_local[account_addr]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:334:5+1 + assume {:print "$at(94,12612,12613)"} true; + assume {:print "$track_local(23,7,0):", $t0} $t0 == $t0; + + // trace_local[coin]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:334:5+1 + assume {:print "$track_local(23,7,1):", $t1} $t1 == $t1; + + // assume Identical($t4, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + assume {:print "$at(95,1664,1763)"} true; + assume ($t4 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + + // $t5 := coin::is_account_registered<#0>($t0) on_abort goto L7 with $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:336:13+45 + assume {:print "$at(94,12736,12781)"} true; + call $t5 := $1_coin_is_account_registered'$1_aptos_coin_AptosCoin'($t0); + if ($abort_flag) { + assume {:print "$at(94,12736,12781)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(23,7):", $t6} $t6 == $t6; + goto L7; + } + + // if ($t5) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:335:9+134 + assume {:print "$at(94,12715,12849)"} true; + if ($t5) { goto L1; } else { goto L0; } + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:335:9+134 +L1: + + // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:335:9+134 + assume {:print "$at(94,12715,12849)"} true; + goto L2; + + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:337:30+25 + assume {:print "$at(94,12812,12837)"} true; +L0: + + // $t7 := 5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:337:30+25 + assume {:print "$at(94,12812,12837)"} true; + $t7 := 5; + assume $IsValid'u64'($t7); + + // $t8 := error::not_found($t7) on_abort goto L7 with $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:337:13+43 + call $t8 := $1_error_not_found($t7); + if ($abort_flag) { + assume {:print "$at(94,12795,12838)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(23,7):", $t6} $t6 == $t6; + goto L7; + } + + // trace_abort($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:335:9+134 + assume {:print "$at(94,12715,12849)"} true; + assume {:print "$track_abort(23,7):", $t8} $t8 == $t8; + + // $t6 := move($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:335:9+134 + $t6 := $t8; + + // goto L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:335:9+134 + goto L7; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:340:65+12 + assume {:print "$at(94,12916,12928)"} true; +L2: + + // $t9 := borrow_global>($t0) on_abort goto L7 with $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:340:26+17 + assume {:print "$at(94,12877,12894)"} true; + if (!$ResourceExists($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t9 := $Mutation($Global($t0), EmptyVec(), $ResourceValue($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $t0)); + } + if ($abort_flag) { + assume {:print "$at(94,12877,12894)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(23,7):", $t6} $t6 == $t6; + goto L7; + } + + // trace_local[coin_store]($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:340:13+10 + $temp_0'$1_coin_CoinStore'$1_aptos_coin_AptosCoin'' := $Dereference($t9); + assume {:print "$track_local(23,7,2):", $temp_0'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''} $temp_0'$1_coin_CoinStore'$1_aptos_coin_AptosCoin'' == $temp_0'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''; + + // $t10 := get_field>.frozen($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:342:14+17 + assume {:print "$at(94,12961,12978)"} true; + $t10 := $frozen#$1_coin_CoinStore'$1_aptos_coin_AptosCoin'($Dereference($t9)); + + // $t11 := !($t10) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:342:13+1 + call $t11 := $Not($t10); + + // if ($t11) goto L4 else goto L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:341:9+97 + assume {:print "$at(94,12939,13036)"} true; + if ($t11) { goto L4; } else { goto L3; } + + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:341:9+97 +L4: + + // goto L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:341:9+97 + assume {:print "$at(94,12939,13036)"} true; + goto L5; + + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:341:9+97 +L3: + + // destroy($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:341:9+97 + assume {:print "$at(94,12939,13036)"} true; + + // $t12 := 10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:343:38+7 + assume {:print "$at(94,13017,13024)"} true; + $t12 := 10; + assume $IsValid'u64'($t12); + + // $t13 := error::permission_denied($t12) on_abort goto L7 with $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:343:13+33 + call $t13 := $1_error_permission_denied($t12); + if ($abort_flag) { + assume {:print "$at(94,12992,13025)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(23,7):", $t6} $t6 == $t6; + goto L7; + } + + // trace_abort($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:341:9+97 + assume {:print "$at(94,12939,13036)"} true; + assume {:print "$track_abort(23,7):", $t13} $t13 == $t13; + + // $t6 := move($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:341:9+97 + $t6 := $t13; + + // goto L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:341:9+97 + goto L7; + + // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:347:18+10 + assume {:print "$at(94,13097,13107)"} true; +L5: + + // $t14 := borrow_field>.deposit_events($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:347:13+30 + assume {:print "$at(94,13092,13122)"} true; + $t14 := $ChildMutation($t9, 2, $deposit_events#$1_coin_CoinStore'$1_aptos_coin_AptosCoin'($Dereference($t9))); + + // $t15 := get_field>.value($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:348:36+10 + assume {:print "$at(94,13159,13169)"} true; + $t15 := $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($t1); + + // $t16 := pack coin::DepositEvent($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:348:13+35 + $t16 := $1_coin_DepositEvent($t15); + + // opaque begin: event::emit_event($t14, $t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:346:9+135 + assume {:print "$at(94,13047,13182)"} true; + + // opaque end: event::emit_event($t14, $t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:346:9+135 + + // write_back[Reference($t9).deposit_events (event::EventHandle)]($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:346:9+135 + $t9 := $UpdateMutation($t9, $Update'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''_deposit_events($Dereference($t9), $Dereference($t14))); + + // $t17 := borrow_field>.coin($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:351:15+20 + assume {:print "$at(94,13199,13219)"} true; + $t17 := $ChildMutation($t9, 0, $coin#$1_coin_CoinStore'$1_aptos_coin_AptosCoin'($Dereference($t9))); + + // assume Identical($t18, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + assume {:print "$at(95,1664,1763)"} true; + assume ($t18 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + + // coin::merge<#0>($t17, $t1) on_abort goto L7 with $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:351:9+33 + assume {:print "$at(94,13193,13226)"} true; + call $t17 := $1_coin_merge'$1_aptos_coin_AptosCoin'($t17, $t1); + if ($abort_flag) { + assume {:print "$at(94,13193,13226)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(23,7):", $t6} $t6 == $t6; + goto L7; + } + + // write_back[Reference($t9).coin (coin::Coin<#0>)]($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:351:9+33 + $t9 := $UpdateMutation($t9, $Update'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''_coin($Dereference($t9), $Dereference($t17))); + + // write_back[coin::CoinStore<#0>@]($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:351:9+33 + $1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory := $ResourceUpdate($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $GlobalLocationAddress($t9), + $Dereference($t9)); + + // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:352:5+1 + assume {:print "$at(94,13232,13233)"} true; +L6: + + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:352:5+1 + assume {:print "$at(94,13232,13233)"} true; + return; + + // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:352:5+1 +L7: + + // abort($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:352:5+1 + assume {:print "$at(94,13232,13233)"} true; + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// fun coin::destroy_zero [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:357:5+292 +procedure {:inline 1} $1_coin_destroy_zero'$1_aptos_coin_AptosCoin'(_$t0: $1_coin_Coin'$1_aptos_coin_AptosCoin') returns () +{ + // declare local variables + var $t1: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t2: $1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'; + var $t3: int; + var $t4: $Mutation ($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'); + var $t5: int; + var $t6: int; + var $t7: bool; + var $t8: int; + var $t9: int; + var $t10: int; + var $t0: $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin'': $1_coin_Coin'$1_aptos_coin_AptosCoin'; + $t0 := _$t0; + + // bytecode translation starts here + // assume Identical($t1, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + assume {:print "$at(95,1664,1763)"} true; + assume ($t1 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + + // trace_local[zero_coin]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:357:5+1 + assume {:print "$at(94,13482,13483)"} true; + assume {:print "$track_local(23,11,0):", $t0} $t0 == $t0; + + // assume Identical($t2, pack coin::Ghost$supply<#0>(Sub(select coin::Ghost$supply.v<#0>(global>(0x0)), select coin::Coin.value($t0)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:359:13+61 + assume {:print "$at(94,13572,13633)"} true; + assume ($t2 == $1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'(($v#$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, 0)) - $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($t0)))); + + // assume Identical($t3, 0x0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:359:13+61 + assume ($t3 == 0); + + // $t4 := borrow_global>($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:359:13+61 + if (!$ResourceExists($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $t3)) { + call $ExecFailureAbort(); + } else { + $t4 := $Mutation($Global($t3), EmptyVec(), $ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $t3)); + } + + // write_ref($t4, $t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:359:13+61 + $t4 := $UpdateMutation($t4, $t2); + + // write_back[coin::Ghost$supply<#0>@]($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:359:13+61 + $1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory := $ResourceUpdate($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $GlobalLocationAddress($t4), + $Dereference($t4)); + + // $t5 := unpack coin::Coin<#0>($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:361:13+14 + assume {:print "$at(94,13657,13671)"} true; + $t5 := $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($t0); + + // $t6 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:362:26+1 + assume {:print "$at(94,13710,13711)"} true; + $t6 := 0; + assume $IsValid'u64'($t6); + + // $t7 := ==($t5, $t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:362:23+2 + $t7 := $IsEqual'u64'($t5, $t6); + + // if ($t7) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:362:9+75 + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:362:9+75 +L1: + + // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:362:9+75 + assume {:print "$at(94,13693,13768)"} true; + goto L2; + + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:362:53+29 +L0: + + // $t8 := 7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:362:53+29 + assume {:print "$at(94,13737,13766)"} true; + $t8 := 7; + assume $IsValid'u64'($t8); + + // $t9 := error::invalid_argument($t8) on_abort goto L4 with $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:362:29+54 + call $t9 := $1_error_invalid_argument($t8); + if ($abort_flag) { + assume {:print "$at(94,13713,13767)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(23,11):", $t10} $t10 == $t10; + goto L4; + } + + // trace_abort($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:362:9+75 + assume {:print "$at(94,13693,13768)"} true; + assume {:print "$track_abort(23,11):", $t9} $t9 == $t9; + + // $t10 := move($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:362:9+75 + $t10 := $t9; + + // goto L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:362:9+75 + goto L4; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:362:9+75 +L2: + + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:363:5+1 + assume {:print "$at(94,13773,13774)"} true; +L3: + + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:363:5+1 + assume {:print "$at(94,13773,13774)"} true; + return; + + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:363:5+1 +L4: + + // abort($t10) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:363:5+1 + assume {:print "$at(94,13773,13774)"} true; + $abort_code := $t10; + $abort_flag := true; + return; + +} + +// fun coin::extract_all [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:379:5+372 +procedure {:inline 1} $1_coin_extract_all'$1_aptos_coin_AptosCoin'(_$t0: $Mutation ($1_coin_Coin'$1_aptos_coin_AptosCoin')) returns ($ret0: $1_coin_Coin'$1_aptos_coin_AptosCoin', $ret1: $Mutation ($1_coin_Coin'$1_aptos_coin_AptosCoin')) +{ + // declare local variables + var $t1: int; + var $t2: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t3: int; + var $t4: $1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'; + var $t5: int; + var $t6: $Mutation ($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'); + var $t7: int; + var $t8: $Mutation (int); + var $t9: $1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'; + var $t10: int; + var $t11: $Mutation ($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'); + var $t12: $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $t0: $Mutation ($1_coin_Coin'$1_aptos_coin_AptosCoin'); + var $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin'': $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $temp_0'u64': int; + $t0 := _$t0; + + // bytecode translation starts here + // assume Identical($t2, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + assume {:print "$at(95,1664,1763)"} true; + assume ($t2 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + + // trace_local[coin]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:379:5+1 + assume {:print "$at(94,14429,14430)"} true; + $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin'' := $Dereference($t0); + assume {:print "$track_local(23,14,0):", $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin''} $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin'' == $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin''; + + // $t3 := get_field>.value($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:380:27+10 + assume {:print "$at(94,14533,14543)"} true; + $t3 := $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($Dereference($t0)); + + // trace_local[total_value]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:380:13+11 + assume {:print "$track_local(23,14,1):", $t3} $t3 == $t3; + + // assume Identical($t4, pack coin::Ghost$supply<#0>(Sub(select coin::Ghost$supply.v<#0>(global>(0x0)), select coin::Coin.value($t0)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:382:13+56 + assume {:print "$at(94,14572,14628)"} true; + assume ($t4 == $1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'(($v#$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, 0)) - $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($Dereference($t0))))); + + // assume Identical($t5, 0x0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:382:13+56 + assume ($t5 == 0); + + // $t6 := borrow_global>($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:382:13+56 + if (!$ResourceExists($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $t5)) { + call $ExecFailureAbort(); + } else { + $t6 := $Mutation($Global($t5), EmptyVec(), $ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $t5)); + } + + // write_ref($t6, $t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:382:13+56 + $t6 := $UpdateMutation($t6, $t4); + + // write_back[coin::Ghost$supply<#0>@]($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:382:13+56 + $1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory := $ResourceUpdate($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $GlobalLocationAddress($t6), + $Dereference($t6)); + + // $t7 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:384:22+1 + assume {:print "$at(94,14661,14662)"} true; + $t7 := 0; + assume $IsValid'u64'($t7); + + // $t8 := borrow_field>.value($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:384:9+10 + $t8 := $ChildMutation($t0, 0, $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($Dereference($t0))); + + // write_ref($t8, $t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:384:9+14 + $t8 := $UpdateMutation($t8, $t7); + + // write_back[Reference($t0).value (u64)]($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:384:9+14 + $t0 := $UpdateMutation($t0, $Update'$1_coin_Coin'$1_aptos_coin_AptosCoin''_value($Dereference($t0), $Dereference($t8))); + + // trace_local[coin]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:384:9+14 + $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin'' := $Dereference($t0); + assume {:print "$track_local(23,14,0):", $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin''} $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin'' == $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin''; + + // assume Identical($t9, pack coin::Ghost$supply<#0>(Add(select coin::Ghost$supply.v<#0>(global>(0x0)), $t3))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:386:13+57 + assume {:print "$at(94,14691,14748)"} true; + assume ($t9 == $1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'(($v#$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, 0)) + $t3))); + + // assume Identical($t10, 0x0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:386:13+57 + assume ($t10 == 0); + + // $t11 := borrow_global>($t10) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:386:13+57 + if (!$ResourceExists($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $t10)) { + call $ExecFailureAbort(); + } else { + $t11 := $Mutation($Global($t10), EmptyVec(), $ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $t10)); + } + + // write_ref($t11, $t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:386:13+57 + $t11 := $UpdateMutation($t11, $t9); + + // write_back[coin::Ghost$supply<#0>@]($t11) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:386:13+57 + $1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory := $ResourceUpdate($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $GlobalLocationAddress($t11), + $Dereference($t11)); + + // $t12 := pack coin::Coin<#0>($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:388:9+27 + assume {:print "$at(94,14768,14795)"} true; + $t12 := $1_coin_Coin'$1_aptos_coin_AptosCoin'($t3); + + // trace_return[0]($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:388:9+27 + assume {:print "$track_return(23,14,0):", $t12} $t12 == $t12; + + // trace_local[coin]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:388:9+27 + $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin'' := $Dereference($t0); + assume {:print "$track_local(23,14,0):", $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin''} $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin'' == $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin''; + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:389:5+1 + assume {:print "$at(94,14800,14801)"} true; +L1: + + // return $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:389:5+1 + assume {:print "$at(94,14800,14801)"} true; + $ret0 := $t12; + $ret1 := $t0; + return; + +} + +// fun coin::is_account_registered [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:255:5+129 +procedure {:inline 1} $1_coin_is_account_registered'$1_aptos_coin_AptosCoin'(_$t0: int) returns ($ret0: bool) +{ + // declare local variables + var $t1: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t2: bool; + var $t0: int; + var $temp_0'address': int; + var $temp_0'bool': bool; + $t0 := _$t0; + + // bytecode translation starts here + // assume Identical($t1, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + assume {:print "$at(95,1664,1763)"} true; + assume ($t1 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + + // trace_local[account_addr]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:255:5+1 + assume {:print "$at(94,9353,9354)"} true; + assume {:print "$track_local(23,21,0):", $t0} $t0 == $t0; + + // $t2 := exists>($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:256:9+6 + assume {:print "$at(94,9435,9441)"} true; + $t2 := $ResourceExists($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $t0); + + // trace_return[0]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:256:9+41 + assume {:print "$track_return(23,21,0):", $t2} $t2 == $t2; + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:257:5+1 + assume {:print "$at(94,9481,9482)"} true; +L1: + + // return $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:257:5+1 + assume {:print "$at(94,9481,9482)"} true; + $ret0 := $t2; + return; + +} + +// fun coin::merge [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:500:5+469 +procedure {:inline 1} $1_coin_merge'$1_aptos_coin_AptosCoin'(_$t0: $Mutation ($1_coin_Coin'$1_aptos_coin_AptosCoin'), _$t1: $1_coin_Coin'$1_aptos_coin_AptosCoin') returns ($ret0: $Mutation ($1_coin_Coin'$1_aptos_coin_AptosCoin')) +{ + // declare local variables + var $t2: int; + var $t3: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t4: $1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'; + var $t5: int; + var $t6: $Mutation ($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'); + var $t7: int; + var $t8: $1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'; + var $t9: int; + var $t10: $Mutation ($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'); + var $t11: int; + var $t12: int; + var $t13: int; + var $t14: $Mutation (int); + var $t0: $Mutation ($1_coin_Coin'$1_aptos_coin_AptosCoin'); + var $t1: $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin'': $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // assume Identical($t3, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + assume {:print "$at(95,1664,1763)"} true; + assume ($t3 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + + // trace_local[dst_coin]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:500:5+1 + assume {:print "$at(94,19274,19275)"} true; + $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin'' := $Dereference($t0); + assume {:print "$track_local(23,24,0):", $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin''} $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin'' == $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin''; + + // trace_local[source_coin]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:500:5+1 + assume {:print "$track_local(23,24,1):", $t1} $t1 == $t1; + + // assume Le(Add(select coin::Coin.value($t0), select coin::Coin.value($t1)), 18446744073709551615) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:502:13+53 + assume {:print "$at(94,19390,19443)"} true; + assume (($value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($Dereference($t0)) + $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($t1)) <= 18446744073709551615); + + // assume Identical($t4, pack coin::Ghost$supply<#0>(Sub(select coin::Ghost$supply.v<#0>(global>(0x0)), select coin::Coin.value($t1)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:505:13+63 + assume {:print "$at(94,19482,19545)"} true; + assume ($t4 == $1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'(($v#$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, 0)) - $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($t1)))); + + // assume Identical($t5, 0x0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:505:13+63 + assume ($t5 == 0); + + // $t6 := borrow_global>($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:505:13+63 + if (!$ResourceExists($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $t5)) { + call $ExecFailureAbort(); + } else { + $t6 := $Mutation($Global($t5), EmptyVec(), $ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $t5)); + } + + // write_ref($t6, $t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:505:13+63 + $t6 := $UpdateMutation($t6, $t4); + + // write_back[coin::Ghost$supply<#0>@]($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:505:13+63 + $1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory := $ResourceUpdate($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $GlobalLocationAddress($t6), + $Dereference($t6)); + + // $t7 := unpack coin::Coin<#0>($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:507:13+14 + assume {:print "$at(94,19569,19583)"} true; + $t7 := $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($t1); + + // trace_local[value]($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:507:20+5 + assume {:print "$track_local(23,24,2):", $t7} $t7 == $t7; + + // assume Identical($t8, pack coin::Ghost$supply<#0>(Add(select coin::Ghost$supply.v<#0>(global>(0x0)), $t7))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:509:13+51 + assume {:print "$at(94,19626,19677)"} true; + assume ($t8 == $1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'(($v#$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, 0)) + $t7))); + + // assume Identical($t9, 0x0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:509:13+51 + assume ($t9 == 0); + + // $t10 := borrow_global>($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:509:13+51 + if (!$ResourceExists($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $t9)) { + call $ExecFailureAbort(); + } else { + $t10 := $Mutation($Global($t9), EmptyVec(), $ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $t9)); + } + + // write_ref($t10, $t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:509:13+51 + $t10 := $UpdateMutation($t10, $t8); + + // write_back[coin::Ghost$supply<#0>@]($t10) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:509:13+51 + $1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory := $ResourceUpdate($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $GlobalLocationAddress($t10), + $Dereference($t10)); + + // $t11 := get_field>.value($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:511:26+14 + assume {:print "$at(94,19714,19728)"} true; + $t11 := $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($Dereference($t0)); + + // $t12 := +($t11, $t7) on_abort goto L2 with $t13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:511:41+1 + call $t12 := $AddU64($t11, $t7); + if ($abort_flag) { + assume {:print "$at(94,19729,19730)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(23,24):", $t13} $t13 == $t13; + goto L2; + } + + // $t14 := borrow_field>.value($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:511:9+14 + $t14 := $ChildMutation($t0, 0, $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($Dereference($t0))); + + // write_ref($t14, $t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:511:9+39 + $t14 := $UpdateMutation($t14, $t12); + + // write_back[Reference($t0).value (u64)]($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:511:9+39 + $t0 := $UpdateMutation($t0, $Update'$1_coin_Coin'$1_aptos_coin_AptosCoin''_value($Dereference($t0), $Dereference($t14))); + + // trace_local[dst_coin]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:511:9+39 + $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin'' := $Dereference($t0); + assume {:print "$track_local(23,24,0):", $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin''} $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin'' == $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin''; + + // trace_local[dst_coin]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:511:48+1 + $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin'' := $Dereference($t0); + assume {:print "$track_local(23,24,0):", $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin''} $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin'' == $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin''; + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:512:5+1 + assume {:print "$at(94,19742,19743)"} true; +L1: + + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:512:5+1 + assume {:print "$at(94,19742,19743)"} true; + $ret0 := $t0; + return; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:512:5+1 +L2: + + // abort($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:512:5+1 + assume {:print "$at(94,19742,19743)"} true; + $abort_code := $t13; + $abort_flag := true; + return; + +} + +// fun coin::register [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:538:5+664 +procedure {:inline 1} $1_coin_register'$1_aptos_coin_AptosCoin'(_$t0: $signer) returns () +{ + // declare local variables + var $t1: int; + var $t2: $1_coin_CoinStore'$1_aptos_coin_AptosCoin'; + var $t3: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t4: int; + var $t5: $1_account_Account; + var $t6: int; + var $t7: int; + var $t8: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t9: bool; + var $t10: int; + var $t11: $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $t12: bool; + var $t13: int; + var $t14: $1_account_Account; + var $t15: $1_event_EventHandle'$1_coin_DepositEvent'; + var $t16: int; + var $t17: $1_account_Account; + var $t18: $1_event_EventHandle'$1_coin_WithdrawEvent'; + var $t19: $1_coin_CoinStore'$1_aptos_coin_AptosCoin'; + var $t0: $signer; + var $temp_0'$1_coin_CoinStore'$1_aptos_coin_AptosCoin'': $1_coin_CoinStore'$1_aptos_coin_AptosCoin'; + var $temp_0'address': int; + var $temp_0'signer': $signer; + $t0 := _$t0; + + // bytecode translation starts here + // assume Identical($t3, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + assume {:print "$at(95,1664,1763)"} true; + assume ($t3 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + + // assume Identical($t4, signer::$address_of($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:342:9+47 + assume {:print "$at(95,14541,14588)"} true; + assume ($t4 == $1_signer_$address_of($t0)); + + // assume Identical($t5, global($t4)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:343:9+49 + assume {:print "$at(95,14597,14646)"} true; + assume ($t5 == $ResourceValue($1_account_Account_$memory, $t4)); + + // trace_local[account]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:538:5+1 + assume {:print "$at(94,20583,20584)"} true; + assume {:print "$track_local(23,28,0):", $t0} $t0 == $t0; + + // $t6 := signer::address_of($t0) on_abort goto L3 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:539:28+27 + assume {:print "$at(94,20660,20687)"} true; + call $t6 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(94,20660,20687)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(23,28):", $t7} $t7 == $t7; + goto L3; + } + + // trace_local[account_addr]($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:539:13+12 + assume {:print "$track_local(23,28,1):", $t6} $t6 == $t6; + + // assume Identical($t8, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + assume {:print "$at(95,1664,1763)"} true; + assume ($t8 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + + // $t9 := coin::is_account_registered<#0>($t6) on_abort goto L3 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:541:13+45 + assume {:print "$at(94,20788,20833)"} true; + call $t9 := $1_coin_is_account_registered'$1_aptos_coin_AptosCoin'($t6); + if ($abort_flag) { + assume {:print "$at(94,20788,20833)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(23,28):", $t7} $t7 == $t7; + goto L3; + } + + // if ($t9) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:541:9+81 + if ($t9) { goto L1; } else { goto L0; } + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:542:13+6 + assume {:print "$at(94,20849,20855)"} true; +L1: + + // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:542:13+6 + assume {:print "$at(94,20849,20855)"} true; + goto L2; + + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:545:42+12 + assume {:print "$at(94,20909,20921)"} true; +L0: + + // account::register_coin<#0>($t6) on_abort goto L3 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:545:9+46 + assume {:print "$at(94,20876,20922)"} true; + call $1_account_register_coin'$1_aptos_coin_AptosCoin'($t6); + if ($abort_flag) { + assume {:print "$at(94,20876,20922)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(23,28):", $t7} $t7 == $t7; + goto L3; + } + + // $t10 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:547:33+1 + assume {:print "$at(94,21003,21004)"} true; + $t10 := 0; + assume $IsValid'u64'($t10); + + // $t11 := pack coin::Coin<#0>($t10) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:547:19+17 + $t11 := $1_coin_Coin'$1_aptos_coin_AptosCoin'($t10); + + // $t12 := false at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:548:21+5 + assume {:print "$at(94,21028,21033)"} true; + $t12 := false; + assume $IsValid'bool'($t12); + + // assume Identical($t13, signer::$address_of($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:444:9+39 + assume {:print "$at(73,21650,21689)"} true; + assume ($t13 == $1_signer_$address_of($t0)); + + // assume Identical($t14, global($t13)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:445:9+36 + assume {:print "$at(73,21698,21734)"} true; + assume ($t14 == $ResourceValue($1_account_Account_$memory, $t13)); + + // $t15 := account::new_event_handle($t0) on_abort goto L3 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:549:29+48 + assume {:print "$at(94,21063,21111)"} true; + call $t15 := $1_account_new_event_handle'$1_coin_DepositEvent'($t0); + if ($abort_flag) { + assume {:print "$at(94,21063,21111)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(23,28):", $t7} $t7 == $t7; + goto L3; + } + + // assume Identical($t16, signer::$address_of($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:444:9+39 + assume {:print "$at(73,21650,21689)"} true; + assume ($t16 == $1_signer_$address_of($t0)); + + // assume Identical($t17, global($t16)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:445:9+36 + assume {:print "$at(73,21698,21734)"} true; + assume ($t17 == $ResourceValue($1_account_Account_$memory, $t16)); + + // $t18 := account::new_event_handle($t0) on_abort goto L3 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:550:30+49 + assume {:print "$at(94,21142,21191)"} true; + call $t18 := $1_account_new_event_handle'$1_coin_WithdrawEvent'($t0); + if ($abort_flag) { + assume {:print "$at(94,21142,21191)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(23,28):", $t7} $t7 == $t7; + goto L3; + } + + // $t19 := pack coin::CoinStore<#0>($t11, $t12, $t15, $t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:546:26+253 + assume {:print "$at(94,20949,21202)"} true; + $t19 := $1_coin_CoinStore'$1_aptos_coin_AptosCoin'($t11, $t12, $t15, $t18); + + // trace_local[coin_store]($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:546:13+10 + assume {:print "$track_local(23,28,2):", $t19} $t19 == $t19; + + // move_to>($t19, $t0) on_abort goto L3 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:552:9+7 + assume {:print "$at(94,21212,21219)"} true; + if ($ResourceExists($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $addr#$signer($t0))) { + call $ExecFailureAbort(); + } else { + $1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory := $ResourceUpdate($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $addr#$signer($t0), $t19); + } + if ($abort_flag) { + assume {:print "$at(94,21212,21219)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(23,28):", $t7} $t7 == $t7; + goto L3; + } + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:553:5+1 + assume {:print "$at(94,21246,21247)"} true; +L2: + + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:553:5+1 + assume {:print "$at(94,21246,21247)"} true; + return; + + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:553:5+1 +L3: + + // abort($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:553:5+1 + assume {:print "$at(94,21246,21247)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun coin::withdraw [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:571:5+697 +procedure {:inline 1} $1_coin_withdraw'$1_aptos_coin_AptosCoin'(_$t0: $signer, _$t1: int) returns ($ret0: $1_coin_Coin'$1_aptos_coin_AptosCoin') +{ + // declare local variables + var $t2: int; + var $t3: $Mutation ($1_coin_CoinStore'$1_aptos_coin_AptosCoin'); + var $t4: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t5: int; + var $t6: $1_coin_CoinStore'$1_aptos_coin_AptosCoin'; + var $t7: int; + var $t8: int; + var $t9: $1_coin_CoinStore'$1_aptos_coin_AptosCoin'; + var $t10: int; + var $t11: int; + var $t12: int; + var $t13: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t14: bool; + var $t15: int; + var $t16: int; + var $t17: $Mutation ($1_coin_CoinStore'$1_aptos_coin_AptosCoin'); + var $t18: bool; + var $t19: bool; + var $t20: int; + var $t21: int; + var $t22: $Mutation ($1_event_EventHandle'$1_coin_WithdrawEvent'); + var $t23: $1_coin_WithdrawEvent; + var $t24: $Mutation ($1_coin_Coin'$1_aptos_coin_AptosCoin'); + var $t25: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t26: $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $t0: $signer; + var $t1: int; + var $1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$modifies: [int]bool; + var $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin'': $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $temp_0'$1_coin_CoinStore'$1_aptos_coin_AptosCoin'': $1_coin_CoinStore'$1_aptos_coin_AptosCoin'; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // assume Identical($t4, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + assume {:print "$at(95,1664,1763)"} true; + assume ($t4 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + + // assume Identical($t5, signer::$address_of($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:384:9+47 + assume {:print "$at(95,16622,16669)"} true; + assume ($t5 == $1_signer_$address_of($t0)); + + // assume Identical($t6, global>($t5)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:385:9+59 + assume {:print "$at(95,16678,16737)"} true; + assume ($t6 == $ResourceValue($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $t5)); + + // assume Identical($t7, select coin::Coin.value(select coin::CoinStore.coin($t6))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:386:9+36 + assume {:print "$at(95,16746,16782)"} true; + assume ($t7 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($coin#$1_coin_CoinStore'$1_aptos_coin_AptosCoin'($t6))); + + // assume Identical($t8, signer::$address_of($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:394:9+47 + assume {:print "$at(95,17076,17123)"} true; + assume ($t8 == $1_signer_$address_of($t0)); + + // assume Identical($t9, global>($t8)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:395:9+59 + assume {:print "$at(95,17132,17191)"} true; + assume ($t9 == $ResourceValue($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $t8)); + + // assume Identical($t10, select coin::Coin.value(select coin::CoinStore.coin($t9))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:396:9+36 + assume {:print "$at(95,17200,17236)"} true; + assume ($t10 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($coin#$1_coin_CoinStore'$1_aptos_coin_AptosCoin'($t9))); + + // trace_local[account]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:571:5+1 + assume {:print "$at(94,21754,21755)"} true; + assume {:print "$track_local(23,35,0):", $t0} $t0 == $t0; + + // trace_local[amount]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:571:5+1 + assume {:print "$track_local(23,35,1):", $t1} $t1 == $t1; + + // $t11 := signer::address_of($t0) on_abort goto L7 with $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:575:28+27 + assume {:print "$at(94,21902,21929)"} true; + call $t11 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(94,21902,21929)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(23,35):", $t12} $t12 == $t12; + goto L7; + } + + // trace_local[account_addr]($t11) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:575:13+12 + assume {:print "$track_local(23,35,2):", $t11} $t11 == $t11; + + // assume Identical($t13, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + assume {:print "$at(95,1664,1763)"} true; + assume ($t13 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + + // $t14 := coin::is_account_registered<#0>($t11) on_abort goto L7 with $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:577:13+45 + assume {:print "$at(94,21960,22005)"} true; + call $t14 := $1_coin_is_account_registered'$1_aptos_coin_AptosCoin'($t11); + if ($abort_flag) { + assume {:print "$at(94,21960,22005)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(23,35):", $t12} $t12 == $t12; + goto L7; + } + + // if ($t14) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:576:9+134 + assume {:print "$at(94,21939,22073)"} true; + if ($t14) { goto L1; } else { goto L0; } + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:576:9+134 +L1: + + // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:576:9+134 + assume {:print "$at(94,21939,22073)"} true; + goto L2; + + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:578:30+25 + assume {:print "$at(94,22036,22061)"} true; +L0: + + // $t15 := 5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:578:30+25 + assume {:print "$at(94,22036,22061)"} true; + $t15 := 5; + assume $IsValid'u64'($t15); + + // $t16 := error::not_found($t15) on_abort goto L7 with $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:578:13+43 + call $t16 := $1_error_not_found($t15); + if ($abort_flag) { + assume {:print "$at(94,22019,22062)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(23,35):", $t12} $t12 == $t12; + goto L7; + } + + // trace_abort($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:576:9+134 + assume {:print "$at(94,21939,22073)"} true; + assume {:print "$track_abort(23,35):", $t16} $t16 == $t16; + + // $t12 := move($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:576:9+134 + $t12 := $t16; + + // goto L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:576:9+134 + goto L7; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:581:65+12 + assume {:print "$at(94,22140,22152)"} true; +L2: + + // $t17 := borrow_global>($t11) on_abort goto L7 with $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:581:26+17 + assume {:print "$at(94,22101,22118)"} true; + if (!$ResourceExists($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $t11)) { + call $ExecFailureAbort(); + } else { + $t17 := $Mutation($Global($t11), EmptyVec(), $ResourceValue($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $t11)); + } + if ($abort_flag) { + assume {:print "$at(94,22101,22118)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(23,35):", $t12} $t12 == $t12; + goto L7; + } + + // trace_local[coin_store]($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:581:13+10 + $temp_0'$1_coin_CoinStore'$1_aptos_coin_AptosCoin'' := $Dereference($t17); + assume {:print "$track_local(23,35,3):", $temp_0'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''} $temp_0'$1_coin_CoinStore'$1_aptos_coin_AptosCoin'' == $temp_0'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''; + + // $t18 := get_field>.frozen($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:583:14+17 + assume {:print "$at(94,22185,22202)"} true; + $t18 := $frozen#$1_coin_CoinStore'$1_aptos_coin_AptosCoin'($Dereference($t17)); + + // $t19 := !($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:583:13+1 + call $t19 := $Not($t18); + + // if ($t19) goto L4 else goto L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:582:9+97 + assume {:print "$at(94,22163,22260)"} true; + if ($t19) { goto L4; } else { goto L3; } + + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:582:9+97 +L4: + + // goto L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:582:9+97 + assume {:print "$at(94,22163,22260)"} true; + goto L5; + + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:582:9+97 +L3: + + // destroy($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:582:9+97 + assume {:print "$at(94,22163,22260)"} true; + + // $t20 := 10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:584:38+7 + assume {:print "$at(94,22241,22248)"} true; + $t20 := 10; + assume $IsValid'u64'($t20); + + // $t21 := error::permission_denied($t20) on_abort goto L7 with $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:584:13+33 + call $t21 := $1_error_permission_denied($t20); + if ($abort_flag) { + assume {:print "$at(94,22216,22249)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(23,35):", $t12} $t12 == $t12; + goto L7; + } + + // trace_abort($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:582:9+97 + assume {:print "$at(94,22163,22260)"} true; + assume {:print "$track_abort(23,35):", $t21} $t21 == $t21; + + // $t12 := move($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:582:9+97 + $t12 := $t21; + + // goto L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:582:9+97 + goto L7; + + // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:588:18+10 + assume {:print "$at(94,22322,22332)"} true; +L5: + + // $t22 := borrow_field>.withdraw_events($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:588:13+31 + assume {:print "$at(94,22317,22348)"} true; + $t22 := $ChildMutation($t17, 3, $withdraw_events#$1_coin_CoinStore'$1_aptos_coin_AptosCoin'($Dereference($t17))); + + // $t23 := pack coin::WithdrawEvent($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:589:13+24 + assume {:print "$at(94,22362,22386)"} true; + $t23 := $1_coin_WithdrawEvent($t1); + + // opaque begin: event::emit_event($t22, $t23) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:587:9+126 + assume {:print "$at(94,22271,22397)"} true; + + // opaque end: event::emit_event($t22, $t23) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:587:9+126 + + // write_back[Reference($t17).withdraw_events (event::EventHandle)]($t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:587:9+126 + $t17 := $UpdateMutation($t17, $Update'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''_withdraw_events($Dereference($t17), $Dereference($t22))); + + // $t24 := borrow_field>.coin($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:592:17+20 + assume {:print "$at(94,22416,22436)"} true; + $t24 := $ChildMutation($t17, 0, $coin#$1_coin_CoinStore'$1_aptos_coin_AptosCoin'($Dereference($t17))); + + // assume Identical($t25, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + assume {:print "$at(95,1664,1763)"} true; + assume ($t25 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + + // $t26 := coin::extract<#0>($t24, $t1) on_abort goto L7 with $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:592:9+37 + assume {:print "$at(94,22408,22445)"} true; + call $t26,$t24 := $1_coin_extract'$1_aptos_coin_AptosCoin'($t24, $t1); + if ($abort_flag) { + assume {:print "$at(94,22408,22445)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(23,35):", $t12} $t12 == $t12; + goto L7; + } + + // write_back[Reference($t17).coin (coin::Coin<#0>)]($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:592:9+37 + $t17 := $UpdateMutation($t17, $Update'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''_coin($Dereference($t17), $Dereference($t24))); + + // write_back[coin::CoinStore<#0>@]($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:592:9+37 + $1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory := $ResourceUpdate($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $GlobalLocationAddress($t17), + $Dereference($t17)); + + // trace_return[0]($t26) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:592:9+37 + assume {:print "$track_return(23,35,0):", $t26} $t26 == $t26; + + // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:593:5+1 + assume {:print "$at(94,22450,22451)"} true; +L6: + + // return $t26 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:593:5+1 + assume {:print "$at(94,22450,22451)"} true; + $ret0 := $t26; + return; + + // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:593:5+1 +L7: + + // abort($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:593:5+1 + assume {:print "$at(94,22450,22451)"} true; + $abort_code := $t12; + $abort_flag := true; + return; + +} + +// fun coin::zero [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:596:5+193 +procedure {:inline 1} $1_coin_zero'$1_aptos_coin_AptosCoin'() returns ($ret0: $1_coin_Coin'$1_aptos_coin_AptosCoin') +{ + // declare local variables + var $t0: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t1: $1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'; + var $t2: int; + var $t3: $Mutation ($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'); + var $t4: int; + var $t5: $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin'': $1_coin_Coin'$1_aptos_coin_AptosCoin'; + + // bytecode translation starts here + // assume Identical($t0, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + assume {:print "$at(95,1664,1763)"} true; + assume ($t0 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + + // assume Identical($t1, pack coin::Ghost$supply<#0>(Add(select coin::Ghost$supply.v<#0>(global>(0x0)), 0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:598:13+47 + assume {:print "$at(94,22589,22636)"} true; + assume ($t1 == $1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'(($v#$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, 0)) + 0))); + + // assume Identical($t2, 0x0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:598:13+47 + assume ($t2 == 0); + + // $t3 := borrow_global>($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:598:13+47 + if (!$ResourceExists($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $t2)) { + call $ExecFailureAbort(); + } else { + $t3 := $Mutation($Global($t2), EmptyVec(), $ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $t2)); + } + + // write_ref($t3, $t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:598:13+47 + $t3 := $UpdateMutation($t3, $t1); + + // write_back[coin::Ghost$supply<#0>@]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:598:13+47 + $1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory := $ResourceUpdate($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $GlobalLocationAddress($t3), + $Dereference($t3)); + + // $t4 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:601:20+1 + assume {:print "$at(94,22692,22693)"} true; + $t4 := 0; + assume $IsValid'u64'($t4); + + // $t5 := pack coin::Coin<#0>($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:600:9+47 + assume {:print "$at(94,22656,22703)"} true; + $t5 := $1_coin_Coin'$1_aptos_coin_AptosCoin'($t4); + + // trace_return[0]($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:600:9+47 + assume {:print "$track_return(23,36,0):", $t5} $t5 == $t5; + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:603:5+1 + assume {:print "$at(94,22708,22709)"} true; +L1: + + // return $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:603:5+1 + assume {:print "$at(94,22708,22709)"} true; + $ret0 := $t5; + return; + +} + +// struct aptos_coin::AptosCoin at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_coin.move:22:5+27 +type {:datatype} $1_aptos_coin_AptosCoin; +function {:constructor} $1_aptos_coin_AptosCoin($dummy_field: bool): $1_aptos_coin_AptosCoin; +function {:inline} $Update'$1_aptos_coin_AptosCoin'_dummy_field(s: $1_aptos_coin_AptosCoin, x: bool): $1_aptos_coin_AptosCoin { + $1_aptos_coin_AptosCoin(x) +} +function $IsValid'$1_aptos_coin_AptosCoin'(s: $1_aptos_coin_AptosCoin): bool { + $IsValid'bool'($dummy_field#$1_aptos_coin_AptosCoin(s)) +} +function {:inline} $IsEqual'$1_aptos_coin_AptosCoin'(s1: $1_aptos_coin_AptosCoin, s2: $1_aptos_coin_AptosCoin): bool { + s1 == s2 +} +var $1_aptos_coin_AptosCoin_$memory: $Memory $1_aptos_coin_AptosCoin; + +// struct aptos_account::DirectCoinTransferConfigUpdatedEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:34:5+109 +type {:datatype} $1_aptos_account_DirectCoinTransferConfigUpdatedEvent; +function {:constructor} $1_aptos_account_DirectCoinTransferConfigUpdatedEvent($new_allow_direct_transfers: bool): $1_aptos_account_DirectCoinTransferConfigUpdatedEvent; +function {:inline} $Update'$1_aptos_account_DirectCoinTransferConfigUpdatedEvent'_new_allow_direct_transfers(s: $1_aptos_account_DirectCoinTransferConfigUpdatedEvent, x: bool): $1_aptos_account_DirectCoinTransferConfigUpdatedEvent { + $1_aptos_account_DirectCoinTransferConfigUpdatedEvent(x) +} +function $IsValid'$1_aptos_account_DirectCoinTransferConfigUpdatedEvent'(s: $1_aptos_account_DirectCoinTransferConfigUpdatedEvent): bool { + $IsValid'bool'($new_allow_direct_transfers#$1_aptos_account_DirectCoinTransferConfigUpdatedEvent(s)) +} +function {:inline} $IsEqual'$1_aptos_account_DirectCoinTransferConfigUpdatedEvent'(s1: $1_aptos_account_DirectCoinTransferConfigUpdatedEvent, s2: $1_aptos_account_DirectCoinTransferConfigUpdatedEvent): bool { + s1 == s2 +} + +// struct aptos_account::DirectTransferConfig at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:28:5+177 +type {:datatype} $1_aptos_account_DirectTransferConfig; +function {:constructor} $1_aptos_account_DirectTransferConfig($allow_arbitrary_coin_transfers: bool, $update_coin_transfer_events: $1_event_EventHandle'$1_aptos_account_DirectCoinTransferConfigUpdatedEvent'): $1_aptos_account_DirectTransferConfig; +function {:inline} $Update'$1_aptos_account_DirectTransferConfig'_allow_arbitrary_coin_transfers(s: $1_aptos_account_DirectTransferConfig, x: bool): $1_aptos_account_DirectTransferConfig { + $1_aptos_account_DirectTransferConfig(x, $update_coin_transfer_events#$1_aptos_account_DirectTransferConfig(s)) +} +function {:inline} $Update'$1_aptos_account_DirectTransferConfig'_update_coin_transfer_events(s: $1_aptos_account_DirectTransferConfig, x: $1_event_EventHandle'$1_aptos_account_DirectCoinTransferConfigUpdatedEvent'): $1_aptos_account_DirectTransferConfig { + $1_aptos_account_DirectTransferConfig($allow_arbitrary_coin_transfers#$1_aptos_account_DirectTransferConfig(s), x) +} +function $IsValid'$1_aptos_account_DirectTransferConfig'(s: $1_aptos_account_DirectTransferConfig): bool { + $IsValid'bool'($allow_arbitrary_coin_transfers#$1_aptos_account_DirectTransferConfig(s)) + && $IsValid'$1_event_EventHandle'$1_aptos_account_DirectCoinTransferConfigUpdatedEvent''($update_coin_transfer_events#$1_aptos_account_DirectTransferConfig(s)) +} +function {:inline} $IsEqual'$1_aptos_account_DirectTransferConfig'(s1: $1_aptos_account_DirectTransferConfig, s2: $1_aptos_account_DirectTransferConfig): bool { + s1 == s2 +} +var $1_aptos_account_DirectTransferConfig_$memory: $Memory $1_aptos_account_DirectTransferConfig; + +// fun aptos_account::create_account [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:42:5+158 +procedure {:inline 1} $1_aptos_account_create_account(_$t0: int) returns () +{ + // declare local variables + var $t1: $signer; + var $t2: Vec (int); + var $t3: $signer; + var $t4: int; + var $t5: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t6: int; + var $t7: $1_account_Account; + var $t0: int; + var $temp_0'address': int; + var $temp_0'signer': $signer; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[auth_key]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:42:5+1 + assume {:print "$at(80,1826,1827)"} true; + assume {:print "$track_local(25,5,0):", $t0} $t0 == $t0; + + // assume Identical($t2, bcs::$to_bytes
($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:34:9+45 + assume {:print "$at(73,1495,1540)"} true; + assume ($t2 == $1_bcs_$to_bytes'address'($t0)); + + // $t3 := account::create_account($t0) on_abort goto L2 with $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:43:22+33 + assume {:print "$at(80,1900,1933)"} true; + call $t3 := $1_account_create_account($t0); + if ($abort_flag) { + assume {:print "$at(80,1900,1933)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(25,5):", $t4} $t4 == $t4; + goto L2; + } + + // trace_local[signer]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:43:13+6 + assume {:print "$track_local(25,5,1):", $t3} $t3 == $t3; + + // assume Identical($t5, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + assume {:print "$at(95,1664,1763)"} true; + assume ($t5 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + + // assume Identical($t6, signer::$address_of($t3)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:342:9+47 + assume {:print "$at(95,14541,14588)"} true; + assume ($t6 == $1_signer_$address_of($t3)); + + // assume Identical($t7, global($t6)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:343:9+49 + assume {:print "$at(95,14597,14646)"} true; + assume ($t7 == $ResourceValue($1_account_Account_$memory, $t6)); + + // coin::register($t3) on_abort goto L2 with $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:44:9+34 + assume {:print "$at(80,1943,1977)"} true; + call $1_coin_register'$1_aptos_coin_AptosCoin'($t3); + if ($abort_flag) { + assume {:print "$at(80,1943,1977)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(25,5):", $t4} $t4 == $t4; + goto L2; + } + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:45:5+1 + assume {:print "$at(80,1983,1984)"} true; +L1: + + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:45:5+1 + assume {:print "$at(80,1983,1984)"} true; + return; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:45:5+1 +L2: + + // abort($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:45:5+1 + assume {:print "$at(80,1983,1984)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun aptos_account::assert_account_exists [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:117:5+136 +procedure {:inline 1} $1_aptos_account_assert_account_exists(_$t0: int) returns () +{ + // declare local variables + var $t1: bool; + var $t2: int; + var $t3: int; + var $t4: int; + var $t0: int; + var $temp_0'address': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[addr]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:117:5+1 + assume {:print "$at(80,5296,5297)"} true; + assume {:print "$track_local(25,0,0):", $t0} $t0 == $t0; + + // $t1 := account::exists_at($t0) on_abort goto L4 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:118:17+24 + assume {:print "$at(80,5362,5386)"} true; + call $t1 := $1_account_exists_at($t0); + if ($abort_flag) { + assume {:print "$at(80,5362,5386)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(25,0):", $t2} $t2 == $t2; + goto L4; + } + + // if ($t1) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:118:9+71 + if ($t1) { goto L1; } else { goto L0; } + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:118:9+71 +L1: + + // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:118:9+71 + assume {:print "$at(80,5354,5425)"} true; + goto L2; + + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:118:60+18 +L0: + + // $t3 := 1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:118:60+18 + assume {:print "$at(80,5405,5423)"} true; + $t3 := 1; + assume $IsValid'u64'($t3); + + // $t4 := error::not_found($t3) on_abort goto L4 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:118:43+36 + call $t4 := $1_error_not_found($t3); + if ($abort_flag) { + assume {:print "$at(80,5388,5424)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(25,0):", $t2} $t2 == $t2; + goto L4; + } + + // trace_abort($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:118:9+71 + assume {:print "$at(80,5354,5425)"} true; + assume {:print "$track_abort(25,0):", $t4} $t4 == $t4; + + // $t2 := move($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:118:9+71 + $t2 := $t4; + + // goto L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:118:9+71 + goto L4; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:118:80+1 +L2: + + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:119:5+1 + assume {:print "$at(80,5431,5432)"} true; +L3: + + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:119:5+1 + assume {:print "$at(80,5431,5432)"} true; + return; + + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:119:5+1 +L4: + + // abort($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:119:5+1 + assume {:print "$at(80,5431,5432)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun aptos_account::assert_account_is_registered_for_apt [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:121:5+221 +procedure {:inline 1} $1_aptos_account_assert_account_is_registered_for_apt(_$t0: int) returns () +{ + // declare local variables + var $t1: int; + var $t2: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t3: bool; + var $t4: int; + var $t5: int; + var $t0: int; + var $temp_0'address': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[addr]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:121:5+1 + assume {:print "$at(80,5438,5439)"} true; + assume {:print "$track_local(25,1,0):", $t0} $t0 == $t0; + + // aptos_account::assert_account_exists($t0) on_abort goto L4 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:122:9+27 + assume {:print "$at(80,5511,5538)"} true; + call $1_aptos_account_assert_account_exists($t0); + if ($abort_flag) { + assume {:print "$at(80,5511,5538)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(25,1):", $t1} $t1 == $t1; + goto L4; + } + + // assume Identical($t2, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + assume {:print "$at(95,1664,1763)"} true; + assume ($t2 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + + // $t3 := coin::is_account_registered($t0) on_abort goto L4 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:123:17+44 + assume {:print "$at(80,5556,5600)"} true; + call $t3 := $1_coin_is_account_registered'$1_aptos_coin_AptosCoin'($t0); + if ($abort_flag) { + assume {:print "$at(80,5556,5600)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(25,1):", $t1} $t1 == $t1; + goto L4; + } + + // if ($t3) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:123:9+104 + if ($t3) { goto L1; } else { goto L0; } + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:123:9+104 +L1: + + // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:123:9+104 + assume {:print "$at(80,5548,5652)"} true; + goto L2; + + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:123:80+31 +L0: + + // $t4 := 2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:123:80+31 + assume {:print "$at(80,5619,5650)"} true; + $t4 := 2; + assume $IsValid'u64'($t4); + + // $t5 := error::not_found($t4) on_abort goto L4 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:123:63+49 + call $t5 := $1_error_not_found($t4); + if ($abort_flag) { + assume {:print "$at(80,5602,5651)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(25,1):", $t1} $t1 == $t1; + goto L4; + } + + // trace_abort($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:123:9+104 + assume {:print "$at(80,5548,5652)"} true; + assume {:print "$track_abort(25,1):", $t5} $t5 == $t5; + + // $t1 := move($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:123:9+104 + $t1 := $t5; + + // goto L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:123:9+104 + goto L4; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:123:113+1 +L2: + + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:124:5+1 + assume {:print "$at(80,5658,5659)"} true; +L3: + + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:124:5+1 + assume {:print "$at(80,5658,5659)"} true; + return; + + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:124:5+1 +L4: + + // abort($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:124:5+1 + assume {:print "$at(80,5658,5659)"} true; + $abort_code := $t1; + $abort_flag := true; + return; + +} + +// fun aptos_account::can_receive_direct_coin_transfers [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:157:5+244 +procedure {:inline 1} $1_aptos_account_can_receive_direct_coin_transfers(_$t0: int) returns ($ret0: bool) +{ + // declare local variables + var $t1: bool; + var $t2: bool; + var $t3: bool; + var $t4: bool; + var $t5: $1_aptos_account_DirectTransferConfig; + var $t6: int; + var $t0: int; + var $temp_0'address': int; + var $temp_0'bool': bool; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[account]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:157:5+1 + assume {:print "$at(80,7365,7366)"} true; + assume {:print "$track_local(25,4,0):", $t0} $t0 == $t0; + + // $t2 := exists($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:158:10+6 + assume {:print "$at(80,7475,7481)"} true; + $t2 := $ResourceExists($1_aptos_account_DirectTransferConfig_$memory, $t0); + + // $t3 := !($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:158:9+1 + call $t3 := $Not($t2); + + // if ($t3) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:158:9+129 + if ($t3) { goto L1; } else { goto L0; } + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:158:9+129 +L1: + + // $t4 := true at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:158:9+129 + assume {:print "$at(80,7474,7603)"} true; + $t4 := true; + assume $IsValid'bool'($t4); + + // $t1 := $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:158:9+129 + $t1 := $t4; + + // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:158:9+129 + goto L2; + + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:159:49+7 + assume {:print "$at(80,7564,7571)"} true; +L0: + + // $t5 := get_global($t0) on_abort goto L4 with $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:159:13+13 + assume {:print "$at(80,7528,7541)"} true; + if (!$ResourceExists($1_aptos_account_DirectTransferConfig_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t5 := $ResourceValue($1_aptos_account_DirectTransferConfig_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(80,7528,7541)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(25,4):", $t6} $t6 == $t6; + goto L4; + } + + // $t1 := get_field.allow_arbitrary_coin_transfers($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:159:13+75 + $t1 := $allow_arbitrary_coin_transfers#$1_aptos_account_DirectTransferConfig($t5); + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:158:9+129 + assume {:print "$at(80,7474,7603)"} true; +L2: + + // trace_return[0]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:158:9+129 + assume {:print "$at(80,7474,7603)"} true; + assume {:print "$track_return(25,4,0):", $t1} $t1 == $t1; + + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:160:5+1 + assume {:print "$at(80,7608,7609)"} true; +L3: + + // return $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:160:5+1 + assume {:print "$at(80,7608,7609)"} true; + $ret0 := $t1; + return; + + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:160:5+1 +L4: + + // abort($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:160:5+1 + assume {:print "$at(80,7608,7609)"} true; + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// fun aptos_account::deposit_coins [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:98:5+820 +procedure {:inline 1} $1_aptos_account_deposit_coins'$1_aptos_coin_AptosCoin'(_$t0: int, _$t1: $1_coin_Coin'$1_aptos_coin_AptosCoin') returns () +{ + // declare local variables + var $t2: $signer; + var $t3: $1_account_Account; + var $t4: bool; + var $t5: int; + var $t6: bool; + var $t7: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t8: bool; + var $t9: bool; + var $t10: bool; + var $t11: int; + var $t12: int; + var $t13: $signer; + var $t14: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t15: int; + var $t16: $1_account_Account; + var $t17: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t0: int; + var $t1: $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin'': $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $temp_0'address': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // assume Identical($t3, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.spec.move:200:9+39 + assume {:print "$at(81,9368,9407)"} true; + assume ($t3 == $ResourceValue($1_account_Account_$memory, $t0)); + + // trace_local[to]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:98:5+1 + assume {:print "$at(80,4470,4471)"} true; + assume {:print "$track_local(25,6,0):", $t0} $t0 == $t0; + + // trace_local[coins]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:98:5+1 + assume {:print "$track_local(25,6,1):", $t1} $t1 == $t1; + + // $t4 := account::exists_at($t0) on_abort goto L8 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:99:14+22 + assume {:print "$at(80,4586,4608)"} true; + call $t4 := $1_account_exists_at($t0); + if ($abort_flag) { + assume {:print "$at(80,4586,4608)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(25,6):", $t5} $t5 == $t5; + goto L8; + } + + // $t6 := !($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:99:13+1 + call $t6 := $Not($t4); + + // if ($t6) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:99:9+351 + if ($t6) { goto L1; } else { goto L0; } + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:100:28+2 + assume {:print "$at(80,4639,4641)"} true; +L1: + + // aptos_account::create_account($t0) on_abort goto L8 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:100:13+18 + assume {:print "$at(80,4624,4642)"} true; + call $1_aptos_account_create_account($t0); + if ($abort_flag) { + assume {:print "$at(80,4624,4642)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(25,6):", $t5} $t5 == $t5; + goto L8; + } + + // assert coin::$is_account_registered($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:102:17+50 + assume {:print "$at(80,4679,4729)"} true; + assert {:msg "assert_failed(80,4679,4729): unknown assertion failed"} + $1_coin_$is_account_registered'$1_aptos_coin_AptosCoin'($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $t0); + + // assume Implies(Eq(type_info::$type_of<#0>(), type_info::$type_of()), coin::$is_account_registered<#0>($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:103:17+161 + assume {:print "$at(80,4746,4907)"} true; + assume ($IsEqual'$1_type_info_TypeInfo'($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)), $1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9))) ==> $1_coin_$is_account_registered'$1_aptos_coin_AptosCoin'($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $t0)); + + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:107:52+2 + assume {:print "$at(80,4985,4987)"} true; +L0: + + // assume Identical($t7, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + assume {:print "$at(95,1664,1763)"} true; + assume ($t7 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + + // $t8 := coin::is_account_registered<#0>($t0) on_abort goto L8 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:107:14+41 + assume {:print "$at(80,4947,4988)"} true; + call $t8 := $1_coin_is_account_registered'$1_aptos_coin_AptosCoin'($t0); + if ($abort_flag) { + assume {:print "$at(80,4947,4988)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(25,6):", $t5} $t5 == $t5; + goto L8; + } + + // $t9 := !($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:107:13+1 + call $t9 := $Not($t8); + + // if ($t9) goto L3 else goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:107:9+298 + if ($t9) { goto L3; } else { goto L2; } + + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:109:51+2 + assume {:print "$at(80,5063,5065)"} true; +L3: + + // $t10 := aptos_account::can_receive_direct_coin_transfers($t0) on_abort goto L8 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:109:17+37 + assume {:print "$at(80,5029,5066)"} true; + call $t10 := $1_aptos_account_can_receive_direct_coin_transfers($t0); + if ($abort_flag) { + assume {:print "$at(80,5029,5066)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(25,6):", $t5} $t5 == $t5; + goto L8; + } + + // if ($t10) goto L5 else goto L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:108:13+167 + assume {:print "$at(80,5004,5171)"} true; + if ($t10) { goto L5; } else { goto L4; } + + // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:108:13+167 +L5: + + // goto L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:108:13+167 + assume {:print "$at(80,5004,5171)"} true; + goto L6; + + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:110:42+46 + assume {:print "$at(80,5109,5155)"} true; +L4: + + // $t11 := 3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:110:42+46 + assume {:print "$at(80,5109,5155)"} true; + $t11 := 3; + assume $IsValid'u64'($t11); + + // $t12 := error::permission_denied($t11) on_abort goto L8 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:110:17+72 + call $t12 := $1_error_permission_denied($t11); + if ($abort_flag) { + assume {:print "$at(80,5084,5156)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(25,6):", $t5} $t5 == $t5; + goto L8; + } + + // trace_abort($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:108:13+167 + assume {:print "$at(80,5004,5171)"} true; + assume {:print "$track_abort(25,6):", $t12} $t12 == $t12; + + // $t5 := move($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:108:13+167 + $t5 := $t12; + + // goto L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:108:13+167 + goto L8; + + // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:112:53+2 + assume {:print "$at(80,5225,5227)"} true; +L6: + + // $t13 := opaque begin: create_signer::create_signer($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:112:39+17 + assume {:print "$at(80,5211,5228)"} true; + + // assume WellFormed($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:112:39+17 + assume $IsValid'signer'($t13) && $1_signer_is_txn_signer($t13) && $1_signer_is_txn_signer_addr($addr#$signer($t13)); + + // assume Eq
(signer::$address_of($t13), $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:112:39+17 + assume $IsEqual'address'($1_signer_$address_of($t13), $t0); + + // $t13 := opaque end: create_signer::create_signer($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:112:39+17 + + // assume Identical($t14, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + assume {:print "$at(95,1664,1763)"} true; + assume ($t14 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + + // assume Identical($t15, signer::$address_of($t13)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:342:9+47 + assume {:print "$at(95,14541,14588)"} true; + assume ($t15 == $1_signer_$address_of($t13)); + + // assume Identical($t16, global($t15)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:343:9+49 + assume {:print "$at(95,14597,14646)"} true; + assume ($t16 == $ResourceValue($1_account_Account_$memory, $t15)); + + // coin::register<#0>($t13) on_abort goto L8 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:112:13+44 + assume {:print "$at(80,5185,5229)"} true; + call $1_coin_register'$1_aptos_coin_AptosCoin'($t13); + if ($abort_flag) { + assume {:print "$at(80,5185,5229)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(25,6):", $t5} $t5 == $t5; + goto L8; + } + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:114:33+2 + assume {:print "$at(80,5274,5276)"} true; +L2: + + // assume Identical($t17, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + assume {:print "$at(95,1664,1763)"} true; + assume ($t17 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + + // coin::deposit<#0>($t0, $t1) on_abort goto L8 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:114:9+34 + assume {:print "$at(80,5250,5284)"} true; + call $1_coin_deposit'$1_aptos_coin_AptosCoin'($t0, $t1); + if ($abort_flag) { + assume {:print "$at(80,5250,5284)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(25,6):", $t5} $t5 == $t5; + goto L8; + } + + // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:115:5+1 + assume {:print "$at(80,5289,5290)"} true; +L7: + + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:115:5+1 + assume {:print "$at(80,5289,5290)"} true; + return; + + // label L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:115:5+1 +L8: + + // abort($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:115:5+1 + assume {:print "$at(80,5289,5290)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/chain_status.move:35:5+90 +function {:inline} $1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory: $Memory $1_chain_status_GenesisEndMarker): bool { + $ResourceExists($1_chain_status_GenesisEndMarker_$memory, 1) +} + +// struct chain_status::GenesisEndMarker at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/chain_status.move:12:5+34 +type {:datatype} $1_chain_status_GenesisEndMarker; +function {:constructor} $1_chain_status_GenesisEndMarker($dummy_field: bool): $1_chain_status_GenesisEndMarker; +function {:inline} $Update'$1_chain_status_GenesisEndMarker'_dummy_field(s: $1_chain_status_GenesisEndMarker, x: bool): $1_chain_status_GenesisEndMarker { + $1_chain_status_GenesisEndMarker(x) +} +function $IsValid'$1_chain_status_GenesisEndMarker'(s: $1_chain_status_GenesisEndMarker): bool { + $IsValid'bool'($dummy_field#$1_chain_status_GenesisEndMarker(s)) +} +function {:inline} $IsEqual'$1_chain_status_GenesisEndMarker'(s1: $1_chain_status_GenesisEndMarker, s2: $1_chain_status_GenesisEndMarker): bool { + s1 == s2 +} +var $1_chain_status_GenesisEndMarker_$memory: $Memory $1_chain_status_GenesisEndMarker; + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:61:5+153 +function {:inline} $1_timestamp_$now_microseconds($1_timestamp_CurrentTimeMicroseconds_$memory: $Memory $1_timestamp_CurrentTimeMicroseconds): int { + $microseconds#$1_timestamp_CurrentTimeMicroseconds($ResourceValue($1_timestamp_CurrentTimeMicroseconds_$memory, 1)) +} + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:67:5+123 +function {:inline} $1_timestamp_$now_seconds($1_timestamp_CurrentTimeMicroseconds_$memory: $Memory $1_timestamp_CurrentTimeMicroseconds): int { + ($1_timestamp_$now_microseconds($1_timestamp_CurrentTimeMicroseconds_$memory) div 1000000) +} + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.spec.move:22:10+111 +function {:inline} $1_timestamp_spec_now_microseconds($1_timestamp_CurrentTimeMicroseconds_$memory: $Memory $1_timestamp_CurrentTimeMicroseconds): int { + $microseconds#$1_timestamp_CurrentTimeMicroseconds($ResourceValue($1_timestamp_CurrentTimeMicroseconds_$memory, 1)) +} + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.spec.move:26:10+93 +function {:inline} $1_timestamp_spec_now_seconds($1_timestamp_CurrentTimeMicroseconds_$memory: $Memory $1_timestamp_CurrentTimeMicroseconds): int { + ($1_timestamp_spec_now_microseconds($1_timestamp_CurrentTimeMicroseconds_$memory) div 1000000) +} + +// struct timestamp::CurrentTimeMicroseconds at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:12:5+73 +type {:datatype} $1_timestamp_CurrentTimeMicroseconds; +function {:constructor} $1_timestamp_CurrentTimeMicroseconds($microseconds: int): $1_timestamp_CurrentTimeMicroseconds; +function {:inline} $Update'$1_timestamp_CurrentTimeMicroseconds'_microseconds(s: $1_timestamp_CurrentTimeMicroseconds, x: int): $1_timestamp_CurrentTimeMicroseconds { + $1_timestamp_CurrentTimeMicroseconds(x) +} +function $IsValid'$1_timestamp_CurrentTimeMicroseconds'(s: $1_timestamp_CurrentTimeMicroseconds): bool { + $IsValid'u64'($microseconds#$1_timestamp_CurrentTimeMicroseconds(s)) +} +function {:inline} $IsEqual'$1_timestamp_CurrentTimeMicroseconds'(s1: $1_timestamp_CurrentTimeMicroseconds, s2: $1_timestamp_CurrentTimeMicroseconds): bool { + s1 == s2 +} +var $1_timestamp_CurrentTimeMicroseconds_$memory: $Memory $1_timestamp_CurrentTimeMicroseconds; + +// fun timestamp::now_microseconds [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:61:5+153 +procedure {:inline 1} $1_timestamp_now_microseconds() returns ($ret0: int) +{ + // declare local variables + var $t0: int; + var $t1: $1_timestamp_CurrentTimeMicroseconds; + var $t2: int; + var $t3: int; + var $temp_0'u64': int; + + // bytecode translation starts here + // $t0 := 0x1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:62:48+16 + assume {:print "$at(143,2511,2527)"} true; + $t0 := 1; + assume $IsValid'address'($t0); + + // $t1 := get_global($t0) on_abort goto L2 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:62:9+13 + if (!$ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t1 := $ResourceValue($1_timestamp_CurrentTimeMicroseconds_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(143,2472,2485)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(28,0):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := get_field.microseconds($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:62:9+69 + $t3 := $microseconds#$1_timestamp_CurrentTimeMicroseconds($t1); + + // trace_return[0]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:62:9+69 + assume {:print "$track_return(28,0,0):", $t3} $t3 == $t3; + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:63:5+1 + assume {:print "$at(143,2546,2547)"} true; +L1: + + // return $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:63:5+1 + assume {:print "$at(143,2546,2547)"} true; + $ret0 := $t3; + return; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:63:5+1 +L2: + + // abort($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:63:5+1 + assume {:print "$at(143,2546,2547)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun timestamp::now_seconds [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:67:5+123 +procedure {:inline 1} $1_timestamp_now_seconds() returns ($ret0: int) +{ + // declare local variables + var $t0: int; + var $t1: int; + var $t2: int; + var $t3: int; + var $temp_0'u64': int; + + // bytecode translation starts here + // $t0 := timestamp::now_microseconds() on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:68:9+18 + assume {:print "$at(143,2680,2698)"} true; + call $t0 := $1_timestamp_now_microseconds(); + if ($abort_flag) { + assume {:print "$at(143,2680,2698)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(28,1):", $t1} $t1 == $t1; + goto L2; + } + + // $t2 := 1000000 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:68:30+23 + $t2 := 1000000; + assume $IsValid'u64'($t2); + + // $t3 := /($t0, $t2) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:68:28+1 + call $t3 := $Div($t0, $t2); + if ($abort_flag) { + assume {:print "$at(143,2699,2700)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(28,1):", $t1} $t1 == $t1; + goto L2; + } + + // trace_return[0]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:68:9+44 + assume {:print "$track_return(28,1,0):", $t3} $t3 == $t3; + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:69:5+1 + assume {:print "$at(143,2729,2730)"} true; +L1: + + // return $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:69:5+1 + assume {:print "$at(143,2729,2730)"} true; + $ret0 := $t3; + return; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:69:5+1 +L2: + + // abort($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:69:5+1 + assume {:print "$at(143,2729,2730)"} true; + $abort_code := $t1; + $abort_flag := true; + return; + +} + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/fixed_point32.move:55:10+109 +function {:inline} $1_fixed_point32_spec_multiply_u64(val: int, multiplier: $1_fixed_point32_FixedPoint32): int { + $shr((val * $value#$1_fixed_point32_FixedPoint32(multiplier)), 32) +} + +// struct fixed_point32::FixedPoint32 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/fixed_point32.move:15:5+56 +type {:datatype} $1_fixed_point32_FixedPoint32; +function {:constructor} $1_fixed_point32_FixedPoint32($value: int): $1_fixed_point32_FixedPoint32; +function {:inline} $Update'$1_fixed_point32_FixedPoint32'_value(s: $1_fixed_point32_FixedPoint32, x: int): $1_fixed_point32_FixedPoint32 { + $1_fixed_point32_FixedPoint32(x) +} +function $IsValid'$1_fixed_point32_FixedPoint32'(s: $1_fixed_point32_FixedPoint32): bool { + $IsValid'u64'($value#$1_fixed_point32_FixedPoint32(s)) +} +function {:inline} $IsEqual'$1_fixed_point32_FixedPoint32'(s1: $1_fixed_point32_FixedPoint32, s2: $1_fixed_point32_FixedPoint32): bool { + s1 == s2 +} + +// struct staking_config::StakingConfig at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/configs/staking_config.move:49:5+1753 +type {:datatype} $1_staking_config_StakingConfig; +function {:constructor} $1_staking_config_StakingConfig($minimum_stake: int, $maximum_stake: int, $recurring_lockup_duration_secs: int, $allow_validator_set_change: bool, $rewards_rate: int, $rewards_rate_denominator: int, $voting_power_increase_limit: int): $1_staking_config_StakingConfig; +function {:inline} $Update'$1_staking_config_StakingConfig'_minimum_stake(s: $1_staking_config_StakingConfig, x: int): $1_staking_config_StakingConfig { + $1_staking_config_StakingConfig(x, $maximum_stake#$1_staking_config_StakingConfig(s), $recurring_lockup_duration_secs#$1_staking_config_StakingConfig(s), $allow_validator_set_change#$1_staking_config_StakingConfig(s), $rewards_rate#$1_staking_config_StakingConfig(s), $rewards_rate_denominator#$1_staking_config_StakingConfig(s), $voting_power_increase_limit#$1_staking_config_StakingConfig(s)) +} +function {:inline} $Update'$1_staking_config_StakingConfig'_maximum_stake(s: $1_staking_config_StakingConfig, x: int): $1_staking_config_StakingConfig { + $1_staking_config_StakingConfig($minimum_stake#$1_staking_config_StakingConfig(s), x, $recurring_lockup_duration_secs#$1_staking_config_StakingConfig(s), $allow_validator_set_change#$1_staking_config_StakingConfig(s), $rewards_rate#$1_staking_config_StakingConfig(s), $rewards_rate_denominator#$1_staking_config_StakingConfig(s), $voting_power_increase_limit#$1_staking_config_StakingConfig(s)) +} +function {:inline} $Update'$1_staking_config_StakingConfig'_recurring_lockup_duration_secs(s: $1_staking_config_StakingConfig, x: int): $1_staking_config_StakingConfig { + $1_staking_config_StakingConfig($minimum_stake#$1_staking_config_StakingConfig(s), $maximum_stake#$1_staking_config_StakingConfig(s), x, $allow_validator_set_change#$1_staking_config_StakingConfig(s), $rewards_rate#$1_staking_config_StakingConfig(s), $rewards_rate_denominator#$1_staking_config_StakingConfig(s), $voting_power_increase_limit#$1_staking_config_StakingConfig(s)) +} +function {:inline} $Update'$1_staking_config_StakingConfig'_allow_validator_set_change(s: $1_staking_config_StakingConfig, x: bool): $1_staking_config_StakingConfig { + $1_staking_config_StakingConfig($minimum_stake#$1_staking_config_StakingConfig(s), $maximum_stake#$1_staking_config_StakingConfig(s), $recurring_lockup_duration_secs#$1_staking_config_StakingConfig(s), x, $rewards_rate#$1_staking_config_StakingConfig(s), $rewards_rate_denominator#$1_staking_config_StakingConfig(s), $voting_power_increase_limit#$1_staking_config_StakingConfig(s)) +} +function {:inline} $Update'$1_staking_config_StakingConfig'_rewards_rate(s: $1_staking_config_StakingConfig, x: int): $1_staking_config_StakingConfig { + $1_staking_config_StakingConfig($minimum_stake#$1_staking_config_StakingConfig(s), $maximum_stake#$1_staking_config_StakingConfig(s), $recurring_lockup_duration_secs#$1_staking_config_StakingConfig(s), $allow_validator_set_change#$1_staking_config_StakingConfig(s), x, $rewards_rate_denominator#$1_staking_config_StakingConfig(s), $voting_power_increase_limit#$1_staking_config_StakingConfig(s)) +} +function {:inline} $Update'$1_staking_config_StakingConfig'_rewards_rate_denominator(s: $1_staking_config_StakingConfig, x: int): $1_staking_config_StakingConfig { + $1_staking_config_StakingConfig($minimum_stake#$1_staking_config_StakingConfig(s), $maximum_stake#$1_staking_config_StakingConfig(s), $recurring_lockup_duration_secs#$1_staking_config_StakingConfig(s), $allow_validator_set_change#$1_staking_config_StakingConfig(s), $rewards_rate#$1_staking_config_StakingConfig(s), x, $voting_power_increase_limit#$1_staking_config_StakingConfig(s)) +} +function {:inline} $Update'$1_staking_config_StakingConfig'_voting_power_increase_limit(s: $1_staking_config_StakingConfig, x: int): $1_staking_config_StakingConfig { + $1_staking_config_StakingConfig($minimum_stake#$1_staking_config_StakingConfig(s), $maximum_stake#$1_staking_config_StakingConfig(s), $recurring_lockup_duration_secs#$1_staking_config_StakingConfig(s), $allow_validator_set_change#$1_staking_config_StakingConfig(s), $rewards_rate#$1_staking_config_StakingConfig(s), $rewards_rate_denominator#$1_staking_config_StakingConfig(s), x) +} +function $IsValid'$1_staking_config_StakingConfig'(s: $1_staking_config_StakingConfig): bool { + $IsValid'u64'($minimum_stake#$1_staking_config_StakingConfig(s)) + && $IsValid'u64'($maximum_stake#$1_staking_config_StakingConfig(s)) + && $IsValid'u64'($recurring_lockup_duration_secs#$1_staking_config_StakingConfig(s)) + && $IsValid'bool'($allow_validator_set_change#$1_staking_config_StakingConfig(s)) + && $IsValid'u64'($rewards_rate#$1_staking_config_StakingConfig(s)) + && $IsValid'u64'($rewards_rate_denominator#$1_staking_config_StakingConfig(s)) + && $IsValid'u64'($voting_power_increase_limit#$1_staking_config_StakingConfig(s)) +} +function {:inline} $IsEqual'$1_staking_config_StakingConfig'(s1: $1_staking_config_StakingConfig, s2: $1_staking_config_StakingConfig): bool { + s1 == s2 +} +var $1_staking_config_StakingConfig_$memory: $Memory $1_staking_config_StakingConfig; + +// fun staking_config::get [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/configs/staking_config.move:169:5+118 +procedure {:inline 1} $1_staking_config_get() returns ($ret0: $1_staking_config_StakingConfig) +{ + // declare local variables + var $t0: int; + var $t1: $1_staking_config_StakingConfig; + var $t2: int; + var $temp_0'$1_staking_config_StakingConfig': $1_staking_config_StakingConfig; + + // bytecode translation starts here + // $t0 := 0x1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/configs/staking_config.move:170:39+16 + assume {:print "$at(102,8264,8280)"} true; + $t0 := 1; + assume $IsValid'address'($t0); + + // $t1 := get_global($t0) on_abort goto L2 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/configs/staking_config.move:170:10+13 + if (!$ResourceExists($1_staking_config_StakingConfig_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t1 := $ResourceValue($1_staking_config_StakingConfig_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(102,8235,8248)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(35,2):", $t2} $t2 == $t2; + goto L2; + } + + // trace_return[0]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/configs/staking_config.move:170:9+47 + assume {:print "$track_return(35,2,0):", $t1} $t1 == $t1; + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/configs/staking_config.move:171:5+1 + assume {:print "$at(102,8286,8287)"} true; +L1: + + // return $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/configs/staking_config.move:171:5+1 + assume {:print "$at(102,8286,8287)"} true; + $ret0 := $t1; + return; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/configs/staking_config.move:171:5+1 +L2: + + // abort($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/configs/staking_config.move:171:5+1 + assume {:print "$at(102,8286,8287)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun staking_config::get_recurring_lockup_duration [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/configs/staking_config.move:185:5+123 +procedure {:inline 1} $1_staking_config_get_recurring_lockup_duration(_$t0: $1_staking_config_StakingConfig) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t0: $1_staking_config_StakingConfig; + var $temp_0'$1_staking_config_StakingConfig': $1_staking_config_StakingConfig; + var $temp_0'u64': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[config]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/configs/staking_config.move:185:5+1 + assume {:print "$at(102,8800,8801)"} true; + assume {:print "$track_local(35,4,0):", $t0} $t0 == $t0; + + // $t1 := get_field.recurring_lockup_duration_secs($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/configs/staking_config.move:186:9+37 + assume {:print "$at(102,8880,8917)"} true; + $t1 := $recurring_lockup_duration_secs#$1_staking_config_StakingConfig($t0); + + // trace_return[0]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/configs/staking_config.move:186:9+37 + assume {:print "$track_return(35,4,0):", $t1} $t1 == $t1; + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/configs/staking_config.move:187:5+1 + assume {:print "$at(102,8922,8923)"} true; +L1: + + // return $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/configs/staking_config.move:187:5+1 + assume {:print "$at(102,8922,8923)"} true; + $ret0 := $t1; + return; + +} + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/math64.move:17:5+71 +function {:inline} $1_math64_$min(a: int, b: int): int { + (if ((a < b)) then (a) else (b)) +} + +// fun math64::min [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/math64.move:17:5+71 +procedure {:inline 1} $1_math64_min(_$t0: int, _$t1: int) returns ($ret0: int) +{ + // declare local variables + var $t2: int; + var $t3: bool; + var $t0: int; + var $t1: int; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[a]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/math64.move:17:5+1 + assume {:print "$at(54,467,468)"} true; + assume {:print "$track_local(36,6,0):", $t0} $t0 == $t0; + + // trace_local[b]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/math64.move:17:5+1 + assume {:print "$track_local(36,6,1):", $t1} $t1 == $t1; + + // $t3 := <($t0, $t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/math64.move:18:15+1 + assume {:print "$at(54,519,520)"} true; + call $t3 := $Lt($t0, $t1); + + // if ($t3) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/math64.move:18:9+19 + if ($t3) { goto L1; } else { goto L0; } + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/math64.move:18:20+1 +L1: + + // $t2 := $t0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/math64.move:18:9+19 + assume {:print "$at(54,513,532)"} true; + $t2 := $t0; + + // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/math64.move:18:9+19 + goto L2; + + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/math64.move:18:27+1 +L0: + + // $t2 := $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/math64.move:18:9+19 + assume {:print "$at(54,513,532)"} true; + $t2 := $t1; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/math64.move:18:9+19 +L2: + + // trace_return[0]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/math64.move:18:9+19 + assume {:print "$at(54,513,532)"} true; + assume {:print "$track_return(36,6,0):", $t2} $t2 == $t2; + + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/math64.move:19:5+1 + assume {:print "$at(54,537,538)"} true; +L3: + + // return $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/math64.move:19:5+1 + assume {:print "$at(54,537,538)"} true; + $ret0 := $t2; + return; + +} + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:400:5+89 +function {:inline} $1_stake_$stake_pool_exists($1_stake_StakePool_$memory: $Memory $1_stake_StakePool, addr: int): bool { + $ResourceExists($1_stake_StakePool_$memory, addr) +} + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:16:10+500 +function {:inline} $1_stake_validator_set_is_valid($1_stake_StakePool_$memory: $Memory $1_stake_StakePool, $1_stake_ValidatorConfig_$memory: $Memory $1_stake_ValidatorConfig, $1_stake_ValidatorPerformance_$memory: $Memory $1_stake_ValidatorPerformance, $1_stake_ValidatorSet_$memory: $Memory $1_stake_ValidatorSet): bool { + (var validator_set := $ResourceValue($1_stake_ValidatorSet_$memory, 1); (((($1_stake_spec_validators_are_initialized($1_stake_StakePool_$memory, $1_stake_ValidatorConfig_$memory, $active_validators#$1_stake_ValidatorSet(validator_set)) && $1_stake_spec_validators_are_initialized($1_stake_StakePool_$memory, $1_stake_ValidatorConfig_$memory, $pending_inactive#$1_stake_ValidatorSet(validator_set))) && $1_stake_spec_validators_are_initialized($1_stake_StakePool_$memory, $1_stake_ValidatorConfig_$memory, $pending_active#$1_stake_ValidatorSet(validator_set))) && $1_stake_spec_validator_indices_are_valid($1_stake_ValidatorConfig_$memory, $1_stake_ValidatorPerformance_$memory, $active_validators#$1_stake_ValidatorSet(validator_set))) && $1_stake_spec_validator_indices_are_valid($1_stake_ValidatorConfig_$memory, $1_stake_ValidatorPerformance_$memory, $pending_inactive#$1_stake_ValidatorSet(validator_set)))) +} + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:306:10+241 +function {:inline} $1_stake_spec_validators_are_initialized($1_stake_StakePool_$memory: $Memory $1_stake_StakePool, $1_stake_ValidatorConfig_$memory: $Memory $1_stake_ValidatorConfig, validators: Vec ($1_stake_ValidatorInfo)): bool { + (var $range_0 := $Range(0, LenVec(validators)); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var i := $i_1; + (($1_stake_spec_has_stake_pool($1_stake_StakePool_$memory, $addr#$1_stake_ValidatorInfo(ReadVec(validators, i))) && $1_stake_spec_has_validator_config($1_stake_ValidatorConfig_$memory, $addr#$1_stake_ValidatorInfo(ReadVec(validators, i)))))))) +} + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:313:10+234 +function {:inline} $1_stake_spec_validator_indices_are_valid($1_stake_ValidatorConfig_$memory: $Memory $1_stake_ValidatorConfig, $1_stake_ValidatorPerformance_$memory: $Memory $1_stake_ValidatorPerformance, validators: Vec ($1_stake_ValidatorInfo)): bool { + (var $range_2 := $Range(0, LenVec(validators)); (forall $i_3: int :: $InRange($range_2, $i_3) ==> (var i := $i_3; + (($validator_index#$1_stake_ValidatorConfig($ResourceValue($1_stake_ValidatorConfig_$memory, $addr#$1_stake_ValidatorInfo(ReadVec(validators, i)))) < $1_stake_spec_validator_index_upper_bound($1_stake_ValidatorPerformance_$memory)))))) +} + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:319:10+122 +function {:inline} $1_stake_spec_validator_index_upper_bound($1_stake_ValidatorPerformance_$memory: $Memory $1_stake_ValidatorPerformance): int { + LenVec($validators#$1_stake_ValidatorPerformance($ResourceValue($1_stake_ValidatorPerformance_$memory, 1))) +} + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:323:10+78 +function {:inline} $1_stake_spec_has_stake_pool($1_stake_StakePool_$memory: $Memory $1_stake_StakePool, a: int): bool { + $ResourceExists($1_stake_StakePool_$memory, a) +} + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:327:10+90 +function {:inline} $1_stake_spec_has_validator_config($1_stake_ValidatorConfig_$memory: $Memory $1_stake_ValidatorConfig, a: int): bool { + $ResourceExists($1_stake_ValidatorConfig_$memory, a) +} + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:340:10+148 +function {:inline} $1_stake_spec_contains(validators: Vec ($1_stake_ValidatorInfo), addr: int): bool { + (var $range_4 := $Range(0, LenVec(validators)); (exists $i_5: int :: $InRange($range_4, $i_5) && (var i := $i_5; + ($IsEqual'address'($addr#$1_stake_ValidatorInfo(ReadVec(validators, i)), addr))))) +} + +// struct stake::AddStakeEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:210:5+102 +type {:datatype} $1_stake_AddStakeEvent; +function {:constructor} $1_stake_AddStakeEvent($pool_address: int, $amount_added: int): $1_stake_AddStakeEvent; +function {:inline} $Update'$1_stake_AddStakeEvent'_pool_address(s: $1_stake_AddStakeEvent, x: int): $1_stake_AddStakeEvent { + $1_stake_AddStakeEvent(x, $amount_added#$1_stake_AddStakeEvent(s)) +} +function {:inline} $Update'$1_stake_AddStakeEvent'_amount_added(s: $1_stake_AddStakeEvent, x: int): $1_stake_AddStakeEvent { + $1_stake_AddStakeEvent($pool_address#$1_stake_AddStakeEvent(s), x) +} +function $IsValid'$1_stake_AddStakeEvent'(s: $1_stake_AddStakeEvent): bool { + $IsValid'address'($pool_address#$1_stake_AddStakeEvent(s)) + && $IsValid'u64'($amount_added#$1_stake_AddStakeEvent(s)) +} +function {:inline} $IsEqual'$1_stake_AddStakeEvent'(s1: $1_stake_AddStakeEvent, s2: $1_stake_AddStakeEvent): bool { + s1 == s2 +} + +// struct stake::DistributeRewardsEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:244:5+113 +type {:datatype} $1_stake_DistributeRewardsEvent; +function {:constructor} $1_stake_DistributeRewardsEvent($pool_address: int, $rewards_amount: int): $1_stake_DistributeRewardsEvent; +function {:inline} $Update'$1_stake_DistributeRewardsEvent'_pool_address(s: $1_stake_DistributeRewardsEvent, x: int): $1_stake_DistributeRewardsEvent { + $1_stake_DistributeRewardsEvent(x, $rewards_amount#$1_stake_DistributeRewardsEvent(s)) +} +function {:inline} $Update'$1_stake_DistributeRewardsEvent'_rewards_amount(s: $1_stake_DistributeRewardsEvent, x: int): $1_stake_DistributeRewardsEvent { + $1_stake_DistributeRewardsEvent($pool_address#$1_stake_DistributeRewardsEvent(s), x) +} +function $IsValid'$1_stake_DistributeRewardsEvent'(s: $1_stake_DistributeRewardsEvent): bool { + $IsValid'address'($pool_address#$1_stake_DistributeRewardsEvent(s)) + && $IsValid'u64'($rewards_amount#$1_stake_DistributeRewardsEvent(s)) +} +function {:inline} $IsEqual'$1_stake_DistributeRewardsEvent'(s1: $1_stake_DistributeRewardsEvent, s2: $1_stake_DistributeRewardsEvent): bool { + s1 == s2 +} + +// struct stake::IncreaseLockupEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:234:5+153 +type {:datatype} $1_stake_IncreaseLockupEvent; +function {:constructor} $1_stake_IncreaseLockupEvent($pool_address: int, $old_locked_until_secs: int, $new_locked_until_secs: int): $1_stake_IncreaseLockupEvent; +function {:inline} $Update'$1_stake_IncreaseLockupEvent'_pool_address(s: $1_stake_IncreaseLockupEvent, x: int): $1_stake_IncreaseLockupEvent { + $1_stake_IncreaseLockupEvent(x, $old_locked_until_secs#$1_stake_IncreaseLockupEvent(s), $new_locked_until_secs#$1_stake_IncreaseLockupEvent(s)) +} +function {:inline} $Update'$1_stake_IncreaseLockupEvent'_old_locked_until_secs(s: $1_stake_IncreaseLockupEvent, x: int): $1_stake_IncreaseLockupEvent { + $1_stake_IncreaseLockupEvent($pool_address#$1_stake_IncreaseLockupEvent(s), x, $new_locked_until_secs#$1_stake_IncreaseLockupEvent(s)) +} +function {:inline} $Update'$1_stake_IncreaseLockupEvent'_new_locked_until_secs(s: $1_stake_IncreaseLockupEvent, x: int): $1_stake_IncreaseLockupEvent { + $1_stake_IncreaseLockupEvent($pool_address#$1_stake_IncreaseLockupEvent(s), $old_locked_until_secs#$1_stake_IncreaseLockupEvent(s), x) +} +function $IsValid'$1_stake_IncreaseLockupEvent'(s: $1_stake_IncreaseLockupEvent): bool { + $IsValid'address'($pool_address#$1_stake_IncreaseLockupEvent(s)) + && $IsValid'u64'($old_locked_until_secs#$1_stake_IncreaseLockupEvent(s)) + && $IsValid'u64'($new_locked_until_secs#$1_stake_IncreaseLockupEvent(s)) +} +function {:inline} $IsEqual'$1_stake_IncreaseLockupEvent'(s1: $1_stake_IncreaseLockupEvent, s2: $1_stake_IncreaseLockupEvent): bool { + s1 == s2 +} + +// struct stake::IndividualValidatorPerformance at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:191:5+127 +type {:datatype} $1_stake_IndividualValidatorPerformance; +function {:constructor} $1_stake_IndividualValidatorPerformance($successful_proposals: int, $failed_proposals: int): $1_stake_IndividualValidatorPerformance; +function {:inline} $Update'$1_stake_IndividualValidatorPerformance'_successful_proposals(s: $1_stake_IndividualValidatorPerformance, x: int): $1_stake_IndividualValidatorPerformance { + $1_stake_IndividualValidatorPerformance(x, $failed_proposals#$1_stake_IndividualValidatorPerformance(s)) +} +function {:inline} $Update'$1_stake_IndividualValidatorPerformance'_failed_proposals(s: $1_stake_IndividualValidatorPerformance, x: int): $1_stake_IndividualValidatorPerformance { + $1_stake_IndividualValidatorPerformance($successful_proposals#$1_stake_IndividualValidatorPerformance(s), x) +} +function $IsValid'$1_stake_IndividualValidatorPerformance'(s: $1_stake_IndividualValidatorPerformance): bool { + $IsValid'u64'($successful_proposals#$1_stake_IndividualValidatorPerformance(s)) + && $IsValid'u64'($failed_proposals#$1_stake_IndividualValidatorPerformance(s)) +} +function {:inline} $IsEqual'$1_stake_IndividualValidatorPerformance'(s1: $1_stake_IndividualValidatorPerformance, s2: $1_stake_IndividualValidatorPerformance): bool { + s1 == s2 +} + +// struct stake::JoinValidatorSetEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:240:5+83 +type {:datatype} $1_stake_JoinValidatorSetEvent; +function {:constructor} $1_stake_JoinValidatorSetEvent($pool_address: int): $1_stake_JoinValidatorSetEvent; +function {:inline} $Update'$1_stake_JoinValidatorSetEvent'_pool_address(s: $1_stake_JoinValidatorSetEvent, x: int): $1_stake_JoinValidatorSetEvent { + $1_stake_JoinValidatorSetEvent(x) +} +function $IsValid'$1_stake_JoinValidatorSetEvent'(s: $1_stake_JoinValidatorSetEvent): bool { + $IsValid'address'($pool_address#$1_stake_JoinValidatorSetEvent(s)) +} +function {:inline} $IsEqual'$1_stake_JoinValidatorSetEvent'(s1: $1_stake_JoinValidatorSetEvent, s2: $1_stake_JoinValidatorSetEvent): bool { + s1 == s2 +} + +// struct stake::LeaveValidatorSetEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:259:5+84 +type {:datatype} $1_stake_LeaveValidatorSetEvent; +function {:constructor} $1_stake_LeaveValidatorSetEvent($pool_address: int): $1_stake_LeaveValidatorSetEvent; +function {:inline} $Update'$1_stake_LeaveValidatorSetEvent'_pool_address(s: $1_stake_LeaveValidatorSetEvent, x: int): $1_stake_LeaveValidatorSetEvent { + $1_stake_LeaveValidatorSetEvent(x) +} +function $IsValid'$1_stake_LeaveValidatorSetEvent'(s: $1_stake_LeaveValidatorSetEvent): bool { + $IsValid'address'($pool_address#$1_stake_LeaveValidatorSetEvent(s)) +} +function {:inline} $IsEqual'$1_stake_LeaveValidatorSetEvent'(s1: $1_stake_LeaveValidatorSetEvent, s2: $1_stake_LeaveValidatorSetEvent): bool { + s1 == s2 +} + +// struct stake::OwnerCapability at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:100:5+76 +type {:datatype} $1_stake_OwnerCapability; +function {:constructor} $1_stake_OwnerCapability($pool_address: int): $1_stake_OwnerCapability; +function {:inline} $Update'$1_stake_OwnerCapability'_pool_address(s: $1_stake_OwnerCapability, x: int): $1_stake_OwnerCapability { + $1_stake_OwnerCapability(x) +} +function $IsValid'$1_stake_OwnerCapability'(s: $1_stake_OwnerCapability): bool { + $IsValid'address'($pool_address#$1_stake_OwnerCapability(s)) +} +function {:inline} $IsEqual'$1_stake_OwnerCapability'(s1: $1_stake_OwnerCapability, s2: $1_stake_OwnerCapability): bool { + s1 == s2 +} +var $1_stake_OwnerCapability_$memory: $Memory $1_stake_OwnerCapability; + +// struct stake::ReactivateStakeEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:215:5+103 +type {:datatype} $1_stake_ReactivateStakeEvent; +function {:constructor} $1_stake_ReactivateStakeEvent($pool_address: int, $amount: int): $1_stake_ReactivateStakeEvent; +function {:inline} $Update'$1_stake_ReactivateStakeEvent'_pool_address(s: $1_stake_ReactivateStakeEvent, x: int): $1_stake_ReactivateStakeEvent { + $1_stake_ReactivateStakeEvent(x, $amount#$1_stake_ReactivateStakeEvent(s)) +} +function {:inline} $Update'$1_stake_ReactivateStakeEvent'_amount(s: $1_stake_ReactivateStakeEvent, x: int): $1_stake_ReactivateStakeEvent { + $1_stake_ReactivateStakeEvent($pool_address#$1_stake_ReactivateStakeEvent(s), x) +} +function $IsValid'$1_stake_ReactivateStakeEvent'(s: $1_stake_ReactivateStakeEvent): bool { + $IsValid'address'($pool_address#$1_stake_ReactivateStakeEvent(s)) + && $IsValid'u64'($amount#$1_stake_ReactivateStakeEvent(s)) +} +function {:inline} $IsEqual'$1_stake_ReactivateStakeEvent'(s1: $1_stake_ReactivateStakeEvent, s2: $1_stake_ReactivateStakeEvent): bool { + s1 == s2 +} + +// struct stake::RegisterValidatorCandidateEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:200:5+93 +type {:datatype} $1_stake_RegisterValidatorCandidateEvent; +function {:constructor} $1_stake_RegisterValidatorCandidateEvent($pool_address: int): $1_stake_RegisterValidatorCandidateEvent; +function {:inline} $Update'$1_stake_RegisterValidatorCandidateEvent'_pool_address(s: $1_stake_RegisterValidatorCandidateEvent, x: int): $1_stake_RegisterValidatorCandidateEvent { + $1_stake_RegisterValidatorCandidateEvent(x) +} +function $IsValid'$1_stake_RegisterValidatorCandidateEvent'(s: $1_stake_RegisterValidatorCandidateEvent): bool { + $IsValid'address'($pool_address#$1_stake_RegisterValidatorCandidateEvent(s)) +} +function {:inline} $IsEqual'$1_stake_RegisterValidatorCandidateEvent'(s1: $1_stake_RegisterValidatorCandidateEvent, s2: $1_stake_RegisterValidatorCandidateEvent): bool { + s1 == s2 +} + +// struct stake::RotateConsensusKeyEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:220:5+169 +type {:datatype} $1_stake_RotateConsensusKeyEvent; +function {:constructor} $1_stake_RotateConsensusKeyEvent($pool_address: int, $old_consensus_pubkey: Vec (int), $new_consensus_pubkey: Vec (int)): $1_stake_RotateConsensusKeyEvent; +function {:inline} $Update'$1_stake_RotateConsensusKeyEvent'_pool_address(s: $1_stake_RotateConsensusKeyEvent, x: int): $1_stake_RotateConsensusKeyEvent { + $1_stake_RotateConsensusKeyEvent(x, $old_consensus_pubkey#$1_stake_RotateConsensusKeyEvent(s), $new_consensus_pubkey#$1_stake_RotateConsensusKeyEvent(s)) +} +function {:inline} $Update'$1_stake_RotateConsensusKeyEvent'_old_consensus_pubkey(s: $1_stake_RotateConsensusKeyEvent, x: Vec (int)): $1_stake_RotateConsensusKeyEvent { + $1_stake_RotateConsensusKeyEvent($pool_address#$1_stake_RotateConsensusKeyEvent(s), x, $new_consensus_pubkey#$1_stake_RotateConsensusKeyEvent(s)) +} +function {:inline} $Update'$1_stake_RotateConsensusKeyEvent'_new_consensus_pubkey(s: $1_stake_RotateConsensusKeyEvent, x: Vec (int)): $1_stake_RotateConsensusKeyEvent { + $1_stake_RotateConsensusKeyEvent($pool_address#$1_stake_RotateConsensusKeyEvent(s), $old_consensus_pubkey#$1_stake_RotateConsensusKeyEvent(s), x) +} +function $IsValid'$1_stake_RotateConsensusKeyEvent'(s: $1_stake_RotateConsensusKeyEvent): bool { + $IsValid'address'($pool_address#$1_stake_RotateConsensusKeyEvent(s)) + && $IsValid'vec'u8''($old_consensus_pubkey#$1_stake_RotateConsensusKeyEvent(s)) + && $IsValid'vec'u8''($new_consensus_pubkey#$1_stake_RotateConsensusKeyEvent(s)) +} +function {:inline} $IsEqual'$1_stake_RotateConsensusKeyEvent'(s1: $1_stake_RotateConsensusKeyEvent, s2: $1_stake_RotateConsensusKeyEvent): bool { + $IsEqual'address'($pool_address#$1_stake_RotateConsensusKeyEvent(s1), $pool_address#$1_stake_RotateConsensusKeyEvent(s2)) + && $IsEqual'vec'u8''($old_consensus_pubkey#$1_stake_RotateConsensusKeyEvent(s1), $old_consensus_pubkey#$1_stake_RotateConsensusKeyEvent(s2)) + && $IsEqual'vec'u8''($new_consensus_pubkey#$1_stake_RotateConsensusKeyEvent(s1), $new_consensus_pubkey#$1_stake_RotateConsensusKeyEvent(s2))} + +// struct stake::SetOperatorEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:204:5+140 +type {:datatype} $1_stake_SetOperatorEvent; +function {:constructor} $1_stake_SetOperatorEvent($pool_address: int, $old_operator: int, $new_operator: int): $1_stake_SetOperatorEvent; +function {:inline} $Update'$1_stake_SetOperatorEvent'_pool_address(s: $1_stake_SetOperatorEvent, x: int): $1_stake_SetOperatorEvent { + $1_stake_SetOperatorEvent(x, $old_operator#$1_stake_SetOperatorEvent(s), $new_operator#$1_stake_SetOperatorEvent(s)) +} +function {:inline} $Update'$1_stake_SetOperatorEvent'_old_operator(s: $1_stake_SetOperatorEvent, x: int): $1_stake_SetOperatorEvent { + $1_stake_SetOperatorEvent($pool_address#$1_stake_SetOperatorEvent(s), x, $new_operator#$1_stake_SetOperatorEvent(s)) +} +function {:inline} $Update'$1_stake_SetOperatorEvent'_new_operator(s: $1_stake_SetOperatorEvent, x: int): $1_stake_SetOperatorEvent { + $1_stake_SetOperatorEvent($pool_address#$1_stake_SetOperatorEvent(s), $old_operator#$1_stake_SetOperatorEvent(s), x) +} +function $IsValid'$1_stake_SetOperatorEvent'(s: $1_stake_SetOperatorEvent): bool { + $IsValid'address'($pool_address#$1_stake_SetOperatorEvent(s)) + && $IsValid'address'($old_operator#$1_stake_SetOperatorEvent(s)) + && $IsValid'address'($new_operator#$1_stake_SetOperatorEvent(s)) +} +function {:inline} $IsEqual'$1_stake_SetOperatorEvent'(s1: $1_stake_SetOperatorEvent, s2: $1_stake_SetOperatorEvent): bool { + s1 == s2 +} + +// struct stake::StakePool at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:115:5+1829 +type {:datatype} $1_stake_StakePool; +function {:constructor} $1_stake_StakePool($active: $1_coin_Coin'$1_aptos_coin_AptosCoin', $inactive: $1_coin_Coin'$1_aptos_coin_AptosCoin', $pending_active: $1_coin_Coin'$1_aptos_coin_AptosCoin', $pending_inactive: $1_coin_Coin'$1_aptos_coin_AptosCoin', $locked_until_secs: int, $operator_address: int, $delegated_voter: int, $initialize_validator_events: $1_event_EventHandle'$1_stake_RegisterValidatorCandidateEvent', $set_operator_events: $1_event_EventHandle'$1_stake_SetOperatorEvent', $add_stake_events: $1_event_EventHandle'$1_stake_AddStakeEvent', $reactivate_stake_events: $1_event_EventHandle'$1_stake_ReactivateStakeEvent', $rotate_consensus_key_events: $1_event_EventHandle'$1_stake_RotateConsensusKeyEvent', $update_network_and_fullnode_addresses_events: $1_event_EventHandle'$1_stake_UpdateNetworkAndFullnodeAddressesEvent', $increase_lockup_events: $1_event_EventHandle'$1_stake_IncreaseLockupEvent', $join_validator_set_events: $1_event_EventHandle'$1_stake_JoinValidatorSetEvent', $distribute_rewards_events: $1_event_EventHandle'$1_stake_DistributeRewardsEvent', $unlock_stake_events: $1_event_EventHandle'$1_stake_UnlockStakeEvent', $withdraw_stake_events: $1_event_EventHandle'$1_stake_WithdrawStakeEvent', $leave_validator_set_events: $1_event_EventHandle'$1_stake_LeaveValidatorSetEvent'): $1_stake_StakePool; +function {:inline} $Update'$1_stake_StakePool'_active(s: $1_stake_StakePool, x: $1_coin_Coin'$1_aptos_coin_AptosCoin'): $1_stake_StakePool { + $1_stake_StakePool(x, $inactive#$1_stake_StakePool(s), $pending_active#$1_stake_StakePool(s), $pending_inactive#$1_stake_StakePool(s), $locked_until_secs#$1_stake_StakePool(s), $operator_address#$1_stake_StakePool(s), $delegated_voter#$1_stake_StakePool(s), $initialize_validator_events#$1_stake_StakePool(s), $set_operator_events#$1_stake_StakePool(s), $add_stake_events#$1_stake_StakePool(s), $reactivate_stake_events#$1_stake_StakePool(s), $rotate_consensus_key_events#$1_stake_StakePool(s), $update_network_and_fullnode_addresses_events#$1_stake_StakePool(s), $increase_lockup_events#$1_stake_StakePool(s), $join_validator_set_events#$1_stake_StakePool(s), $distribute_rewards_events#$1_stake_StakePool(s), $unlock_stake_events#$1_stake_StakePool(s), $withdraw_stake_events#$1_stake_StakePool(s), $leave_validator_set_events#$1_stake_StakePool(s)) +} +function {:inline} $Update'$1_stake_StakePool'_inactive(s: $1_stake_StakePool, x: $1_coin_Coin'$1_aptos_coin_AptosCoin'): $1_stake_StakePool { + $1_stake_StakePool($active#$1_stake_StakePool(s), x, $pending_active#$1_stake_StakePool(s), $pending_inactive#$1_stake_StakePool(s), $locked_until_secs#$1_stake_StakePool(s), $operator_address#$1_stake_StakePool(s), $delegated_voter#$1_stake_StakePool(s), $initialize_validator_events#$1_stake_StakePool(s), $set_operator_events#$1_stake_StakePool(s), $add_stake_events#$1_stake_StakePool(s), $reactivate_stake_events#$1_stake_StakePool(s), $rotate_consensus_key_events#$1_stake_StakePool(s), $update_network_and_fullnode_addresses_events#$1_stake_StakePool(s), $increase_lockup_events#$1_stake_StakePool(s), $join_validator_set_events#$1_stake_StakePool(s), $distribute_rewards_events#$1_stake_StakePool(s), $unlock_stake_events#$1_stake_StakePool(s), $withdraw_stake_events#$1_stake_StakePool(s), $leave_validator_set_events#$1_stake_StakePool(s)) +} +function {:inline} $Update'$1_stake_StakePool'_pending_active(s: $1_stake_StakePool, x: $1_coin_Coin'$1_aptos_coin_AptosCoin'): $1_stake_StakePool { + $1_stake_StakePool($active#$1_stake_StakePool(s), $inactive#$1_stake_StakePool(s), x, $pending_inactive#$1_stake_StakePool(s), $locked_until_secs#$1_stake_StakePool(s), $operator_address#$1_stake_StakePool(s), $delegated_voter#$1_stake_StakePool(s), $initialize_validator_events#$1_stake_StakePool(s), $set_operator_events#$1_stake_StakePool(s), $add_stake_events#$1_stake_StakePool(s), $reactivate_stake_events#$1_stake_StakePool(s), $rotate_consensus_key_events#$1_stake_StakePool(s), $update_network_and_fullnode_addresses_events#$1_stake_StakePool(s), $increase_lockup_events#$1_stake_StakePool(s), $join_validator_set_events#$1_stake_StakePool(s), $distribute_rewards_events#$1_stake_StakePool(s), $unlock_stake_events#$1_stake_StakePool(s), $withdraw_stake_events#$1_stake_StakePool(s), $leave_validator_set_events#$1_stake_StakePool(s)) +} +function {:inline} $Update'$1_stake_StakePool'_pending_inactive(s: $1_stake_StakePool, x: $1_coin_Coin'$1_aptos_coin_AptosCoin'): $1_stake_StakePool { + $1_stake_StakePool($active#$1_stake_StakePool(s), $inactive#$1_stake_StakePool(s), $pending_active#$1_stake_StakePool(s), x, $locked_until_secs#$1_stake_StakePool(s), $operator_address#$1_stake_StakePool(s), $delegated_voter#$1_stake_StakePool(s), $initialize_validator_events#$1_stake_StakePool(s), $set_operator_events#$1_stake_StakePool(s), $add_stake_events#$1_stake_StakePool(s), $reactivate_stake_events#$1_stake_StakePool(s), $rotate_consensus_key_events#$1_stake_StakePool(s), $update_network_and_fullnode_addresses_events#$1_stake_StakePool(s), $increase_lockup_events#$1_stake_StakePool(s), $join_validator_set_events#$1_stake_StakePool(s), $distribute_rewards_events#$1_stake_StakePool(s), $unlock_stake_events#$1_stake_StakePool(s), $withdraw_stake_events#$1_stake_StakePool(s), $leave_validator_set_events#$1_stake_StakePool(s)) +} +function {:inline} $Update'$1_stake_StakePool'_locked_until_secs(s: $1_stake_StakePool, x: int): $1_stake_StakePool { + $1_stake_StakePool($active#$1_stake_StakePool(s), $inactive#$1_stake_StakePool(s), $pending_active#$1_stake_StakePool(s), $pending_inactive#$1_stake_StakePool(s), x, $operator_address#$1_stake_StakePool(s), $delegated_voter#$1_stake_StakePool(s), $initialize_validator_events#$1_stake_StakePool(s), $set_operator_events#$1_stake_StakePool(s), $add_stake_events#$1_stake_StakePool(s), $reactivate_stake_events#$1_stake_StakePool(s), $rotate_consensus_key_events#$1_stake_StakePool(s), $update_network_and_fullnode_addresses_events#$1_stake_StakePool(s), $increase_lockup_events#$1_stake_StakePool(s), $join_validator_set_events#$1_stake_StakePool(s), $distribute_rewards_events#$1_stake_StakePool(s), $unlock_stake_events#$1_stake_StakePool(s), $withdraw_stake_events#$1_stake_StakePool(s), $leave_validator_set_events#$1_stake_StakePool(s)) +} +function {:inline} $Update'$1_stake_StakePool'_operator_address(s: $1_stake_StakePool, x: int): $1_stake_StakePool { + $1_stake_StakePool($active#$1_stake_StakePool(s), $inactive#$1_stake_StakePool(s), $pending_active#$1_stake_StakePool(s), $pending_inactive#$1_stake_StakePool(s), $locked_until_secs#$1_stake_StakePool(s), x, $delegated_voter#$1_stake_StakePool(s), $initialize_validator_events#$1_stake_StakePool(s), $set_operator_events#$1_stake_StakePool(s), $add_stake_events#$1_stake_StakePool(s), $reactivate_stake_events#$1_stake_StakePool(s), $rotate_consensus_key_events#$1_stake_StakePool(s), $update_network_and_fullnode_addresses_events#$1_stake_StakePool(s), $increase_lockup_events#$1_stake_StakePool(s), $join_validator_set_events#$1_stake_StakePool(s), $distribute_rewards_events#$1_stake_StakePool(s), $unlock_stake_events#$1_stake_StakePool(s), $withdraw_stake_events#$1_stake_StakePool(s), $leave_validator_set_events#$1_stake_StakePool(s)) +} +function {:inline} $Update'$1_stake_StakePool'_delegated_voter(s: $1_stake_StakePool, x: int): $1_stake_StakePool { + $1_stake_StakePool($active#$1_stake_StakePool(s), $inactive#$1_stake_StakePool(s), $pending_active#$1_stake_StakePool(s), $pending_inactive#$1_stake_StakePool(s), $locked_until_secs#$1_stake_StakePool(s), $operator_address#$1_stake_StakePool(s), x, $initialize_validator_events#$1_stake_StakePool(s), $set_operator_events#$1_stake_StakePool(s), $add_stake_events#$1_stake_StakePool(s), $reactivate_stake_events#$1_stake_StakePool(s), $rotate_consensus_key_events#$1_stake_StakePool(s), $update_network_and_fullnode_addresses_events#$1_stake_StakePool(s), $increase_lockup_events#$1_stake_StakePool(s), $join_validator_set_events#$1_stake_StakePool(s), $distribute_rewards_events#$1_stake_StakePool(s), $unlock_stake_events#$1_stake_StakePool(s), $withdraw_stake_events#$1_stake_StakePool(s), $leave_validator_set_events#$1_stake_StakePool(s)) +} +function {:inline} $Update'$1_stake_StakePool'_initialize_validator_events(s: $1_stake_StakePool, x: $1_event_EventHandle'$1_stake_RegisterValidatorCandidateEvent'): $1_stake_StakePool { + $1_stake_StakePool($active#$1_stake_StakePool(s), $inactive#$1_stake_StakePool(s), $pending_active#$1_stake_StakePool(s), $pending_inactive#$1_stake_StakePool(s), $locked_until_secs#$1_stake_StakePool(s), $operator_address#$1_stake_StakePool(s), $delegated_voter#$1_stake_StakePool(s), x, $set_operator_events#$1_stake_StakePool(s), $add_stake_events#$1_stake_StakePool(s), $reactivate_stake_events#$1_stake_StakePool(s), $rotate_consensus_key_events#$1_stake_StakePool(s), $update_network_and_fullnode_addresses_events#$1_stake_StakePool(s), $increase_lockup_events#$1_stake_StakePool(s), $join_validator_set_events#$1_stake_StakePool(s), $distribute_rewards_events#$1_stake_StakePool(s), $unlock_stake_events#$1_stake_StakePool(s), $withdraw_stake_events#$1_stake_StakePool(s), $leave_validator_set_events#$1_stake_StakePool(s)) +} +function {:inline} $Update'$1_stake_StakePool'_set_operator_events(s: $1_stake_StakePool, x: $1_event_EventHandle'$1_stake_SetOperatorEvent'): $1_stake_StakePool { + $1_stake_StakePool($active#$1_stake_StakePool(s), $inactive#$1_stake_StakePool(s), $pending_active#$1_stake_StakePool(s), $pending_inactive#$1_stake_StakePool(s), $locked_until_secs#$1_stake_StakePool(s), $operator_address#$1_stake_StakePool(s), $delegated_voter#$1_stake_StakePool(s), $initialize_validator_events#$1_stake_StakePool(s), x, $add_stake_events#$1_stake_StakePool(s), $reactivate_stake_events#$1_stake_StakePool(s), $rotate_consensus_key_events#$1_stake_StakePool(s), $update_network_and_fullnode_addresses_events#$1_stake_StakePool(s), $increase_lockup_events#$1_stake_StakePool(s), $join_validator_set_events#$1_stake_StakePool(s), $distribute_rewards_events#$1_stake_StakePool(s), $unlock_stake_events#$1_stake_StakePool(s), $withdraw_stake_events#$1_stake_StakePool(s), $leave_validator_set_events#$1_stake_StakePool(s)) +} +function {:inline} $Update'$1_stake_StakePool'_add_stake_events(s: $1_stake_StakePool, x: $1_event_EventHandle'$1_stake_AddStakeEvent'): $1_stake_StakePool { + $1_stake_StakePool($active#$1_stake_StakePool(s), $inactive#$1_stake_StakePool(s), $pending_active#$1_stake_StakePool(s), $pending_inactive#$1_stake_StakePool(s), $locked_until_secs#$1_stake_StakePool(s), $operator_address#$1_stake_StakePool(s), $delegated_voter#$1_stake_StakePool(s), $initialize_validator_events#$1_stake_StakePool(s), $set_operator_events#$1_stake_StakePool(s), x, $reactivate_stake_events#$1_stake_StakePool(s), $rotate_consensus_key_events#$1_stake_StakePool(s), $update_network_and_fullnode_addresses_events#$1_stake_StakePool(s), $increase_lockup_events#$1_stake_StakePool(s), $join_validator_set_events#$1_stake_StakePool(s), $distribute_rewards_events#$1_stake_StakePool(s), $unlock_stake_events#$1_stake_StakePool(s), $withdraw_stake_events#$1_stake_StakePool(s), $leave_validator_set_events#$1_stake_StakePool(s)) +} +function {:inline} $Update'$1_stake_StakePool'_reactivate_stake_events(s: $1_stake_StakePool, x: $1_event_EventHandle'$1_stake_ReactivateStakeEvent'): $1_stake_StakePool { + $1_stake_StakePool($active#$1_stake_StakePool(s), $inactive#$1_stake_StakePool(s), $pending_active#$1_stake_StakePool(s), $pending_inactive#$1_stake_StakePool(s), $locked_until_secs#$1_stake_StakePool(s), $operator_address#$1_stake_StakePool(s), $delegated_voter#$1_stake_StakePool(s), $initialize_validator_events#$1_stake_StakePool(s), $set_operator_events#$1_stake_StakePool(s), $add_stake_events#$1_stake_StakePool(s), x, $rotate_consensus_key_events#$1_stake_StakePool(s), $update_network_and_fullnode_addresses_events#$1_stake_StakePool(s), $increase_lockup_events#$1_stake_StakePool(s), $join_validator_set_events#$1_stake_StakePool(s), $distribute_rewards_events#$1_stake_StakePool(s), $unlock_stake_events#$1_stake_StakePool(s), $withdraw_stake_events#$1_stake_StakePool(s), $leave_validator_set_events#$1_stake_StakePool(s)) +} +function {:inline} $Update'$1_stake_StakePool'_rotate_consensus_key_events(s: $1_stake_StakePool, x: $1_event_EventHandle'$1_stake_RotateConsensusKeyEvent'): $1_stake_StakePool { + $1_stake_StakePool($active#$1_stake_StakePool(s), $inactive#$1_stake_StakePool(s), $pending_active#$1_stake_StakePool(s), $pending_inactive#$1_stake_StakePool(s), $locked_until_secs#$1_stake_StakePool(s), $operator_address#$1_stake_StakePool(s), $delegated_voter#$1_stake_StakePool(s), $initialize_validator_events#$1_stake_StakePool(s), $set_operator_events#$1_stake_StakePool(s), $add_stake_events#$1_stake_StakePool(s), $reactivate_stake_events#$1_stake_StakePool(s), x, $update_network_and_fullnode_addresses_events#$1_stake_StakePool(s), $increase_lockup_events#$1_stake_StakePool(s), $join_validator_set_events#$1_stake_StakePool(s), $distribute_rewards_events#$1_stake_StakePool(s), $unlock_stake_events#$1_stake_StakePool(s), $withdraw_stake_events#$1_stake_StakePool(s), $leave_validator_set_events#$1_stake_StakePool(s)) +} +function {:inline} $Update'$1_stake_StakePool'_update_network_and_fullnode_addresses_events(s: $1_stake_StakePool, x: $1_event_EventHandle'$1_stake_UpdateNetworkAndFullnodeAddressesEvent'): $1_stake_StakePool { + $1_stake_StakePool($active#$1_stake_StakePool(s), $inactive#$1_stake_StakePool(s), $pending_active#$1_stake_StakePool(s), $pending_inactive#$1_stake_StakePool(s), $locked_until_secs#$1_stake_StakePool(s), $operator_address#$1_stake_StakePool(s), $delegated_voter#$1_stake_StakePool(s), $initialize_validator_events#$1_stake_StakePool(s), $set_operator_events#$1_stake_StakePool(s), $add_stake_events#$1_stake_StakePool(s), $reactivate_stake_events#$1_stake_StakePool(s), $rotate_consensus_key_events#$1_stake_StakePool(s), x, $increase_lockup_events#$1_stake_StakePool(s), $join_validator_set_events#$1_stake_StakePool(s), $distribute_rewards_events#$1_stake_StakePool(s), $unlock_stake_events#$1_stake_StakePool(s), $withdraw_stake_events#$1_stake_StakePool(s), $leave_validator_set_events#$1_stake_StakePool(s)) +} +function {:inline} $Update'$1_stake_StakePool'_increase_lockup_events(s: $1_stake_StakePool, x: $1_event_EventHandle'$1_stake_IncreaseLockupEvent'): $1_stake_StakePool { + $1_stake_StakePool($active#$1_stake_StakePool(s), $inactive#$1_stake_StakePool(s), $pending_active#$1_stake_StakePool(s), $pending_inactive#$1_stake_StakePool(s), $locked_until_secs#$1_stake_StakePool(s), $operator_address#$1_stake_StakePool(s), $delegated_voter#$1_stake_StakePool(s), $initialize_validator_events#$1_stake_StakePool(s), $set_operator_events#$1_stake_StakePool(s), $add_stake_events#$1_stake_StakePool(s), $reactivate_stake_events#$1_stake_StakePool(s), $rotate_consensus_key_events#$1_stake_StakePool(s), $update_network_and_fullnode_addresses_events#$1_stake_StakePool(s), x, $join_validator_set_events#$1_stake_StakePool(s), $distribute_rewards_events#$1_stake_StakePool(s), $unlock_stake_events#$1_stake_StakePool(s), $withdraw_stake_events#$1_stake_StakePool(s), $leave_validator_set_events#$1_stake_StakePool(s)) +} +function {:inline} $Update'$1_stake_StakePool'_join_validator_set_events(s: $1_stake_StakePool, x: $1_event_EventHandle'$1_stake_JoinValidatorSetEvent'): $1_stake_StakePool { + $1_stake_StakePool($active#$1_stake_StakePool(s), $inactive#$1_stake_StakePool(s), $pending_active#$1_stake_StakePool(s), $pending_inactive#$1_stake_StakePool(s), $locked_until_secs#$1_stake_StakePool(s), $operator_address#$1_stake_StakePool(s), $delegated_voter#$1_stake_StakePool(s), $initialize_validator_events#$1_stake_StakePool(s), $set_operator_events#$1_stake_StakePool(s), $add_stake_events#$1_stake_StakePool(s), $reactivate_stake_events#$1_stake_StakePool(s), $rotate_consensus_key_events#$1_stake_StakePool(s), $update_network_and_fullnode_addresses_events#$1_stake_StakePool(s), $increase_lockup_events#$1_stake_StakePool(s), x, $distribute_rewards_events#$1_stake_StakePool(s), $unlock_stake_events#$1_stake_StakePool(s), $withdraw_stake_events#$1_stake_StakePool(s), $leave_validator_set_events#$1_stake_StakePool(s)) +} +function {:inline} $Update'$1_stake_StakePool'_distribute_rewards_events(s: $1_stake_StakePool, x: $1_event_EventHandle'$1_stake_DistributeRewardsEvent'): $1_stake_StakePool { + $1_stake_StakePool($active#$1_stake_StakePool(s), $inactive#$1_stake_StakePool(s), $pending_active#$1_stake_StakePool(s), $pending_inactive#$1_stake_StakePool(s), $locked_until_secs#$1_stake_StakePool(s), $operator_address#$1_stake_StakePool(s), $delegated_voter#$1_stake_StakePool(s), $initialize_validator_events#$1_stake_StakePool(s), $set_operator_events#$1_stake_StakePool(s), $add_stake_events#$1_stake_StakePool(s), $reactivate_stake_events#$1_stake_StakePool(s), $rotate_consensus_key_events#$1_stake_StakePool(s), $update_network_and_fullnode_addresses_events#$1_stake_StakePool(s), $increase_lockup_events#$1_stake_StakePool(s), $join_validator_set_events#$1_stake_StakePool(s), x, $unlock_stake_events#$1_stake_StakePool(s), $withdraw_stake_events#$1_stake_StakePool(s), $leave_validator_set_events#$1_stake_StakePool(s)) +} +function {:inline} $Update'$1_stake_StakePool'_unlock_stake_events(s: $1_stake_StakePool, x: $1_event_EventHandle'$1_stake_UnlockStakeEvent'): $1_stake_StakePool { + $1_stake_StakePool($active#$1_stake_StakePool(s), $inactive#$1_stake_StakePool(s), $pending_active#$1_stake_StakePool(s), $pending_inactive#$1_stake_StakePool(s), $locked_until_secs#$1_stake_StakePool(s), $operator_address#$1_stake_StakePool(s), $delegated_voter#$1_stake_StakePool(s), $initialize_validator_events#$1_stake_StakePool(s), $set_operator_events#$1_stake_StakePool(s), $add_stake_events#$1_stake_StakePool(s), $reactivate_stake_events#$1_stake_StakePool(s), $rotate_consensus_key_events#$1_stake_StakePool(s), $update_network_and_fullnode_addresses_events#$1_stake_StakePool(s), $increase_lockup_events#$1_stake_StakePool(s), $join_validator_set_events#$1_stake_StakePool(s), $distribute_rewards_events#$1_stake_StakePool(s), x, $withdraw_stake_events#$1_stake_StakePool(s), $leave_validator_set_events#$1_stake_StakePool(s)) +} +function {:inline} $Update'$1_stake_StakePool'_withdraw_stake_events(s: $1_stake_StakePool, x: $1_event_EventHandle'$1_stake_WithdrawStakeEvent'): $1_stake_StakePool { + $1_stake_StakePool($active#$1_stake_StakePool(s), $inactive#$1_stake_StakePool(s), $pending_active#$1_stake_StakePool(s), $pending_inactive#$1_stake_StakePool(s), $locked_until_secs#$1_stake_StakePool(s), $operator_address#$1_stake_StakePool(s), $delegated_voter#$1_stake_StakePool(s), $initialize_validator_events#$1_stake_StakePool(s), $set_operator_events#$1_stake_StakePool(s), $add_stake_events#$1_stake_StakePool(s), $reactivate_stake_events#$1_stake_StakePool(s), $rotate_consensus_key_events#$1_stake_StakePool(s), $update_network_and_fullnode_addresses_events#$1_stake_StakePool(s), $increase_lockup_events#$1_stake_StakePool(s), $join_validator_set_events#$1_stake_StakePool(s), $distribute_rewards_events#$1_stake_StakePool(s), $unlock_stake_events#$1_stake_StakePool(s), x, $leave_validator_set_events#$1_stake_StakePool(s)) +} +function {:inline} $Update'$1_stake_StakePool'_leave_validator_set_events(s: $1_stake_StakePool, x: $1_event_EventHandle'$1_stake_LeaveValidatorSetEvent'): $1_stake_StakePool { + $1_stake_StakePool($active#$1_stake_StakePool(s), $inactive#$1_stake_StakePool(s), $pending_active#$1_stake_StakePool(s), $pending_inactive#$1_stake_StakePool(s), $locked_until_secs#$1_stake_StakePool(s), $operator_address#$1_stake_StakePool(s), $delegated_voter#$1_stake_StakePool(s), $initialize_validator_events#$1_stake_StakePool(s), $set_operator_events#$1_stake_StakePool(s), $add_stake_events#$1_stake_StakePool(s), $reactivate_stake_events#$1_stake_StakePool(s), $rotate_consensus_key_events#$1_stake_StakePool(s), $update_network_and_fullnode_addresses_events#$1_stake_StakePool(s), $increase_lockup_events#$1_stake_StakePool(s), $join_validator_set_events#$1_stake_StakePool(s), $distribute_rewards_events#$1_stake_StakePool(s), $unlock_stake_events#$1_stake_StakePool(s), $withdraw_stake_events#$1_stake_StakePool(s), x) +} +function $IsValid'$1_stake_StakePool'(s: $1_stake_StakePool): bool { + $IsValid'$1_coin_Coin'$1_aptos_coin_AptosCoin''($active#$1_stake_StakePool(s)) + && $IsValid'$1_coin_Coin'$1_aptos_coin_AptosCoin''($inactive#$1_stake_StakePool(s)) + && $IsValid'$1_coin_Coin'$1_aptos_coin_AptosCoin''($pending_active#$1_stake_StakePool(s)) + && $IsValid'$1_coin_Coin'$1_aptos_coin_AptosCoin''($pending_inactive#$1_stake_StakePool(s)) + && $IsValid'u64'($locked_until_secs#$1_stake_StakePool(s)) + && $IsValid'address'($operator_address#$1_stake_StakePool(s)) + && $IsValid'address'($delegated_voter#$1_stake_StakePool(s)) + && $IsValid'$1_event_EventHandle'$1_stake_RegisterValidatorCandidateEvent''($initialize_validator_events#$1_stake_StakePool(s)) + && $IsValid'$1_event_EventHandle'$1_stake_SetOperatorEvent''($set_operator_events#$1_stake_StakePool(s)) + && $IsValid'$1_event_EventHandle'$1_stake_AddStakeEvent''($add_stake_events#$1_stake_StakePool(s)) + && $IsValid'$1_event_EventHandle'$1_stake_ReactivateStakeEvent''($reactivate_stake_events#$1_stake_StakePool(s)) + && $IsValid'$1_event_EventHandle'$1_stake_RotateConsensusKeyEvent''($rotate_consensus_key_events#$1_stake_StakePool(s)) + && $IsValid'$1_event_EventHandle'$1_stake_UpdateNetworkAndFullnodeAddressesEvent''($update_network_and_fullnode_addresses_events#$1_stake_StakePool(s)) + && $IsValid'$1_event_EventHandle'$1_stake_IncreaseLockupEvent''($increase_lockup_events#$1_stake_StakePool(s)) + && $IsValid'$1_event_EventHandle'$1_stake_JoinValidatorSetEvent''($join_validator_set_events#$1_stake_StakePool(s)) + && $IsValid'$1_event_EventHandle'$1_stake_DistributeRewardsEvent''($distribute_rewards_events#$1_stake_StakePool(s)) + && $IsValid'$1_event_EventHandle'$1_stake_UnlockStakeEvent''($unlock_stake_events#$1_stake_StakePool(s)) + && $IsValid'$1_event_EventHandle'$1_stake_WithdrawStakeEvent''($withdraw_stake_events#$1_stake_StakePool(s)) + && $IsValid'$1_event_EventHandle'$1_stake_LeaveValidatorSetEvent''($leave_validator_set_events#$1_stake_StakePool(s)) +} +function {:inline} $IsEqual'$1_stake_StakePool'(s1: $1_stake_StakePool, s2: $1_stake_StakePool): bool { + s1 == s2 +} +var $1_stake_StakePool_$memory: $Memory $1_stake_StakePool; + +// struct stake::UnlockStakeEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:249:5+108 +type {:datatype} $1_stake_UnlockStakeEvent; +function {:constructor} $1_stake_UnlockStakeEvent($pool_address: int, $amount_unlocked: int): $1_stake_UnlockStakeEvent; +function {:inline} $Update'$1_stake_UnlockStakeEvent'_pool_address(s: $1_stake_UnlockStakeEvent, x: int): $1_stake_UnlockStakeEvent { + $1_stake_UnlockStakeEvent(x, $amount_unlocked#$1_stake_UnlockStakeEvent(s)) +} +function {:inline} $Update'$1_stake_UnlockStakeEvent'_amount_unlocked(s: $1_stake_UnlockStakeEvent, x: int): $1_stake_UnlockStakeEvent { + $1_stake_UnlockStakeEvent($pool_address#$1_stake_UnlockStakeEvent(s), x) +} +function $IsValid'$1_stake_UnlockStakeEvent'(s: $1_stake_UnlockStakeEvent): bool { + $IsValid'address'($pool_address#$1_stake_UnlockStakeEvent(s)) + && $IsValid'u64'($amount_unlocked#$1_stake_UnlockStakeEvent(s)) +} +function {:inline} $IsEqual'$1_stake_UnlockStakeEvent'(s1: $1_stake_UnlockStakeEvent, s2: $1_stake_UnlockStakeEvent): bool { + s1 == s2 +} + +// struct stake::UpdateNetworkAndFullnodeAddressesEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:226:5+274 +type {:datatype} $1_stake_UpdateNetworkAndFullnodeAddressesEvent; +function {:constructor} $1_stake_UpdateNetworkAndFullnodeAddressesEvent($pool_address: int, $old_network_addresses: Vec (int), $new_network_addresses: Vec (int), $old_fullnode_addresses: Vec (int), $new_fullnode_addresses: Vec (int)): $1_stake_UpdateNetworkAndFullnodeAddressesEvent; +function {:inline} $Update'$1_stake_UpdateNetworkAndFullnodeAddressesEvent'_pool_address(s: $1_stake_UpdateNetworkAndFullnodeAddressesEvent, x: int): $1_stake_UpdateNetworkAndFullnodeAddressesEvent { + $1_stake_UpdateNetworkAndFullnodeAddressesEvent(x, $old_network_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s), $new_network_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s), $old_fullnode_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s), $new_fullnode_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s)) +} +function {:inline} $Update'$1_stake_UpdateNetworkAndFullnodeAddressesEvent'_old_network_addresses(s: $1_stake_UpdateNetworkAndFullnodeAddressesEvent, x: Vec (int)): $1_stake_UpdateNetworkAndFullnodeAddressesEvent { + $1_stake_UpdateNetworkAndFullnodeAddressesEvent($pool_address#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s), x, $new_network_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s), $old_fullnode_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s), $new_fullnode_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s)) +} +function {:inline} $Update'$1_stake_UpdateNetworkAndFullnodeAddressesEvent'_new_network_addresses(s: $1_stake_UpdateNetworkAndFullnodeAddressesEvent, x: Vec (int)): $1_stake_UpdateNetworkAndFullnodeAddressesEvent { + $1_stake_UpdateNetworkAndFullnodeAddressesEvent($pool_address#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s), $old_network_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s), x, $old_fullnode_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s), $new_fullnode_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s)) +} +function {:inline} $Update'$1_stake_UpdateNetworkAndFullnodeAddressesEvent'_old_fullnode_addresses(s: $1_stake_UpdateNetworkAndFullnodeAddressesEvent, x: Vec (int)): $1_stake_UpdateNetworkAndFullnodeAddressesEvent { + $1_stake_UpdateNetworkAndFullnodeAddressesEvent($pool_address#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s), $old_network_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s), $new_network_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s), x, $new_fullnode_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s)) +} +function {:inline} $Update'$1_stake_UpdateNetworkAndFullnodeAddressesEvent'_new_fullnode_addresses(s: $1_stake_UpdateNetworkAndFullnodeAddressesEvent, x: Vec (int)): $1_stake_UpdateNetworkAndFullnodeAddressesEvent { + $1_stake_UpdateNetworkAndFullnodeAddressesEvent($pool_address#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s), $old_network_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s), $new_network_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s), $old_fullnode_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s), x) +} +function $IsValid'$1_stake_UpdateNetworkAndFullnodeAddressesEvent'(s: $1_stake_UpdateNetworkAndFullnodeAddressesEvent): bool { + $IsValid'address'($pool_address#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s)) + && $IsValid'vec'u8''($old_network_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s)) + && $IsValid'vec'u8''($new_network_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s)) + && $IsValid'vec'u8''($old_fullnode_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s)) + && $IsValid'vec'u8''($new_fullnode_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s)) +} +function {:inline} $IsEqual'$1_stake_UpdateNetworkAndFullnodeAddressesEvent'(s1: $1_stake_UpdateNetworkAndFullnodeAddressesEvent, s2: $1_stake_UpdateNetworkAndFullnodeAddressesEvent): bool { + $IsEqual'address'($pool_address#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s1), $pool_address#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s2)) + && $IsEqual'vec'u8''($old_network_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s1), $old_network_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s2)) + && $IsEqual'vec'u8''($new_network_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s1), $new_network_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s2)) + && $IsEqual'vec'u8''($old_fullnode_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s1), $old_fullnode_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s2)) + && $IsEqual'vec'u8''($new_fullnode_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s1), $new_fullnode_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s2))} + +// struct stake::ValidatorConfig at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:151:5+372 +type {:datatype} $1_stake_ValidatorConfig; +function {:constructor} $1_stake_ValidatorConfig($consensus_pubkey: Vec (int), $network_addresses: Vec (int), $fullnode_addresses: Vec (int), $validator_index: int): $1_stake_ValidatorConfig; +function {:inline} $Update'$1_stake_ValidatorConfig'_consensus_pubkey(s: $1_stake_ValidatorConfig, x: Vec (int)): $1_stake_ValidatorConfig { + $1_stake_ValidatorConfig(x, $network_addresses#$1_stake_ValidatorConfig(s), $fullnode_addresses#$1_stake_ValidatorConfig(s), $validator_index#$1_stake_ValidatorConfig(s)) +} +function {:inline} $Update'$1_stake_ValidatorConfig'_network_addresses(s: $1_stake_ValidatorConfig, x: Vec (int)): $1_stake_ValidatorConfig { + $1_stake_ValidatorConfig($consensus_pubkey#$1_stake_ValidatorConfig(s), x, $fullnode_addresses#$1_stake_ValidatorConfig(s), $validator_index#$1_stake_ValidatorConfig(s)) +} +function {:inline} $Update'$1_stake_ValidatorConfig'_fullnode_addresses(s: $1_stake_ValidatorConfig, x: Vec (int)): $1_stake_ValidatorConfig { + $1_stake_ValidatorConfig($consensus_pubkey#$1_stake_ValidatorConfig(s), $network_addresses#$1_stake_ValidatorConfig(s), x, $validator_index#$1_stake_ValidatorConfig(s)) +} +function {:inline} $Update'$1_stake_ValidatorConfig'_validator_index(s: $1_stake_ValidatorConfig, x: int): $1_stake_ValidatorConfig { + $1_stake_ValidatorConfig($consensus_pubkey#$1_stake_ValidatorConfig(s), $network_addresses#$1_stake_ValidatorConfig(s), $fullnode_addresses#$1_stake_ValidatorConfig(s), x) +} +function $IsValid'$1_stake_ValidatorConfig'(s: $1_stake_ValidatorConfig): bool { + $IsValid'vec'u8''($consensus_pubkey#$1_stake_ValidatorConfig(s)) + && $IsValid'vec'u8''($network_addresses#$1_stake_ValidatorConfig(s)) + && $IsValid'vec'u8''($fullnode_addresses#$1_stake_ValidatorConfig(s)) + && $IsValid'u64'($validator_index#$1_stake_ValidatorConfig(s)) +} +function {:inline} $IsEqual'$1_stake_ValidatorConfig'(s1: $1_stake_ValidatorConfig, s2: $1_stake_ValidatorConfig): bool { + $IsEqual'vec'u8''($consensus_pubkey#$1_stake_ValidatorConfig(s1), $consensus_pubkey#$1_stake_ValidatorConfig(s2)) + && $IsEqual'vec'u8''($network_addresses#$1_stake_ValidatorConfig(s1), $network_addresses#$1_stake_ValidatorConfig(s2)) + && $IsEqual'vec'u8''($fullnode_addresses#$1_stake_ValidatorConfig(s1), $fullnode_addresses#$1_stake_ValidatorConfig(s2)) + && $IsEqual'u64'($validator_index#$1_stake_ValidatorConfig(s1), $validator_index#$1_stake_ValidatorConfig(s2))} +var $1_stake_ValidatorConfig_$memory: $Memory $1_stake_ValidatorConfig; + +// struct stake::ValidatorInfo at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:161:5+133 +type {:datatype} $1_stake_ValidatorInfo; +function {:constructor} $1_stake_ValidatorInfo($addr: int, $voting_power: int, $config: $1_stake_ValidatorConfig): $1_stake_ValidatorInfo; +function {:inline} $Update'$1_stake_ValidatorInfo'_addr(s: $1_stake_ValidatorInfo, x: int): $1_stake_ValidatorInfo { + $1_stake_ValidatorInfo(x, $voting_power#$1_stake_ValidatorInfo(s), $config#$1_stake_ValidatorInfo(s)) +} +function {:inline} $Update'$1_stake_ValidatorInfo'_voting_power(s: $1_stake_ValidatorInfo, x: int): $1_stake_ValidatorInfo { + $1_stake_ValidatorInfo($addr#$1_stake_ValidatorInfo(s), x, $config#$1_stake_ValidatorInfo(s)) +} +function {:inline} $Update'$1_stake_ValidatorInfo'_config(s: $1_stake_ValidatorInfo, x: $1_stake_ValidatorConfig): $1_stake_ValidatorInfo { + $1_stake_ValidatorInfo($addr#$1_stake_ValidatorInfo(s), $voting_power#$1_stake_ValidatorInfo(s), x) +} +function $IsValid'$1_stake_ValidatorInfo'(s: $1_stake_ValidatorInfo): bool { + $IsValid'address'($addr#$1_stake_ValidatorInfo(s)) + && $IsValid'u64'($voting_power#$1_stake_ValidatorInfo(s)) + && $IsValid'$1_stake_ValidatorConfig'($config#$1_stake_ValidatorInfo(s)) +} +function {:inline} $IsEqual'$1_stake_ValidatorInfo'(s1: $1_stake_ValidatorInfo, s2: $1_stake_ValidatorInfo): bool { + $IsEqual'address'($addr#$1_stake_ValidatorInfo(s1), $addr#$1_stake_ValidatorInfo(s2)) + && $IsEqual'u64'($voting_power#$1_stake_ValidatorInfo(s1), $voting_power#$1_stake_ValidatorInfo(s2)) + && $IsEqual'$1_stake_ValidatorConfig'($config#$1_stake_ValidatorInfo(s1), $config#$1_stake_ValidatorInfo(s2))} + +// struct stake::ValidatorPerformance at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:196:5+103 +type {:datatype} $1_stake_ValidatorPerformance; +function {:constructor} $1_stake_ValidatorPerformance($validators: Vec ($1_stake_IndividualValidatorPerformance)): $1_stake_ValidatorPerformance; +function {:inline} $Update'$1_stake_ValidatorPerformance'_validators(s: $1_stake_ValidatorPerformance, x: Vec ($1_stake_IndividualValidatorPerformance)): $1_stake_ValidatorPerformance { + $1_stake_ValidatorPerformance(x) +} +function $IsValid'$1_stake_ValidatorPerformance'(s: $1_stake_ValidatorPerformance): bool { + $IsValid'vec'$1_stake_IndividualValidatorPerformance''($validators#$1_stake_ValidatorPerformance(s)) +} +function {:inline} $IsEqual'$1_stake_ValidatorPerformance'(s1: $1_stake_ValidatorPerformance, s2: $1_stake_ValidatorPerformance): bool { + $IsEqual'vec'$1_stake_IndividualValidatorPerformance''($validators#$1_stake_ValidatorPerformance(s1), $validators#$1_stake_ValidatorPerformance(s2))} +var $1_stake_ValidatorPerformance_$memory: $Memory $1_stake_ValidatorPerformance; + +// struct stake::ValidatorSet at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:171:5+558 +type {:datatype} $1_stake_ValidatorSet; +function {:constructor} $1_stake_ValidatorSet($consensus_scheme: int, $active_validators: Vec ($1_stake_ValidatorInfo), $pending_inactive: Vec ($1_stake_ValidatorInfo), $pending_active: Vec ($1_stake_ValidatorInfo), $total_voting_power: int, $total_joining_power: int): $1_stake_ValidatorSet; +function {:inline} $Update'$1_stake_ValidatorSet'_consensus_scheme(s: $1_stake_ValidatorSet, x: int): $1_stake_ValidatorSet { + $1_stake_ValidatorSet(x, $active_validators#$1_stake_ValidatorSet(s), $pending_inactive#$1_stake_ValidatorSet(s), $pending_active#$1_stake_ValidatorSet(s), $total_voting_power#$1_stake_ValidatorSet(s), $total_joining_power#$1_stake_ValidatorSet(s)) +} +function {:inline} $Update'$1_stake_ValidatorSet'_active_validators(s: $1_stake_ValidatorSet, x: Vec ($1_stake_ValidatorInfo)): $1_stake_ValidatorSet { + $1_stake_ValidatorSet($consensus_scheme#$1_stake_ValidatorSet(s), x, $pending_inactive#$1_stake_ValidatorSet(s), $pending_active#$1_stake_ValidatorSet(s), $total_voting_power#$1_stake_ValidatorSet(s), $total_joining_power#$1_stake_ValidatorSet(s)) +} +function {:inline} $Update'$1_stake_ValidatorSet'_pending_inactive(s: $1_stake_ValidatorSet, x: Vec ($1_stake_ValidatorInfo)): $1_stake_ValidatorSet { + $1_stake_ValidatorSet($consensus_scheme#$1_stake_ValidatorSet(s), $active_validators#$1_stake_ValidatorSet(s), x, $pending_active#$1_stake_ValidatorSet(s), $total_voting_power#$1_stake_ValidatorSet(s), $total_joining_power#$1_stake_ValidatorSet(s)) +} +function {:inline} $Update'$1_stake_ValidatorSet'_pending_active(s: $1_stake_ValidatorSet, x: Vec ($1_stake_ValidatorInfo)): $1_stake_ValidatorSet { + $1_stake_ValidatorSet($consensus_scheme#$1_stake_ValidatorSet(s), $active_validators#$1_stake_ValidatorSet(s), $pending_inactive#$1_stake_ValidatorSet(s), x, $total_voting_power#$1_stake_ValidatorSet(s), $total_joining_power#$1_stake_ValidatorSet(s)) +} +function {:inline} $Update'$1_stake_ValidatorSet'_total_voting_power(s: $1_stake_ValidatorSet, x: int): $1_stake_ValidatorSet { + $1_stake_ValidatorSet($consensus_scheme#$1_stake_ValidatorSet(s), $active_validators#$1_stake_ValidatorSet(s), $pending_inactive#$1_stake_ValidatorSet(s), $pending_active#$1_stake_ValidatorSet(s), x, $total_joining_power#$1_stake_ValidatorSet(s)) +} +function {:inline} $Update'$1_stake_ValidatorSet'_total_joining_power(s: $1_stake_ValidatorSet, x: int): $1_stake_ValidatorSet { + $1_stake_ValidatorSet($consensus_scheme#$1_stake_ValidatorSet(s), $active_validators#$1_stake_ValidatorSet(s), $pending_inactive#$1_stake_ValidatorSet(s), $pending_active#$1_stake_ValidatorSet(s), $total_voting_power#$1_stake_ValidatorSet(s), x) +} +function $IsValid'$1_stake_ValidatorSet'(s: $1_stake_ValidatorSet): bool { + $IsValid'u8'($consensus_scheme#$1_stake_ValidatorSet(s)) + && $IsValid'vec'$1_stake_ValidatorInfo''($active_validators#$1_stake_ValidatorSet(s)) + && $IsValid'vec'$1_stake_ValidatorInfo''($pending_inactive#$1_stake_ValidatorSet(s)) + && $IsValid'vec'$1_stake_ValidatorInfo''($pending_active#$1_stake_ValidatorSet(s)) + && $IsValid'u128'($total_voting_power#$1_stake_ValidatorSet(s)) + && $IsValid'u128'($total_joining_power#$1_stake_ValidatorSet(s)) +} +function {:inline} $IsEqual'$1_stake_ValidatorSet'(s1: $1_stake_ValidatorSet, s2: $1_stake_ValidatorSet): bool { + $IsEqual'u8'($consensus_scheme#$1_stake_ValidatorSet(s1), $consensus_scheme#$1_stake_ValidatorSet(s2)) + && $IsEqual'vec'$1_stake_ValidatorInfo''($active_validators#$1_stake_ValidatorSet(s1), $active_validators#$1_stake_ValidatorSet(s2)) + && $IsEqual'vec'$1_stake_ValidatorInfo''($pending_inactive#$1_stake_ValidatorSet(s1), $pending_inactive#$1_stake_ValidatorSet(s2)) + && $IsEqual'vec'$1_stake_ValidatorInfo''($pending_active#$1_stake_ValidatorSet(s1), $pending_active#$1_stake_ValidatorSet(s2)) + && $IsEqual'u128'($total_voting_power#$1_stake_ValidatorSet(s1), $total_voting_power#$1_stake_ValidatorSet(s2)) + && $IsEqual'u128'($total_joining_power#$1_stake_ValidatorSet(s1), $total_joining_power#$1_stake_ValidatorSet(s2))} +var $1_stake_ValidatorSet_$memory: $Memory $1_stake_ValidatorSet; + +// struct stake::WithdrawStakeEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:254:5+111 +type {:datatype} $1_stake_WithdrawStakeEvent; +function {:constructor} $1_stake_WithdrawStakeEvent($pool_address: int, $amount_withdrawn: int): $1_stake_WithdrawStakeEvent; +function {:inline} $Update'$1_stake_WithdrawStakeEvent'_pool_address(s: $1_stake_WithdrawStakeEvent, x: int): $1_stake_WithdrawStakeEvent { + $1_stake_WithdrawStakeEvent(x, $amount_withdrawn#$1_stake_WithdrawStakeEvent(s)) +} +function {:inline} $Update'$1_stake_WithdrawStakeEvent'_amount_withdrawn(s: $1_stake_WithdrawStakeEvent, x: int): $1_stake_WithdrawStakeEvent { + $1_stake_WithdrawStakeEvent($pool_address#$1_stake_WithdrawStakeEvent(s), x) +} +function $IsValid'$1_stake_WithdrawStakeEvent'(s: $1_stake_WithdrawStakeEvent): bool { + $IsValid'address'($pool_address#$1_stake_WithdrawStakeEvent(s)) + && $IsValid'u64'($amount_withdrawn#$1_stake_WithdrawStakeEvent(s)) +} +function {:inline} $IsEqual'$1_stake_WithdrawStakeEvent'(s1: $1_stake_WithdrawStakeEvent, s2: $1_stake_WithdrawStakeEvent): bool { + s1 == s2 +} + +// fun stake::assert_stake_pool_exists [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:1319:5+162 +procedure {:inline 1} $1_stake_assert_stake_pool_exists(_$t0: int) returns () +{ + // declare local variables + var $t1: bool; + var $t2: int; + var $t3: int; + var $t4: int; + var $t0: int; + var $temp_0'address': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[pool_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:1319:5+1 + assume {:print "$at(131,62960,62961)"} true; + assume {:print "$track_local(38,5,0):", $t0} $t0 == $t0; + + // $t1 := stake::stake_pool_exists($t0) on_abort goto L4 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:1320:17+31 + assume {:print "$at(131,63030,63061)"} true; + call $t1 := $1_stake_stake_pool_exists($t0); + if ($abort_flag) { + assume {:print "$at(131,63030,63061)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(38,5):", $t2} $t2 == $t2; + goto L4; + } + + // if ($t1) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:1320:9+93 + if ($t1) { goto L1; } else { goto L0; } + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:1320:9+93 +L1: + + // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:1320:9+93 + assume {:print "$at(131,63022,63115)"} true; + goto L2; + + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:1320:74+26 +L0: + + // $t3 := 14 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:1320:74+26 + assume {:print "$at(131,63087,63113)"} true; + $t3 := 14; + assume $IsValid'u64'($t3); + + // $t4 := error::invalid_argument($t3) on_abort goto L4 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:1320:50+51 + call $t4 := $1_error_invalid_argument($t3); + if ($abort_flag) { + assume {:print "$at(131,63063,63114)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(38,5):", $t2} $t2 == $t2; + goto L4; + } + + // trace_abort($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:1320:9+93 + assume {:print "$at(131,63022,63115)"} true; + assume {:print "$track_abort(38,5):", $t4} $t4 == $t4; + + // $t2 := move($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:1320:9+93 + $t2 := $t4; + + // goto L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:1320:9+93 + goto L4; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:1320:102+1 +L2: + + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:1321:5+1 + assume {:print "$at(131,63121,63122)"} true; +L3: + + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:1321:5+1 + assume {:print "$at(131,63121,63122)"} true; + return; + + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:1321:5+1 +L4: + + // abort($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:1321:5+1 + assume {:print "$at(131,63121,63122)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun stake::get_delegated_voter [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:359:5+200 +procedure {:inline 1} $1_stake_get_delegated_voter(_$t0: int) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: $1_stake_StakePool; + var $t3: int; + var $t0: int; + var $temp_0'address': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[pool_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:359:5+1 + assume {:print "$at(131,16317,16318)"} true; + assume {:print "$track_local(38,16,0):", $t0} $t0 == $t0; + + // stake::assert_stake_pool_exists($t0) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:360:9+38 + assume {:print "$at(131,16409,16447)"} true; + call $1_stake_assert_stake_pool_exists($t0); + if ($abort_flag) { + assume {:print "$at(131,16409,16447)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(38,16):", $t1} $t1 == $t1; + goto L2; + } + + // $t2 := get_global($t0) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:361:9+13 + assume {:print "$at(131,16457,16470)"} true; + if (!$ResourceExists($1_stake_StakePool_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t2 := $ResourceValue($1_stake_StakePool_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(131,16457,16470)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(38,16):", $t1} $t1 == $t1; + goto L2; + } + + // $t3 := get_field.delegated_voter($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:361:9+54 + $t3 := $delegated_voter#$1_stake_StakePool($t2); + + // trace_return[0]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:361:9+54 + assume {:print "$track_return(38,16,0):", $t3} $t3 == $t3; + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:362:5+1 + assume {:print "$at(131,16516,16517)"} true; +L1: + + // return $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:362:5+1 + assume {:print "$at(131,16516,16517)"} true; + $ret0 := $t3; + return; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:362:5+1 +L2: + + // abort($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:362:5+1 + assume {:print "$at(131,16516,16517)"} true; + $abort_code := $t1; + $abort_flag := true; + return; + +} + +// fun stake::get_lockup_secs [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:294:5+194 +procedure {:inline 1} $1_stake_get_lockup_secs(_$t0: int) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: $1_stake_StakePool; + var $t3: int; + var $t0: int; + var $temp_0'address': int; + var $temp_0'u64': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[pool_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:294:5+1 + assume {:print "$at(131,13232,13233)"} true; + assume {:print "$track_local(38,17,0):", $t0} $t0 == $t0; + + // stake::assert_stake_pool_exists($t0) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:295:9+38 + assume {:print "$at(131,13316,13354)"} true; + call $1_stake_assert_stake_pool_exists($t0); + if ($abort_flag) { + assume {:print "$at(131,13316,13354)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(38,17):", $t1} $t1 == $t1; + goto L2; + } + + // $t2 := get_global($t0) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:296:9+13 + assume {:print "$at(131,13364,13377)"} true; + if (!$ResourceExists($1_stake_StakePool_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t2 := $ResourceValue($1_stake_StakePool_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(131,13364,13377)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(38,17):", $t1} $t1 == $t1; + goto L2; + } + + // $t3 := get_field.locked_until_secs($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:296:9+56 + $t3 := $locked_until_secs#$1_stake_StakePool($t2); + + // trace_return[0]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:296:9+56 + assume {:print "$track_return(38,17,0):", $t3} $t3 == $t3; + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:297:5+1 + assume {:print "$at(131,13425,13426)"} true; +L1: + + // return $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:297:5+1 + assume {:print "$at(131,13425,13426)"} true; + $ret0 := $t3; + return; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:297:5+1 +L2: + + // abort($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:297:5+1 + assume {:print "$at(131,13425,13426)"} true; + $abort_code := $t1; + $abort_flag := true; + return; + +} + +// fun stake::get_stake [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:315:5+425 +procedure {:inline 1} $1_stake_get_stake(_$t0: int) returns ($ret0: int, $ret1: int, $ret2: int, $ret3: int) +{ + // declare local variables + var $t1: $1_stake_StakePool; + var $t2: int; + var $t3: $1_stake_StakePool; + var $t4: $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $t5: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t6: int; + var $t7: $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $t8: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t9: int; + var $t10: $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $t11: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t12: int; + var $t13: $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $t14: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t15: int; + var $t0: int; + var $temp_0'$1_stake_StakePool': $1_stake_StakePool; + var $temp_0'address': int; + var $temp_0'u64': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[pool_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:315:5+1 + assume {:print "$at(131,14196,14197)"} true; + assume {:print "$track_local(38,22,0):", $t0} $t0 == $t0; + + // stake::assert_stake_pool_exists($t0) on_abort goto L2 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:316:9+38 + assume {:print "$at(131,14291,14329)"} true; + call $1_stake_assert_stake_pool_exists($t0); + if ($abort_flag) { + assume {:print "$at(131,14291,14329)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(38,22):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := get_global($t0) on_abort goto L2 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:317:26+13 + assume {:print "$at(131,14356,14369)"} true; + if (!$ResourceExists($1_stake_StakePool_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t3 := $ResourceValue($1_stake_StakePool_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(131,14356,14369)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(38,22):", $t2} $t2 == $t2; + goto L2; + } + + // trace_local[stake_pool]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:317:13+10 + assume {:print "$track_local(38,22,1):", $t3} $t3 == $t3; + + // $t4 := get_field.active($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:319:25+18 + assume {:print "$at(131,14430,14448)"} true; + $t4 := $active#$1_stake_StakePool($t3); + + // assume Identical($t5, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + assume {:print "$at(95,1664,1763)"} true; + assume ($t5 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + + // $t6 := coin::value($t4) on_abort goto L2 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:319:13+31 + assume {:print "$at(131,14418,14449)"} true; + call $t6 := $1_coin_value'$1_aptos_coin_AptosCoin'($t4); + if ($abort_flag) { + assume {:print "$at(131,14418,14449)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(38,22):", $t2} $t2 == $t2; + goto L2; + } + + // $t7 := get_field.inactive($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:320:25+20 + assume {:print "$at(131,14475,14495)"} true; + $t7 := $inactive#$1_stake_StakePool($t3); + + // assume Identical($t8, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + assume {:print "$at(95,1664,1763)"} true; + assume ($t8 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + + // $t9 := coin::value($t7) on_abort goto L2 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:320:13+33 + assume {:print "$at(131,14463,14496)"} true; + call $t9 := $1_coin_value'$1_aptos_coin_AptosCoin'($t7); + if ($abort_flag) { + assume {:print "$at(131,14463,14496)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(38,22):", $t2} $t2 == $t2; + goto L2; + } + + // $t10 := get_field.pending_active($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:321:25+26 + assume {:print "$at(131,14522,14548)"} true; + $t10 := $pending_active#$1_stake_StakePool($t3); + + // assume Identical($t11, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + assume {:print "$at(95,1664,1763)"} true; + assume ($t11 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + + // $t12 := coin::value($t10) on_abort goto L2 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:321:13+39 + assume {:print "$at(131,14510,14549)"} true; + call $t12 := $1_coin_value'$1_aptos_coin_AptosCoin'($t10); + if ($abort_flag) { + assume {:print "$at(131,14510,14549)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(38,22):", $t2} $t2 == $t2; + goto L2; + } + + // $t13 := get_field.pending_inactive($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:322:25+28 + assume {:print "$at(131,14575,14603)"} true; + $t13 := $pending_inactive#$1_stake_StakePool($t3); + + // assume Identical($t14, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + assume {:print "$at(95,1664,1763)"} true; + assume ($t14 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + + // $t15 := coin::value($t13) on_abort goto L2 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:322:13+41 + assume {:print "$at(131,14563,14604)"} true; + call $t15 := $1_coin_value'$1_aptos_coin_AptosCoin'($t13); + if ($abort_flag) { + assume {:print "$at(131,14563,14604)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(38,22):", $t2} $t2 == $t2; + goto L2; + } + + // trace_return[0]($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:318:9+211 + assume {:print "$at(131,14404,14615)"} true; + assume {:print "$track_return(38,22,0):", $t6} $t6 == $t6; + + // trace_return[1]($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:318:9+211 + assume {:print "$track_return(38,22,1):", $t9} $t9 == $t9; + + // trace_return[2]($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:318:9+211 + assume {:print "$track_return(38,22,2):", $t12} $t12 == $t12; + + // trace_return[3]($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:318:9+211 + assume {:print "$track_return(38,22,3):", $t15} $t15 == $t15; + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:324:5+1 + assume {:print "$at(131,14620,14621)"} true; +L1: + + // return ($t6, $t9, $t12, $t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:324:5+1 + assume {:print "$at(131,14620,14621)"} true; + $ret0 := $t6; + $ret1 := $t9; + $ret2 := $t12; + $ret3 := $t15; + return; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:324:5+1 +L2: + + // abort($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:324:5+1 + assume {:print "$at(131,14620,14621)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun stake::get_validator_state [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:328:5+652 +procedure {:inline 1} $1_stake_get_validator_state(_$t0: int) returns ($ret0: int) +{ + // declare local variables + var $t1: $1_option_Option'u64'; + var $t2: $1_option_Option'u64'; + var $t3: $1_option_Option'u64'; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: $1_stake_ValidatorSet; + var $t8: $1_stake_ValidatorSet; + var $t9: int; + var $t10: $1_stake_ValidatorSet; + var $t11: int; + var $t12: Vec ($1_stake_ValidatorInfo); + var $t13: $1_option_Option'u64'; + var $t14: bool; + var $t15: int; + var $t16: Vec ($1_stake_ValidatorInfo); + var $t17: $1_option_Option'u64'; + var $t18: bool; + var $t19: int; + var $t20: Vec ($1_stake_ValidatorInfo); + var $t21: $1_option_Option'u64'; + var $t22: bool; + var $t23: int; + var $t24: int; + var $t0: int; + var $temp_0'$1_stake_ValidatorSet': $1_stake_ValidatorSet; + var $temp_0'address': int; + var $temp_0'u64': int; + $t0 := _$t0; + + // bytecode translation starts here + // assume Identical($t8, global(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:246:9+59 + assume {:print "$at(132,10599,10658)"} true; + assume ($t8 == $ResourceValue($1_stake_ValidatorSet_$memory, 1)); + + // trace_local[pool_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:328:5+1 + assume {:print "$at(131,14678,14679)"} true; + assume {:print "$track_local(38,25,0):", $t0} $t0 == $t0; + + // $t9 := 0x1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:329:57+16 + assume {:print "$at(131,14817,14833)"} true; + $t9 := 1; + assume $IsValid'address'($t9); + + // $t10 := get_global($t9) on_abort goto L10 with $t11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:329:29+13 + if (!$ResourceExists($1_stake_ValidatorSet_$memory, $t9)) { + call $ExecFailureAbort(); + } else { + $t10 := $ResourceValue($1_stake_ValidatorSet_$memory, $t9); + } + if ($abort_flag) { + assume {:print "$at(131,14789,14802)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(38,25):", $t11} $t11 == $t11; + goto L10; + } + + // trace_local[validator_set]($t10) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:329:13+13 + assume {:print "$track_local(38,25,7):", $t10} $t10 == $t10; + + // $t12 := get_field.pending_active($t10) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:330:45+29 + assume {:print "$at(131,14880,14909)"} true; + $t12 := $pending_active#$1_stake_ValidatorSet($t10); + + // $t13 := opaque begin: stake::find_validator($t12, $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:330:30+59 + + // assume And(WellFormed($t13), Le(Len(select option::Option.vec($t13)), 1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:330:30+59 + assume ($IsValid'$1_option_Option'u64''($t13) && (LenVec($vec#$1_option_Option'u64'($t13)) <= 1)); + + // assume Implies(option::$is_none($t13), forall i: Range(0, Len($t12)): Neq
(select stake::ValidatorInfo.addr(Index($t12, i)), $t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:330:30+59 + assume ($1_option_$is_none'u64'($t13) ==> (var $range_0 := $Range(0, LenVec($t12)); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var i := $i_1; + (!$IsEqual'address'($addr#$1_stake_ValidatorInfo(ReadVec($t12, i)), $t0)))))); + + // assume Implies(option::$is_some($t13), Eq
(select stake::ValidatorInfo.addr(Index($t12, option::$borrow($t13))), $t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:330:30+59 + assume ($1_option_$is_some'u64'($t13) ==> $IsEqual'address'($addr#$1_stake_ValidatorInfo(ReadVec($t12, $1_option_$borrow'u64'($t13))), $t0)); + + // assume Implies(option::$is_some($t13), stake::spec_contains($t12, $t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:330:30+59 + assume ($1_option_$is_some'u64'($t13) ==> $1_stake_spec_contains($t12, $t0)); + + // $t13 := opaque end: stake::find_validator($t12, $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:330:30+59 + + // $t14 := opaque begin: option::is_some($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:330:13+77 + + // assume WellFormed($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:330:13+77 + assume $IsValid'bool'($t14); + + // assume Eq($t14, option::spec_is_some($t13)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:330:13+77 + assume $IsEqual'bool'($t14, $1_option_spec_is_some'u64'($t13)); + + // $t14 := opaque end: option::is_some($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:330:13+77 + + // if ($t14) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:330:9+480 + if ($t14) { goto L1; } else { goto L0; } + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:330:9+480 +L1: + + // $t15 := 1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:331:13+31 + assume {:print "$at(131,14941,14972)"} true; + $t15 := 1; + assume $IsValid'u64'($t15); + + // $t6 := $t15 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:330:9+480 + assume {:print "$at(131,14844,15324)"} true; + $t6 := $t15; + + // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:330:9+480 + goto L2; + + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:332:53+13 + assume {:print "$at(131,15025,15038)"} true; +L0: + + // $t16 := get_field.active_validators($t10) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:332:52+32 + assume {:print "$at(131,15024,15056)"} true; + $t16 := $active_validators#$1_stake_ValidatorSet($t10); + + // $t17 := opaque begin: stake::find_validator($t16, $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:332:37+62 + + // assume And(WellFormed($t17), Le(Len(select option::Option.vec($t17)), 1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:332:37+62 + assume ($IsValid'$1_option_Option'u64''($t17) && (LenVec($vec#$1_option_Option'u64'($t17)) <= 1)); + + // assume Implies(option::$is_none($t17), forall i: Range(0, Len($t16)): Neq
(select stake::ValidatorInfo.addr(Index($t16, i)), $t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:332:37+62 + assume ($1_option_$is_none'u64'($t17) ==> (var $range_0 := $Range(0, LenVec($t16)); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var i := $i_1; + (!$IsEqual'address'($addr#$1_stake_ValidatorInfo(ReadVec($t16, i)), $t0)))))); + + // assume Implies(option::$is_some($t17), Eq
(select stake::ValidatorInfo.addr(Index($t16, option::$borrow($t17))), $t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:332:37+62 + assume ($1_option_$is_some'u64'($t17) ==> $IsEqual'address'($addr#$1_stake_ValidatorInfo(ReadVec($t16, $1_option_$borrow'u64'($t17))), $t0)); + + // assume Implies(option::$is_some($t17), stake::spec_contains($t16, $t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:332:37+62 + assume ($1_option_$is_some'u64'($t17) ==> $1_stake_spec_contains($t16, $t0)); + + // $t17 := opaque end: stake::find_validator($t16, $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:332:37+62 + + // $t18 := opaque begin: option::is_some($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:332:20+80 + + // assume WellFormed($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:332:20+80 + assume $IsValid'bool'($t18); + + // assume Eq($t18, option::spec_is_some($t17)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:332:20+80 + assume $IsEqual'bool'($t18, $1_option_spec_is_some'u64'($t17)); + + // $t18 := opaque end: option::is_some($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:332:20+80 + + // if ($t18) goto L4 else goto L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:332:16+336 + if ($t18) { goto L4; } else { goto L3; } + + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:332:16+336 +L4: + + // $t19 := 2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:333:13+23 + assume {:print "$at(131,15088,15111)"} true; + $t19 := 2; + assume $IsValid'u64'($t19); + + // $t5 := $t19 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:332:16+336 + assume {:print "$at(131,14988,15324)"} true; + $t5 := $t19; + + // goto L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:332:16+336 + goto L5; + + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:334:53+13 + assume {:print "$at(131,15164,15177)"} true; +L3: + + // $t20 := get_field.pending_inactive($t10) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:334:52+31 + assume {:print "$at(131,15163,15194)"} true; + $t20 := $pending_inactive#$1_stake_ValidatorSet($t10); + + // $t21 := opaque begin: stake::find_validator($t20, $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:334:37+61 + + // assume And(WellFormed($t21), Le(Len(select option::Option.vec($t21)), 1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:334:37+61 + assume ($IsValid'$1_option_Option'u64''($t21) && (LenVec($vec#$1_option_Option'u64'($t21)) <= 1)); + + // assume Implies(option::$is_none($t21), forall i: Range(0, Len($t20)): Neq
(select stake::ValidatorInfo.addr(Index($t20, i)), $t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:334:37+61 + assume ($1_option_$is_none'u64'($t21) ==> (var $range_0 := $Range(0, LenVec($t20)); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var i := $i_1; + (!$IsEqual'address'($addr#$1_stake_ValidatorInfo(ReadVec($t20, i)), $t0)))))); + + // assume Implies(option::$is_some($t21), Eq
(select stake::ValidatorInfo.addr(Index($t20, option::$borrow($t21))), $t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:334:37+61 + assume ($1_option_$is_some'u64'($t21) ==> $IsEqual'address'($addr#$1_stake_ValidatorInfo(ReadVec($t20, $1_option_$borrow'u64'($t21))), $t0)); + + // assume Implies(option::$is_some($t21), stake::spec_contains($t20, $t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:334:37+61 + assume ($1_option_$is_some'u64'($t21) ==> $1_stake_spec_contains($t20, $t0)); + + // $t21 := opaque end: stake::find_validator($t20, $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:334:37+61 + + // $t22 := opaque begin: option::is_some($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:334:20+79 + + // assume WellFormed($t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:334:20+79 + assume $IsValid'bool'($t22); + + // assume Eq($t22, option::spec_is_some($t21)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:334:20+79 + assume $IsEqual'bool'($t22, $1_option_spec_is_some'u64'($t21)); + + // $t22 := opaque end: option::is_some($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:334:20+79 + + // if ($t22) goto L7 else goto L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:334:16+197 + if ($t22) { goto L7; } else { goto L6; } + + // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:335:13+33 + assume {:print "$at(131,15226,15259)"} true; +L7: + + // $t23 := 3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:335:13+33 + assume {:print "$at(131,15226,15259)"} true; + $t23 := 3; + assume $IsValid'u64'($t23); + + // $t4 := $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:334:16+197 + assume {:print "$at(131,15127,15324)"} true; + $t4 := $t23; + + // goto L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:334:16+197 + goto L8; + + // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:337:13+25 + assume {:print "$at(131,15289,15314)"} true; +L6: + + // $t24 := 4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:337:13+25 + assume {:print "$at(131,15289,15314)"} true; + $t24 := 4; + assume $IsValid'u64'($t24); + + // $t4 := $t24 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:334:16+197 + assume {:print "$at(131,15127,15324)"} true; + $t4 := $t24; + + // label L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:334:16+197 +L8: + + // $t5 := $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:332:16+336 + assume {:print "$at(131,14988,15324)"} true; + $t5 := $t4; + + // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:332:16+336 +L5: + + // $t6 := $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:330:9+480 + assume {:print "$at(131,14844,15324)"} true; + $t6 := $t5; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:330:9+480 +L2: + + // trace_return[0]($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:330:9+480 + assume {:print "$at(131,14844,15324)"} true; + assume {:print "$track_return(38,25,0):", $t6} $t6 == $t6; + + // label L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:339:5+1 + assume {:print "$at(131,15329,15330)"} true; +L9: + + // return $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:339:5+1 + assume {:print "$at(131,15329,15330)"} true; + $ret0 := $t6; + return; + + // label L10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:339:5+1 +L10: + + // abort($t11) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:339:5+1 + assume {:print "$at(131,15329,15330)"} true; + $abort_code := $t11; + $abort_flag := true; + return; + +} + +// fun stake::increase_lockup_with_cap [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:763:5+905 +procedure {:inline 1} $1_stake_increase_lockup_with_cap(_$t0: $1_stake_OwnerCapability) returns () +{ + // declare local variables + var $t1: $1_staking_config_StakingConfig; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: $Mutation ($1_stake_StakePool); + var $t6: $1_staking_config_StakingConfig; + var $t7: int; + var $t8: $1_stake_StakePool; + var $t9: int; + var $t10: int; + var $t11: int; + var $t12: int; + var $t13: $1_staking_config_StakingConfig; + var $t14: $Mutation ($1_stake_StakePool); + var $t15: int; + var $t16: int; + var $t17: int; + var $t18: int; + var $t19: bool; + var $t20: int; + var $t21: int; + var $t22: $Mutation (int); + var $t23: $Mutation ($1_event_EventHandle'$1_stake_IncreaseLockupEvent'); + var $t24: $1_stake_IncreaseLockupEvent; + var $t0: $1_stake_OwnerCapability; + var $1_stake_StakePool_$modifies: [int]bool; + var $temp_0'$1_stake_OwnerCapability': $1_stake_OwnerCapability; + var $temp_0'$1_stake_StakePool': $1_stake_StakePool; + var $temp_0'$1_staking_config_StakingConfig': $1_staking_config_StakingConfig; + var $temp_0'address': int; + var $temp_0'u64': int; + $t0 := _$t0; + + // bytecode translation starts here + // assume Identical($t6, global(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:67:9+69 + assume {:print "$at(132,3047,3116)"} true; + assume ($t6 == $ResourceValue($1_staking_config_StakingConfig_$memory, 1)); + + // assume Identical($t7, select stake::OwnerCapability.pool_address($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:68:9+42 + assume {:print "$at(132,3125,3167)"} true; + assume ($t7 == $pool_address#$1_stake_OwnerCapability($t0)); + + // assume Identical($t8, global($t7)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:69:9+53 + assume {:print "$at(132,3176,3229)"} true; + assume ($t8 == $ResourceValue($1_stake_StakePool_$memory, $t7)); + + // assume Identical($t9, timestamp::spec_now_seconds()) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:71:9+48 + assume {:print "$at(132,3301,3349)"} true; + assume ($t9 == $1_timestamp_spec_now_seconds($1_timestamp_CurrentTimeMicroseconds_$memory)); + + // assume Identical($t10, select staking_config::StakingConfig.recurring_lockup_duration_secs($t6)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:72:9+51 + assume {:print "$at(132,3358,3409)"} true; + assume ($t10 == $recurring_lockup_duration_secs#$1_staking_config_StakingConfig($t6)); + + // trace_local[owner_cap]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:763:5+1 + assume {:print "$at(131,35298,35299)"} true; + assume {:print "$track_local(38,27,0):", $t0} $t0 == $t0; + + // $t11 := get_field.pool_address($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:764:28+22 + assume {:print "$at(131,35411,35433)"} true; + $t11 := $pool_address#$1_stake_OwnerCapability($t0); + + // trace_local[pool_address]($t11) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:764:13+12 + assume {:print "$track_local(38,27,4):", $t11} $t11 == $t11; + + // stake::assert_stake_pool_exists($t11) on_abort goto L4 with $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:765:9+38 + assume {:print "$at(131,35443,35481)"} true; + call $1_stake_assert_stake_pool_exists($t11); + if ($abort_flag) { + assume {:print "$at(131,35443,35481)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(38,27):", $t12} $t12 == $t12; + goto L4; + } + + // $t13 := staking_config::get() on_abort goto L4 with $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:766:22+21 + assume {:print "$at(131,35504,35525)"} true; + call $t13 := $1_staking_config_get(); + if ($abort_flag) { + assume {:print "$at(131,35504,35525)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(38,27):", $t12} $t12 == $t12; + goto L4; + } + + // trace_local[config]($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:766:13+6 + assume {:print "$track_local(38,27,1):", $t13} $t13 == $t13; + + // $t14 := borrow_global($t11) on_abort goto L4 with $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:768:26+17 + assume {:print "$at(131,35553,35570)"} true; + if (!$ResourceExists($1_stake_StakePool_$memory, $t11)) { + call $ExecFailureAbort(); + } else { + $t14 := $Mutation($Global($t11), EmptyVec(), $ResourceValue($1_stake_StakePool_$memory, $t11)); + } + if ($abort_flag) { + assume {:print "$at(131,35553,35570)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(38,27):", $t12} $t12 == $t12; + goto L4; + } + + // trace_local[stake_pool]($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:768:13+10 + $temp_0'$1_stake_StakePool' := $Dereference($t14); + assume {:print "$track_local(38,27,5):", $temp_0'$1_stake_StakePool'} $temp_0'$1_stake_StakePool' == $temp_0'$1_stake_StakePool'; + + // $t15 := get_field.locked_until_secs($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:769:37+28 + assume {:print "$at(131,35633,35661)"} true; + $t15 := $locked_until_secs#$1_stake_StakePool($Dereference($t14)); + + // trace_local[old_locked_until_secs]($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:769:13+21 + assume {:print "$track_local(38,27,3):", $t15} $t15 == $t15; + + // $t16 := timestamp::now_seconds() on_abort goto L4 with $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:770:37+24 + assume {:print "$at(131,35699,35723)"} true; + call $t16 := $1_timestamp_now_seconds(); + if ($abort_flag) { + assume {:print "$at(131,35699,35723)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(38,27):", $t12} $t12 == $t12; + goto L4; + } + + // $t17 := staking_config::get_recurring_lockup_duration($t13) on_abort goto L4 with $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:770:64+54 + call $t17 := $1_staking_config_get_recurring_lockup_duration($t13); + if ($abort_flag) { + assume {:print "$at(131,35726,35780)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(38,27):", $t12} $t12 == $t12; + goto L4; + } + + // $t18 := +($t16, $t17) on_abort goto L4 with $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:770:62+1 + call $t18 := $AddU64($t16, $t17); + if ($abort_flag) { + assume {:print "$at(131,35724,35725)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(38,27):", $t12} $t12 == $t12; + goto L4; + } + + // trace_local[new_locked_until_secs]($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:770:13+21 + assume {:print "$track_local(38,27,2):", $t18} $t18 == $t18; + + // $t19 := <($t15, $t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:771:39+1 + assume {:print "$at(131,35820,35821)"} true; + call $t19 := $Lt($t15, $t18); + + // if ($t19) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:771:9+96 + if ($t19) { goto L1; } else { goto L0; } + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:771:9+96 +L1: + + // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:771:9+96 + assume {:print "$at(131,35790,35886)"} true; + goto L2; + + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:771:9+96 +L0: + + // destroy($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:771:9+96 + assume {:print "$at(131,35790,35886)"} true; + + // $t20 := 18 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:771:88+15 + $t20 := 18; + assume $IsValid'u64'($t20); + + // $t21 := error::invalid_argument($t20) on_abort goto L4 with $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:771:64+40 + call $t21 := $1_error_invalid_argument($t20); + if ($abort_flag) { + assume {:print "$at(131,35845,35885)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(38,27):", $t12} $t12 == $t12; + goto L4; + } + + // trace_abort($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:771:9+96 + assume {:print "$at(131,35790,35886)"} true; + assume {:print "$track_abort(38,27):", $t21} $t21 == $t21; + + // $t12 := move($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:771:9+96 + $t12 := $t21; + + // goto L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:771:9+96 + goto L4; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:772:40+21 + assume {:print "$at(131,35927,35948)"} true; +L2: + + // $t22 := borrow_field.locked_until_secs($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:772:9+28 + assume {:print "$at(131,35896,35924)"} true; + $t22 := $ChildMutation($t14, 4, $locked_until_secs#$1_stake_StakePool($Dereference($t14))); + + // write_ref($t22, $t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:772:9+52 + $t22 := $UpdateMutation($t22, $t18); + + // write_back[Reference($t14).locked_until_secs (u64)]($t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:772:9+52 + $t14 := $UpdateMutation($t14, $Update'$1_stake_StakePool'_locked_until_secs($Dereference($t14), $Dereference($t22))); + + // $t23 := borrow_field.increase_lockup_events($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:775:13+38 + assume {:print "$at(131,35990,36028)"} true; + $t23 := $ChildMutation($t14, 13, $increase_lockup_events#$1_stake_StakePool($Dereference($t14))); + + // $t24 := pack stake::IncreaseLockupEvent($t11, $t15, $t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:776:13+143 + assume {:print "$at(131,36042,36185)"} true; + $t24 := $1_stake_IncreaseLockupEvent($t11, $t15, $t18); + + // opaque begin: event::emit_event($t23, $t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:774:9+237 + assume {:print "$at(131,35959,36196)"} true; + + // opaque end: event::emit_event($t23, $t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:774:9+237 + + // write_back[Reference($t14).increase_lockup_events (event::EventHandle)]($t23) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:774:9+237 + $t14 := $UpdateMutation($t14, $Update'$1_stake_StakePool'_increase_lockup_events($Dereference($t14), $Dereference($t23))); + + // write_back[stake::StakePool@]($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:774:9+237 + $1_stake_StakePool_$memory := $ResourceUpdate($1_stake_StakePool_$memory, $GlobalLocationAddress($t14), + $Dereference($t14)); + + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:782:5+1 + assume {:print "$at(131,36202,36203)"} true; +L3: + + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:782:5+1 + assume {:print "$at(131,36202,36203)"} true; + return; + + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:782:5+1 +L4: + + // abort($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:782:5+1 + assume {:print "$at(131,36202,36203)"} true; + $abort_code := $t12; + $abort_flag := true; + return; + +} + +// fun stake::set_delegated_voter_with_cap [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:601:5+331 +procedure {:inline 1} $1_stake_set_delegated_voter_with_cap(_$t0: $1_stake_OwnerCapability, _$t1: int) returns () +{ + // declare local variables + var $t2: int; + var $t3: $Mutation ($1_stake_StakePool); + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: $Mutation ($1_stake_StakePool); + var $t8: $Mutation (int); + var $t0: $1_stake_OwnerCapability; + var $t1: int; + var $1_stake_StakePool_$modifies: [int]bool; + var $temp_0'$1_stake_OwnerCapability': $1_stake_OwnerCapability; + var $temp_0'$1_stake_StakePool': $1_stake_StakePool; + var $temp_0'address': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // assume Identical($t4, select stake::OwnerCapability.pool_address($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:136:9+42 + assume {:print "$at(132,6139,6181)"} true; + assume ($t4 == $pool_address#$1_stake_OwnerCapability($t0)); + + // trace_local[owner_cap]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:601:5+1 + assume {:print "$at(131,27301,27302)"} true; + assume {:print "$track_local(38,44,0):", $t0} $t0 == $t0; + + // trace_local[new_voter]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:601:5+1 + assume {:print "$track_local(38,44,1):", $t1} $t1 == $t1; + + // $t5 := get_field.pool_address($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:602:28+22 + assume {:print "$at(131,27438,27460)"} true; + $t5 := $pool_address#$1_stake_OwnerCapability($t0); + + // trace_local[pool_address]($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:602:13+12 + assume {:print "$track_local(38,44,2):", $t5} $t5 == $t5; + + // stake::assert_stake_pool_exists($t5) on_abort goto L2 with $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:603:9+38 + assume {:print "$at(131,27470,27508)"} true; + call $1_stake_assert_stake_pool_exists($t5); + if ($abort_flag) { + assume {:print "$at(131,27470,27508)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(38,44):", $t6} $t6 == $t6; + goto L2; + } + + // $t7 := borrow_global($t5) on_abort goto L2 with $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:604:26+17 + assume {:print "$at(131,27535,27552)"} true; + if (!$ResourceExists($1_stake_StakePool_$memory, $t5)) { + call $ExecFailureAbort(); + } else { + $t7 := $Mutation($Global($t5), EmptyVec(), $ResourceValue($1_stake_StakePool_$memory, $t5)); + } + if ($abort_flag) { + assume {:print "$at(131,27535,27552)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(38,44):", $t6} $t6 == $t6; + goto L2; + } + + // trace_local[stake_pool]($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:604:13+10 + $temp_0'$1_stake_StakePool' := $Dereference($t7); + assume {:print "$track_local(38,44,3):", $temp_0'$1_stake_StakePool'} $temp_0'$1_stake_StakePool' == $temp_0'$1_stake_StakePool'; + + // $t8 := borrow_field.delegated_voter($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:605:9+26 + assume {:print "$at(131,27587,27613)"} true; + $t8 := $ChildMutation($t7, 6, $delegated_voter#$1_stake_StakePool($Dereference($t7))); + + // write_ref($t8, $t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:605:9+38 + $t8 := $UpdateMutation($t8, $t1); + + // write_back[Reference($t7).delegated_voter (address)]($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:605:9+38 + $t7 := $UpdateMutation($t7, $Update'$1_stake_StakePool'_delegated_voter($Dereference($t7), $Dereference($t8))); + + // write_back[stake::StakePool@]($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:605:9+38 + $1_stake_StakePool_$memory := $ResourceUpdate($1_stake_StakePool_$memory, $GlobalLocationAddress($t7), + $Dereference($t7)); + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:606:5+1 + assume {:print "$at(131,27631,27632)"} true; +L1: + + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:606:5+1 + assume {:print "$at(131,27631,27632)"} true; + return; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:606:5+1 +L2: + + // abort($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:606:5+1 + assume {:print "$at(131,27631,27632)"} true; + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// fun stake::set_operator_with_cap [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:575:5+611 +procedure {:inline 1} $1_stake_set_operator_with_cap(_$t0: $1_stake_OwnerCapability, _$t1: int) returns () +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: $Mutation ($1_stake_StakePool); + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: $Mutation ($1_stake_StakePool); + var $t9: int; + var $t10: $Mutation (int); + var $t11: $Mutation ($1_event_EventHandle'$1_stake_SetOperatorEvent'); + var $t12: $1_stake_SetOperatorEvent; + var $t0: $1_stake_OwnerCapability; + var $t1: int; + var $1_stake_StakePool_$modifies: [int]bool; + var $temp_0'$1_stake_OwnerCapability': $1_stake_OwnerCapability; + var $temp_0'$1_stake_StakePool': $1_stake_StakePool; + var $temp_0'address': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // assume Identical($t5, select stake::OwnerCapability.pool_address($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:104:9+42 + assume {:print "$at(132,4820,4862)"} true; + assume ($t5 == $pool_address#$1_stake_OwnerCapability($t0)); + + // trace_local[owner_cap]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:575:5+1 + assume {:print "$at(131,26174,26175)"} true; + assume {:print "$track_local(38,46,0):", $t0} $t0 == $t0; + + // trace_local[new_operator]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:575:5+1 + assume {:print "$track_local(38,46,1):", $t1} $t1 == $t1; + + // $t6 := get_field.pool_address($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:576:28+22 + assume {:print "$at(131,26307,26329)"} true; + $t6 := $pool_address#$1_stake_OwnerCapability($t0); + + // trace_local[pool_address]($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:576:13+12 + assume {:print "$track_local(38,46,3):", $t6} $t6 == $t6; + + // stake::assert_stake_pool_exists($t6) on_abort goto L2 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:577:9+38 + assume {:print "$at(131,26339,26377)"} true; + call $1_stake_assert_stake_pool_exists($t6); + if ($abort_flag) { + assume {:print "$at(131,26339,26377)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(38,46):", $t7} $t7 == $t7; + goto L2; + } + + // $t8 := borrow_global($t6) on_abort goto L2 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:578:26+17 + assume {:print "$at(131,26404,26421)"} true; + if (!$ResourceExists($1_stake_StakePool_$memory, $t6)) { + call $ExecFailureAbort(); + } else { + $t8 := $Mutation($Global($t6), EmptyVec(), $ResourceValue($1_stake_StakePool_$memory, $t6)); + } + if ($abort_flag) { + assume {:print "$at(131,26404,26421)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(38,46):", $t7} $t7 == $t7; + goto L2; + } + + // trace_local[stake_pool]($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:578:13+10 + $temp_0'$1_stake_StakePool' := $Dereference($t8); + assume {:print "$track_local(38,46,4):", $temp_0'$1_stake_StakePool'} $temp_0'$1_stake_StakePool' == $temp_0'$1_stake_StakePool'; + + // $t9 := get_field.operator_address($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:579:28+27 + assume {:print "$at(131,26475,26502)"} true; + $t9 := $operator_address#$1_stake_StakePool($Dereference($t8)); + + // trace_local[old_operator]($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:579:13+12 + assume {:print "$track_local(38,46,2):", $t9} $t9 == $t9; + + // $t10 := borrow_field.operator_address($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:580:9+27 + assume {:print "$at(131,26512,26539)"} true; + $t10 := $ChildMutation($t8, 5, $operator_address#$1_stake_StakePool($Dereference($t8))); + + // write_ref($t10, $t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:580:9+42 + $t10 := $UpdateMutation($t10, $t1); + + // write_back[Reference($t8).operator_address (address)]($t10) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:580:9+42 + $t8 := $UpdateMutation($t8, $Update'$1_stake_StakePool'_operator_address($Dereference($t8), $Dereference($t10))); + + // $t11 := borrow_field.set_operator_events($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:583:13+35 + assume {:print "$at(131,26596,26631)"} true; + $t11 := $ChildMutation($t8, 8, $set_operator_events#$1_stake_StakePool($Dereference($t8))); + + // $t12 := pack stake::SetOperatorEvent($t6, $t9, $t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:584:13+122 + assume {:print "$at(131,26645,26767)"} true; + $t12 := $1_stake_SetOperatorEvent($t6, $t9, $t1); + + // opaque begin: event::emit_event($t11, $t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:582:9+213 + assume {:print "$at(131,26565,26778)"} true; + + // opaque end: event::emit_event($t11, $t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:582:9+213 + + // write_back[Reference($t8).set_operator_events (event::EventHandle)]($t11) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:582:9+213 + $t8 := $UpdateMutation($t8, $Update'$1_stake_StakePool'_set_operator_events($Dereference($t8), $Dereference($t11))); + + // write_back[stake::StakePool@]($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:582:9+213 + $1_stake_StakePool_$memory := $ResourceUpdate($1_stake_StakePool_$memory, $GlobalLocationAddress($t8), + $Dereference($t8)); + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:590:5+1 + assume {:print "$at(131,26784,26785)"} true; +L1: + + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:590:5+1 + assume {:print "$at(131,26784,26785)"} true; + return; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:590:5+1 +L2: + + // abort($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:590:5+1 + assume {:print "$at(131,26784,26785)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun stake::stake_pool_exists [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:400:5+89 +procedure {:inline 1} $1_stake_stake_pool_exists(_$t0: int) returns ($ret0: bool) +{ + // declare local variables + var $t1: bool; + var $t0: int; + var $temp_0'address': int; + var $temp_0'bool': bool; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[addr]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:400:5+1 + assume {:print "$at(131,18212,18213)"} true; + assume {:print "$track_local(38,47,0):", $t0} $t0 == $t0; + + // $t1 := exists($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:401:9+6 + assume {:print "$at(131,18272,18278)"} true; + $t1 := $ResourceExists($1_stake_StakePool_$memory, $t0); + + // trace_return[0]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:401:9+23 + assume {:print "$track_return(38,47,0):", $t1} $t1 == $t1; + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:402:5+1 + assume {:print "$at(131,18300,18301)"} true; +L1: + + // return $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:402:5+1 + assume {:print "$at(131,18300,18301)"} true; + $ret0 := $t1; + return; + +} + +// fun stake::unlock_with_cap [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:849:5+1066 +procedure {:inline 1} $1_stake_unlock_with_cap(_$t0: int, _$t1: $1_stake_OwnerCapability) returns () +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: $Mutation ($1_stake_StakePool); + var $t5: $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $t6: int; + var $t7: $1_stake_StakePool; + var $t8: int; + var $t9: int; + var $t10: bool; + var $t11: int; + var $t12: int; + var $t13: $Mutation ($1_stake_StakePool); + var $t14: $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $t15: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t16: int; + var $t17: int; + var $t18: $Mutation ($1_coin_Coin'$1_aptos_coin_AptosCoin'); + var $t19: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t20: $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $t21: $Mutation ($1_coin_Coin'$1_aptos_coin_AptosCoin'); + var $t22: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t23: $Mutation ($1_event_EventHandle'$1_stake_UnlockStakeEvent'); + var $t24: $1_stake_UnlockStakeEvent; + var $t0: int; + var $t1: $1_stake_OwnerCapability; + var $1_stake_StakePool_$modifies: [int]bool; + var $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin'': $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $temp_0'$1_stake_OwnerCapability': $1_stake_OwnerCapability; + var $temp_0'$1_stake_StakePool': $1_stake_StakePool; + var $temp_0'address': int; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // assume Identical($t6, select stake::OwnerCapability.pool_address($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:56:9+42 + assume {:print "$at(132,2499,2541)"} true; + assume ($t6 == $pool_address#$1_stake_OwnerCapability($t1)); + + // assume Identical($t7, global($t6)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:57:9+53 + assume {:print "$at(132,2550,2603)"} true; + assume ($t7 == $ResourceValue($1_stake_StakePool_$memory, $t6)); + + // assume Identical($t8, math64::$min($t0, select coin::Coin.value(select stake::StakePool.active($t7)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:60:9+76 + assume {:print "$at(132,2725,2801)"} true; + assume ($t8 == $1_math64_$min($t0, $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($active#$1_stake_StakePool($t7)))); + + // trace_local[amount]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:849:5+1 + assume {:print "$at(131,39738,39739)"} true; + assume {:print "$track_local(38,50,0):", $t0} $t0 == $t0; + + // trace_local[owner_cap]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:849:5+1 + assume {:print "$track_local(38,50,1):", $t1} $t1 == $t1; + + // $t9 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:851:23+1 + assume {:print "$at(131,39925,39926)"} true; + $t9 := 0; + assume $IsValid'u64'($t9); + + // $t10 := ==($t0, $t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:851:20+2 + $t10 := $IsEqual'u64'($t0, $t9); + + // if ($t10) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:851:9+47 + if ($t10) { goto L1; } else { goto L0; } + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:852:13+6 + assume {:print "$at(131,39942,39948)"} true; +L1: + + // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:852:13+6 + assume {:print "$at(131,39942,39948)"} true; + goto L2; + + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:857:28+9 + assume {:print "$at(131,40171,40180)"} true; +L0: + + // $t11 := get_field.pool_address($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:857:28+22 + assume {:print "$at(131,40171,40193)"} true; + $t11 := $pool_address#$1_stake_OwnerCapability($t1); + + // trace_local[pool_address]($t11) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:857:13+12 + assume {:print "$track_local(38,50,3):", $t11} $t11 == $t11; + + // stake::assert_stake_pool_exists($t11) on_abort goto L3 with $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:858:9+38 + assume {:print "$at(131,40203,40241)"} true; + call $1_stake_assert_stake_pool_exists($t11); + if ($abort_flag) { + assume {:print "$at(131,40203,40241)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(38,50):", $t12} $t12 == $t12; + goto L3; + } + + // $t13 := borrow_global($t11) on_abort goto L3 with $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:859:26+17 + assume {:print "$at(131,40268,40285)"} true; + if (!$ResourceExists($1_stake_StakePool_$memory, $t11)) { + call $ExecFailureAbort(); + } else { + $t13 := $Mutation($Global($t11), EmptyVec(), $ResourceValue($1_stake_StakePool_$memory, $t11)); + } + if ($abort_flag) { + assume {:print "$at(131,40268,40285)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(38,50):", $t12} $t12 == $t12; + goto L3; + } + + // trace_local[stake_pool]($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:859:13+10 + $temp_0'$1_stake_StakePool' := $Dereference($t13); + assume {:print "$track_local(38,50,4):", $temp_0'$1_stake_StakePool'} $temp_0'$1_stake_StakePool' == $temp_0'$1_stake_StakePool'; + + // $t14 := get_field.active($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:861:46+18 + assume {:print "$at(131,40414,40432)"} true; + $t14 := $active#$1_stake_StakePool($Dereference($t13)); + + // assume Identical($t15, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + assume {:print "$at(95,1664,1763)"} true; + assume ($t15 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + + // $t16 := coin::value($t14) on_abort goto L3 with $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:861:34+31 + assume {:print "$at(131,40402,40433)"} true; + call $t16 := $1_coin_value'$1_aptos_coin_AptosCoin'($t14); + if ($abort_flag) { + assume {:print "$at(131,40402,40433)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(38,50):", $t12} $t12 == $t12; + goto L3; + } + + // $t17 := math64::min($t0, $t16) on_abort goto L3 with $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:861:22+44 + call $t17 := $1_math64_min($t0, $t16); + if ($abort_flag) { + assume {:print "$at(131,40390,40434)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(38,50):", $t12} $t12 == $t12; + goto L3; + } + + // trace_local[amount#1]($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:861:13+6 + assume {:print "$track_local(38,50,2):", $t17} $t17 == $t17; + + // $t18 := borrow_field.active($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:862:44+22 + assume {:print "$at(131,40479,40501)"} true; + $t18 := $ChildMutation($t13, 0, $active#$1_stake_StakePool($Dereference($t13))); + + // assume Identical($t19, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + assume {:print "$at(95,1664,1763)"} true; + assume ($t19 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + + // $t20 := coin::extract($t18, $t17) on_abort goto L3 with $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:862:30+45 + assume {:print "$at(131,40465,40510)"} true; + call $t20,$t18 := $1_coin_extract'$1_aptos_coin_AptosCoin'($t18, $t17); + if ($abort_flag) { + assume {:print "$at(131,40465,40510)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(38,50):", $t12} $t12 == $t12; + goto L3; + } + + // write_back[Reference($t13).active (coin::Coin)]($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:862:30+45 + $t13 := $UpdateMutation($t13, $Update'$1_stake_StakePool'_active($Dereference($t13), $Dereference($t18))); + + // trace_local[unlocked_stake]($t20) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:862:13+14 + assume {:print "$track_local(38,50,5):", $t20} $t20 == $t20; + + // $t21 := borrow_field.pending_inactive($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:863:32+32 + assume {:print "$at(131,40543,40575)"} true; + $t21 := $ChildMutation($t13, 3, $pending_inactive#$1_stake_StakePool($Dereference($t13))); + + // assume Identical($t22, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + assume {:print "$at(95,1664,1763)"} true; + assume ($t22 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + + // coin::merge($t21, $t20) on_abort goto L3 with $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:863:9+72 + assume {:print "$at(131,40520,40592)"} true; + call $t21 := $1_coin_merge'$1_aptos_coin_AptosCoin'($t21, $t20); + if ($abort_flag) { + assume {:print "$at(131,40520,40592)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(38,50):", $t12} $t12 == $t12; + goto L3; + } + + // write_back[Reference($t13).pending_inactive (coin::Coin)]($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:863:9+72 + $t13 := $UpdateMutation($t13, $Update'$1_stake_StakePool'_pending_inactive($Dereference($t13), $Dereference($t21))); + + // $t23 := borrow_field.unlock_stake_events($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:866:13+35 + assume {:print "$at(131,40634,40669)"} true; + $t23 := $ChildMutation($t13, 16, $unlock_stake_events#$1_stake_StakePool($Dereference($t13))); + + // $t24 := pack stake::UnlockStakeEvent($t11, $t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:867:13+103 + assume {:print "$at(131,40683,40786)"} true; + $t24 := $1_stake_UnlockStakeEvent($t11, $t17); + + // opaque begin: event::emit_event($t23, $t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:865:9+194 + assume {:print "$at(131,40603,40797)"} true; + + // opaque end: event::emit_event($t23, $t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:865:9+194 + + // write_back[Reference($t13).unlock_stake_events (event::EventHandle)]($t23) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:865:9+194 + $t13 := $UpdateMutation($t13, $Update'$1_stake_StakePool'_unlock_stake_events($Dereference($t13), $Dereference($t23))); + + // write_back[stake::StakePool@]($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:865:9+194 + $1_stake_StakePool_$memory := $ResourceUpdate($1_stake_StakePool_$memory, $GlobalLocationAddress($t13), + $Dereference($t13)); + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:872:5+1 + assume {:print "$at(131,40803,40804)"} true; +L2: + + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:872:5+1 + assume {:print "$at(131,40803,40804)"} true; + return; + + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:872:5+1 +L3: + + // abort($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:872:5+1 + assume {:print "$at(131,40803,40804)"} true; + $abort_code := $t12; + $abort_flag := true; + return; + +} + +// fun stake::withdraw_with_cap [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:887:5+1450 +procedure {:inline 1} $1_stake_withdraw_with_cap(_$t0: $1_stake_OwnerCapability, _$t1: int) returns ($ret0: $1_coin_Coin'$1_aptos_coin_AptosCoin') +{ + // declare local variables + var $t2: bool; + var $t3: $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $t4: int; + var $t5: $Mutation ($1_stake_StakePool); + var $t6: int; + var $t7: int; + var $t8: $Mutation ($1_stake_StakePool); + var $t9: $1_stake_ValidatorSet; + var $t10: int; + var $t11: int; + var $t12: bool; + var $t13: int; + var $t14: int; + var $t15: bool; + var $t16: $Mutation ($1_coin_Coin'$1_aptos_coin_AptosCoin'); + var $t17: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t18: $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $t19: $Mutation ($1_coin_Coin'$1_aptos_coin_AptosCoin'); + var $t20: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t21: $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $t22: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t23: int; + var $t24: int; + var $t25: int; + var $t26: bool; + var $t27: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t28: $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $t29: $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $t30: $Mutation ($1_event_EventHandle'$1_stake_WithdrawStakeEvent'); + var $t31: $1_stake_WithdrawStakeEvent; + var $t32: $Mutation ($1_coin_Coin'$1_aptos_coin_AptosCoin'); + var $t33: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t34: $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $t0: $1_stake_OwnerCapability; + var $t1: int; + var $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin'': $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $temp_0'$1_stake_OwnerCapability': $1_stake_OwnerCapability; + var $temp_0'$1_stake_StakePool': $1_stake_StakePool; + var $temp_0'address': int; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[owner_cap]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:887:5+1 + assume {:print "$at(131,41404,41405)"} true; + assume {:print "$track_local(38,56,0):", $t0} $t0 == $t0; + + // trace_local[withdraw_amount]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:887:5+1 + assume {:print "$track_local(38,56,1):", $t1} $t1 == $t1; + + // $t6 := get_field.pool_address($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:891:28+22 + assume {:print "$at(131,41585,41607)"} true; + $t6 := $pool_address#$1_stake_OwnerCapability($t0); + + // trace_local[pool_address]($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:891:13+12 + assume {:print "$track_local(38,56,4):", $t6} $t6 == $t6; + + // stake::assert_stake_pool_exists($t6) on_abort goto L8 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:892:9+38 + assume {:print "$at(131,41617,41655)"} true; + call $1_stake_assert_stake_pool_exists($t6); + if ($abort_flag) { + assume {:print "$at(131,41617,41655)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(38,56):", $t7} $t7 == $t7; + goto L8; + } + + // $t8 := borrow_global($t6) on_abort goto L8 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:893:26+17 + assume {:print "$at(131,41682,41699)"} true; + if (!$ResourceExists($1_stake_StakePool_$memory, $t6)) { + call $ExecFailureAbort(); + } else { + $t8 := $Mutation($Global($t6), EmptyVec(), $ResourceValue($1_stake_StakePool_$memory, $t6)); + } + if ($abort_flag) { + assume {:print "$at(131,41682,41699)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(38,56):", $t7} $t7 == $t7; + goto L8; + } + + // trace_local[stake_pool]($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:893:13+10 + $temp_0'$1_stake_StakePool' := $Dereference($t8); + assume {:print "$track_local(38,56,5):", $temp_0'$1_stake_StakePool'} $temp_0'$1_stake_StakePool' == $temp_0'$1_stake_StakePool'; + + // assume Identical($t9, global(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:246:9+59 + assume {:print "$at(132,10599,10658)"} true; + assume ($t9 == $ResourceValue($1_stake_ValidatorSet_$memory, 1)); + + // $t10 := stake::get_validator_state($t6) on_abort goto L8 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:897:13+33 + assume {:print "$at(131,42040,42073)"} true; + call $t10 := $1_stake_get_validator_state($t6); + if ($abort_flag) { + assume {:print "$at(131,42040,42073)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(38,56):", $t7} $t7 == $t7; + goto L8; + } + + // $t11 := 4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:897:50+25 + $t11 := 4; + assume $IsValid'u64'($t11); + + // $t12 := ==($t10, $t11) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:897:47+2 + $t12 := $IsEqual'u64'($t10, $t11); + + // if ($t12) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:897:13+134 + if ($t12) { goto L1; } else { goto L0; } + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:898:13+24 + assume {:print "$at(131,42118,42142)"} true; +L1: + + // $t13 := timestamp::now_seconds() on_abort goto L8 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:898:13+24 + assume {:print "$at(131,42118,42142)"} true; + call $t13 := $1_timestamp_now_seconds(); + if ($abort_flag) { + assume {:print "$at(131,42118,42142)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(38,56):", $t7} $t7 == $t7; + goto L8; + } + + // $t14 := get_field.locked_until_secs($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:898:41+28 + $t14 := $locked_until_secs#$1_stake_StakePool($Dereference($t8)); + + // $t2 := >=($t13, $t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:898:38+2 + call $t2 := $Ge($t13, $t14); + + // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:897:13+134 + assume {:print "$at(131,42040,42174)"} true; + goto L2; + + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:897:13+134 +L0: + + // $t15 := false at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:897:13+134 + assume {:print "$at(131,42040,42174)"} true; + $t15 := false; + assume $IsValid'bool'($t15); + + // $t2 := $t15 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:897:13+134 + $t2 := $t15; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:897:13+134 +L2: + + // if ($t2) goto L4 else goto L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:897:9+320 + assume {:print "$at(131,42036,42356)"} true; + if ($t2) { goto L4; } else { goto L3; } + + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:899:65+10 + assume {:print "$at(131,42242,42252)"} true; +L4: + + // $t16 := borrow_field.pending_inactive($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:899:60+32 + assume {:print "$at(131,42237,42269)"} true; + $t16 := $ChildMutation($t8, 3, $pending_inactive#$1_stake_StakePool($Dereference($t8))); + + // assume Identical($t17, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + assume {:print "$at(95,1664,1763)"} true; + assume ($t17 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + + // $t18 := coin::extract_all($t16) on_abort goto L8 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:899:42+51 + assume {:print "$at(131,42219,42270)"} true; + call $t18,$t16 := $1_coin_extract_all'$1_aptos_coin_AptosCoin'($t16); + if ($abort_flag) { + assume {:print "$at(131,42219,42270)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(38,56):", $t7} $t7 == $t7; + goto L8; + } + + // write_back[Reference($t8).pending_inactive (coin::Coin)]($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:899:42+51 + $t8 := $UpdateMutation($t8, $Update'$1_stake_StakePool'_pending_inactive($Dereference($t8), $Dereference($t16))); + + // trace_local[pending_inactive_stake]($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:899:17+22 + assume {:print "$track_local(38,56,3):", $t18} $t18 == $t18; + + // $t19 := borrow_field.inactive($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:900:25+24 + assume {:print "$at(131,42296,42320)"} true; + $t19 := $ChildMutation($t8, 1, $inactive#$1_stake_StakePool($Dereference($t8))); + + // assume Identical($t20, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + assume {:print "$at(95,1664,1763)"} true; + assume ($t20 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + + // coin::merge($t19, $t18) on_abort goto L8 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:900:13+61 + assume {:print "$at(131,42284,42345)"} true; + call $t19 := $1_coin_merge'$1_aptos_coin_AptosCoin'($t19, $t18); + if ($abort_flag) { + assume {:print "$at(131,42284,42345)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(38,56):", $t7} $t7 == $t7; + goto L8; + } + + // write_back[Reference($t8).inactive (coin::Coin)]($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:900:13+61 + $t8 := $UpdateMutation($t8, $Update'$1_stake_StakePool'_inactive($Dereference($t8), $Dereference($t19))); + + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:904:31+15 + assume {:print "$at(131,42445,42460)"} true; +L3: + + // $t21 := get_field.inactive($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:904:60+20 + assume {:print "$at(131,42474,42494)"} true; + $t21 := $inactive#$1_stake_StakePool($Dereference($t8)); + + // assume Identical($t22, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + assume {:print "$at(95,1664,1763)"} true; + assume ($t22 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + + // $t23 := coin::value($t21) on_abort goto L8 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:904:48+33 + assume {:print "$at(131,42462,42495)"} true; + call $t23 := $1_coin_value'$1_aptos_coin_AptosCoin'($t21); + if ($abort_flag) { + assume {:print "$at(131,42462,42495)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(38,56):", $t7} $t7 == $t7; + goto L8; + } + + // $t24 := math64::min($t1, $t23) on_abort goto L8 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:904:27+55 + call $t24 := $1_math64_min($t1, $t23); + if ($abort_flag) { + assume {:print "$at(131,42441,42496)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(38,56):", $t7} $t7 == $t7; + goto L8; + } + + // trace_local[withdraw_amount]($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:904:9+15 + assume {:print "$track_local(38,56,1):", $t24} $t24 == $t24; + + // $t25 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:905:32+1 + assume {:print "$at(131,42529,42530)"} true; + $t25 := 0; + assume $IsValid'u64'($t25); + + // $t26 := ==($t24, $t25) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:905:29+2 + $t26 := $IsEqual'u64'($t24, $t25); + + // if ($t26) goto L6 else goto L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:905:9+56 + if ($t26) { goto L6; } else { goto L5; } + + // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:905:35+30 +L6: + + // write_back[stake::StakePool@]($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:905:35+30 + assume {:print "$at(131,42532,42562)"} true; + $1_stake_StakePool_$memory := $ResourceUpdate($1_stake_StakePool_$memory, $GlobalLocationAddress($t8), + $Dereference($t8)); + + // destroy($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:905:35+30 + + // assume Identical($t27, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + assume {:print "$at(95,1664,1763)"} true; + assume ($t27 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + + // $t28 := coin::zero() on_abort goto L8 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:905:42+23 + assume {:print "$at(131,42539,42562)"} true; + call $t28 := $1_coin_zero'$1_aptos_coin_AptosCoin'(); + if ($abort_flag) { + assume {:print "$at(131,42539,42562)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(38,56):", $t7} $t7 == $t7; + goto L8; + } + + // trace_return[0]($t28) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:905:35+30 + assume {:print "$track_return(38,56,0):", $t28} $t28 == $t28; + + // $t29 := move($t28) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:905:35+30 + $t29 := $t28; + + // goto L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:905:35+30 + goto L7; + + // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:908:18+10 + assume {:print "$at(131,42609,42619)"} true; +L5: + + // $t30 := borrow_field.withdraw_stake_events($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:908:13+37 + assume {:print "$at(131,42604,42641)"} true; + $t30 := $ChildMutation($t8, 17, $withdraw_stake_events#$1_stake_StakePool($Dereference($t8))); + + // $t31 := pack stake::WithdrawStakeEvent($t6, $t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:909:13+115 + assume {:print "$at(131,42655,42770)"} true; + $t31 := $1_stake_WithdrawStakeEvent($t6, $t24); + + // opaque begin: event::emit_event($t30, $t31) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:907:9+208 + assume {:print "$at(131,42573,42781)"} true; + + // opaque end: event::emit_event($t30, $t31) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:907:9+208 + + // write_back[Reference($t8).withdraw_stake_events (event::EventHandle)]($t30) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:907:9+208 + $t8 := $UpdateMutation($t8, $Update'$1_stake_StakePool'_withdraw_stake_events($Dereference($t8), $Dereference($t30))); + + // $t32 := borrow_field.inactive($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:915:23+24 + assume {:print "$at(131,42806,42830)"} true; + $t32 := $ChildMutation($t8, 1, $inactive#$1_stake_StakePool($Dereference($t8))); + + // assume Identical($t33, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + assume {:print "$at(95,1664,1763)"} true; + assume ($t33 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + + // $t34 := coin::extract($t32, $t24) on_abort goto L8 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:915:9+56 + assume {:print "$at(131,42792,42848)"} true; + call $t34,$t32 := $1_coin_extract'$1_aptos_coin_AptosCoin'($t32, $t24); + if ($abort_flag) { + assume {:print "$at(131,42792,42848)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(38,56):", $t7} $t7 == $t7; + goto L8; + } + + // write_back[Reference($t8).inactive (coin::Coin)]($t32) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:915:9+56 + $t8 := $UpdateMutation($t8, $Update'$1_stake_StakePool'_inactive($Dereference($t8), $Dereference($t32))); + + // write_back[stake::StakePool@]($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:915:9+56 + $1_stake_StakePool_$memory := $ResourceUpdate($1_stake_StakePool_$memory, $GlobalLocationAddress($t8), + $Dereference($t8)); + + // trace_return[0]($t34) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:915:9+56 + assume {:print "$track_return(38,56,0):", $t34} $t34 == $t34; + + // $t29 := move($t34) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:915:9+56 + $t29 := $t34; + + // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:916:5+1 + assume {:print "$at(131,42853,42854)"} true; +L7: + + // return $t29 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:916:5+1 + assume {:print "$at(131,42853,42854)"} true; + $ret0 := $t29; + return; + + // label L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:916:5+1 +L8: + + // abort($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:916:5+1 + assume {:print "$at(131,42853,42854)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/reconfiguration.move:154:5+155 +function {:inline} $1_reconfiguration_$last_reconfiguration_time($1_reconfiguration_Configuration_$memory: $Memory $1_reconfiguration_Configuration): int { + $last_reconfiguration_time#$1_reconfiguration_Configuration($ResourceValue($1_reconfiguration_Configuration_$memory, 1)) +} + +// struct reconfiguration::Configuration at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/reconfiguration.move:33:5+306 +type {:datatype} $1_reconfiguration_Configuration; +function {:constructor} $1_reconfiguration_Configuration($epoch: int, $last_reconfiguration_time: int, $events: $1_event_EventHandle'$1_reconfiguration_NewEpochEvent'): $1_reconfiguration_Configuration; +function {:inline} $Update'$1_reconfiguration_Configuration'_epoch(s: $1_reconfiguration_Configuration, x: int): $1_reconfiguration_Configuration { + $1_reconfiguration_Configuration(x, $last_reconfiguration_time#$1_reconfiguration_Configuration(s), $events#$1_reconfiguration_Configuration(s)) +} +function {:inline} $Update'$1_reconfiguration_Configuration'_last_reconfiguration_time(s: $1_reconfiguration_Configuration, x: int): $1_reconfiguration_Configuration { + $1_reconfiguration_Configuration($epoch#$1_reconfiguration_Configuration(s), x, $events#$1_reconfiguration_Configuration(s)) +} +function {:inline} $Update'$1_reconfiguration_Configuration'_events(s: $1_reconfiguration_Configuration, x: $1_event_EventHandle'$1_reconfiguration_NewEpochEvent'): $1_reconfiguration_Configuration { + $1_reconfiguration_Configuration($epoch#$1_reconfiguration_Configuration(s), $last_reconfiguration_time#$1_reconfiguration_Configuration(s), x) +} +function $IsValid'$1_reconfiguration_Configuration'(s: $1_reconfiguration_Configuration): bool { + $IsValid'u64'($epoch#$1_reconfiguration_Configuration(s)) + && $IsValid'u64'($last_reconfiguration_time#$1_reconfiguration_Configuration(s)) + && $IsValid'$1_event_EventHandle'$1_reconfiguration_NewEpochEvent''($events#$1_reconfiguration_Configuration(s)) +} +function {:inline} $IsEqual'$1_reconfiguration_Configuration'(s1: $1_reconfiguration_Configuration, s2: $1_reconfiguration_Configuration): bool { + s1 == s2 +} +var $1_reconfiguration_Configuration_$memory: $Memory $1_reconfiguration_Configuration; + +// struct reconfiguration::NewEpochEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/reconfiguration.move:28:5+64 +type {:datatype} $1_reconfiguration_NewEpochEvent; +function {:constructor} $1_reconfiguration_NewEpochEvent($epoch: int): $1_reconfiguration_NewEpochEvent; +function {:inline} $Update'$1_reconfiguration_NewEpochEvent'_epoch(s: $1_reconfiguration_NewEpochEvent, x: int): $1_reconfiguration_NewEpochEvent { + $1_reconfiguration_NewEpochEvent(x) +} +function $IsValid'$1_reconfiguration_NewEpochEvent'(s: $1_reconfiguration_NewEpochEvent): bool { + $IsValid'u64'($epoch#$1_reconfiguration_NewEpochEvent(s)) +} +function {:inline} $IsEqual'$1_reconfiguration_NewEpochEvent'(s1: $1_reconfiguration_NewEpochEvent, s2: $1_reconfiguration_NewEpochEvent): bool { + s1 == s2 +} + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:38:10+241 +function {:inline} $1_pool_u64_spec_shares(pool: $1_pool_u64_Pool, shareholder: int): int { + (if ($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool(pool), shareholder)) then ($1_simple_map_spec_get'address_u64'($shares#$1_pool_u64_Pool(pool), shareholder)) else (0)) +} + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:105:10+310 +function {:inline} $1_pool_u64_spec_amount_to_shares_with_total_coins(pool: $1_pool_u64_Pool, coins_amount: int, total_coins: int): int { + (if (($IsEqual'u64'($total_coins#$1_pool_u64_Pool(pool), 0) || $IsEqual'u64'($total_shares#$1_pool_u64_Pool(pool), 0))) then ((coins_amount * $scaling_factor#$1_pool_u64_Pool(pool))) else (((coins_amount * $total_shares#$1_pool_u64_Pool(pool)) div total_coins))) +} + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:129:10+265 +function {:inline} $1_pool_u64_spec_shares_to_amount_with_total_coins(pool: $1_pool_u64_Pool, shares: int, total_coins: int): int { + (if (($IsEqual'u64'($total_coins#$1_pool_u64_Pool(pool), 0) || $IsEqual'u64'($total_shares#$1_pool_u64_Pool(pool), 0))) then (0) else (((shares * total_coins) div $total_shares#$1_pool_u64_Pool(pool)))) +} + +// struct pool_u64::Pool at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:38:5+449 +type {:datatype} $1_pool_u64_Pool; +function {:constructor} $1_pool_u64_Pool($shareholders_limit: int, $total_coins: int, $total_shares: int, $shares: Table int (int), $shareholders: Vec (int), $scaling_factor: int): $1_pool_u64_Pool; +function {:inline} $Update'$1_pool_u64_Pool'_shareholders_limit(s: $1_pool_u64_Pool, x: int): $1_pool_u64_Pool { + $1_pool_u64_Pool(x, $total_coins#$1_pool_u64_Pool(s), $total_shares#$1_pool_u64_Pool(s), $shares#$1_pool_u64_Pool(s), $shareholders#$1_pool_u64_Pool(s), $scaling_factor#$1_pool_u64_Pool(s)) +} +function {:inline} $Update'$1_pool_u64_Pool'_total_coins(s: $1_pool_u64_Pool, x: int): $1_pool_u64_Pool { + $1_pool_u64_Pool($shareholders_limit#$1_pool_u64_Pool(s), x, $total_shares#$1_pool_u64_Pool(s), $shares#$1_pool_u64_Pool(s), $shareholders#$1_pool_u64_Pool(s), $scaling_factor#$1_pool_u64_Pool(s)) +} +function {:inline} $Update'$1_pool_u64_Pool'_total_shares(s: $1_pool_u64_Pool, x: int): $1_pool_u64_Pool { + $1_pool_u64_Pool($shareholders_limit#$1_pool_u64_Pool(s), $total_coins#$1_pool_u64_Pool(s), x, $shares#$1_pool_u64_Pool(s), $shareholders#$1_pool_u64_Pool(s), $scaling_factor#$1_pool_u64_Pool(s)) +} +function {:inline} $Update'$1_pool_u64_Pool'_shares(s: $1_pool_u64_Pool, x: Table int (int)): $1_pool_u64_Pool { + $1_pool_u64_Pool($shareholders_limit#$1_pool_u64_Pool(s), $total_coins#$1_pool_u64_Pool(s), $total_shares#$1_pool_u64_Pool(s), x, $shareholders#$1_pool_u64_Pool(s), $scaling_factor#$1_pool_u64_Pool(s)) +} +function {:inline} $Update'$1_pool_u64_Pool'_shareholders(s: $1_pool_u64_Pool, x: Vec (int)): $1_pool_u64_Pool { + $1_pool_u64_Pool($shareholders_limit#$1_pool_u64_Pool(s), $total_coins#$1_pool_u64_Pool(s), $total_shares#$1_pool_u64_Pool(s), $shares#$1_pool_u64_Pool(s), x, $scaling_factor#$1_pool_u64_Pool(s)) +} +function {:inline} $Update'$1_pool_u64_Pool'_scaling_factor(s: $1_pool_u64_Pool, x: int): $1_pool_u64_Pool { + $1_pool_u64_Pool($shareholders_limit#$1_pool_u64_Pool(s), $total_coins#$1_pool_u64_Pool(s), $total_shares#$1_pool_u64_Pool(s), $shares#$1_pool_u64_Pool(s), $shareholders#$1_pool_u64_Pool(s), x) +} +function $IsValid'$1_pool_u64_Pool'(s: $1_pool_u64_Pool): bool { + $IsValid'u64'($shareholders_limit#$1_pool_u64_Pool(s)) + && $IsValid'u64'($total_coins#$1_pool_u64_Pool(s)) + && $IsValid'u64'($total_shares#$1_pool_u64_Pool(s)) + && $IsValid'$1_simple_map_SimpleMap'address_u64''($shares#$1_pool_u64_Pool(s)) + && $IsValid'vec'address''($shareholders#$1_pool_u64_Pool(s)) + && $IsValid'u64'($scaling_factor#$1_pool_u64_Pool(s)) +} +function {:inline} $IsEqual'$1_pool_u64_Pool'(s1: $1_pool_u64_Pool, s2: $1_pool_u64_Pool): bool { + $IsEqual'u64'($shareholders_limit#$1_pool_u64_Pool(s1), $shareholders_limit#$1_pool_u64_Pool(s2)) + && $IsEqual'u64'($total_coins#$1_pool_u64_Pool(s1), $total_coins#$1_pool_u64_Pool(s2)) + && $IsEqual'u64'($total_shares#$1_pool_u64_Pool(s1), $total_shares#$1_pool_u64_Pool(s2)) + && $IsEqual'$1_simple_map_SimpleMap'address_u64''($shares#$1_pool_u64_Pool(s1), $shares#$1_pool_u64_Pool(s2)) + && $IsEqual'vec'address''($shareholders#$1_pool_u64_Pool(s1), $shareholders#$1_pool_u64_Pool(s2)) + && $IsEqual'u64'($scaling_factor#$1_pool_u64_Pool(s1), $scaling_factor#$1_pool_u64_Pool(s2))} + +// fun pool_u64::contains [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:91:5+129 +procedure {:inline 1} $1_pool_u64_contains(_$t0: $1_pool_u64_Pool, _$t1: int) returns ($ret0: bool) +{ + // declare local variables + var $t2: Table int (int); + var $t3: bool; + var $t4: int; + var $t0: $1_pool_u64_Pool; + var $t1: int; + var $temp_0'$1_pool_u64_Pool': $1_pool_u64_Pool; + var $temp_0'address': int; + var $temp_0'bool': bool; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:91:5+1 + assume {:print "$at(58,3640,3641)"} true; + assume {:print "$track_local(55,5,0):", $t0} $t0 == $t0; + + // trace_local[shareholder]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:91:5+1 + assume {:print "$track_local(55,5,1):", $t1} $t1 == $t1; + + // $t2 := get_field.shares($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:92:34+12 + assume {:print "$at(58,3736,3748)"} true; + $t2 := $shares#$1_pool_u64_Pool($t0); + + // $t3 := simple_map::contains_key($t2, $t1) on_abort goto L2 with $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:92:9+52 + call $t3 := $1_simple_map_contains_key'address_u64'($t2, $t1); + if ($abort_flag) { + assume {:print "$at(58,3711,3763)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(55,5):", $t4} $t4 == $t4; + goto L2; + } + + // trace_return[0]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:92:9+52 + assume {:print "$track_return(55,5,0):", $t3} $t3 == $t3; + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:93:5+1 + assume {:print "$at(58,3768,3769)"} true; +L1: + + // return $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:93:5+1 + assume {:print "$at(58,3768,3769)"} true; + $ret0 := $t3; + return; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:93:5+1 +L2: + + // abort($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:93:5+1 + assume {:print "$at(58,3768,3769)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun pool_u64::to_u128 [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:259:5+57 +procedure {:inline 1} $1_pool_u64_to_u128(_$t0: int) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t0: int; + var $temp_0'u128': int; + var $temp_0'u64': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[num]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:259:5+1 + assume {:print "$at(58,11442,11443)"} true; + assume {:print "$track_local(55,17,0):", $t0} $t0 == $t0; + + // $t1 := (u128)($t0) on_abort goto L2 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:260:9+13 + assume {:print "$at(58,11480,11493)"} true; + call $t1 := $CastU128($t0); + if ($abort_flag) { + assume {:print "$at(58,11480,11493)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(55,17):", $t2} $t2 == $t2; + goto L2; + } + + // trace_return[0]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:260:9+13 + assume {:print "$track_return(55,17,0):", $t1} $t1 == $t1; + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:261:5+1 + assume {:print "$at(58,11498,11499)"} true; +L1: + + // return $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:261:5+1 + assume {:print "$at(58,11498,11499)"} true; + $ret0 := $t1; + return; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:261:5+1 +L2: + + // abort($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:261:5+1 + assume {:print "$at(58,11498,11499)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun pool_u64::balance [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:105:5+161 +procedure {:inline 1} $1_pool_u64_balance(_$t0: $1_pool_u64_Pool, _$t1: int) returns ($ret0: int) +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: int; + var $t0: $1_pool_u64_Pool; + var $t1: int; + var $temp_0'$1_pool_u64_Pool': $1_pool_u64_Pool; + var $temp_0'address': int; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // assume Identical($t3, pool_u64::spec_shares($t0, $t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:53:9+44 + assume {:print "$at(59,1730,1774)"} true; + assume ($t3 == $1_pool_u64_spec_shares($t0, $t1)); + + // assume Identical($t4, select pool_u64::Pool.total_coins($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:54:9+35 + assume {:print "$at(59,1783,1818)"} true; + assume ($t4 == $total_coins#$1_pool_u64_Pool($t0)); + + // trace_local[pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:105:5+1 + assume {:print "$at(58,4118,4119)"} true; + assume {:print "$track_local(55,3,0):", $t0} $t0 == $t0; + + // trace_local[shareholder]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:105:5+1 + assume {:print "$track_local(55,3,1):", $t1} $t1 == $t1; + + // $t5 := pool_u64::shares($t0, $t1) on_abort goto L2 with $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:106:26+25 + assume {:print "$at(58,4204,4229)"} true; + call $t5 := $1_pool_u64_shares($t0, $t1); + if ($abort_flag) { + assume {:print "$at(58,4204,4229)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(55,3):", $t6} $t6 == $t6; + goto L2; + } + + // trace_local[num_shares]($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:106:13+10 + assume {:print "$track_local(55,3,2):", $t5} $t5 == $t5; + + // $t7 := pool_u64::shares_to_amount($t0, $t5) on_abort goto L2 with $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:107:9+34 + assume {:print "$at(58,4239,4273)"} true; + call $t7 := $1_pool_u64_shares_to_amount($t0, $t5); + if ($abort_flag) { + assume {:print "$at(58,4239,4273)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(55,3):", $t6} $t6 == $t6; + goto L2; + } + + // trace_return[0]($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:107:9+34 + assume {:print "$track_return(55,3,0):", $t7} $t7 == $t7; + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:108:5+1 + assume {:print "$at(58,4278,4279)"} true; +L1: + + // return $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:108:5+1 + assume {:print "$at(58,4278,4279)"} true; + $ret0 := $t7; + return; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:108:5+1 +L2: + + // abort($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:108:5+1 + assume {:print "$at(58,4278,4279)"} true; + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// fun pool_u64::add_shares [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:141:5+900 +procedure {:inline 1} $1_pool_u64_add_shares(_$t0: $Mutation ($1_pool_u64_Pool), _$t1: int, _$t2: int) returns ($ret0: int, $ret1: $Mutation ($1_pool_u64_Pool)) +{ + // declare local variables + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: $Mutation (int); + var $t8: bool; + var $t9: bool; + var $t10: int; + var $t11: bool; + var $t12: int; + var $t13: $1_pool_u64_Pool; + var $t14: bool; + var $t15: int; + var $t16: $Mutation (Table int (int)); + var $t17: $Mutation (int); + var $t18: int; + var $t19: int; + var $t20: int; + var $t21: bool; + var $t22: int; + var $t23: int; + var $t24: int; + var $t25: int; + var $t26: bool; + var $t27: Vec (int); + var $t28: int; + var $t29: int; + var $t30: bool; + var $t31: int; + var $t32: int; + var $t33: $Mutation (Vec (int)); + var $t34: $Mutation (Table int (int)); + var $t0: $Mutation ($1_pool_u64_Pool); + var $t1: int; + var $t2: int; + var $temp_0'$1_pool_u64_Pool': $1_pool_u64_Pool; + var $temp_0'address': int; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // bytecode translation starts here + // assume Identical($t8, simple_map::spec_contains_key(select pool_u64::Pool.shares($t0), $t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:74:9+73 + assume {:print "$at(59,2864,2937)"} true; + assume ($t8 == $1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($Dereference($t0)), $t1)); + + // assume Identical($t9, simple_map::spec_contains_key(select pool_u64::Pool.shares($t0), $t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:83:9+73 + assume {:print "$at(59,3186,3259)"} true; + assume ($t9 == $1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($Dereference($t0)), $t1)); + + // assume Identical($t10, simple_map::spec_get(select pool_u64::Pool.shares($t0), $t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:84:9+68 + assume {:print "$at(59,3268,3336)"} true; + assume ($t10 == $1_simple_map_spec_get'address_u64'($shares#$1_pool_u64_Pool($Dereference($t0)), $t1)); + + // assume Identical($t11, simple_map::spec_contains_key(select pool_u64::Pool.shares($t0), $t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:94:9+73 + assume {:print "$at(59,3636,3709)"} true; + assume ($t11 == $1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($Dereference($t0)), $t1)); + + // assume Identical($t12, simple_map::spec_get(select pool_u64::Pool.shares($t0), $t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:95:9+68 + assume {:print "$at(59,3718,3786)"} true; + assume ($t12 == $1_simple_map_spec_get'address_u64'($shares#$1_pool_u64_Pool($Dereference($t0)), $t1)); + + // trace_local[pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:141:5+1 + assume {:print "$at(58,5643,5644)"} true; + $temp_0'$1_pool_u64_Pool' := $Dereference($t0); + assume {:print "$track_local(55,0,0):", $temp_0'$1_pool_u64_Pool'} $temp_0'$1_pool_u64_Pool' == $temp_0'$1_pool_u64_Pool'; + + // trace_local[shareholder]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:141:5+1 + assume {:print "$track_local(55,0,1):", $t1} $t1 == $t1; + + // trace_local[new_shares]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:141:5+1 + assume {:print "$track_local(55,0,2):", $t2} $t2 == $t2; + + // $t13 := read_ref($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:142:21+19 + assume {:print "$at(58,5741,5760)"} true; + $t13 := $Dereference($t0); + + // $t14 := pool_u64::contains($t13, $t1) on_abort goto L14 with $t15 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:142:13+27 + call $t14 := $1_pool_u64_contains($t13, $t1); + if ($abort_flag) { + assume {:print "$at(58,5733,5760)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(55,0):", $t15} $t15 == $t15; + goto L14; + } + + // if ($t14) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:142:9+808 + if ($t14) { goto L1; } else { goto L0; } + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:143:63+4 + assume {:print "$at(58,5826,5830)"} true; +L1: + + // $t16 := borrow_field.shares($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:143:58+16 + assume {:print "$at(58,5821,5837)"} true; + $t16 := $ChildMutation($t0, 3, $shares#$1_pool_u64_Pool($Dereference($t0))); + + // $t17 := simple_map::borrow_mut($t16, $t1) on_abort goto L14 with $t15 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:143:35+54 + call $t17,$t16 := $1_simple_map_borrow_mut'address_u64'($t16, $t1); + if ($abort_flag) { + assume {:print "$at(58,5798,5852)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(55,0):", $t15} $t15 == $t15; + goto L14; + } + + // trace_local[existing_shares]($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:143:17+15 + $temp_0'u64' := $Dereference($t17); + assume {:print "$track_local(55,0,7):", $temp_0'u64'} $temp_0'u64' == $temp_0'u64'; + + // $t18 := read_ref($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:144:34+16 + assume {:print "$at(58,5887,5903)"} true; + $t18 := $Dereference($t17); + + // trace_local[current_shares]($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:144:17+14 + assume {:print "$track_local(55,0,6):", $t18} $t18 == $t18; + + // $t19 := 18446744073709551615 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:145:21+7 + assume {:print "$at(58,5925,5932)"} true; + $t19 := 18446744073709551615; + assume $IsValid'u64'($t19); + + // $t20 := -($t19, $t18) on_abort goto L14 with $t15 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:145:29+1 + call $t20 := $Sub($t19, $t18); + if ($abort_flag) { + assume {:print "$at(58,5933,5934)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(55,0):", $t15} $t15 == $t15; + goto L14; + } + + // $t21 := >=($t20, $t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:145:46+2 + call $t21 := $Ge($t20, $t2); + + // if ($t21) goto L3 else goto L15 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:145:13+102 + if ($t21) { goto L3; } else { goto L15; } + + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:145:13+102 +L3: + + // goto L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:145:13+102 + assume {:print "$at(58,5917,6019)"} true; + goto L4; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:145:13+102 +L2: + + // trace_local[pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:145:13+102 + assume {:print "$at(58,5917,6019)"} true; + $temp_0'$1_pool_u64_Pool' := $Dereference($t0); + assume {:print "$track_local(55,0,0):", $temp_0'$1_pool_u64_Pool'} $temp_0'$1_pool_u64_Pool' == $temp_0'$1_pool_u64_Pool'; + + // destroy($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:145:13+102 + + // $t22 := 5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:145:85+28 + $t22 := 5; + assume $IsValid'u64'($t22); + + // $t23 := error::invalid_argument($t22) on_abort goto L14 with $t15 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:145:61+53 + call $t23 := $1_error_invalid_argument($t22); + if ($abort_flag) { + assume {:print "$at(58,5965,6018)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(55,0):", $t15} $t15 == $t15; + goto L14; + } + + // trace_abort($t23) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:145:13+102 + assume {:print "$at(58,5917,6019)"} true; + assume {:print "$track_abort(55,0):", $t23} $t23 == $t23; + + // $t15 := move($t23) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:145:13+102 + $t15 := $t23; + + // goto L14 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:145:13+102 + goto L14; + + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:147:32+14 + assume {:print "$at(58,6053,6067)"} true; +L4: + + // $t24 := +($t18, $t2) on_abort goto L14 with $t15 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:147:47+1 + assume {:print "$at(58,6068,6069)"} true; + call $t24 := $AddU64($t18, $t2); + if ($abort_flag) { + assume {:print "$at(58,6068,6069)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(55,0):", $t15} $t15 == $t15; + goto L14; + } + + // write_ref($t17, $t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:147:13+46 + $t17 := $UpdateMutation($t17, $t24); + + // $t5 := read_ref($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:148:13+16 + assume {:print "$at(58,6094,6110)"} true; + $t5 := $Dereference($t17); + + // write_back[Reference($t16)[]]($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:148:13+16 + $t16 := $UpdateMutation($t16, UpdateTable($Dereference($t16), ReadVec(p#$Mutation($t17), LenVec(p#$Mutation($t16))), $Dereference($t17))); + + // write_back[Reference($t0).shares (simple_map::SimpleMap)]($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:148:13+16 + $t0 := $UpdateMutation($t0, $Update'$1_pool_u64_Pool'_shares($Dereference($t0), $Dereference($t16))); + + // trace_local[pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:148:13+16 + $temp_0'$1_pool_u64_Pool' := $Dereference($t0); + assume {:print "$track_local(55,0,0):", $temp_0'$1_pool_u64_Pool'} $temp_0'$1_pool_u64_Pool' == $temp_0'$1_pool_u64_Pool'; + + // goto L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:142:9+808 + assume {:print "$at(58,5729,6537)"} true; + goto L5; + + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:149:20+10 + assume {:print "$at(58,6130,6140)"} true; +L0: + + // $t25 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:149:33+1 + assume {:print "$at(58,6143,6144)"} true; + $t25 := 0; + assume $IsValid'u64'($t25); + + // $t26 := >($t2, $t25) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:149:31+1 + call $t26 := $Gt($t2, $t25); + + // if ($t26) goto L7 else goto L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:149:16+411 + if ($t26) { goto L7; } else { goto L6; } + + // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:151:33+4 + assume {:print "$at(58,6201,6205)"} true; +L7: + + // $t27 := get_field.shareholders($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:151:32+18 + assume {:print "$at(58,6200,6218)"} true; + $t27 := $shareholders#$1_pool_u64_Pool($Dereference($t0)); + + // $t28 := vector::length
($t27) on_abort goto L14 with $t15 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:151:17+34 + call $t28 := $1_vector_length'address'($t27); + if ($abort_flag) { + assume {:print "$at(58,6185,6219)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(55,0):", $t15} $t15 == $t15; + goto L14; + } + + // $t29 := get_field.shareholders_limit($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:151:54+23 + $t29 := $shareholders_limit#$1_pool_u64_Pool($Dereference($t0)); + + // $t30 := <($t28, $t29) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:151:52+1 + call $t30 := $Lt($t28, $t29); + + // if ($t30) goto L9 else goto L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:150:13+162 + assume {:print "$at(58,6160,6322)"} true; + if ($t30) { goto L9; } else { goto L8; } + + // label L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:150:13+162 +L9: + + // goto L10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:150:13+162 + assume {:print "$at(58,6160,6322)"} true; + goto L10; + + // label L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:150:13+162 +L8: + + // pack_ref_deep($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:150:13+162 + assume {:print "$at(58,6160,6322)"} true; + + // destroy($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:150:13+162 + + // $t31 := 2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:152:38+22 + assume {:print "$at(58,6284,6306)"} true; + $t31 := 2; + assume $IsValid'u64'($t31); + + // $t32 := error::invalid_state($t31) on_abort goto L14 with $t15 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:152:17+44 + call $t32 := $1_error_invalid_state($t31); + if ($abort_flag) { + assume {:print "$at(58,6263,6307)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(55,0):", $t15} $t15 == $t15; + goto L14; + } + + // trace_abort($t32) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:150:13+162 + assume {:print "$at(58,6160,6322)"} true; + assume {:print "$track_abort(55,0):", $t32} $t32 == $t32; + + // $t15 := move($t32) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:150:13+162 + $t15 := $t32; + + // goto L14 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:150:13+162 + goto L14; + + // label L10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:155:36+4 + assume {:print "$at(58,6360,6364)"} true; +L10: + + // $t33 := borrow_field.shareholders($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:155:31+22 + assume {:print "$at(58,6355,6377)"} true; + $t33 := $ChildMutation($t0, 4, $shareholders#$1_pool_u64_Pool($Dereference($t0))); + + // vector::push_back
($t33, $t1) on_abort goto L14 with $t15 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:155:13+54 + call $t33 := $1_vector_push_back'address'($t33, $t1); + if ($abort_flag) { + assume {:print "$at(58,6337,6391)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(55,0):", $t15} $t15 == $t15; + goto L14; + } + + // write_back[Reference($t0).shareholders (vector
)]($t33) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:155:13+54 + $t0 := $UpdateMutation($t0, $Update'$1_pool_u64_Pool'_shareholders($Dereference($t0), $Dereference($t33))); + + // trace_local[pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:155:13+54 + $temp_0'$1_pool_u64_Pool' := $Dereference($t0); + assume {:print "$track_local(55,0,0):", $temp_0'$1_pool_u64_Pool'} $temp_0'$1_pool_u64_Pool' == $temp_0'$1_pool_u64_Pool'; + + // $t34 := borrow_field.shares($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:156:29+16 + assume {:print "$at(58,6421,6437)"} true; + $t34 := $ChildMutation($t0, 3, $shares#$1_pool_u64_Pool($Dereference($t0))); + + // simple_map::add($t34, $t1, $t2) on_abort goto L14 with $t15 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:156:13+58 + call $t34 := $1_simple_map_add'address_u64'($t34, $t1, $t2); + if ($abort_flag) { + assume {:print "$at(58,6405,6463)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(55,0):", $t15} $t15 == $t15; + goto L14; + } + + // write_back[Reference($t0).shares (simple_map::SimpleMap)]($t34) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:156:13+58 + $t0 := $UpdateMutation($t0, $Update'$1_pool_u64_Pool'_shares($Dereference($t0), $Dereference($t34))); + + // trace_local[pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:156:13+58 + $temp_0'$1_pool_u64_Pool' := $Dereference($t0); + assume {:print "$track_local(55,0,0):", $temp_0'$1_pool_u64_Pool'} $temp_0'$1_pool_u64_Pool' == $temp_0'$1_pool_u64_Pool'; + + // goto L11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:149:16+411 + assume {:print "$at(58,6126,6537)"} true; + goto L11; + + // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:149:16+411 +L6: + + // destroy($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:149:16+411 + assume {:print "$at(58,6126,6537)"} true; + + // label L11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:149:16+411 +L11: + + // $t5 := $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:142:9+808 + assume {:print "$at(58,5729,6537)"} true; + $t5 := $t2; + + // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:142:9+808 +L5: + + // trace_return[0]($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:142:9+808 + assume {:print "$at(58,5729,6537)"} true; + assume {:print "$track_return(55,0,0):", $t5} $t5 == $t5; + + // trace_local[pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:142:9+808 + $temp_0'$1_pool_u64_Pool' := $Dereference($t0); + assume {:print "$track_local(55,0,0):", $temp_0'$1_pool_u64_Pool'} $temp_0'$1_pool_u64_Pool' == $temp_0'$1_pool_u64_Pool'; + + // pack_ref_deep($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:142:9+808 + + // goto L13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:142:9+808 + goto L13; + + // label L12 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L12: + + // destroy($t0) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L2 at :1:1+10 + goto L2; + + // label L13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:161:5+1 + assume {:print "$at(58,6542,6543)"} true; +L13: + + // return $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:161:5+1 + assume {:print "$at(58,6542,6543)"} true; + $ret0 := $t5; + $ret1 := $t0; + return; + + // label L14 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:161:5+1 +L14: + + // abort($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:161:5+1 + assume {:print "$at(58,6542,6543)"} true; + $abort_code := $t15; + $abort_flag := true; + return; + + // label L15 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L15: + + // destroy($t16) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L12 at :1:1+10 + goto L12; + +} + +// fun pool_u64::amount_to_shares [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:214:5+152 +procedure {:inline 1} $1_pool_u64_amount_to_shares(_$t0: $1_pool_u64_Pool, _$t1: int) returns ($ret0: int) +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: int; + var $t0: $1_pool_u64_Pool; + var $t1: int; + var $temp_0'$1_pool_u64_Pool': $1_pool_u64_Pool; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:214:5+1 + assume {:print "$at(58,8989,8990)"} true; + assume {:print "$track_local(55,1,0):", $t0} $t0 == $t0; + + // trace_local[coins_amount]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:214:5+1 + assume {:print "$track_local(55,1,1):", $t1} $t1 == $t1; + + // $t2 := get_field.total_coins($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:215:63+16 + assume {:print "$at(58,9118,9134)"} true; + $t2 := $total_coins#$1_pool_u64_Pool($t0); + + // $t3 := pool_u64::amount_to_shares_with_total_coins($t0, $t1, $t2) on_abort goto L2 with $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:215:9+71 + call $t3 := $1_pool_u64_amount_to_shares_with_total_coins($t0, $t1, $t2); + if ($abort_flag) { + assume {:print "$at(58,9064,9135)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(55,1):", $t4} $t4 == $t4; + goto L2; + } + + // trace_return[0]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:215:9+71 + assume {:print "$track_return(55,1,0):", $t3} $t3 == $t3; + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:216:5+1 + assume {:print "$at(58,9140,9141)"} true; +L1: + + // return $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:216:5+1 + assume {:print "$at(58,9140,9141)"} true; + $ret0 := $t3; + return; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:216:5+1 +L2: + + // abort($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:216:5+1 + assume {:print "$at(58,9140,9141)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun pool_u64::amount_to_shares_with_total_coins [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:220:5+904 +procedure {:inline 1} $1_pool_u64_amount_to_shares_with_total_coins(_$t0: $1_pool_u64_Pool, _$t1: int, _$t2: int) returns ($ret0: int) +{ + // declare local variables + var $t3: bool; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: bool; + var $t8: bool; + var $t9: int; + var $t10: int; + var $t11: int; + var $t12: int; + var $t13: int; + var $t0: $1_pool_u64_Pool; + var $t1: int; + var $t2: int; + var $temp_0'$1_pool_u64_Pool': $1_pool_u64_Pool; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // bytecode translation starts here + // trace_local[pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:220:5+1 + assume {:print "$at(58,9317,9318)"} true; + assume {:print "$track_local(55,2,0):", $t0} $t0 == $t0; + + // trace_local[coins_amount]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:220:5+1 + assume {:print "$track_local(55,2,1):", $t1} $t1 == $t1; + + // trace_local[total_coins]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:220:5+1 + assume {:print "$track_local(55,2,2):", $t2} $t2 == $t2; + + // $t5 := get_field.total_coins($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:222:13+16 + assume {:print "$at(58,9502,9518)"} true; + $t5 := $total_coins#$1_pool_u64_Pool($t0); + + // $t6 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:222:33+1 + $t6 := 0; + assume $IsValid'u64'($t6); + + // $t7 := ==($t5, $t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:222:30+2 + $t7 := $IsEqual'u64'($t5, $t6); + + // if ($t7) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:222:13+47 + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:222:13+47 +L1: + + // $t8 := true at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:222:13+47 + assume {:print "$at(58,9502,9549)"} true; + $t8 := true; + assume $IsValid'bool'($t8); + + // $t3 := $t8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:222:13+47 + $t3 := $t8; + + // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:222:13+47 + goto L2; + + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:222:38+4 +L0: + + // $t9 := get_field.total_shares($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:222:38+17 + assume {:print "$at(58,9527,9544)"} true; + $t9 := $total_shares#$1_pool_u64_Pool($t0); + + // $t10 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:222:59+1 + $t10 := 0; + assume $IsValid'u64'($t10); + + // $t3 := ==($t9, $t10) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:222:56+2 + $t3 := $IsEqual'u64'($t9, $t10); + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:222:13+47 +L2: + + // if ($t3) goto L4 else goto L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:222:9+717 + assume {:print "$at(58,9498,10215)"} true; + if ($t3) { goto L4; } else { goto L3; } + + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:225:13+12 + assume {:print "$at(58,9800,9812)"} true; +L4: + + // $t11 := get_field.scaling_factor($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:225:28+19 + assume {:print "$at(58,9815,9834)"} true; + $t11 := $scaling_factor#$1_pool_u64_Pool($t0); + + // $t4 := *($t1, $t11) on_abort goto L7 with $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:225:26+1 + call $t4 := $MulU64($t1, $t11); + if ($abort_flag) { + assume {:print "$at(58,9813,9814)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(55,2):", $t12} $t12 == $t12; + goto L7; + } + + // goto L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:222:9+717 + assume {:print "$at(58,9498,10215)"} true; + goto L5; + + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:230:34+4 + assume {:print "$at(58,10154,10158)"} true; +L3: + + // $t13 := get_field.total_shares($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:230:54+17 + assume {:print "$at(58,10174,10191)"} true; + $t13 := $total_shares#$1_pool_u64_Pool($t0); + + // $t4 := pool_u64::multiply_then_divide($t0, $t1, $t13, $t2) on_abort goto L7 with $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:230:13+72 + call $t4 := $1_pool_u64_multiply_then_divide($t0, $t1, $t13, $t2); + if ($abort_flag) { + assume {:print "$at(58,10133,10205)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(55,2):", $t12} $t12 == $t12; + goto L7; + } + + // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:222:9+717 + assume {:print "$at(58,9498,10215)"} true; +L5: + + // trace_return[0]($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:222:9+717 + assume {:print "$at(58,9498,10215)"} true; + assume {:print "$track_return(55,2,0):", $t4} $t4 == $t4; + + // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:232:5+1 + assume {:print "$at(58,10220,10221)"} true; +L6: + + // return $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:232:5+1 + assume {:print "$at(58,10220,10221)"} true; + $ret0 := $t4; + return; + + // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:232:5+1 +L7: + + // abort($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:232:5+1 + assume {:print "$at(58,10220,10221)"} true; + $abort_code := $t12; + $abort_flag := true; + return; + +} + +// fun pool_u64::total_coins [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:81:5+73 +procedure {:inline 1} $1_pool_u64_total_coins(_$t0: $1_pool_u64_Pool) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t0: $1_pool_u64_Pool; + var $temp_0'$1_pool_u64_Pool': $1_pool_u64_Pool; + var $temp_0'u64': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:81:5+1 + assume {:print "$at(58,3352,3353)"} true; + assume {:print "$track_local(55,18,0):", $t0} $t0 == $t0; + + // $t1 := get_field.total_coins($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:82:9+16 + assume {:print "$at(58,3403,3419)"} true; + $t1 := $total_coins#$1_pool_u64_Pool($t0); + + // trace_return[0]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:82:9+16 + assume {:print "$track_return(55,18,0):", $t1} $t1 == $t1; + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:83:5+1 + assume {:print "$at(58,3424,3425)"} true; +L1: + + // return $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:83:5+1 + assume {:print "$at(58,3424,3425)"} true; + $ret0 := $t1; + return; + +} + +// fun pool_u64::buy_in [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:126:5+611 +procedure {:inline 1} $1_pool_u64_buy_in(_$t0: $Mutation ($1_pool_u64_Pool), _$t1: int, _$t2: int) returns ($ret0: int, $ret1: $Mutation ($1_pool_u64_Pool)) +{ + // declare local variables + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: bool; + var $t7: int; + var $t8: bool; + var $t9: int; + var $t10: int; + var $t11: bool; + var $t12: int; + var $t13: int; + var $t14: $1_pool_u64_Pool; + var $t15: int; + var $t16: int; + var $t17: int; + var $t18: int; + var $t19: int; + var $t20: bool; + var $t21: int; + var $t22: int; + var $t23: int; + var $t24: int; + var $t25: int; + var $t26: bool; + var $t27: int; + var $t28: int; + var $t29: int; + var $t30: int; + var $t31: $Mutation (int); + var $t32: int; + var $t33: int; + var $t34: $Mutation (int); + var $t35: bool; + var $t36: bool; + var $t37: int; + var $t38: bool; + var $t39: int; + var $t40: int; + var $t0: $Mutation ($1_pool_u64_Pool); + var $t1: int; + var $t2: int; + var $temp_0'$1_pool_u64_Pool': $1_pool_u64_Pool; + var $temp_0'address': int; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // bytecode translation starts here + // assume Identical($t5, pool_u64::spec_amount_to_shares_with_total_coins($t0, $t2, select pool_u64::Pool.total_coins($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:60:9+94 + assume {:print "$at(59,2129,2223)"} true; + assume ($t5 == $1_pool_u64_spec_amount_to_shares_with_total_coins($Dereference($t0), $t2, $total_coins#$1_pool_u64_Pool($Dereference($t0)))); + + // assume Identical($t6, simple_map::spec_contains_key(select pool_u64::Pool.shares($t0), $t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:83:9+73 + assume {:print "$at(59,3186,3259)"} true; + assume ($t6 == $1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($Dereference($t0)), $t1)); + + // assume Identical($t7, simple_map::spec_get(select pool_u64::Pool.shares($t0), $t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:84:9+68 + assume {:print "$at(59,3268,3336)"} true; + assume ($t7 == $1_simple_map_spec_get'address_u64'($shares#$1_pool_u64_Pool($Dereference($t0)), $t1)); + + // assume Identical($t8, simple_map::spec_contains_key(select pool_u64::Pool.shares($t0), $t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:94:9+73 + assume {:print "$at(59,3636,3709)"} true; + assume ($t8 == $1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($Dereference($t0)), $t1)); + + // assume Identical($t9, simple_map::spec_get(select pool_u64::Pool.shares($t0), $t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:95:9+68 + assume {:print "$at(59,3718,3786)"} true; + assume ($t9 == $1_simple_map_spec_get'address_u64'($shares#$1_pool_u64_Pool($Dereference($t0)), $t1)); + + // trace_local[pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:126:5+1 + assume {:print "$at(58,4864,4865)"} true; + $temp_0'$1_pool_u64_Pool' := $Dereference($t0); + assume {:print "$track_local(55,4,0):", $temp_0'$1_pool_u64_Pool'} $temp_0'$1_pool_u64_Pool' == $temp_0'$1_pool_u64_Pool'; + + // trace_local[shareholder]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:126:5+1 + assume {:print "$track_local(55,4,1):", $t1} $t1 == $t1; + + // trace_local[coins_amount]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:126:5+1 + assume {:print "$track_local(55,4,2):", $t2} $t2 == $t2; + + // $t10 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:127:29+1 + assume {:print "$at(58,4975,4976)"} true; + $t10 := 0; + assume $IsValid'u64'($t10); + + // $t11 := ==($t2, $t10) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:127:26+2 + $t11 := $IsEqual'u64'($t2, $t10); + + // if ($t11) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:127:9+31 + if ($t11) { goto L1; } else { goto L0; } + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:127:32+8 +L1: + + // destroy($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:127:32+8 + assume {:print "$at(58,4978,4986)"} true; + + // $t12 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:127:39+1 + $t12 := 0; + assume $IsValid'u64'($t12); + + // trace_return[0]($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:127:32+8 + assume {:print "$track_return(55,4,0):", $t12} $t12 == $t12; + + // trace_local[pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:127:32+8 + $temp_0'$1_pool_u64_Pool' := $Dereference($t0); + assume {:print "$track_local(55,4,0):", $temp_0'$1_pool_u64_Pool'} $temp_0'$1_pool_u64_Pool' == $temp_0'$1_pool_u64_Pool'; + + // pack_ref_deep($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:127:32+8 + + // $t13 := move($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:127:32+8 + $t13 := $t12; + + // goto L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:127:32+8 + goto L8; + + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:129:43+4 + assume {:print "$at(58,5031,5035)"} true; +L0: + + // $t14 := read_ref($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:129:42+20 + assume {:print "$at(58,5030,5050)"} true; + $t14 := $Dereference($t0); + + // $t15 := pool_u64::amount_to_shares($t14, $t2) on_abort goto L9 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:129:26+36 + call $t15 := $1_pool_u64_amount_to_shares($t14, $t2); + if ($abort_flag) { + assume {:print "$at(58,5014,5050)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(55,4):", $t16} $t16 == $t16; + goto L9; + } + + // trace_local[new_shares]($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:129:13+10 + assume {:print "$track_local(55,4,4):", $t15} $t15 == $t15; + + // $t17 := 18446744073709551615 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:130:17+7 + assume {:print "$at(58,5068,5075)"} true; + $t17 := 18446744073709551615; + assume $IsValid'u64'($t17); + + // $t18 := get_field.total_coins($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:130:27+16 + $t18 := $total_coins#$1_pool_u64_Pool($Dereference($t0)); + + // $t19 := -($t17, $t18) on_abort goto L9 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:130:25+1 + call $t19 := $Sub($t17, $t18); + if ($abort_flag) { + assume {:print "$at(58,5076,5077)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(55,4):", $t16} $t16 == $t16; + goto L9; + } + + // $t20 := >=($t19, $t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:130:44+2 + call $t20 := $Ge($t19, $t2); + + // if ($t20) goto L3 else goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:130:9+104 + if ($t20) { goto L3; } else { goto L2; } + + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:130:9+104 +L3: + + // goto L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:130:9+104 + assume {:print "$at(58,5060,5164)"} true; + goto L4; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:130:9+104 +L2: + + // pack_ref_deep($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:130:9+104 + assume {:print "$at(58,5060,5164)"} true; + + // destroy($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:130:9+104 + + // $t21 := 6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:130:85+26 + $t21 := 6; + assume $IsValid'u64'($t21); + + // $t22 := error::invalid_argument($t21) on_abort goto L9 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:130:61+51 + call $t22 := $1_error_invalid_argument($t21); + if ($abort_flag) { + assume {:print "$at(58,5112,5163)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(55,4):", $t16} $t16 == $t16; + goto L9; + } + + // trace_abort($t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:130:9+104 + assume {:print "$at(58,5060,5164)"} true; + assume {:print "$track_abort(55,4):", $t22} $t22 == $t22; + + // $t16 := move($t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:130:9+104 + $t16 := $t22; + + // goto L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:130:9+104 + goto L9; + + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:131:17+7 + assume {:print "$at(58,5182,5189)"} true; +L4: + + // $t23 := 18446744073709551615 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:131:17+7 + assume {:print "$at(58,5182,5189)"} true; + $t23 := 18446744073709551615; + assume $IsValid'u64'($t23); + + // $t24 := get_field.total_shares($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:131:27+17 + $t24 := $total_shares#$1_pool_u64_Pool($Dereference($t0)); + + // $t25 := -($t23, $t24) on_abort goto L9 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:131:25+1 + call $t25 := $Sub($t23, $t24); + if ($abort_flag) { + assume {:print "$at(58,5190,5191)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(55,4):", $t16} $t16 == $t16; + goto L9; + } + + // $t26 := >=($t25, $t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:131:45+2 + call $t26 := $Ge($t25, $t15); + + // if ($t26) goto L6 else goto L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:131:9+103 + if ($t26) { goto L6; } else { goto L5; } + + // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:131:9+103 +L6: + + // goto L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:131:9+103 + assume {:print "$at(58,5174,5277)"} true; + goto L7; + + // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:131:9+103 +L5: + + // pack_ref_deep($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:131:9+103 + assume {:print "$at(58,5174,5277)"} true; + + // destroy($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:131:9+103 + + // $t27 := 6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:131:84+26 + $t27 := 6; + assume $IsValid'u64'($t27); + + // $t28 := error::invalid_argument($t27) on_abort goto L9 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:131:60+51 + call $t28 := $1_error_invalid_argument($t27); + if ($abort_flag) { + assume {:print "$at(58,5225,5276)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(55,4):", $t16} $t16 == $t16; + goto L9; + } + + // trace_abort($t28) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:131:9+103 + assume {:print "$at(58,5174,5277)"} true; + assume {:print "$track_abort(55,4):", $t28} $t28 == $t28; + + // $t16 := move($t28) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:131:9+103 + $t16 := $t28; + + // goto L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:131:9+103 + goto L9; + + // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:133:28+4 + assume {:print "$at(58,5307,5311)"} true; +L7: + + // $t29 := get_field.total_coins($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:133:28+16 + assume {:print "$at(58,5307,5323)"} true; + $t29 := $total_coins#$1_pool_u64_Pool($Dereference($t0)); + + // $t30 := +($t29, $t2) on_abort goto L9 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:133:45+1 + call $t30 := $AddU64($t29, $t2); + if ($abort_flag) { + assume {:print "$at(58,5324,5325)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(55,4):", $t16} $t16 == $t16; + goto L9; + } + + // $t31 := borrow_field.total_coins($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:133:9+16 + $t31 := $ChildMutation($t0, 1, $total_coins#$1_pool_u64_Pool($Dereference($t0))); + + // write_ref($t31, $t30) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:133:9+50 + $t31 := $UpdateMutation($t31, $t30); + + // write_back[Reference($t0).total_coins (u64)]($t31) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:133:9+50 + $t0 := $UpdateMutation($t0, $Update'$1_pool_u64_Pool'_total_coins($Dereference($t0), $Dereference($t31))); + + // trace_local[pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:133:9+50 + $temp_0'$1_pool_u64_Pool' := $Dereference($t0); + assume {:print "$track_local(55,4,0):", $temp_0'$1_pool_u64_Pool'} $temp_0'$1_pool_u64_Pool' == $temp_0'$1_pool_u64_Pool'; + + // $t32 := get_field.total_shares($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:134:29+17 + assume {:print "$at(58,5368,5385)"} true; + $t32 := $total_shares#$1_pool_u64_Pool($Dereference($t0)); + + // $t33 := +($t32, $t15) on_abort goto L9 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:134:47+1 + call $t33 := $AddU64($t32, $t15); + if ($abort_flag) { + assume {:print "$at(58,5386,5387)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(55,4):", $t16} $t16 == $t16; + goto L9; + } + + // $t34 := borrow_field.total_shares($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:134:9+17 + $t34 := $ChildMutation($t0, 2, $total_shares#$1_pool_u64_Pool($Dereference($t0))); + + // write_ref($t34, $t33) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:134:9+50 + $t34 := $UpdateMutation($t34, $t33); + + // write_back[Reference($t0).total_shares (u64)]($t34) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:134:9+50 + $t0 := $UpdateMutation($t0, $Update'$1_pool_u64_Pool'_total_shares($Dereference($t0), $Dereference($t34))); + + // trace_local[pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:134:9+50 + $temp_0'$1_pool_u64_Pool' := $Dereference($t0); + assume {:print "$track_local(55,4,0):", $temp_0'$1_pool_u64_Pool'} $temp_0'$1_pool_u64_Pool' == $temp_0'$1_pool_u64_Pool'; + + // assume Identical($t35, simple_map::spec_contains_key(select pool_u64::Pool.shares($t0), $t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:74:9+73 + assume {:print "$at(59,2864,2937)"} true; + assume ($t35 == $1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($Dereference($t0)), $t1)); + + // assume Identical($t36, simple_map::spec_contains_key(select pool_u64::Pool.shares($t0), $t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:83:9+73 + assume {:print "$at(59,3186,3259)"} true; + assume ($t36 == $1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($Dereference($t0)), $t1)); + + // assume Identical($t37, simple_map::spec_get(select pool_u64::Pool.shares($t0), $t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:84:9+68 + assume {:print "$at(59,3268,3336)"} true; + assume ($t37 == $1_simple_map_spec_get'address_u64'($shares#$1_pool_u64_Pool($Dereference($t0)), $t1)); + + // assume Identical($t38, simple_map::spec_contains_key(select pool_u64::Pool.shares($t0), $t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:94:9+73 + assume {:print "$at(59,3636,3709)"} true; + assume ($t38 == $1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($Dereference($t0)), $t1)); + + // assume Identical($t39, simple_map::spec_get(select pool_u64::Pool.shares($t0), $t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:95:9+68 + assume {:print "$at(59,3718,3786)"} true; + assume ($t39 == $1_simple_map_spec_get'address_u64'($shares#$1_pool_u64_Pool($Dereference($t0)), $t1)); + + // $t40 := pool_u64::add_shares($t0, $t1, $t15) on_abort goto L9 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:135:9+41 + assume {:print "$at(58,5408,5449)"} true; + call $t40,$t0 := $1_pool_u64_add_shares($t0, $t1, $t15); + if ($abort_flag) { + assume {:print "$at(58,5408,5449)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(55,4):", $t16} $t16 == $t16; + goto L9; + } + + // destroy($t40) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:135:9+41 + + // trace_return[0]($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:136:9+10 + assume {:print "$at(58,5459,5469)"} true; + assume {:print "$track_return(55,4,0):", $t15} $t15 == $t15; + + // trace_local[pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:136:9+10 + $temp_0'$1_pool_u64_Pool' := $Dereference($t0); + assume {:print "$track_local(55,4,0):", $temp_0'$1_pool_u64_Pool'} $temp_0'$1_pool_u64_Pool' == $temp_0'$1_pool_u64_Pool'; + + // pack_ref_deep($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:136:9+10 + + // $t13 := move($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:136:9+10 + $t13 := $t15; + + // label L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:137:5+1 + assume {:print "$at(58,5474,5475)"} true; +L8: + + // return $t13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:137:5+1 + assume {:print "$at(58,5474,5475)"} true; + $ret0 := $t13; + $ret1 := $t0; + return; + + // label L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:137:5+1 +L9: + + // abort($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:137:5+1 + assume {:print "$at(58,5474,5475)"} true; + $abort_code := $t16; + $abort_flag := true; + return; + +} + +// fun pool_u64::deduct_shares [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:194:5+857 +procedure {:inline 1} $1_pool_u64_deduct_shares(_$t0: $Mutation ($1_pool_u64_Pool), _$t1: int, _$t2: int) returns ($ret0: int, $ret1: $Mutation ($1_pool_u64_Pool)) +{ + // declare local variables + var $t3: int; + var $t4: int; + var $t5: $Mutation (int); + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: $1_pool_u64_Pool; + var $t11: bool; + var $t12: int; + var $t13: int; + var $t14: int; + var $t15: $1_pool_u64_Pool; + var $t16: int; + var $t17: bool; + var $t18: int; + var $t19: int; + var $t20: $Mutation (Table int (int)); + var $t21: $Mutation (int); + var $t22: int; + var $t23: int; + var $t24: int; + var $t25: int; + var $t26: bool; + var $t27: Vec (int); + var $t28: bool; + var $t29: int; + var $t30: $Mutation (Vec (int)); + var $t31: int; + var $t32: $Mutation (Table int (int)); + var $t33: int; + var $t34: int; + var $t0: $Mutation ($1_pool_u64_Pool); + var $t1: int; + var $t2: int; + var $temp_0'$1_pool_u64_Pool': $1_pool_u64_Pool; + var $temp_0'address': int; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // bytecode translation starts here + // assume Identical($t8, Sub(simple_map::spec_get(select pool_u64::Pool.shares($t0), $t1), $t2)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:173:9+83 + assume {:print "$at(59,7278,7361)"} true; + assume ($t8 == ($1_simple_map_spec_get'address_u64'($shares#$1_pool_u64_Pool($Dereference($t0)), $t1) - $t2)); + + // assume Identical($t9, Sub(simple_map::spec_get(select pool_u64::Pool.shares($t0), $t1), $t2)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:181:9+83 + assume {:print "$at(59,7643,7726)"} true; + assume ($t9 == ($1_simple_map_spec_get'address_u64'($shares#$1_pool_u64_Pool($Dereference($t0)), $t1) - $t2)); + + // trace_local[pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:194:5+1 + assume {:print "$at(58,7989,7990)"} true; + $temp_0'$1_pool_u64_Pool' := $Dereference($t0); + assume {:print "$track_local(55,8,0):", $temp_0'$1_pool_u64_Pool'} $temp_0'$1_pool_u64_Pool' == $temp_0'$1_pool_u64_Pool'; + + // trace_local[shareholder]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:194:5+1 + assume {:print "$track_local(55,8,1):", $t1} $t1 == $t1; + + // trace_local[num_shares]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:194:5+1 + assume {:print "$track_local(55,8,2):", $t2} $t2 == $t2; + + // $t10 := read_ref($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:195:25+19 + assume {:print "$at(58,8094,8113)"} true; + $t10 := $Dereference($t0); + + // $t11 := pool_u64::contains($t10, $t1) on_abort goto L10 with $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:195:17+27 + call $t11 := $1_pool_u64_contains($t10, $t1); + if ($abort_flag) { + assume {:print "$at(58,8086,8113)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(55,8):", $t12} $t12 == $t12; + goto L10; + } + + // if ($t11) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:195:9+85 + if ($t11) { goto L1; } else { goto L0; } + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:195:9+85 +L1: + + // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:195:9+85 + assume {:print "$at(58,8078,8163)"} true; + goto L2; + + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:195:9+85 +L0: + + // pack_ref_deep($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:195:9+85 + assume {:print "$at(58,8078,8163)"} true; + + // destroy($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:195:9+85 + + // $t13 := 1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:195:70+22 + $t13 := 1; + assume $IsValid'u64'($t13); + + // $t14 := error::invalid_argument($t13) on_abort goto L10 with $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:195:46+47 + call $t14 := $1_error_invalid_argument($t13); + if ($abort_flag) { + assume {:print "$at(58,8115,8162)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(55,8):", $t12} $t12 == $t12; + goto L10; + } + + // trace_abort($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:195:9+85 + assume {:print "$at(58,8078,8163)"} true; + assume {:print "$track_abort(55,8):", $t14} $t14 == $t14; + + // $t12 := move($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:195:9+85 + $t12 := $t14; + + // goto L10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:195:9+85 + goto L10; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:196:24+4 + assume {:print "$at(58,8188,8192)"} true; +L2: + + // $t15 := read_ref($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:196:23+19 + assume {:print "$at(58,8187,8206)"} true; + $t15 := $Dereference($t0); + + // $t16 := pool_u64::shares($t15, $t1) on_abort goto L10 with $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:196:17+25 + call $t16 := $1_pool_u64_shares($t15, $t1); + if ($abort_flag) { + assume {:print "$at(58,8181,8206)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(55,8):", $t12} $t12 == $t12; + goto L10; + } + + // $t17 := >=($t16, $t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:196:43+2 + call $t17 := $Ge($t16, $t2); + + // if ($t17) goto L4 else goto L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:196:9+95 + if ($t17) { goto L4; } else { goto L3; } + + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:196:9+95 +L4: + + // goto L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:196:9+95 + assume {:print "$at(58,8173,8268)"} true; + goto L5; + + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:196:9+95 +L3: + + // pack_ref_deep($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:196:9+95 + assume {:print "$at(58,8173,8268)"} true; + + // destroy($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:196:9+95 + + // $t18 := 4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:196:82+20 + $t18 := 4; + assume $IsValid'u64'($t18); + + // $t19 := error::invalid_argument($t18) on_abort goto L10 with $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:196:58+45 + call $t19 := $1_error_invalid_argument($t18); + if ($abort_flag) { + assume {:print "$at(58,8222,8267)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(55,8):", $t12} $t12 == $t12; + goto L10; + } + + // trace_abort($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:196:9+95 + assume {:print "$at(58,8173,8268)"} true; + assume {:print "$track_abort(55,8):", $t19} $t19 == $t19; + + // $t12 := move($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:196:9+95 + $t12 := $t19; + + // goto L10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:196:9+95 + goto L10; + + // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:198:59+4 + assume {:print "$at(58,8329,8333)"} true; +L5: + + // $t20 := borrow_field.shares($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:198:54+16 + assume {:print "$at(58,8324,8340)"} true; + $t20 := $ChildMutation($t0, 3, $shares#$1_pool_u64_Pool($Dereference($t0))); + + // $t21 := simple_map::borrow_mut($t20, $t1) on_abort goto L10 with $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:198:31+54 + call $t21,$t20 := $1_simple_map_borrow_mut'address_u64'($t20, $t1); + if ($abort_flag) { + assume {:print "$at(58,8301,8355)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(55,8):", $t12} $t12 == $t12; + goto L10; + } + + // trace_local[existing_shares]($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:198:13+15 + $temp_0'u64' := $Dereference($t21); + assume {:print "$track_local(55,8,5):", $temp_0'u64'} $temp_0'u64' == $temp_0'u64'; + + // $t22 := read_ref($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:199:28+16 + assume {:print "$at(58,8384,8400)"} true; + $t22 := $Dereference($t21); + + // $t23 := -($t22, $t2) on_abort goto L10 with $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:199:45+1 + call $t23 := $Sub($t22, $t2); + if ($abort_flag) { + assume {:print "$at(58,8401,8402)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(55,8):", $t12} $t12 == $t12; + goto L10; + } + + // write_ref($t21, $t23) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:199:9+48 + $t21 := $UpdateMutation($t21, $t23); + + // $t24 := read_ref($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:202:32+16 + assume {:print "$at(58,8521,8537)"} true; + $t24 := $Dereference($t21); + + // write_back[Reference($t20)[]]($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:202:32+16 + $t20 := $UpdateMutation($t20, UpdateTable($Dereference($t20), ReadVec(p#$Mutation($t21), LenVec(p#$Mutation($t20))), $Dereference($t21))); + + // write_back[Reference($t0).shares (simple_map::SimpleMap)]($t20) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:202:32+16 + $t0 := $UpdateMutation($t0, $Update'$1_pool_u64_Pool'_shares($Dereference($t0), $Dereference($t20))); + + // trace_local[pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:202:32+16 + $temp_0'$1_pool_u64_Pool' := $Dereference($t0); + assume {:print "$track_local(55,8,0):", $temp_0'$1_pool_u64_Pool'} $temp_0'$1_pool_u64_Pool' == $temp_0'$1_pool_u64_Pool'; + + // trace_local[remaining_shares]($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:202:13+16 + assume {:print "$track_local(55,8,6):", $t24} $t24 == $t24; + + // $t25 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:203:33+1 + assume {:print "$at(58,8571,8572)"} true; + $t25 := 0; + assume $IsValid'u64'($t25); + + // $t26 := ==($t24, $t25) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:203:30+2 + $t26 := $IsEqual'u64'($t24, $t25); + + // if ($t26) goto L7 else goto L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:203:9+266 + if ($t26) { goto L7; } else { goto L6; } + + // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:204:60+4 + assume {:print "$at(58,8635,8639)"} true; +L7: + + // $t27 := get_field.shareholders($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:204:59+18 + assume {:print "$at(58,8634,8652)"} true; + $t27 := $shareholders#$1_pool_u64_Pool($Dereference($t0)); + + // ($t28, $t29) := vector::index_of
($t27, $t1) on_abort goto L10 with $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:204:42+50 + call $t28,$t29 := $1_vector_index_of'address'($t27, $t1); + if ($abort_flag) { + assume {:print "$at(58,8617,8667)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(55,8):", $t12} $t12 == $t12; + goto L10; + } + + // trace_local[shareholder_index]($t29) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:204:21+17 + assume {:print "$track_local(55,8,7):", $t29} $t29 == $t29; + + // destroy($t28) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:204:18+1 + + // $t30 := borrow_field.shareholders($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:205:28+22 + assume {:print "$at(58,8696,8718)"} true; + $t30 := $ChildMutation($t0, 4, $shareholders#$1_pool_u64_Pool($Dereference($t0))); + + // $t31 := vector::remove
($t30, $t29) on_abort goto L10 with $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:205:13+57 + call $t31,$t30 := $1_vector_remove'address'($t30, $t29); + if ($abort_flag) { + assume {:print "$at(58,8681,8738)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(55,8):", $t12} $t12 == $t12; + goto L10; + } + + // write_back[Reference($t0).shareholders (vector
)]($t30) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:205:13+57 + $t0 := $UpdateMutation($t0, $Update'$1_pool_u64_Pool'_shareholders($Dereference($t0), $Dereference($t30))); + + // trace_local[pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:205:13+57 + $temp_0'$1_pool_u64_Pool' := $Dereference($t0); + assume {:print "$track_local(55,8,0):", $temp_0'$1_pool_u64_Pool'} $temp_0'$1_pool_u64_Pool' == $temp_0'$1_pool_u64_Pool'; + + // destroy($t31) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:205:13+57 + + // $t32 := borrow_field.shares($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:206:32+16 + assume {:print "$at(58,8771,8787)"} true; + $t32 := $ChildMutation($t0, 3, $shares#$1_pool_u64_Pool($Dereference($t0))); + + // ($t33, $t34) := simple_map::remove($t32, $t1) on_abort goto L10 with $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:206:13+50 + call $t33,$t34,$t32 := $1_simple_map_remove'address_u64'($t32, $t1); + if ($abort_flag) { + assume {:print "$at(58,8752,8802)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(55,8):", $t12} $t12 == $t12; + goto L10; + } + + // write_back[Reference($t0).shares (simple_map::SimpleMap)]($t32) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:206:13+50 + $t0 := $UpdateMutation($t0, $Update'$1_pool_u64_Pool'_shares($Dereference($t0), $Dereference($t32))); + + // trace_local[pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:206:13+50 + $temp_0'$1_pool_u64_Pool' := $Dereference($t0); + assume {:print "$track_local(55,8,0):", $temp_0'$1_pool_u64_Pool'} $temp_0'$1_pool_u64_Pool' == $temp_0'$1_pool_u64_Pool'; + + // destroy($t34) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:206:13+50 + + // destroy($t33) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:206:13+50 + + // goto L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:206:63+1 + goto L8; + + // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:203:9+266 + assume {:print "$at(58,8547,8813)"} true; +L6: + + // destroy($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:203:9+266 + assume {:print "$at(58,8547,8813)"} true; + + // label L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:209:9+16 + assume {:print "$at(58,8824,8840)"} true; +L8: + + // trace_return[0]($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:209:9+16 + assume {:print "$at(58,8824,8840)"} true; + assume {:print "$track_return(55,8,0):", $t24} $t24 == $t24; + + // trace_local[pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:209:9+16 + $temp_0'$1_pool_u64_Pool' := $Dereference($t0); + assume {:print "$track_local(55,8,0):", $temp_0'$1_pool_u64_Pool'} $temp_0'$1_pool_u64_Pool' == $temp_0'$1_pool_u64_Pool'; + + // pack_ref_deep($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:209:9+16 + + // label L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:210:5+1 + assume {:print "$at(58,8845,8846)"} true; +L9: + + // return $t24 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:210:5+1 + assume {:print "$at(58,8845,8846)"} true; + $ret0 := $t24; + $ret1 := $t0; + return; + + // label L10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:210:5+1 +L10: + + // abort($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:210:5+1 + assume {:print "$at(58,8845,8846)"} true; + $abort_code := $t12; + $abort_flag := true; + return; + +} + +// fun pool_u64::multiply_then_divide [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:254:5+167 +procedure {:inline 1} $1_pool_u64_multiply_then_divide(_$t0: $1_pool_u64_Pool, _$t1: int, _$t2: int, _$t3: int) returns ($ret0: int) +{ + // declare local variables + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: int; + var $t0: $1_pool_u64_Pool; + var $t1: int; + var $t2: int; + var $t3: int; + var $temp_0'$1_pool_u64_Pool': $1_pool_u64_Pool; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + + // bytecode translation starts here + // trace_local[_pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:254:5+1 + assume {:print "$at(58,11269,11270)"} true; + assume {:print "$track_local(55,10,0):", $t0} $t0 == $t0; + + // trace_local[x]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:254:5+1 + assume {:print "$track_local(55,10,1):", $t1} $t1 == $t1; + + // trace_local[y]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:254:5+1 + assume {:print "$track_local(55,10,2):", $t2} $t2 == $t2; + + // trace_local[z]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:254:5+1 + assume {:print "$track_local(55,10,3):", $t3} $t3 == $t3; + + // $t4 := pool_u64::to_u128($t1) on_abort goto L2 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:255:23+10 + assume {:print "$at(58,11368,11378)"} true; + call $t4 := $1_pool_u64_to_u128($t1); + if ($abort_flag) { + assume {:print "$at(58,11368,11378)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(55,10):", $t5} $t5 == $t5; + goto L2; + } + + // $t6 := pool_u64::to_u128($t2) on_abort goto L2 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:255:36+10 + call $t6 := $1_pool_u64_to_u128($t2); + if ($abort_flag) { + assume {:print "$at(58,11381,11391)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(55,10):", $t5} $t5 == $t5; + goto L2; + } + + // $t7 := *($t4, $t6) on_abort goto L2 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:255:34+1 + call $t7 := $MulU128($t4, $t6); + if ($abort_flag) { + assume {:print "$at(58,11379,11380)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(55,10):", $t5} $t5 == $t5; + goto L2; + } + + // $t8 := pool_u64::to_u128($t3) on_abort goto L2 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:255:50+10 + call $t8 := $1_pool_u64_to_u128($t3); + if ($abort_flag) { + assume {:print "$at(58,11395,11405)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(55,10):", $t5} $t5 == $t5; + goto L2; + } + + // $t9 := /($t7, $t8) on_abort goto L2 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:255:48+1 + call $t9 := $Div($t7, $t8); + if ($abort_flag) { + assume {:print "$at(58,11393,11394)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(55,10):", $t5} $t5 == $t5; + goto L2; + } + + // $t10 := (u64)($t9) on_abort goto L2 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:256:9+15 + assume {:print "$at(58,11415,11430)"} true; + call $t10 := $CastU64($t9); + if ($abort_flag) { + assume {:print "$at(58,11415,11430)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(55,10):", $t5} $t5 == $t5; + goto L2; + } + + // trace_return[0]($t10) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:256:9+15 + assume {:print "$track_return(55,10,0):", $t10} $t10 == $t10; + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:257:5+1 + assume {:print "$at(58,11435,11436)"} true; +L1: + + // return $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:257:5+1 + assume {:print "$at(58,11435,11436)"} true; + $ret0 := $t10; + return; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:257:5+1 +L2: + + // abort($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:257:5+1 + assume {:print "$at(58,11435,11436)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun pool_u64::redeem_shares [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:164:5+635 +procedure {:inline 1} $1_pool_u64_redeem_shares(_$t0: $Mutation ($1_pool_u64_Pool), _$t1: int, _$t2: int) returns ($ret0: int, $ret1: $Mutation ($1_pool_u64_Pool)) +{ + // declare local variables + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: $1_pool_u64_Pool; + var $t10: bool; + var $t11: int; + var $t12: int; + var $t13: int; + var $t14: $1_pool_u64_Pool; + var $t15: int; + var $t16: bool; + var $t17: int; + var $t18: int; + var $t19: int; + var $t20: bool; + var $t21: int; + var $t22: int; + var $t23: $1_pool_u64_Pool; + var $t24: int; + var $t25: int; + var $t26: int; + var $t27: $Mutation (int); + var $t28: int; + var $t29: int; + var $t30: $Mutation (int); + var $t31: int; + var $t32: int; + var $t33: int; + var $t0: $Mutation ($1_pool_u64_Pool); + var $t1: int; + var $t2: int; + var $temp_0'$1_pool_u64_Pool': $1_pool_u64_Pool; + var $temp_0'address': int; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // bytecode translation starts here + // assume Identical($t7, pool_u64::spec_shares_to_amount_with_total_coins($t0, $t2, select pool_u64::Pool.total_coins($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:145:9+102 + assume {:print "$at(59,5992,6094)"} true; + assume ($t7 == $1_pool_u64_spec_shares_to_amount_with_total_coins($Dereference($t0), $t2, $total_coins#$1_pool_u64_Pool($Dereference($t0)))); + + // assume Identical($t8, Sub(simple_map::spec_get(select pool_u64::Pool.shares($t0), $t1), $t2)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:181:9+83 + assume {:print "$at(59,7643,7726)"} true; + assume ($t8 == ($1_simple_map_spec_get'address_u64'($shares#$1_pool_u64_Pool($Dereference($t0)), $t1) - $t2)); + + // trace_local[pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:164:5+1 + assume {:print "$at(58,6621,6622)"} true; + $temp_0'$1_pool_u64_Pool' := $Dereference($t0); + assume {:print "$track_local(55,11,0):", $temp_0'$1_pool_u64_Pool'} $temp_0'$1_pool_u64_Pool' == $temp_0'$1_pool_u64_Pool'; + + // trace_local[shareholder]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:164:5+1 + assume {:print "$track_local(55,11,1):", $t1} $t1 == $t1; + + // trace_local[shares_to_redeem]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:164:5+1 + assume {:print "$track_local(55,11,2):", $t2} $t2 == $t2; + + // $t9 := read_ref($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:165:25+19 + assume {:print "$at(58,6739,6758)"} true; + $t9 := $Dereference($t0); + + // $t10 := pool_u64::contains($t9, $t1) on_abort goto L9 with $t11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:165:17+27 + call $t10 := $1_pool_u64_contains($t9, $t1); + if ($abort_flag) { + assume {:print "$at(58,6731,6758)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(55,11):", $t11} $t11 == $t11; + goto L9; + } + + // if ($t10) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:165:9+85 + if ($t10) { goto L1; } else { goto L0; } + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:165:9+85 +L1: + + // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:165:9+85 + assume {:print "$at(58,6723,6808)"} true; + goto L2; + + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:165:9+85 +L0: + + // pack_ref_deep($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:165:9+85 + assume {:print "$at(58,6723,6808)"} true; + + // destroy($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:165:9+85 + + // $t12 := 1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:165:70+22 + $t12 := 1; + assume $IsValid'u64'($t12); + + // $t13 := error::invalid_argument($t12) on_abort goto L9 with $t11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:165:46+47 + call $t13 := $1_error_invalid_argument($t12); + if ($abort_flag) { + assume {:print "$at(58,6760,6807)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(55,11):", $t11} $t11 == $t11; + goto L9; + } + + // trace_abort($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:165:9+85 + assume {:print "$at(58,6723,6808)"} true; + assume {:print "$track_abort(55,11):", $t13} $t13 == $t13; + + // $t11 := move($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:165:9+85 + $t11 := $t13; + + // goto L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:165:9+85 + goto L9; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:166:24+4 + assume {:print "$at(58,6833,6837)"} true; +L2: + + // $t14 := read_ref($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:166:23+19 + assume {:print "$at(58,6832,6851)"} true; + $t14 := $Dereference($t0); + + // $t15 := pool_u64::shares($t14, $t1) on_abort goto L9 with $t11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:166:17+25 + call $t15 := $1_pool_u64_shares($t14, $t1); + if ($abort_flag) { + assume {:print "$at(58,6826,6851)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(55,11):", $t11} $t11 == $t11; + goto L9; + } + + // $t16 := >=($t15, $t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:166:43+2 + call $t16 := $Ge($t15, $t2); + + // if ($t16) goto L4 else goto L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:166:9+101 + if ($t16) { goto L4; } else { goto L3; } + + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:166:9+101 +L4: + + // goto L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:166:9+101 + assume {:print "$at(58,6818,6919)"} true; + goto L5; + + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:166:9+101 +L3: + + // pack_ref_deep($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:166:9+101 + assume {:print "$at(58,6818,6919)"} true; + + // destroy($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:166:9+101 + + // $t17 := 4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:166:88+20 + $t17 := 4; + assume $IsValid'u64'($t17); + + // $t18 := error::invalid_argument($t17) on_abort goto L9 with $t11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:166:64+45 + call $t18 := $1_error_invalid_argument($t17); + if ($abort_flag) { + assume {:print "$at(58,6873,6918)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(55,11):", $t11} $t11 == $t11; + goto L9; + } + + // trace_abort($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:166:9+101 + assume {:print "$at(58,6818,6919)"} true; + assume {:print "$track_abort(55,11):", $t18} $t18 == $t18; + + // $t11 := move($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:166:9+101 + $t11 := $t18; + + // goto L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:166:9+101 + goto L9; + + // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:168:13+16 + assume {:print "$at(58,6934,6950)"} true; +L5: + + // $t19 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:168:33+1 + assume {:print "$at(58,6954,6955)"} true; + $t19 := 0; + assume $IsValid'u64'($t19); + + // $t20 := ==($t2, $t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:168:30+2 + $t20 := $IsEqual'u64'($t2, $t19); + + // if ($t20) goto L7 else goto L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:168:9+35 + if ($t20) { goto L7; } else { goto L6; } + + // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:168:36+8 +L7: + + // destroy($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:168:36+8 + assume {:print "$at(58,6957,6965)"} true; + + // $t21 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:168:43+1 + $t21 := 0; + assume $IsValid'u64'($t21); + + // trace_return[0]($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:168:36+8 + assume {:print "$track_return(55,11,0):", $t21} $t21 == $t21; + + // trace_local[pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:168:36+8 + $temp_0'$1_pool_u64_Pool' := $Dereference($t0); + assume {:print "$track_local(55,11,0):", $temp_0'$1_pool_u64_Pool'} $temp_0'$1_pool_u64_Pool' == $temp_0'$1_pool_u64_Pool'; + + // pack_ref_deep($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:168:36+8 + + // $t22 := move($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:168:36+8 + $t22 := $t21; + + // goto L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:168:36+8 + goto L8; + + // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:170:47+4 + assume {:print "$at(58,7014,7018)"} true; +L6: + + // $t23 := read_ref($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:170:46+24 + assume {:print "$at(58,7013,7037)"} true; + $t23 := $Dereference($t0); + + // $t24 := pool_u64::shares_to_amount($t23, $t2) on_abort goto L9 with $t11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:170:30+40 + call $t24 := $1_pool_u64_shares_to_amount($t23, $t2); + if ($abort_flag) { + assume {:print "$at(58,6997,7037)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(55,11):", $t11} $t11 == $t11; + goto L9; + } + + // trace_local[redeemed_coins]($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:170:13+14 + assume {:print "$track_local(55,11,6):", $t24} $t24 == $t24; + + // $t25 := get_field.total_coins($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:171:28+16 + assume {:print "$at(58,7066,7082)"} true; + $t25 := $total_coins#$1_pool_u64_Pool($Dereference($t0)); + + // $t26 := -($t25, $t24) on_abort goto L9 with $t11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:171:45+1 + call $t26 := $Sub($t25, $t24); + if ($abort_flag) { + assume {:print "$at(58,7083,7084)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(55,11):", $t11} $t11 == $t11; + goto L9; + } + + // $t27 := borrow_field.total_coins($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:171:9+16 + $t27 := $ChildMutation($t0, 1, $total_coins#$1_pool_u64_Pool($Dereference($t0))); + + // write_ref($t27, $t26) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:171:9+52 + $t27 := $UpdateMutation($t27, $t26); + + // write_back[Reference($t0).total_coins (u64)]($t27) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:171:9+52 + $t0 := $UpdateMutation($t0, $Update'$1_pool_u64_Pool'_total_coins($Dereference($t0), $Dereference($t27))); + + // trace_local[pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:171:9+52 + $temp_0'$1_pool_u64_Pool' := $Dereference($t0); + assume {:print "$track_local(55,11,0):", $temp_0'$1_pool_u64_Pool'} $temp_0'$1_pool_u64_Pool' == $temp_0'$1_pool_u64_Pool'; + + // $t28 := get_field.total_shares($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:172:29+17 + assume {:print "$at(58,7129,7146)"} true; + $t28 := $total_shares#$1_pool_u64_Pool($Dereference($t0)); + + // $t29 := -($t28, $t2) on_abort goto L9 with $t11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:172:47+1 + call $t29 := $Sub($t28, $t2); + if ($abort_flag) { + assume {:print "$at(58,7147,7148)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(55,11):", $t11} $t11 == $t11; + goto L9; + } + + // $t30 := borrow_field.total_shares($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:172:9+17 + $t30 := $ChildMutation($t0, 2, $total_shares#$1_pool_u64_Pool($Dereference($t0))); + + // write_ref($t30, $t29) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:172:9+56 + $t30 := $UpdateMutation($t30, $t29); + + // write_back[Reference($t0).total_shares (u64)]($t30) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:172:9+56 + $t0 := $UpdateMutation($t0, $Update'$1_pool_u64_Pool'_total_shares($Dereference($t0), $Dereference($t30))); + + // trace_local[pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:172:9+56 + $temp_0'$1_pool_u64_Pool' := $Dereference($t0); + assume {:print "$track_local(55,11,0):", $temp_0'$1_pool_u64_Pool'} $temp_0'$1_pool_u64_Pool' == $temp_0'$1_pool_u64_Pool'; + + // assume Identical($t31, Sub(simple_map::spec_get(select pool_u64::Pool.shares($t0), $t1), $t2)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:173:9+83 + assume {:print "$at(59,7278,7361)"} true; + assume ($t31 == ($1_simple_map_spec_get'address_u64'($shares#$1_pool_u64_Pool($Dereference($t0)), $t1) - $t2)); + + // assume Identical($t32, Sub(simple_map::spec_get(select pool_u64::Pool.shares($t0), $t1), $t2)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:181:9+83 + assume {:print "$at(59,7643,7726)"} true; + assume ($t32 == ($1_simple_map_spec_get'address_u64'($shares#$1_pool_u64_Pool($Dereference($t0)), $t1) - $t2)); + + // $t33 := pool_u64::deduct_shares($t0, $t1, $t2) on_abort goto L9 with $t11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:173:9+50 + assume {:print "$at(58,7175,7225)"} true; + call $t33,$t0 := $1_pool_u64_deduct_shares($t0, $t1, $t2); + if ($abort_flag) { + assume {:print "$at(58,7175,7225)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(55,11):", $t11} $t11 == $t11; + goto L9; + } + + // destroy($t33) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:173:9+50 + + // trace_return[0]($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:175:9+14 + assume {:print "$at(58,7236,7250)"} true; + assume {:print "$track_return(55,11,0):", $t24} $t24 == $t24; + + // trace_local[pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:175:9+14 + $temp_0'$1_pool_u64_Pool' := $Dereference($t0); + assume {:print "$track_local(55,11,0):", $temp_0'$1_pool_u64_Pool'} $temp_0'$1_pool_u64_Pool' == $temp_0'$1_pool_u64_Pool'; + + // pack_ref_deep($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:175:9+14 + + // $t22 := move($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:175:9+14 + $t22 := $t24; + + // label L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:176:5+1 + assume {:print "$at(58,7255,7256)"} true; +L8: + + // return $t22 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:176:5+1 + assume {:print "$at(58,7255,7256)"} true; + $ret0 := $t22; + $ret1 := $t0; + return; + + // label L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:176:5+1 +L9: + + // abort($t11) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:176:5+1 + assume {:print "$at(58,7255,7256)"} true; + $abort_code := $t11; + $abort_flag := true; + return; + +} + +// fun pool_u64::shareholders [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:111:5+87 +procedure {:inline 1} $1_pool_u64_shareholders(_$t0: $1_pool_u64_Pool) returns ($ret0: Vec (int)) +{ + // declare local variables + var $t1: Vec (int); + var $t0: $1_pool_u64_Pool; + var $temp_0'$1_pool_u64_Pool': $1_pool_u64_Pool; + var $temp_0'vec'address'': Vec (int); + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:111:5+1 + assume {:print "$at(58,4336,4337)"} true; + assume {:print "$track_local(55,12,0):", $t0} $t0 == $t0; + + // $t1 := get_field.shareholders($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:112:9+17 + assume {:print "$at(58,4400,4417)"} true; + $t1 := $shareholders#$1_pool_u64_Pool($t0); + + // trace_return[0]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:112:9+17 + assume {:print "$track_return(55,12,0):", $t1} $t1 == $t1; + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:113:5+1 + assume {:print "$at(58,4422,4423)"} true; +L1: + + // return $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:113:5+1 + assume {:print "$at(58,4422,4423)"} true; + $ret0 := $t1; + return; + +} + +// fun pool_u64::shareholders_count [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:116:5+98 +procedure {:inline 1} $1_pool_u64_shareholders_count(_$t0: $1_pool_u64_Pool) returns ($ret0: int) +{ + // declare local variables + var $t1: Vec (int); + var $t2: int; + var $t3: int; + var $t0: $1_pool_u64_Pool; + var $temp_0'$1_pool_u64_Pool': $1_pool_u64_Pool; + var $temp_0'u64': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:116:5+1 + assume {:print "$at(58,4482,4483)"} true; + assume {:print "$track_local(55,13,0):", $t0} $t0 == $t0; + + // $t1 := get_field.shareholders($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:117:24+18 + assume {:print "$at(58,4555,4573)"} true; + $t1 := $shareholders#$1_pool_u64_Pool($t0); + + // $t2 := vector::length
($t1) on_abort goto L2 with $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:117:9+34 + call $t2 := $1_vector_length'address'($t1); + if ($abort_flag) { + assume {:print "$at(58,4540,4574)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(55,13):", $t3} $t3 == $t3; + goto L2; + } + + // trace_return[0]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:117:9+34 + assume {:print "$track_return(55,13,0):", $t2} $t2 == $t2; + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:118:5+1 + assume {:print "$at(58,4579,4580)"} true; +L1: + + // return $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:118:5+1 + assume {:print "$at(58,4579,4580)"} true; + $ret0 := $t2; + return; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:118:5+1 +L2: + + // abort($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:118:5+1 + assume {:print "$at(58,4579,4580)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun pool_u64::shares [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:96:5+209 +procedure {:inline 1} $1_pool_u64_shares(_$t0: $1_pool_u64_Pool, _$t1: int) returns ($ret0: int) +{ + // declare local variables + var $t2: int; + var $t3: bool; + var $t4: int; + var $t5: Table int (int); + var $t6: int; + var $t0: $1_pool_u64_Pool; + var $t1: int; + var $temp_0'$1_pool_u64_Pool': $1_pool_u64_Pool; + var $temp_0'address': int; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:96:5+1 + assume {:print "$at(58,3839,3840)"} true; + assume {:print "$track_local(55,14,0):", $t0} $t0 == $t0; + + // trace_local[shareholder]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:96:5+1 + assume {:print "$track_local(55,14,1):", $t1} $t1 == $t1; + + // $t3 := pool_u64::contains($t0, $t1) on_abort goto L4 with $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:97:13+27 + assume {:print "$at(58,3911,3938)"} true; + call $t3 := $1_pool_u64_contains($t0, $t1); + if ($abort_flag) { + assume {:print "$at(58,3911,3938)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(55,14):", $t4} $t4 == $t4; + goto L4; + } + + // if ($t3) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:97:9+135 + if ($t3) { goto L1; } else { goto L0; } + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:98:34+4 + assume {:print "$at(58,3975,3979)"} true; +L1: + + // $t5 := get_field.shares($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:98:33+12 + assume {:print "$at(58,3974,3986)"} true; + $t5 := $shares#$1_pool_u64_Pool($t0); + + // $t2 := simple_map::borrow($t5, $t1) on_abort goto L4 with $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:98:14+46 + call $t2 := $1_simple_map_borrow'address_u64'($t5, $t1); + if ($abort_flag) { + assume {:print "$at(58,3955,4001)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(55,14):", $t4} $t4 == $t4; + goto L4; + } + + // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:97:9+135 + assume {:print "$at(58,3907,4042)"} true; + goto L2; + + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:97:9+135 +L0: + + // $t6 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:100:13+1 + assume {:print "$at(58,4031,4032)"} true; + $t6 := 0; + assume $IsValid'u64'($t6); + + // $t2 := $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:97:9+135 + assume {:print "$at(58,3907,4042)"} true; + $t2 := $t6; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:97:9+135 +L2: + + // trace_return[0]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:97:9+135 + assume {:print "$at(58,3907,4042)"} true; + assume {:print "$track_return(55,14,0):", $t2} $t2 == $t2; + + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:102:5+1 + assume {:print "$at(58,4047,4048)"} true; +L3: + + // return $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:102:5+1 + assume {:print "$at(58,4047,4048)"} true; + $ret0 := $t2; + return; + + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:102:5+1 +L4: + + // abort($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:102:5+1 + assume {:print "$at(58,4047,4048)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun pool_u64::shares_to_amount [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:236:5+140 +procedure {:inline 1} $1_pool_u64_shares_to_amount(_$t0: $1_pool_u64_Pool, _$t1: int) returns ($ret0: int) +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: int; + var $t0: $1_pool_u64_Pool; + var $t1: int; + var $temp_0'$1_pool_u64_Pool': $1_pool_u64_Pool; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:236:5+1 + assume {:print "$at(58,10355,10356)"} true; + assume {:print "$track_local(55,15,0):", $t0} $t0 == $t0; + + // trace_local[shares]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:236:5+1 + assume {:print "$track_local(55,15,1):", $t1} $t1 == $t1; + + // $t2 := get_field.total_coins($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:237:57+16 + assume {:print "$at(58,10472,10488)"} true; + $t2 := $total_coins#$1_pool_u64_Pool($t0); + + // $t3 := pool_u64::shares_to_amount_with_total_coins($t0, $t1, $t2) on_abort goto L2 with $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:237:9+65 + call $t3 := $1_pool_u64_shares_to_amount_with_total_coins($t0, $t1, $t2); + if ($abort_flag) { + assume {:print "$at(58,10424,10489)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(55,15):", $t4} $t4 == $t4; + goto L2; + } + + // trace_return[0]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:237:9+65 + assume {:print "$track_return(55,15,0):", $t3} $t3 == $t3; + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:238:5+1 + assume {:print "$at(58,10494,10495)"} true; +L1: + + // return $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:238:5+1 + assume {:print "$at(58,10494,10495)"} true; + $ret0 := $t3; + return; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:238:5+1 +L2: + + // abort($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:238:5+1 + assume {:print "$at(58,10494,10495)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun pool_u64::shares_to_amount_with_total_coins [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:242:5+601 +procedure {:inline 1} $1_pool_u64_shares_to_amount_with_total_coins(_$t0: $1_pool_u64_Pool, _$t1: int, _$t2: int) returns ($ret0: int) +{ + // declare local variables + var $t3: bool; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: bool; + var $t8: bool; + var $t9: int; + var $t10: int; + var $t11: int; + var $t12: int; + var $t13: int; + var $t0: $1_pool_u64_Pool; + var $t1: int; + var $t2: int; + var $temp_0'$1_pool_u64_Pool': $1_pool_u64_Pool; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // bytecode translation starts here + // trace_local[pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:242:5+1 + assume {:print "$at(58,10662,10663)"} true; + assume {:print "$track_local(55,16,0):", $t0} $t0 == $t0; + + // trace_local[shares]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:242:5+1 + assume {:print "$track_local(55,16,1):", $t1} $t1 == $t1; + + // trace_local[total_coins]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:242:5+1 + assume {:print "$track_local(55,16,2):", $t2} $t2 == $t2; + + // $t5 := get_field.total_coins($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:244:13+16 + assume {:print "$at(58,10829,10845)"} true; + $t5 := $total_coins#$1_pool_u64_Pool($t0); + + // $t6 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:244:33+1 + $t6 := 0; + assume $IsValid'u64'($t6); + + // $t7 := ==($t5, $t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:244:30+2 + $t7 := $IsEqual'u64'($t5, $t6); + + // if ($t7) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:244:13+47 + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:244:13+47 +L1: + + // $t8 := true at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:244:13+47 + assume {:print "$at(58,10829,10876)"} true; + $t8 := true; + assume $IsValid'bool'($t8); + + // $t3 := $t8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:244:13+47 + $t3 := $t8; + + // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:244:13+47 + goto L2; + + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:244:38+4 +L0: + + // $t9 := get_field.total_shares($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:244:38+17 + assume {:print "$at(58,10854,10871)"} true; + $t9 := $total_shares#$1_pool_u64_Pool($t0); + + // $t10 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:244:59+1 + $t10 := 0; + assume $IsValid'u64'($t10); + + // $t3 := ==($t9, $t10) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:244:56+2 + $t3 := $IsEqual'u64'($t9, $t10); + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:244:13+47 +L2: + + // if ($t3) goto L4 else goto L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:244:9+432 + assume {:print "$at(58,10825,11257)"} true; + if ($t3) { goto L4; } else { goto L3; } + + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:244:9+432 +L4: + + // $t11 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:245:13+1 + assume {:print "$at(58,10892,10893)"} true; + $t11 := 0; + assume $IsValid'u64'($t11); + + // $t4 := $t11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:244:9+432 + assume {:print "$at(58,10825,11257)"} true; + $t4 := $t11; + + // goto L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:244:9+432 + goto L5; + + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:250:34+4 + assume {:print "$at(58,11202,11206)"} true; +L3: + + // $t12 := get_field.total_shares($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:250:61+17 + assume {:print "$at(58,11229,11246)"} true; + $t12 := $total_shares#$1_pool_u64_Pool($t0); + + // $t4 := pool_u64::multiply_then_divide($t0, $t1, $t2, $t12) on_abort goto L7 with $t13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:250:13+66 + call $t4 := $1_pool_u64_multiply_then_divide($t0, $t1, $t2, $t12); + if ($abort_flag) { + assume {:print "$at(58,11181,11247)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(55,16):", $t13} $t13 == $t13; + goto L7; + } + + // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:244:9+432 + assume {:print "$at(58,10825,11257)"} true; +L5: + + // trace_return[0]($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:244:9+432 + assume {:print "$at(58,10825,11257)"} true; + assume {:print "$track_return(55,16,0):", $t4} $t4 == $t4; + + // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:252:5+1 + assume {:print "$at(58,11262,11263)"} true; +L6: + + // return $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:252:5+1 + assume {:print "$at(58,11262,11263)"} true; + $ret0 := $t4; + return; + + // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:252:5+1 +L7: + + // abort($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:252:5+1 + assume {:print "$at(58,11262,11263)"} true; + $abort_code := $t13; + $abort_flag := true; + return; + +} + +// fun pool_u64::transfer_shares [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:179:5+546 +procedure {:inline 1} $1_pool_u64_transfer_shares(_$t0: $Mutation ($1_pool_u64_Pool), _$t1: int, _$t2: int, _$t3: int) returns ($ret0: $Mutation ($1_pool_u64_Pool)) +{ + // declare local variables + var $t4: int; + var $t5: int; + var $t6: $1_pool_u64_Pool; + var $t7: bool; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: $1_pool_u64_Pool; + var $t12: int; + var $t13: bool; + var $t14: int; + var $t15: int; + var $t16: int; + var $t17: bool; + var $t18: int; + var $t19: int; + var $t20: int; + var $t21: bool; + var $t22: bool; + var $t23: int; + var $t24: bool; + var $t25: int; + var $t26: int; + var $t0: $Mutation ($1_pool_u64_Pool); + var $t1: int; + var $t2: int; + var $t3: int; + var $temp_0'$1_pool_u64_Pool': $1_pool_u64_Pool; + var $temp_0'address': int; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + + // bytecode translation starts here + // trace_local[pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:179:5+1 + assume {:print "$at(58,7327,7328)"} true; + $temp_0'$1_pool_u64_Pool' := $Dereference($t0); + assume {:print "$track_local(55,20,0):", $temp_0'$1_pool_u64_Pool'} $temp_0'$1_pool_u64_Pool' == $temp_0'$1_pool_u64_Pool'; + + // trace_local[shareholder_1]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:179:5+1 + assume {:print "$track_local(55,20,1):", $t1} $t1 == $t1; + + // trace_local[shareholder_2]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:179:5+1 + assume {:print "$track_local(55,20,2):", $t2} $t2 == $t2; + + // trace_local[shares_to_transfer]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:179:5+1 + assume {:print "$track_local(55,20,3):", $t3} $t3 == $t3; + + // $t6 := read_ref($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:185:25+21 + assume {:print "$at(58,7509,7530)"} true; + $t6 := $Dereference($t0); + + // $t7 := pool_u64::contains($t6, $t1) on_abort goto L9 with $t8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:185:17+29 + call $t7 := $1_pool_u64_contains($t6, $t1); + if ($abort_flag) { + assume {:print "$at(58,7501,7530)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(55,20):", $t8} $t8 == $t8; + goto L9; + } + + // if ($t7) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:185:9+87 + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:185:9+87 +L1: + + // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:185:9+87 + assume {:print "$at(58,7493,7580)"} true; + goto L2; + + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:185:9+87 +L0: + + // pack_ref_deep($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:185:9+87 + assume {:print "$at(58,7493,7580)"} true; + + // destroy($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:185:9+87 + + // $t9 := 1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:185:72+22 + $t9 := 1; + assume $IsValid'u64'($t9); + + // $t10 := error::invalid_argument($t9) on_abort goto L9 with $t8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:185:48+47 + call $t10 := $1_error_invalid_argument($t9); + if ($abort_flag) { + assume {:print "$at(58,7532,7579)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(55,20):", $t8} $t8 == $t8; + goto L9; + } + + // trace_abort($t10) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:185:9+87 + assume {:print "$at(58,7493,7580)"} true; + assume {:print "$track_abort(55,20):", $t10} $t10 == $t10; + + // $t8 := move($t10) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:185:9+87 + $t8 := $t10; + + // goto L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:185:9+87 + goto L9; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:186:24+4 + assume {:print "$at(58,7605,7609)"} true; +L2: + + // $t11 := read_ref($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:186:23+21 + assume {:print "$at(58,7604,7625)"} true; + $t11 := $Dereference($t0); + + // $t12 := pool_u64::shares($t11, $t1) on_abort goto L9 with $t8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:186:17+27 + call $t12 := $1_pool_u64_shares($t11, $t1); + if ($abort_flag) { + assume {:print "$at(58,7598,7625)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(55,20):", $t8} $t8 == $t8; + goto L9; + } + + // $t13 := >=($t12, $t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:186:45+2 + call $t13 := $Ge($t12, $t3); + + // if ($t13) goto L4 else goto L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:186:9+105 + if ($t13) { goto L4; } else { goto L3; } + + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:186:9+105 +L4: + + // goto L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:186:9+105 + assume {:print "$at(58,7590,7695)"} true; + goto L5; + + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:186:9+105 +L3: + + // pack_ref_deep($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:186:9+105 + assume {:print "$at(58,7590,7695)"} true; + + // destroy($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:186:9+105 + + // $t14 := 4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:186:92+20 + $t14 := 4; + assume $IsValid'u64'($t14); + + // $t15 := error::invalid_argument($t14) on_abort goto L9 with $t8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:186:68+45 + call $t15 := $1_error_invalid_argument($t14); + if ($abort_flag) { + assume {:print "$at(58,7649,7694)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(55,20):", $t8} $t8 == $t8; + goto L9; + } + + // trace_abort($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:186:9+105 + assume {:print "$at(58,7590,7695)"} true; + assume {:print "$track_abort(55,20):", $t15} $t15 == $t15; + + // $t8 := move($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:186:9+105 + $t8 := $t15; + + // goto L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:186:9+105 + goto L9; + + // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:187:13+18 + assume {:print "$at(58,7709,7727)"} true; +L5: + + // $t16 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:187:35+1 + assume {:print "$at(58,7731,7732)"} true; + $t16 := 0; + assume $IsValid'u64'($t16); + + // $t17 := ==($t3, $t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:187:32+2 + $t17 := $IsEqual'u64'($t3, $t16); + + // if ($t17) goto L7 else goto L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:187:9+35 + if ($t17) { goto L7; } else { goto L6; } + + // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:187:38+6 +L7: + + // destroy($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:187:38+6 + assume {:print "$at(58,7734,7740)"} true; + + // trace_local[pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:187:38+6 + $temp_0'$1_pool_u64_Pool' := $Dereference($t0); + assume {:print "$track_local(55,20,0):", $temp_0'$1_pool_u64_Pool'} $temp_0'$1_pool_u64_Pool' == $temp_0'$1_pool_u64_Pool'; + + // pack_ref_deep($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:187:38+6 + + // goto L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:187:38+6 + goto L8; + + // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:189:23+4 + assume {:print "$at(58,7765,7769)"} true; +L6: + + // assume Identical($t18, Sub(simple_map::spec_get(select pool_u64::Pool.shares($t0), $t1), $t3)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:173:9+83 + assume {:print "$at(59,7278,7361)"} true; + assume ($t18 == ($1_simple_map_spec_get'address_u64'($shares#$1_pool_u64_Pool($Dereference($t0)), $t1) - $t3)); + + // assume Identical($t19, Sub(simple_map::spec_get(select pool_u64::Pool.shares($t0), $t1), $t3)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:181:9+83 + assume {:print "$at(59,7643,7726)"} true; + assume ($t19 == ($1_simple_map_spec_get'address_u64'($shares#$1_pool_u64_Pool($Dereference($t0)), $t1) - $t3)); + + // $t20 := pool_u64::deduct_shares($t0, $t1, $t3) on_abort goto L9 with $t8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:189:9+54 + assume {:print "$at(58,7751,7805)"} true; + call $t20,$t0 := $1_pool_u64_deduct_shares($t0, $t1, $t3); + if ($abort_flag) { + assume {:print "$at(58,7751,7805)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(55,20):", $t8} $t8 == $t8; + goto L9; + } + + // destroy($t20) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:189:9+54 + + // assume Identical($t21, simple_map::spec_contains_key(select pool_u64::Pool.shares($t0), $t2)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:74:9+73 + assume {:print "$at(59,2864,2937)"} true; + assume ($t21 == $1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($Dereference($t0)), $t2)); + + // assume Identical($t22, simple_map::spec_contains_key(select pool_u64::Pool.shares($t0), $t2)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:83:9+73 + assume {:print "$at(59,3186,3259)"} true; + assume ($t22 == $1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($Dereference($t0)), $t2)); + + // assume Identical($t23, simple_map::spec_get(select pool_u64::Pool.shares($t0), $t2)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:84:9+68 + assume {:print "$at(59,3268,3336)"} true; + assume ($t23 == $1_simple_map_spec_get'address_u64'($shares#$1_pool_u64_Pool($Dereference($t0)), $t2)); + + // assume Identical($t24, simple_map::spec_contains_key(select pool_u64::Pool.shares($t0), $t2)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:94:9+73 + assume {:print "$at(59,3636,3709)"} true; + assume ($t24 == $1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($Dereference($t0)), $t2)); + + // assume Identical($t25, simple_map::spec_get(select pool_u64::Pool.shares($t0), $t2)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:95:9+68 + assume {:print "$at(59,3718,3786)"} true; + assume ($t25 == $1_simple_map_spec_get'address_u64'($shares#$1_pool_u64_Pool($Dereference($t0)), $t2)); + + // $t26 := pool_u64::add_shares($t0, $t2, $t3) on_abort goto L9 with $t8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:190:9+51 + assume {:print "$at(58,7815,7866)"} true; + call $t26,$t0 := $1_pool_u64_add_shares($t0, $t2, $t3); + if ($abort_flag) { + assume {:print "$at(58,7815,7866)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(55,20):", $t8} $t8 == $t8; + goto L9; + } + + // destroy($t26) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:190:9+51 + + // trace_local[pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:190:60+1 + $temp_0'$1_pool_u64_Pool' := $Dereference($t0); + assume {:print "$track_local(55,20,0):", $temp_0'$1_pool_u64_Pool'} $temp_0'$1_pool_u64_Pool' == $temp_0'$1_pool_u64_Pool'; + + // pack_ref_deep($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:190:60+1 + + // label L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:191:5+1 + assume {:print "$at(58,7872,7873)"} true; +L8: + + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:191:5+1 + assume {:print "$at(58,7872,7873)"} true; + $ret0 := $t0; + return; + + // label L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:191:5+1 +L9: + + // abort($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:191:5+1 + assume {:print "$at(58,7872,7873)"} true; + $abort_code := $t8; + $abort_flag := true; + return; + +} + +// fun pool_u64::update_total_coins [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:121:5+120 +procedure {:inline 1} $1_pool_u64_update_total_coins(_$t0: $Mutation ($1_pool_u64_Pool), _$t1: int) returns ($ret0: $Mutation ($1_pool_u64_Pool)) +{ + // declare local variables + var $t2: $Mutation (int); + var $t0: $Mutation ($1_pool_u64_Pool); + var $t1: int; + var $temp_0'$1_pool_u64_Pool': $1_pool_u64_Pool; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:121:5+1 + assume {:print "$at(58,4634,4635)"} true; + $temp_0'$1_pool_u64_Pool' := $Dereference($t0); + assume {:print "$track_local(55,21,0):", $temp_0'$1_pool_u64_Pool'} $temp_0'$1_pool_u64_Pool' == $temp_0'$1_pool_u64_Pool'; + + // trace_local[new_total_coins]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:121:5+1 + assume {:print "$track_local(55,21,1):", $t1} $t1 == $t1; + + // $t2 := borrow_field.total_coins($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:122:9+16 + assume {:print "$at(58,4713,4729)"} true; + $t2 := $ChildMutation($t0, 1, $total_coins#$1_pool_u64_Pool($Dereference($t0))); + + // write_ref($t2, $t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:122:9+34 + $t2 := $UpdateMutation($t2, $t1); + + // write_back[Reference($t0).total_coins (u64)]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:122:9+34 + $t0 := $UpdateMutation($t0, $Update'$1_pool_u64_Pool'_total_coins($Dereference($t0), $Dereference($t2))); + + // trace_local[pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:122:9+34 + $temp_0'$1_pool_u64_Pool' := $Dereference($t0); + assume {:print "$track_local(55,21,0):", $temp_0'$1_pool_u64_Pool'} $temp_0'$1_pool_u64_Pool' == $temp_0'$1_pool_u64_Pool'; + + // trace_local[pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:122:43+1 + $temp_0'$1_pool_u64_Pool' := $Dereference($t0); + assume {:print "$track_local(55,21,0):", $temp_0'$1_pool_u64_Pool'} $temp_0'$1_pool_u64_Pool' == $temp_0'$1_pool_u64_Pool'; + + // pack_ref_deep($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:122:43+1 + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:123:5+1 + assume {:print "$at(58,4753,4754)"} true; +L1: + + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:123:5+1 + assume {:print "$at(58,4753,4754)"} true; + $ret0 := $t0; + return; + +} + +// struct staking_contract::AddStakeEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:129:5+122 +type {:datatype} $1_staking_contract_AddStakeEvent; +function {:constructor} $1_staking_contract_AddStakeEvent($operator: int, $pool_address: int, $amount: int): $1_staking_contract_AddStakeEvent; +function {:inline} $Update'$1_staking_contract_AddStakeEvent'_operator(s: $1_staking_contract_AddStakeEvent, x: int): $1_staking_contract_AddStakeEvent { + $1_staking_contract_AddStakeEvent(x, $pool_address#$1_staking_contract_AddStakeEvent(s), $amount#$1_staking_contract_AddStakeEvent(s)) +} +function {:inline} $Update'$1_staking_contract_AddStakeEvent'_pool_address(s: $1_staking_contract_AddStakeEvent, x: int): $1_staking_contract_AddStakeEvent { + $1_staking_contract_AddStakeEvent($operator#$1_staking_contract_AddStakeEvent(s), x, $amount#$1_staking_contract_AddStakeEvent(s)) +} +function {:inline} $Update'$1_staking_contract_AddStakeEvent'_amount(s: $1_staking_contract_AddStakeEvent, x: int): $1_staking_contract_AddStakeEvent { + $1_staking_contract_AddStakeEvent($operator#$1_staking_contract_AddStakeEvent(s), $pool_address#$1_staking_contract_AddStakeEvent(s), x) +} +function $IsValid'$1_staking_contract_AddStakeEvent'(s: $1_staking_contract_AddStakeEvent): bool { + $IsValid'address'($operator#$1_staking_contract_AddStakeEvent(s)) + && $IsValid'address'($pool_address#$1_staking_contract_AddStakeEvent(s)) + && $IsValid'u64'($amount#$1_staking_contract_AddStakeEvent(s)) +} +function {:inline} $IsEqual'$1_staking_contract_AddStakeEvent'(s1: $1_staking_contract_AddStakeEvent, s2: $1_staking_contract_AddStakeEvent): bool { + s1 == s2 +} + +// struct staking_contract::UnlockStakeEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:142:5+156 +type {:datatype} $1_staking_contract_UnlockStakeEvent; +function {:constructor} $1_staking_contract_UnlockStakeEvent($operator: int, $pool_address: int, $amount: int, $commission_paid: int): $1_staking_contract_UnlockStakeEvent; +function {:inline} $Update'$1_staking_contract_UnlockStakeEvent'_operator(s: $1_staking_contract_UnlockStakeEvent, x: int): $1_staking_contract_UnlockStakeEvent { + $1_staking_contract_UnlockStakeEvent(x, $pool_address#$1_staking_contract_UnlockStakeEvent(s), $amount#$1_staking_contract_UnlockStakeEvent(s), $commission_paid#$1_staking_contract_UnlockStakeEvent(s)) +} +function {:inline} $Update'$1_staking_contract_UnlockStakeEvent'_pool_address(s: $1_staking_contract_UnlockStakeEvent, x: int): $1_staking_contract_UnlockStakeEvent { + $1_staking_contract_UnlockStakeEvent($operator#$1_staking_contract_UnlockStakeEvent(s), x, $amount#$1_staking_contract_UnlockStakeEvent(s), $commission_paid#$1_staking_contract_UnlockStakeEvent(s)) +} +function {:inline} $Update'$1_staking_contract_UnlockStakeEvent'_amount(s: $1_staking_contract_UnlockStakeEvent, x: int): $1_staking_contract_UnlockStakeEvent { + $1_staking_contract_UnlockStakeEvent($operator#$1_staking_contract_UnlockStakeEvent(s), $pool_address#$1_staking_contract_UnlockStakeEvent(s), x, $commission_paid#$1_staking_contract_UnlockStakeEvent(s)) +} +function {:inline} $Update'$1_staking_contract_UnlockStakeEvent'_commission_paid(s: $1_staking_contract_UnlockStakeEvent, x: int): $1_staking_contract_UnlockStakeEvent { + $1_staking_contract_UnlockStakeEvent($operator#$1_staking_contract_UnlockStakeEvent(s), $pool_address#$1_staking_contract_UnlockStakeEvent(s), $amount#$1_staking_contract_UnlockStakeEvent(s), x) +} +function $IsValid'$1_staking_contract_UnlockStakeEvent'(s: $1_staking_contract_UnlockStakeEvent): bool { + $IsValid'address'($operator#$1_staking_contract_UnlockStakeEvent(s)) + && $IsValid'address'($pool_address#$1_staking_contract_UnlockStakeEvent(s)) + && $IsValid'u64'($amount#$1_staking_contract_UnlockStakeEvent(s)) + && $IsValid'u64'($commission_paid#$1_staking_contract_UnlockStakeEvent(s)) +} +function {:inline} $IsEqual'$1_staking_contract_UnlockStakeEvent'(s1: $1_staking_contract_UnlockStakeEvent, s2: $1_staking_contract_UnlockStakeEvent): bool { + s1 == s2 +} + +// struct staking_contract::AddDistributionEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:155:5+130 +type {:datatype} $1_staking_contract_AddDistributionEvent; +function {:constructor} $1_staking_contract_AddDistributionEvent($operator: int, $pool_address: int, $amount: int): $1_staking_contract_AddDistributionEvent; +function {:inline} $Update'$1_staking_contract_AddDistributionEvent'_operator(s: $1_staking_contract_AddDistributionEvent, x: int): $1_staking_contract_AddDistributionEvent { + $1_staking_contract_AddDistributionEvent(x, $pool_address#$1_staking_contract_AddDistributionEvent(s), $amount#$1_staking_contract_AddDistributionEvent(s)) +} +function {:inline} $Update'$1_staking_contract_AddDistributionEvent'_pool_address(s: $1_staking_contract_AddDistributionEvent, x: int): $1_staking_contract_AddDistributionEvent { + $1_staking_contract_AddDistributionEvent($operator#$1_staking_contract_AddDistributionEvent(s), x, $amount#$1_staking_contract_AddDistributionEvent(s)) +} +function {:inline} $Update'$1_staking_contract_AddDistributionEvent'_amount(s: $1_staking_contract_AddDistributionEvent, x: int): $1_staking_contract_AddDistributionEvent { + $1_staking_contract_AddDistributionEvent($operator#$1_staking_contract_AddDistributionEvent(s), $pool_address#$1_staking_contract_AddDistributionEvent(s), x) +} +function $IsValid'$1_staking_contract_AddDistributionEvent'(s: $1_staking_contract_AddDistributionEvent): bool { + $IsValid'address'($operator#$1_staking_contract_AddDistributionEvent(s)) + && $IsValid'address'($pool_address#$1_staking_contract_AddDistributionEvent(s)) + && $IsValid'u64'($amount#$1_staking_contract_AddDistributionEvent(s)) +} +function {:inline} $IsEqual'$1_staking_contract_AddDistributionEvent'(s1: $1_staking_contract_AddDistributionEvent, s2: $1_staking_contract_AddDistributionEvent): bool { + s1 == s2 +} + +// struct staking_contract::CreateStakingContractEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:109:5+199 +type {:datatype} $1_staking_contract_CreateStakingContractEvent; +function {:constructor} $1_staking_contract_CreateStakingContractEvent($operator: int, $voter: int, $pool_address: int, $principal: int, $commission_percentage: int): $1_staking_contract_CreateStakingContractEvent; +function {:inline} $Update'$1_staking_contract_CreateStakingContractEvent'_operator(s: $1_staking_contract_CreateStakingContractEvent, x: int): $1_staking_contract_CreateStakingContractEvent { + $1_staking_contract_CreateStakingContractEvent(x, $voter#$1_staking_contract_CreateStakingContractEvent(s), $pool_address#$1_staking_contract_CreateStakingContractEvent(s), $principal#$1_staking_contract_CreateStakingContractEvent(s), $commission_percentage#$1_staking_contract_CreateStakingContractEvent(s)) +} +function {:inline} $Update'$1_staking_contract_CreateStakingContractEvent'_voter(s: $1_staking_contract_CreateStakingContractEvent, x: int): $1_staking_contract_CreateStakingContractEvent { + $1_staking_contract_CreateStakingContractEvent($operator#$1_staking_contract_CreateStakingContractEvent(s), x, $pool_address#$1_staking_contract_CreateStakingContractEvent(s), $principal#$1_staking_contract_CreateStakingContractEvent(s), $commission_percentage#$1_staking_contract_CreateStakingContractEvent(s)) +} +function {:inline} $Update'$1_staking_contract_CreateStakingContractEvent'_pool_address(s: $1_staking_contract_CreateStakingContractEvent, x: int): $1_staking_contract_CreateStakingContractEvent { + $1_staking_contract_CreateStakingContractEvent($operator#$1_staking_contract_CreateStakingContractEvent(s), $voter#$1_staking_contract_CreateStakingContractEvent(s), x, $principal#$1_staking_contract_CreateStakingContractEvent(s), $commission_percentage#$1_staking_contract_CreateStakingContractEvent(s)) +} +function {:inline} $Update'$1_staking_contract_CreateStakingContractEvent'_principal(s: $1_staking_contract_CreateStakingContractEvent, x: int): $1_staking_contract_CreateStakingContractEvent { + $1_staking_contract_CreateStakingContractEvent($operator#$1_staking_contract_CreateStakingContractEvent(s), $voter#$1_staking_contract_CreateStakingContractEvent(s), $pool_address#$1_staking_contract_CreateStakingContractEvent(s), x, $commission_percentage#$1_staking_contract_CreateStakingContractEvent(s)) +} +function {:inline} $Update'$1_staking_contract_CreateStakingContractEvent'_commission_percentage(s: $1_staking_contract_CreateStakingContractEvent, x: int): $1_staking_contract_CreateStakingContractEvent { + $1_staking_contract_CreateStakingContractEvent($operator#$1_staking_contract_CreateStakingContractEvent(s), $voter#$1_staking_contract_CreateStakingContractEvent(s), $pool_address#$1_staking_contract_CreateStakingContractEvent(s), $principal#$1_staking_contract_CreateStakingContractEvent(s), x) +} +function $IsValid'$1_staking_contract_CreateStakingContractEvent'(s: $1_staking_contract_CreateStakingContractEvent): bool { + $IsValid'address'($operator#$1_staking_contract_CreateStakingContractEvent(s)) + && $IsValid'address'($voter#$1_staking_contract_CreateStakingContractEvent(s)) + && $IsValid'address'($pool_address#$1_staking_contract_CreateStakingContractEvent(s)) + && $IsValid'u64'($principal#$1_staking_contract_CreateStakingContractEvent(s)) + && $IsValid'u64'($commission_percentage#$1_staking_contract_CreateStakingContractEvent(s)) +} +function {:inline} $IsEqual'$1_staking_contract_CreateStakingContractEvent'(s1: $1_staking_contract_CreateStakingContractEvent, s2: $1_staking_contract_CreateStakingContractEvent): bool { + s1 == s2 +} + +// struct staking_contract::DistributeEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:161:5+153 +type {:datatype} $1_staking_contract_DistributeEvent; +function {:constructor} $1_staking_contract_DistributeEvent($operator: int, $pool_address: int, $recipient: int, $amount: int): $1_staking_contract_DistributeEvent; +function {:inline} $Update'$1_staking_contract_DistributeEvent'_operator(s: $1_staking_contract_DistributeEvent, x: int): $1_staking_contract_DistributeEvent { + $1_staking_contract_DistributeEvent(x, $pool_address#$1_staking_contract_DistributeEvent(s), $recipient#$1_staking_contract_DistributeEvent(s), $amount#$1_staking_contract_DistributeEvent(s)) +} +function {:inline} $Update'$1_staking_contract_DistributeEvent'_pool_address(s: $1_staking_contract_DistributeEvent, x: int): $1_staking_contract_DistributeEvent { + $1_staking_contract_DistributeEvent($operator#$1_staking_contract_DistributeEvent(s), x, $recipient#$1_staking_contract_DistributeEvent(s), $amount#$1_staking_contract_DistributeEvent(s)) +} +function {:inline} $Update'$1_staking_contract_DistributeEvent'_recipient(s: $1_staking_contract_DistributeEvent, x: int): $1_staking_contract_DistributeEvent { + $1_staking_contract_DistributeEvent($operator#$1_staking_contract_DistributeEvent(s), $pool_address#$1_staking_contract_DistributeEvent(s), x, $amount#$1_staking_contract_DistributeEvent(s)) +} +function {:inline} $Update'$1_staking_contract_DistributeEvent'_amount(s: $1_staking_contract_DistributeEvent, x: int): $1_staking_contract_DistributeEvent { + $1_staking_contract_DistributeEvent($operator#$1_staking_contract_DistributeEvent(s), $pool_address#$1_staking_contract_DistributeEvent(s), $recipient#$1_staking_contract_DistributeEvent(s), x) +} +function $IsValid'$1_staking_contract_DistributeEvent'(s: $1_staking_contract_DistributeEvent): bool { + $IsValid'address'($operator#$1_staking_contract_DistributeEvent(s)) + && $IsValid'address'($pool_address#$1_staking_contract_DistributeEvent(s)) + && $IsValid'address'($recipient#$1_staking_contract_DistributeEvent(s)) + && $IsValid'u64'($amount#$1_staking_contract_DistributeEvent(s)) +} +function {:inline} $IsEqual'$1_staking_contract_DistributeEvent'(s1: $1_staking_contract_DistributeEvent, s2: $1_staking_contract_DistributeEvent): bool { + s1 == s2 +} + +// struct staking_contract::RequestCommissionEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:135:5+177 +type {:datatype} $1_staking_contract_RequestCommissionEvent; +function {:constructor} $1_staking_contract_RequestCommissionEvent($operator: int, $pool_address: int, $accumulated_rewards: int, $commission_amount: int): $1_staking_contract_RequestCommissionEvent; +function {:inline} $Update'$1_staking_contract_RequestCommissionEvent'_operator(s: $1_staking_contract_RequestCommissionEvent, x: int): $1_staking_contract_RequestCommissionEvent { + $1_staking_contract_RequestCommissionEvent(x, $pool_address#$1_staking_contract_RequestCommissionEvent(s), $accumulated_rewards#$1_staking_contract_RequestCommissionEvent(s), $commission_amount#$1_staking_contract_RequestCommissionEvent(s)) +} +function {:inline} $Update'$1_staking_contract_RequestCommissionEvent'_pool_address(s: $1_staking_contract_RequestCommissionEvent, x: int): $1_staking_contract_RequestCommissionEvent { + $1_staking_contract_RequestCommissionEvent($operator#$1_staking_contract_RequestCommissionEvent(s), x, $accumulated_rewards#$1_staking_contract_RequestCommissionEvent(s), $commission_amount#$1_staking_contract_RequestCommissionEvent(s)) +} +function {:inline} $Update'$1_staking_contract_RequestCommissionEvent'_accumulated_rewards(s: $1_staking_contract_RequestCommissionEvent, x: int): $1_staking_contract_RequestCommissionEvent { + $1_staking_contract_RequestCommissionEvent($operator#$1_staking_contract_RequestCommissionEvent(s), $pool_address#$1_staking_contract_RequestCommissionEvent(s), x, $commission_amount#$1_staking_contract_RequestCommissionEvent(s)) +} +function {:inline} $Update'$1_staking_contract_RequestCommissionEvent'_commission_amount(s: $1_staking_contract_RequestCommissionEvent, x: int): $1_staking_contract_RequestCommissionEvent { + $1_staking_contract_RequestCommissionEvent($operator#$1_staking_contract_RequestCommissionEvent(s), $pool_address#$1_staking_contract_RequestCommissionEvent(s), $accumulated_rewards#$1_staking_contract_RequestCommissionEvent(s), x) +} +function $IsValid'$1_staking_contract_RequestCommissionEvent'(s: $1_staking_contract_RequestCommissionEvent): bool { + $IsValid'address'($operator#$1_staking_contract_RequestCommissionEvent(s)) + && $IsValid'address'($pool_address#$1_staking_contract_RequestCommissionEvent(s)) + && $IsValid'u64'($accumulated_rewards#$1_staking_contract_RequestCommissionEvent(s)) + && $IsValid'u64'($commission_amount#$1_staking_contract_RequestCommissionEvent(s)) +} +function {:inline} $IsEqual'$1_staking_contract_RequestCommissionEvent'(s1: $1_staking_contract_RequestCommissionEvent, s2: $1_staking_contract_RequestCommissionEvent): bool { + s1 == s2 +} + +// struct staking_contract::ResetLockupEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:124:5+105 +type {:datatype} $1_staking_contract_ResetLockupEvent; +function {:constructor} $1_staking_contract_ResetLockupEvent($operator: int, $pool_address: int): $1_staking_contract_ResetLockupEvent; +function {:inline} $Update'$1_staking_contract_ResetLockupEvent'_operator(s: $1_staking_contract_ResetLockupEvent, x: int): $1_staking_contract_ResetLockupEvent { + $1_staking_contract_ResetLockupEvent(x, $pool_address#$1_staking_contract_ResetLockupEvent(s)) +} +function {:inline} $Update'$1_staking_contract_ResetLockupEvent'_pool_address(s: $1_staking_contract_ResetLockupEvent, x: int): $1_staking_contract_ResetLockupEvent { + $1_staking_contract_ResetLockupEvent($operator#$1_staking_contract_ResetLockupEvent(s), x) +} +function $IsValid'$1_staking_contract_ResetLockupEvent'(s: $1_staking_contract_ResetLockupEvent): bool { + $IsValid'address'($operator#$1_staking_contract_ResetLockupEvent(s)) + && $IsValid'address'($pool_address#$1_staking_contract_ResetLockupEvent(s)) +} +function {:inline} $IsEqual'$1_staking_contract_ResetLockupEvent'(s1: $1_staking_contract_ResetLockupEvent, s2: $1_staking_contract_ResetLockupEvent): bool { + s1 == s2 +} + +// struct staking_contract::StakingContract at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:68:5+692 +type {:datatype} $1_staking_contract_StakingContract; +function {:constructor} $1_staking_contract_StakingContract($principal: int, $pool_address: int, $owner_cap: $1_stake_OwnerCapability, $commission_percentage: int, $distribution_pool: $1_pool_u64_Pool, $signer_cap: $1_account_SignerCapability): $1_staking_contract_StakingContract; +function {:inline} $Update'$1_staking_contract_StakingContract'_principal(s: $1_staking_contract_StakingContract, x: int): $1_staking_contract_StakingContract { + $1_staking_contract_StakingContract(x, $pool_address#$1_staking_contract_StakingContract(s), $owner_cap#$1_staking_contract_StakingContract(s), $commission_percentage#$1_staking_contract_StakingContract(s), $distribution_pool#$1_staking_contract_StakingContract(s), $signer_cap#$1_staking_contract_StakingContract(s)) +} +function {:inline} $Update'$1_staking_contract_StakingContract'_pool_address(s: $1_staking_contract_StakingContract, x: int): $1_staking_contract_StakingContract { + $1_staking_contract_StakingContract($principal#$1_staking_contract_StakingContract(s), x, $owner_cap#$1_staking_contract_StakingContract(s), $commission_percentage#$1_staking_contract_StakingContract(s), $distribution_pool#$1_staking_contract_StakingContract(s), $signer_cap#$1_staking_contract_StakingContract(s)) +} +function {:inline} $Update'$1_staking_contract_StakingContract'_owner_cap(s: $1_staking_contract_StakingContract, x: $1_stake_OwnerCapability): $1_staking_contract_StakingContract { + $1_staking_contract_StakingContract($principal#$1_staking_contract_StakingContract(s), $pool_address#$1_staking_contract_StakingContract(s), x, $commission_percentage#$1_staking_contract_StakingContract(s), $distribution_pool#$1_staking_contract_StakingContract(s), $signer_cap#$1_staking_contract_StakingContract(s)) +} +function {:inline} $Update'$1_staking_contract_StakingContract'_commission_percentage(s: $1_staking_contract_StakingContract, x: int): $1_staking_contract_StakingContract { + $1_staking_contract_StakingContract($principal#$1_staking_contract_StakingContract(s), $pool_address#$1_staking_contract_StakingContract(s), $owner_cap#$1_staking_contract_StakingContract(s), x, $distribution_pool#$1_staking_contract_StakingContract(s), $signer_cap#$1_staking_contract_StakingContract(s)) +} +function {:inline} $Update'$1_staking_contract_StakingContract'_distribution_pool(s: $1_staking_contract_StakingContract, x: $1_pool_u64_Pool): $1_staking_contract_StakingContract { + $1_staking_contract_StakingContract($principal#$1_staking_contract_StakingContract(s), $pool_address#$1_staking_contract_StakingContract(s), $owner_cap#$1_staking_contract_StakingContract(s), $commission_percentage#$1_staking_contract_StakingContract(s), x, $signer_cap#$1_staking_contract_StakingContract(s)) +} +function {:inline} $Update'$1_staking_contract_StakingContract'_signer_cap(s: $1_staking_contract_StakingContract, x: $1_account_SignerCapability): $1_staking_contract_StakingContract { + $1_staking_contract_StakingContract($principal#$1_staking_contract_StakingContract(s), $pool_address#$1_staking_contract_StakingContract(s), $owner_cap#$1_staking_contract_StakingContract(s), $commission_percentage#$1_staking_contract_StakingContract(s), $distribution_pool#$1_staking_contract_StakingContract(s), x) +} +function $IsValid'$1_staking_contract_StakingContract'(s: $1_staking_contract_StakingContract): bool { + $IsValid'u64'($principal#$1_staking_contract_StakingContract(s)) + && $IsValid'address'($pool_address#$1_staking_contract_StakingContract(s)) + && $IsValid'$1_stake_OwnerCapability'($owner_cap#$1_staking_contract_StakingContract(s)) + && $IsValid'u64'($commission_percentage#$1_staking_contract_StakingContract(s)) + && $IsValid'$1_pool_u64_Pool'($distribution_pool#$1_staking_contract_StakingContract(s)) + && $IsValid'$1_account_SignerCapability'($signer_cap#$1_staking_contract_StakingContract(s)) +} +function {:inline} $IsEqual'$1_staking_contract_StakingContract'(s1: $1_staking_contract_StakingContract, s2: $1_staking_contract_StakingContract): bool { + $IsEqual'u64'($principal#$1_staking_contract_StakingContract(s1), $principal#$1_staking_contract_StakingContract(s2)) + && $IsEqual'address'($pool_address#$1_staking_contract_StakingContract(s1), $pool_address#$1_staking_contract_StakingContract(s2)) + && $IsEqual'$1_stake_OwnerCapability'($owner_cap#$1_staking_contract_StakingContract(s1), $owner_cap#$1_staking_contract_StakingContract(s2)) + && $IsEqual'u64'($commission_percentage#$1_staking_contract_StakingContract(s1), $commission_percentage#$1_staking_contract_StakingContract(s2)) + && $IsEqual'$1_pool_u64_Pool'($distribution_pool#$1_staking_contract_StakingContract(s1), $distribution_pool#$1_staking_contract_StakingContract(s2)) + && $IsEqual'$1_account_SignerCapability'($signer_cap#$1_staking_contract_StakingContract(s1), $signer_cap#$1_staking_contract_StakingContract(s2))} + +// struct staking_contract::Store at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:82:5+690 +type {:datatype} $1_staking_contract_Store; +function {:constructor} $1_staking_contract_Store($staking_contracts: Table int ($1_staking_contract_StakingContract), $create_staking_contract_events: $1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent', $update_voter_events: $1_event_EventHandle'$1_staking_contract_UpdateVoterEvent', $reset_lockup_events: $1_event_EventHandle'$1_staking_contract_ResetLockupEvent', $add_stake_events: $1_event_EventHandle'$1_staking_contract_AddStakeEvent', $request_commission_events: $1_event_EventHandle'$1_staking_contract_RequestCommissionEvent', $unlock_stake_events: $1_event_EventHandle'$1_staking_contract_UnlockStakeEvent', $switch_operator_events: $1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent', $add_distribution_events: $1_event_EventHandle'$1_staking_contract_AddDistributionEvent', $distribute_events: $1_event_EventHandle'$1_staking_contract_DistributeEvent'): $1_staking_contract_Store; +function {:inline} $Update'$1_staking_contract_Store'_staking_contracts(s: $1_staking_contract_Store, x: Table int ($1_staking_contract_StakingContract)): $1_staking_contract_Store { + $1_staking_contract_Store(x, $create_staking_contract_events#$1_staking_contract_Store(s), $update_voter_events#$1_staking_contract_Store(s), $reset_lockup_events#$1_staking_contract_Store(s), $add_stake_events#$1_staking_contract_Store(s), $request_commission_events#$1_staking_contract_Store(s), $unlock_stake_events#$1_staking_contract_Store(s), $switch_operator_events#$1_staking_contract_Store(s), $add_distribution_events#$1_staking_contract_Store(s), $distribute_events#$1_staking_contract_Store(s)) +} +function {:inline} $Update'$1_staking_contract_Store'_create_staking_contract_events(s: $1_staking_contract_Store, x: $1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent'): $1_staking_contract_Store { + $1_staking_contract_Store($staking_contracts#$1_staking_contract_Store(s), x, $update_voter_events#$1_staking_contract_Store(s), $reset_lockup_events#$1_staking_contract_Store(s), $add_stake_events#$1_staking_contract_Store(s), $request_commission_events#$1_staking_contract_Store(s), $unlock_stake_events#$1_staking_contract_Store(s), $switch_operator_events#$1_staking_contract_Store(s), $add_distribution_events#$1_staking_contract_Store(s), $distribute_events#$1_staking_contract_Store(s)) +} +function {:inline} $Update'$1_staking_contract_Store'_update_voter_events(s: $1_staking_contract_Store, x: $1_event_EventHandle'$1_staking_contract_UpdateVoterEvent'): $1_staking_contract_Store { + $1_staking_contract_Store($staking_contracts#$1_staking_contract_Store(s), $create_staking_contract_events#$1_staking_contract_Store(s), x, $reset_lockup_events#$1_staking_contract_Store(s), $add_stake_events#$1_staking_contract_Store(s), $request_commission_events#$1_staking_contract_Store(s), $unlock_stake_events#$1_staking_contract_Store(s), $switch_operator_events#$1_staking_contract_Store(s), $add_distribution_events#$1_staking_contract_Store(s), $distribute_events#$1_staking_contract_Store(s)) +} +function {:inline} $Update'$1_staking_contract_Store'_reset_lockup_events(s: $1_staking_contract_Store, x: $1_event_EventHandle'$1_staking_contract_ResetLockupEvent'): $1_staking_contract_Store { + $1_staking_contract_Store($staking_contracts#$1_staking_contract_Store(s), $create_staking_contract_events#$1_staking_contract_Store(s), $update_voter_events#$1_staking_contract_Store(s), x, $add_stake_events#$1_staking_contract_Store(s), $request_commission_events#$1_staking_contract_Store(s), $unlock_stake_events#$1_staking_contract_Store(s), $switch_operator_events#$1_staking_contract_Store(s), $add_distribution_events#$1_staking_contract_Store(s), $distribute_events#$1_staking_contract_Store(s)) +} +function {:inline} $Update'$1_staking_contract_Store'_add_stake_events(s: $1_staking_contract_Store, x: $1_event_EventHandle'$1_staking_contract_AddStakeEvent'): $1_staking_contract_Store { + $1_staking_contract_Store($staking_contracts#$1_staking_contract_Store(s), $create_staking_contract_events#$1_staking_contract_Store(s), $update_voter_events#$1_staking_contract_Store(s), $reset_lockup_events#$1_staking_contract_Store(s), x, $request_commission_events#$1_staking_contract_Store(s), $unlock_stake_events#$1_staking_contract_Store(s), $switch_operator_events#$1_staking_contract_Store(s), $add_distribution_events#$1_staking_contract_Store(s), $distribute_events#$1_staking_contract_Store(s)) +} +function {:inline} $Update'$1_staking_contract_Store'_request_commission_events(s: $1_staking_contract_Store, x: $1_event_EventHandle'$1_staking_contract_RequestCommissionEvent'): $1_staking_contract_Store { + $1_staking_contract_Store($staking_contracts#$1_staking_contract_Store(s), $create_staking_contract_events#$1_staking_contract_Store(s), $update_voter_events#$1_staking_contract_Store(s), $reset_lockup_events#$1_staking_contract_Store(s), $add_stake_events#$1_staking_contract_Store(s), x, $unlock_stake_events#$1_staking_contract_Store(s), $switch_operator_events#$1_staking_contract_Store(s), $add_distribution_events#$1_staking_contract_Store(s), $distribute_events#$1_staking_contract_Store(s)) +} +function {:inline} $Update'$1_staking_contract_Store'_unlock_stake_events(s: $1_staking_contract_Store, x: $1_event_EventHandle'$1_staking_contract_UnlockStakeEvent'): $1_staking_contract_Store { + $1_staking_contract_Store($staking_contracts#$1_staking_contract_Store(s), $create_staking_contract_events#$1_staking_contract_Store(s), $update_voter_events#$1_staking_contract_Store(s), $reset_lockup_events#$1_staking_contract_Store(s), $add_stake_events#$1_staking_contract_Store(s), $request_commission_events#$1_staking_contract_Store(s), x, $switch_operator_events#$1_staking_contract_Store(s), $add_distribution_events#$1_staking_contract_Store(s), $distribute_events#$1_staking_contract_Store(s)) +} +function {:inline} $Update'$1_staking_contract_Store'_switch_operator_events(s: $1_staking_contract_Store, x: $1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent'): $1_staking_contract_Store { + $1_staking_contract_Store($staking_contracts#$1_staking_contract_Store(s), $create_staking_contract_events#$1_staking_contract_Store(s), $update_voter_events#$1_staking_contract_Store(s), $reset_lockup_events#$1_staking_contract_Store(s), $add_stake_events#$1_staking_contract_Store(s), $request_commission_events#$1_staking_contract_Store(s), $unlock_stake_events#$1_staking_contract_Store(s), x, $add_distribution_events#$1_staking_contract_Store(s), $distribute_events#$1_staking_contract_Store(s)) +} +function {:inline} $Update'$1_staking_contract_Store'_add_distribution_events(s: $1_staking_contract_Store, x: $1_event_EventHandle'$1_staking_contract_AddDistributionEvent'): $1_staking_contract_Store { + $1_staking_contract_Store($staking_contracts#$1_staking_contract_Store(s), $create_staking_contract_events#$1_staking_contract_Store(s), $update_voter_events#$1_staking_contract_Store(s), $reset_lockup_events#$1_staking_contract_Store(s), $add_stake_events#$1_staking_contract_Store(s), $request_commission_events#$1_staking_contract_Store(s), $unlock_stake_events#$1_staking_contract_Store(s), $switch_operator_events#$1_staking_contract_Store(s), x, $distribute_events#$1_staking_contract_Store(s)) +} +function {:inline} $Update'$1_staking_contract_Store'_distribute_events(s: $1_staking_contract_Store, x: $1_event_EventHandle'$1_staking_contract_DistributeEvent'): $1_staking_contract_Store { + $1_staking_contract_Store($staking_contracts#$1_staking_contract_Store(s), $create_staking_contract_events#$1_staking_contract_Store(s), $update_voter_events#$1_staking_contract_Store(s), $reset_lockup_events#$1_staking_contract_Store(s), $add_stake_events#$1_staking_contract_Store(s), $request_commission_events#$1_staking_contract_Store(s), $unlock_stake_events#$1_staking_contract_Store(s), $switch_operator_events#$1_staking_contract_Store(s), $add_distribution_events#$1_staking_contract_Store(s), x) +} +function $IsValid'$1_staking_contract_Store'(s: $1_staking_contract_Store): bool { + $IsValid'$1_simple_map_SimpleMap'address_$1_staking_contract_StakingContract''($staking_contracts#$1_staking_contract_Store(s)) + && $IsValid'$1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent''($create_staking_contract_events#$1_staking_contract_Store(s)) + && $IsValid'$1_event_EventHandle'$1_staking_contract_UpdateVoterEvent''($update_voter_events#$1_staking_contract_Store(s)) + && $IsValid'$1_event_EventHandle'$1_staking_contract_ResetLockupEvent''($reset_lockup_events#$1_staking_contract_Store(s)) + && $IsValid'$1_event_EventHandle'$1_staking_contract_AddStakeEvent''($add_stake_events#$1_staking_contract_Store(s)) + && $IsValid'$1_event_EventHandle'$1_staking_contract_RequestCommissionEvent''($request_commission_events#$1_staking_contract_Store(s)) + && $IsValid'$1_event_EventHandle'$1_staking_contract_UnlockStakeEvent''($unlock_stake_events#$1_staking_contract_Store(s)) + && $IsValid'$1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent''($switch_operator_events#$1_staking_contract_Store(s)) + && $IsValid'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent''($add_distribution_events#$1_staking_contract_Store(s)) + && $IsValid'$1_event_EventHandle'$1_staking_contract_DistributeEvent''($distribute_events#$1_staking_contract_Store(s)) +} +function {:inline} $IsEqual'$1_staking_contract_Store'(s1: $1_staking_contract_Store, s2: $1_staking_contract_Store): bool { + $IsEqual'$1_simple_map_SimpleMap'address_$1_staking_contract_StakingContract''($staking_contracts#$1_staking_contract_Store(s1), $staking_contracts#$1_staking_contract_Store(s2)) + && $IsEqual'$1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent''($create_staking_contract_events#$1_staking_contract_Store(s1), $create_staking_contract_events#$1_staking_contract_Store(s2)) + && $IsEqual'$1_event_EventHandle'$1_staking_contract_UpdateVoterEvent''($update_voter_events#$1_staking_contract_Store(s1), $update_voter_events#$1_staking_contract_Store(s2)) + && $IsEqual'$1_event_EventHandle'$1_staking_contract_ResetLockupEvent''($reset_lockup_events#$1_staking_contract_Store(s1), $reset_lockup_events#$1_staking_contract_Store(s2)) + && $IsEqual'$1_event_EventHandle'$1_staking_contract_AddStakeEvent''($add_stake_events#$1_staking_contract_Store(s1), $add_stake_events#$1_staking_contract_Store(s2)) + && $IsEqual'$1_event_EventHandle'$1_staking_contract_RequestCommissionEvent''($request_commission_events#$1_staking_contract_Store(s1), $request_commission_events#$1_staking_contract_Store(s2)) + && $IsEqual'$1_event_EventHandle'$1_staking_contract_UnlockStakeEvent''($unlock_stake_events#$1_staking_contract_Store(s1), $unlock_stake_events#$1_staking_contract_Store(s2)) + && $IsEqual'$1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent''($switch_operator_events#$1_staking_contract_Store(s1), $switch_operator_events#$1_staking_contract_Store(s2)) + && $IsEqual'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent''($add_distribution_events#$1_staking_contract_Store(s1), $add_distribution_events#$1_staking_contract_Store(s2)) + && $IsEqual'$1_event_EventHandle'$1_staking_contract_DistributeEvent''($distribute_events#$1_staking_contract_Store(s1), $distribute_events#$1_staking_contract_Store(s2))} +var $1_staking_contract_Store_$memory: $Memory $1_staking_contract_Store; + +// struct staking_contract::SwitchOperatorEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:149:5+143 +type {:datatype} $1_staking_contract_SwitchOperatorEvent; +function {:constructor} $1_staking_contract_SwitchOperatorEvent($old_operator: int, $new_operator: int, $pool_address: int): $1_staking_contract_SwitchOperatorEvent; +function {:inline} $Update'$1_staking_contract_SwitchOperatorEvent'_old_operator(s: $1_staking_contract_SwitchOperatorEvent, x: int): $1_staking_contract_SwitchOperatorEvent { + $1_staking_contract_SwitchOperatorEvent(x, $new_operator#$1_staking_contract_SwitchOperatorEvent(s), $pool_address#$1_staking_contract_SwitchOperatorEvent(s)) +} +function {:inline} $Update'$1_staking_contract_SwitchOperatorEvent'_new_operator(s: $1_staking_contract_SwitchOperatorEvent, x: int): $1_staking_contract_SwitchOperatorEvent { + $1_staking_contract_SwitchOperatorEvent($old_operator#$1_staking_contract_SwitchOperatorEvent(s), x, $pool_address#$1_staking_contract_SwitchOperatorEvent(s)) +} +function {:inline} $Update'$1_staking_contract_SwitchOperatorEvent'_pool_address(s: $1_staking_contract_SwitchOperatorEvent, x: int): $1_staking_contract_SwitchOperatorEvent { + $1_staking_contract_SwitchOperatorEvent($old_operator#$1_staking_contract_SwitchOperatorEvent(s), $new_operator#$1_staking_contract_SwitchOperatorEvent(s), x) +} +function $IsValid'$1_staking_contract_SwitchOperatorEvent'(s: $1_staking_contract_SwitchOperatorEvent): bool { + $IsValid'address'($old_operator#$1_staking_contract_SwitchOperatorEvent(s)) + && $IsValid'address'($new_operator#$1_staking_contract_SwitchOperatorEvent(s)) + && $IsValid'address'($pool_address#$1_staking_contract_SwitchOperatorEvent(s)) +} +function {:inline} $IsEqual'$1_staking_contract_SwitchOperatorEvent'(s1: $1_staking_contract_SwitchOperatorEvent, s2: $1_staking_contract_SwitchOperatorEvent): bool { + s1 == s2 +} + +// struct staking_contract::UpdateVoterEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:117:5+161 +type {:datatype} $1_staking_contract_UpdateVoterEvent; +function {:constructor} $1_staking_contract_UpdateVoterEvent($operator: int, $pool_address: int, $old_voter: int, $new_voter: int): $1_staking_contract_UpdateVoterEvent; +function {:inline} $Update'$1_staking_contract_UpdateVoterEvent'_operator(s: $1_staking_contract_UpdateVoterEvent, x: int): $1_staking_contract_UpdateVoterEvent { + $1_staking_contract_UpdateVoterEvent(x, $pool_address#$1_staking_contract_UpdateVoterEvent(s), $old_voter#$1_staking_contract_UpdateVoterEvent(s), $new_voter#$1_staking_contract_UpdateVoterEvent(s)) +} +function {:inline} $Update'$1_staking_contract_UpdateVoterEvent'_pool_address(s: $1_staking_contract_UpdateVoterEvent, x: int): $1_staking_contract_UpdateVoterEvent { + $1_staking_contract_UpdateVoterEvent($operator#$1_staking_contract_UpdateVoterEvent(s), x, $old_voter#$1_staking_contract_UpdateVoterEvent(s), $new_voter#$1_staking_contract_UpdateVoterEvent(s)) +} +function {:inline} $Update'$1_staking_contract_UpdateVoterEvent'_old_voter(s: $1_staking_contract_UpdateVoterEvent, x: int): $1_staking_contract_UpdateVoterEvent { + $1_staking_contract_UpdateVoterEvent($operator#$1_staking_contract_UpdateVoterEvent(s), $pool_address#$1_staking_contract_UpdateVoterEvent(s), x, $new_voter#$1_staking_contract_UpdateVoterEvent(s)) +} +function {:inline} $Update'$1_staking_contract_UpdateVoterEvent'_new_voter(s: $1_staking_contract_UpdateVoterEvent, x: int): $1_staking_contract_UpdateVoterEvent { + $1_staking_contract_UpdateVoterEvent($operator#$1_staking_contract_UpdateVoterEvent(s), $pool_address#$1_staking_contract_UpdateVoterEvent(s), $old_voter#$1_staking_contract_UpdateVoterEvent(s), x) +} +function $IsValid'$1_staking_contract_UpdateVoterEvent'(s: $1_staking_contract_UpdateVoterEvent): bool { + $IsValid'address'($operator#$1_staking_contract_UpdateVoterEvent(s)) + && $IsValid'address'($pool_address#$1_staking_contract_UpdateVoterEvent(s)) + && $IsValid'address'($old_voter#$1_staking_contract_UpdateVoterEvent(s)) + && $IsValid'address'($new_voter#$1_staking_contract_UpdateVoterEvent(s)) +} +function {:inline} $IsEqual'$1_staking_contract_UpdateVoterEvent'(s1: $1_staking_contract_UpdateVoterEvent, s2: $1_staking_contract_UpdateVoterEvent): bool { + s1 == s2 +} + +// fun staking_contract::add_distribution [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:632:5+833 +procedure {:inline 1} $1_staking_contract_add_distribution(_$t0: int, _$t1: $Mutation ($1_staking_contract_StakingContract), _$t2: int, _$t3: int, _$t4: $Mutation ($1_event_EventHandle'$1_staking_contract_AddDistributionEvent')) returns ($ret0: $Mutation ($1_staking_contract_StakingContract), $ret1: $Mutation ($1_event_EventHandle'$1_staking_contract_AddDistributionEvent')) +{ + // declare local variables + var $t5: $Mutation ($1_pool_u64_Pool); + var $t6: int; + var $t7: int; + var $t8: $Mutation ($1_pool_u64_Pool); + var $t9: int; + var $t10: int; + var $t11: int; + var $t12: int; + var $t13: int; + var $t14: int; + var $t15: int; + var $t16: int; + var $t17: bool; + var $t18: int; + var $t19: bool; + var $t20: int; + var $t21: int; + var $t22: int; + var $t23: $1_staking_contract_AddDistributionEvent; + var $t0: int; + var $t1: $Mutation ($1_staking_contract_StakingContract); + var $t2: int; + var $t3: int; + var $t4: $Mutation ($1_event_EventHandle'$1_staking_contract_AddDistributionEvent'); + var $temp_0'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent'': $1_event_EventHandle'$1_staking_contract_AddDistributionEvent'; + var $temp_0'$1_pool_u64_Pool': $1_pool_u64_Pool; + var $temp_0'$1_staking_contract_StakingContract': $1_staking_contract_StakingContract; + var $temp_0'address': int; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + + // bytecode translation starts here + // trace_local[operator]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:632:5+1 + assume {:print "$at(133,30099,30100)"} true; + assume {:print "$track_local(56,0,0):", $t0} $t0 == $t0; + + // trace_local[staking_contract]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:632:5+1 + $temp_0'$1_staking_contract_StakingContract' := $Dereference($t1); + assume {:print "$track_local(56,0,1):", $temp_0'$1_staking_contract_StakingContract'} $temp_0'$1_staking_contract_StakingContract' == $temp_0'$1_staking_contract_StakingContract'; + + // trace_local[recipient]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:632:5+1 + assume {:print "$track_local(56,0,2):", $t2} $t2 == $t2; + + // trace_local[coins_amount]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:632:5+1 + assume {:print "$track_local(56,0,3):", $t3} $t3 == $t3; + + // trace_local[add_distribution_events]($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:632:5+1 + $temp_0'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent'' := $Dereference($t4); + assume {:print "$track_local(56,0,4):", $temp_0'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent''} $temp_0'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent'' == $temp_0'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent''; + + // $t8 := borrow_field.distribution_pool($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:639:33+39 + assume {:print "$at(133,30364,30403)"} true; + $t8 := $ChildMutation($t1, 4, $distribution_pool#$1_staking_contract_StakingContract($Dereference($t1))); + + // trace_local[distribution_pool]($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:639:13+17 + $temp_0'$1_pool_u64_Pool' := $Dereference($t8); + assume {:print "$track_local(56,0,5):", $temp_0'$1_pool_u64_Pool'} $temp_0'$1_pool_u64_Pool' == $temp_0'$1_pool_u64_Pool'; + + // $t9 := get_field.pool_address($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:640:69+29 + assume {:print "$at(133,30473,30502)"} true; + $t9 := $pool_address#$1_staking_contract_StakingContract($Dereference($t1)); + + // ($t10, $t11, $t12, $t13) := stake::get_stake($t9) on_abort goto L2 with $t14 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:640:52+47 + call $t10,$t11,$t12,$t13 := $1_stake_get_stake($t9); + if ($abort_flag) { + assume {:print "$at(133,30456,30503)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(56,0):", $t14} $t14 == $t14; + goto L2; + } + + // trace_local[total_distribution_amount]($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:640:23+25 + assume {:print "$track_local(56,0,7):", $t13} $t13 == $t13; + + // destroy($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:640:20+1 + + // destroy($t11) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:640:17+1 + + // destroy($t10) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:640:14+1 + + // $t15 := get_field.commission_percentage($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:642:69+38 + assume {:print "$at(133,30607,30645)"} true; + $t15 := $commission_percentage#$1_staking_contract_StakingContract($Dereference($t1)); + + // staking_contract::update_distribution_pool($t8, $t13, $t0, $t15) on_abort goto L2 with $t14 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:641:9+133 + assume {:print "$at(133,30513,30646)"} true; + call $t8 := $1_staking_contract_update_distribution_pool($t8, $t13, $t0, $t15); + if ($abort_flag) { + assume {:print "$at(133,30513,30646)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(56,0):", $t14} $t14 == $t14; + goto L2; + } + + // assume Identical($t16, pool_u64::spec_amount_to_shares_with_total_coins($t8, $t3, select pool_u64::Pool.total_coins($t8))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:60:9+94 + assume {:print "$at(59,2129,2223)"} true; + assume ($t16 == $1_pool_u64_spec_amount_to_shares_with_total_coins($Dereference($t8), $t3, $total_coins#$1_pool_u64_Pool($Dereference($t8)))); + + // assume Identical($t17, simple_map::spec_contains_key(select pool_u64::Pool.shares($t8), $t2)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:83:9+73 + assume {:print "$at(59,3186,3259)"} true; + assume ($t17 == $1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($Dereference($t8)), $t2)); + + // assume Identical($t18, simple_map::spec_get(select pool_u64::Pool.shares($t8), $t2)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:84:9+68 + assume {:print "$at(59,3268,3336)"} true; + assume ($t18 == $1_simple_map_spec_get'address_u64'($shares#$1_pool_u64_Pool($Dereference($t8)), $t2)); + + // assume Identical($t19, simple_map::spec_contains_key(select pool_u64::Pool.shares($t8), $t2)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:94:9+73 + assume {:print "$at(59,3636,3709)"} true; + assume ($t19 == $1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($Dereference($t8)), $t2)); + + // assume Identical($t20, simple_map::spec_get(select pool_u64::Pool.shares($t8), $t2)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:95:9+68 + assume {:print "$at(59,3718,3786)"} true; + assume ($t20 == $1_simple_map_spec_get'address_u64'($shares#$1_pool_u64_Pool($Dereference($t8)), $t2)); + + // $t21 := pool_u64::buy_in($t8, $t2, $t3) on_abort goto L2 with $t14 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:644:9+60 + assume {:print "$at(133,30657,30717)"} true; + call $t21,$t8 := $1_pool_u64_buy_in($t8, $t2, $t3); + if ($abort_flag) { + assume {:print "$at(133,30657,30717)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(56,0):", $t14} $t14 == $t14; + goto L2; + } + + // write_back[Reference($t1).distribution_pool (pool_u64::Pool)]($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:644:9+60 + $t1 := $UpdateMutation($t1, $Update'$1_staking_contract_StakingContract'_distribution_pool($Dereference($t1), $Dereference($t8))); + + // trace_local[staking_contract]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:644:9+60 + $temp_0'$1_staking_contract_StakingContract' := $Dereference($t1); + assume {:print "$track_local(56,0,1):", $temp_0'$1_staking_contract_StakingContract'} $temp_0'$1_staking_contract_StakingContract' == $temp_0'$1_staking_contract_StakingContract'; + + // destroy($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:644:9+60 + + // $t22 := get_field.pool_address($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:645:28+29 + assume {:print "$at(133,30746,30775)"} true; + $t22 := $pool_address#$1_staking_contract_StakingContract($Dereference($t1)); + + // trace_local[pool_address]($t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:645:13+12 + assume {:print "$track_local(56,0,6):", $t22} $t22 == $t22; + + // $t23 := pack staking_contract::AddDistributionEvent($t0, $t22, $t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:648:13+69 + assume {:print "$at(133,30846,30915)"} true; + $t23 := $1_staking_contract_AddDistributionEvent($t0, $t22, $t3); + + // opaque begin: event::emit_event($t4, $t23) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:646:9+140 + assume {:print "$at(133,30785,30925)"} true; + + // opaque end: event::emit_event($t4, $t23) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:646:9+140 + + // trace_local[staking_contract]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:649:10+1 + assume {:print "$at(133,30925,30926)"} true; + $temp_0'$1_staking_contract_StakingContract' := $Dereference($t1); + assume {:print "$track_local(56,0,1):", $temp_0'$1_staking_contract_StakingContract'} $temp_0'$1_staking_contract_StakingContract' == $temp_0'$1_staking_contract_StakingContract'; + + // pack_ref_deep($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:649:10+1 + + // trace_local[add_distribution_events]($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:649:10+1 + $temp_0'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent'' := $Dereference($t4); + assume {:print "$track_local(56,0,4):", $temp_0'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent''} $temp_0'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent'' == $temp_0'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent''; + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:650:5+1 + assume {:print "$at(133,30931,30932)"} true; +L1: + + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:650:5+1 + assume {:print "$at(133,30931,30932)"} true; + $ret0 := $t1; + $ret1 := $t4; + return; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:650:5+1 +L2: + + // abort($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:650:5+1 + assume {:print "$at(133,30931,30932)"} true; + $abort_code := $t14; + $abort_flag := true; + return; + +} + +// fun staking_contract::assert_staking_contract_exists [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:622:5+446 +procedure {:inline 1} $1_staking_contract_assert_staking_contract_exists(_$t0: int, _$t1: int) returns () +{ + // declare local variables + var $t2: int; + var $t3: Table int ($1_staking_contract_StakingContract); + var $t4: bool; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: $Mutation ($1_staking_contract_Store); + var $t9: $Mutation (Table int ($1_staking_contract_StakingContract)); + var $t10: Table int ($1_staking_contract_StakingContract); + var $t11: bool; + var $t12: int; + var $t13: int; + var $t0: int; + var $t1: int; + var $temp_0'address': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // assume Identical($t3, select staking_contract::Store.staking_contracts(global($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 + assume {:print "$at(134,11481,11545)"} true; + assume ($t3 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t0))); + + // trace_local[staker]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:622:5+1 + assume {:print "$at(133,29541,29542)"} true; + assume {:print "$track_local(56,2,0):", $t0} $t0 == $t0; + + // trace_local[operator]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:622:5+1 + assume {:print "$track_local(56,2,1):", $t1} $t1 == $t1; + + // $t4 := exists($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:623:17+6 + assume {:print "$at(133,29645,29651)"} true; + $t4 := $ResourceExists($1_staking_contract_Store_$memory, $t0); + + // if ($t4) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:623:9+87 + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:623:9+87 +L1: + + // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:623:9+87 + assume {:print "$at(133,29637,29724)"} true; + goto L2; + + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:623:57+37 +L0: + + // $t5 := 3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:623:57+37 + assume {:print "$at(133,29685,29722)"} true; + $t5 := 3; + assume $IsValid'u64'($t5); + + // $t6 := error::not_found($t5) on_abort goto L7 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:623:40+55 + call $t6 := $1_error_not_found($t5); + if ($abort_flag) { + assume {:print "$at(133,29668,29723)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(56,2):", $t7} $t7 == $t7; + goto L7; + } + + // trace_abort($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:623:9+87 + assume {:print "$at(133,29637,29724)"} true; + assume {:print "$track_abort(56,2):", $t6} $t6 == $t6; + + // $t7 := move($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:623:9+87 + $t7 := $t6; + + // goto L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:623:9+87 + goto L7; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:624:63+6 + assume {:print "$at(133,29788,29794)"} true; +L2: + + // $t8 := borrow_global($t0) on_abort goto L7 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:624:38+17 + assume {:print "$at(133,29763,29780)"} true; + if (!$ResourceExists($1_staking_contract_Store_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t8 := $Mutation($Global($t0), EmptyVec(), $ResourceValue($1_staking_contract_Store_$memory, $t0)); + } + if ($abort_flag) { + assume {:print "$at(133,29763,29780)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(56,2):", $t7} $t7 == $t7; + goto L7; + } + + // $t9 := borrow_field.staking_contracts($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:624:33+55 + $t9 := $ChildMutation($t8, 0, $staking_contracts#$1_staking_contract_Store($Dereference($t8))); + + // $t10 := read_ref($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:626:37+30 + assume {:print "$at(133,29868,29898)"} true; + $t10 := $Dereference($t9); + + // pack_ref_deep($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:626:37+30 + + // $t11 := simple_map::contains_key($t10, $t1) on_abort goto L7 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:626:13+54 + call $t11 := $1_simple_map_contains_key'address_$1_staking_contract_StakingContract'($t10, $t1); + if ($abort_flag) { + assume {:print "$at(133,29844,29898)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(56,2):", $t7} $t7 == $t7; + goto L7; + } + + // if ($t11) goto L4 else goto L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:625:9+157 + assume {:print "$at(133,29823,29980)"} true; + if ($t11) { goto L4; } else { goto L3; } + + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:625:9+157 +L4: + + // goto L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:625:9+157 + assume {:print "$at(133,29823,29980)"} true; + goto L5; + + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:627:30+39 + assume {:print "$at(133,29929,29968)"} true; +L3: + + // $t12 := 4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:627:30+39 + assume {:print "$at(133,29929,29968)"} true; + $t12 := 4; + assume $IsValid'u64'($t12); + + // $t13 := error::not_found($t12) on_abort goto L7 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:627:13+57 + call $t13 := $1_error_not_found($t12); + if ($abort_flag) { + assume {:print "$at(133,29912,29969)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(56,2):", $t7} $t7 == $t7; + goto L7; + } + + // trace_abort($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:625:9+157 + assume {:print "$at(133,29823,29980)"} true; + assume {:print "$track_abort(56,2):", $t13} $t13 == $t13; + + // $t7 := move($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:625:9+157 + $t7 := $t13; + + // goto L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:625:9+157 + goto L7; + + // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:628:10+1 + assume {:print "$at(133,29980,29981)"} true; +L5: + + // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:629:5+1 + assume {:print "$at(133,29986,29987)"} true; +L6: + + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:629:5+1 + assume {:print "$at(133,29986,29987)"} true; + return; + + // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:629:5+1 +L7: + + // abort($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:629:5+1 + assume {:print "$at(133,29986,29987)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun staking_contract::distribute [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:570:5+389 +procedure {:inline 1} $1_staking_contract_distribute(_$t0: int, _$t1: int) returns () +{ + // declare local variables + var $t2: $Mutation ($1_staking_contract_StakingContract); + var $t3: $Mutation ($1_staking_contract_Store); + var $t4: Table int ($1_staking_contract_StakingContract); + var $t5: Table int ($1_staking_contract_StakingContract); + var $t6: int; + var $t7: $Mutation ($1_staking_contract_Store); + var $t8: $Mutation (Table int ($1_staking_contract_StakingContract)); + var $t9: $Mutation ($1_staking_contract_StakingContract); + var $t10: $Mutation ($1_event_EventHandle'$1_staking_contract_DistributeEvent'); + var $t11: int; + var $t12: $1_stake_StakePool; + var $t0: int; + var $t1: int; + var $temp_0'$1_staking_contract_StakingContract': $1_staking_contract_StakingContract; + var $temp_0'$1_staking_contract_Store': $1_staking_contract_Store; + var $temp_0'address': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // assume Identical($t4, select staking_contract::Store.staking_contracts(global($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 + assume {:print "$at(134,11481,11545)"} true; + assume ($t4 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t0))); + + // trace_local[staker]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:570:5+1 + assume {:print "$at(133,27075,27076)"} true; + assume {:print "$track_local(56,7,0):", $t0} $t0 == $t0; + + // trace_local[operator]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:570:5+1 + assume {:print "$track_local(56,7,1):", $t1} $t1 == $t1; + + // assume Identical($t5, select staking_contract::Store.staking_contracts(global($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 + assume {:print "$at(134,11481,11545)"} true; + assume ($t5 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t0))); + + // staking_contract::assert_staking_contract_exists($t0, $t1) on_abort goto L2 with $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:571:9+48 + assume {:print "$at(133,27164,27212)"} true; + call $1_staking_contract_assert_staking_contract_exists($t0, $t1); + if ($abort_flag) { + assume {:print "$at(133,27164,27212)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(56,7):", $t6} $t6 == $t6; + goto L2; + } + + // $t7 := borrow_global($t0) on_abort goto L2 with $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:572:21+17 + assume {:print "$at(133,27234,27251)"} true; + if (!$ResourceExists($1_staking_contract_Store_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t7 := $Mutation($Global($t0), EmptyVec(), $ResourceValue($1_staking_contract_Store_$memory, $t0)); + } + if ($abort_flag) { + assume {:print "$at(133,27234,27251)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(56,7):", $t6} $t6 == $t6; + goto L2; + } + + // trace_local[store]($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:572:13+5 + $temp_0'$1_staking_contract_Store' := $Dereference($t7); + assume {:print "$track_local(56,7,3):", $temp_0'$1_staking_contract_Store'} $temp_0'$1_staking_contract_Store' == $temp_0'$1_staking_contract_Store'; + + // $t8 := borrow_field.staking_contracts($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:573:55+28 + assume {:print "$at(133,27322,27350)"} true; + $t8 := $ChildMutation($t7, 0, $staking_contracts#$1_staking_contract_Store($Dereference($t7))); + + // $t9 := simple_map::borrow_mut($t8, $t1) on_abort goto L2 with $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:573:32+63 + call $t9,$t8 := $1_simple_map_borrow_mut'address_$1_staking_contract_StakingContract'($t8, $t1); + if ($abort_flag) { + assume {:print "$at(133,27299,27362)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(56,7):", $t6} $t6 == $t6; + goto L2; + } + + // trace_local[staking_contract]($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:573:13+16 + $temp_0'$1_staking_contract_StakingContract' := $Dereference($t9); + assume {:print "$track_local(56,7,2):", $temp_0'$1_staking_contract_StakingContract'} $temp_0'$1_staking_contract_StakingContract' == $temp_0'$1_staking_contract_StakingContract'; + + // $t10 := borrow_field.distribute_events($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:574:65+28 + assume {:print "$at(133,27428,27456)"} true; + $t10 := $ChildMutation($t7, 9, $distribute_events#$1_staking_contract_Store($Dereference($t7))); + + // assume Identical($t11, select staking_contract::StakingContract.pool_address($t9)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:194:9+49 + assume {:print "$at(134,8605,8654)"} true; + assume ($t11 == $pool_address#$1_staking_contract_StakingContract($Dereference($t9))); + + // assume Identical($t12, global($t11)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:195:9+63 + assume {:print "$at(134,8663,8726)"} true; + assume ($t12 == $ResourceValue($1_stake_StakePool_$memory, $t11)); + + // staking_contract::distribute_internal($t0, $t1, $t9, $t10) on_abort goto L2 with $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:574:9+85 + assume {:print "$at(133,27372,27457)"} true; + call $t9,$t10 := $1_staking_contract_distribute_internal($t0, $t1, $t9, $t10); + if ($abort_flag) { + assume {:print "$at(133,27372,27457)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(56,7):", $t6} $t6 == $t6; + goto L2; + } + + // write_back[Reference($t8)[]]($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:574:9+85 + $t8 := $UpdateMutation($t8, UpdateTable($Dereference($t8), ReadVec(p#$Mutation($t9), LenVec(p#$Mutation($t8))), $Dereference($t9))); + + // write_back[Reference($t7).staking_contracts (simple_map::SimpleMap)]($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:574:9+85 + $t7 := $UpdateMutation($t7, $Update'$1_staking_contract_Store'_staking_contracts($Dereference($t7), $Dereference($t8))); + + // pack_ref_deep($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:574:9+85 + + // write_back[staking_contract::Store@]($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:574:9+85 + $1_staking_contract_Store_$memory := $ResourceUpdate($1_staking_contract_Store_$memory, $GlobalLocationAddress($t7), + $Dereference($t7)); + + // write_back[Reference($t7).distribute_events (event::EventHandle)]($t10) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:574:9+85 + $t7 := $UpdateMutation($t7, $Update'$1_staking_contract_Store'_distribute_events($Dereference($t7), $Dereference($t10))); + + // pack_ref_deep($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:574:9+85 + + // write_back[staking_contract::Store@]($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:574:9+85 + $1_staking_contract_Store_$memory := $ResourceUpdate($1_staking_contract_Store_$memory, $GlobalLocationAddress($t7), + $Dereference($t7)); + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:575:5+1 + assume {:print "$at(133,27463,27464)"} true; +L1: + + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:575:5+1 + assume {:print "$at(133,27463,27464)"} true; + return; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:575:5+1 +L2: + + // abort($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:575:5+1 + assume {:print "$at(133,27463,27464)"} true; + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// fun staking_contract::distribute_internal [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:578:5+1906 +procedure {:inline 1} $1_staking_contract_distribute_internal(_$t0: int, _$t1: int, _$t2: $Mutation ($1_staking_contract_StakingContract), _$t3: $Mutation ($1_event_EventHandle'$1_staking_contract_DistributeEvent')) returns ($ret0: $Mutation ($1_staking_contract_StakingContract), $ret1: $Mutation ($1_event_EventHandle'$1_staking_contract_DistributeEvent')) +{ + // declare local variables + var $t4: int; + var $t5: int; + var $t6: $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $t7: int; + var $t8: int; + var $t9: $Mutation ($1_pool_u64_Pool); + var $t10: int; + var $t11: int; + var $t12: int; + var $t13: int; + var $t14: Vec (int); + var $t15: int; + var $t16: int; + var $t17: $1_stake_StakePool; + var $t18: int; + var $t19: int; + var $t20: int; + var $t21: int; + var $t22: int; + var $t23: int; + var $t24: int; + var $t25: $1_stake_OwnerCapability; + var $t26: $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $t27: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t28: int; + var $t29: int; + var $t30: bool; + var $t31: $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $t32: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t33: $Mutation ($1_pool_u64_Pool); + var $t34: int; + var $t35: $1_pool_u64_Pool; + var $t36: int; + var $t37: int; + var $t38: bool; + var $t39: $1_pool_u64_Pool; + var $t40: Vec (int); + var $t41: int; + var $t42: int; + var $t43: $1_pool_u64_Pool; + var $t44: int; + var $t45: int; + var $t46: $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $t47: $1_staking_contract_DistributeEvent; + var $t48: $Mutation (Vec (int)); + var $t49: $Mutation ($1_coin_Coin'$1_aptos_coin_AptosCoin'); + var $t50: int; + var $t51: int; + var $t52: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t53: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t54: $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $t55: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t56: int; + var $t57: int; + var $t58: bool; + var $t59: $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $t60: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t61: int; + var $t62: $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $t63: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t0: int; + var $t1: int; + var $t2: $Mutation ($1_staking_contract_StakingContract); + var $t3: $Mutation ($1_event_EventHandle'$1_staking_contract_DistributeEvent'); + var $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin'': $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $temp_0'$1_event_EventHandle'$1_staking_contract_DistributeEvent'': $1_event_EventHandle'$1_staking_contract_DistributeEvent'; + var $temp_0'$1_pool_u64_Pool': $1_pool_u64_Pool; + var $temp_0'$1_staking_contract_StakingContract': $1_staking_contract_StakingContract; + var $temp_0'address': int; + var $temp_0'u64': int; + var $temp_0'vec'address'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + + // bytecode translation starts here + // assume Identical($t16, select staking_contract::StakingContract.pool_address($t2)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:194:9+49 + assume {:print "$at(134,8605,8654)"} true; + assume ($t16 == $pool_address#$1_staking_contract_StakingContract($Dereference($t2))); + + // assume Identical($t17, global($t16)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:195:9+63 + assume {:print "$at(134,8663,8726)"} true; + assume ($t17 == $ResourceValue($1_stake_StakePool_$memory, $t16)); + + // trace_local[staker]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:578:5+1 + assume {:print "$at(133,27553,27554)"} true; + assume {:print "$track_local(56,8,0):", $t0} $t0 == $t0; + + // trace_local[operator]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:578:5+1 + assume {:print "$track_local(56,8,1):", $t1} $t1 == $t1; + + // trace_local[staking_contract]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:578:5+1 + $temp_0'$1_staking_contract_StakingContract' := $Dereference($t2); + assume {:print "$track_local(56,8,2):", $temp_0'$1_staking_contract_StakingContract'} $temp_0'$1_staking_contract_StakingContract' == $temp_0'$1_staking_contract_StakingContract'; + + // trace_local[distribute_events]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:578:5+1 + $temp_0'$1_event_EventHandle'$1_staking_contract_DistributeEvent'' := $Dereference($t3); + assume {:print "$track_local(56,8,3):", $temp_0'$1_event_EventHandle'$1_staking_contract_DistributeEvent''} $temp_0'$1_event_EventHandle'$1_staking_contract_DistributeEvent'' == $temp_0'$1_event_EventHandle'$1_staking_contract_DistributeEvent''; + + // $t18 := get_field.pool_address($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:584:28+29 + assume {:print "$at(133,27775,27804)"} true; + $t18 := $pool_address#$1_staking_contract_StakingContract($Dereference($t2)); + + // trace_local[pool_address]($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:584:13+12 + assume {:print "$track_local(56,8,12):", $t18} $t18 == $t18; + + // ($t19, $t20, $t21, $t22) := stake::get_stake($t18) on_abort goto L11 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:585:50+30 + assume {:print "$at(133,27855,27885)"} true; + call $t19,$t20,$t21,$t22 := $1_stake_get_stake($t18); + if ($abort_flag) { + assume {:print "$at(133,27855,27885)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(56,8):", $t23} $t23 == $t23; + goto L11; + } + + // trace_local[pending_inactive]($t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:585:30+16 + assume {:print "$track_local(56,8,11):", $t22} $t22 == $t22; + + // destroy($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:585:27+1 + + // trace_local[inactive]($t20) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:585:17+8 + assume {:print "$track_local(56,8,10):", $t20} $t20 == $t20; + + // destroy($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:585:14+1 + + // $t24 := +($t20, $t22) on_abort goto L11 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:586:53+1 + assume {:print "$at(133,27939,27940)"} true; + call $t24 := $AddU64($t20, $t22); + if ($abort_flag) { + assume {:print "$at(133,27939,27940)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(56,8):", $t23} $t23 == $t23; + goto L11; + } + + // trace_local[total_potential_withdrawable]($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:586:13+28 + assume {:print "$track_local(56,8,15):", $t24} $t24 == $t24; + + // $t25 := get_field.owner_cap($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:587:46+27 + assume {:print "$at(133,28004,28031)"} true; + $t25 := $owner_cap#$1_staking_contract_StakingContract($Dereference($t2)); + + // $t6 := stake::withdraw_with_cap($t25, $t24) on_abort goto L11 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:587:21+83 + call $t6 := $1_stake_withdraw_with_cap($t25, $t24); + if ($abort_flag) { + assume {:print "$at(133,27979,28062)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(56,8):", $t23} $t23 == $t23; + goto L11; + } + + // trace_local[coins]($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:587:13+5 + assume {:print "$track_local(56,8,6):", $t6} $t6 == $t6; + + // $t26 := copy($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:588:47+6 + assume {:print "$at(133,28110,28116)"} true; + $t26 := $t6; + + // assume Identical($t27, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + assume {:print "$at(95,1664,1763)"} true; + assume ($t27 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + + // $t28 := coin::value($t26) on_abort goto L11 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:588:35+19 + assume {:print "$at(133,28098,28117)"} true; + call $t28 := $1_coin_value'$1_aptos_coin_AptosCoin'($t26); + if ($abort_flag) { + assume {:print "$at(133,28098,28117)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(56,8):", $t23} $t23 == $t23; + goto L11; + } + + // trace_local[distribution_amount]($t28) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:588:13+19 + assume {:print "$track_local(56,8,8):", $t28} $t28 == $t28; + + // $t29 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:589:36+1 + assume {:print "$at(133,28154,28155)"} true; + $t29 := 0; + assume $IsValid'u64'($t29); + + // $t30 := ==($t28, $t29) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:589:33+2 + $t30 := $IsEqual'u64'($t28, $t29); + + // if ($t30) goto L1 else goto L12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:589:9+99 + if ($t30) { goto L1; } else { goto L12; } + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:590:13+25 + assume {:print "$at(133,28171,28196)"} true; +L1: + + // destroy($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:590:13+25 + assume {:print "$at(133,28171,28196)"} true; + + // destroy($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:590:13+25 + + // $t31 := move($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:590:32+5 + $t31 := $t6; + + // assume Identical($t32, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + assume {:print "$at(95,1664,1763)"} true; + assume ($t32 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + + // coin::destroy_zero($t31) on_abort goto L11 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:590:13+25 + assume {:print "$at(133,28171,28196)"} true; + call $1_coin_destroy_zero'$1_aptos_coin_AptosCoin'($t31); + if ($abort_flag) { + assume {:print "$at(133,28171,28196)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(56,8):", $t23} $t23 == $t23; + goto L11; + } + + // trace_local[staking_contract]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:591:13+6 + assume {:print "$at(133,28210,28216)"} true; + $temp_0'$1_staking_contract_StakingContract' := $Dereference($t2); + assume {:print "$track_local(56,8,2):", $temp_0'$1_staking_contract_StakingContract'} $temp_0'$1_staking_contract_StakingContract' == $temp_0'$1_staking_contract_StakingContract'; + + // pack_ref_deep($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:591:13+6 + + // trace_local[distribute_events]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:591:13+6 + $temp_0'$1_event_EventHandle'$1_staking_contract_DistributeEvent'' := $Dereference($t3); + assume {:print "$track_local(56,8,3):", $temp_0'$1_event_EventHandle'$1_staking_contract_DistributeEvent''} $temp_0'$1_event_EventHandle'$1_staking_contract_DistributeEvent'' == $temp_0'$1_event_EventHandle'$1_staking_contract_DistributeEvent''; + + // goto L10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:591:13+6 + goto L10; + + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:594:38+16 + assume {:print "$at(133,28266,28282)"} true; +L0: + + // $t33 := borrow_field.distribution_pool($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:594:33+39 + assume {:print "$at(133,28261,28300)"} true; + $t33 := $ChildMutation($t2, 4, $distribution_pool#$1_staking_contract_StakingContract($Dereference($t2))); + + // trace_local[distribution_pool]($t33) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:594:13+17 + $temp_0'$1_pool_u64_Pool' := $Dereference($t33); + assume {:print "$track_local(56,8,9):", $temp_0'$1_pool_u64_Pool'} $temp_0'$1_pool_u64_Pool' == $temp_0'$1_pool_u64_Pool'; + + // $t34 := get_field.commission_percentage($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:596:63+38 + assume {:print "$at(133,28398,28436)"} true; + $t34 := $commission_percentage#$1_staking_contract_StakingContract($Dereference($t2)); + + // staking_contract::update_distribution_pool($t33, $t28, $t1, $t34) on_abort goto L11 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:595:9+127 + assume {:print "$at(133,28310,28437)"} true; + call $t33 := $1_staking_contract_update_distribution_pool($t33, $t28, $t1, $t34); + if ($abort_flag) { + assume {:print "$at(133,28310,28437)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(56,8):", $t23} $t23 == $t23; + goto L11; + } + + // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 + assume {:print "$at(133,28544,28561)"} true; +L5: + + // $t6 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 + assume {:print "$at(133,28544,28561)"} true; + havoc $t6; + + // assume WellFormed($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 + assume $IsValid'$1_coin_Coin'$1_aptos_coin_AptosCoin''($t6); + + // $t14 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 + havoc $t14; + + // assume WellFormed($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 + assume $IsValid'vec'address''($t14); + + // $t35 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 + havoc $t35; + + // assume And(WellFormed($t35), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares($t35), addr), vector::spec_contains
(select pool_u64::Pool.shareholders($t35), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders($t35))), j: Range(0, Len
(select pool_u64::Pool.shareholders($t35))): Implies(Eq
(Index(select pool_u64::Pool.shareholders($t35), i), Index(select pool_u64::Pool.shareholders($t35), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 + assume ($IsValid'$1_pool_u64_Pool'($t35) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($t35), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($t35), addr)))) && (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($t35))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($t35))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; + (var j := $i_3; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($t35), i), ReadVec($shareholders#$1_pool_u64_Pool($t35), j)) ==> $IsEqual'num'(i, j)))))))))); + + // $t36 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 + havoc $t36; + + // assume WellFormed($t36) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 + assume $IsValid'u64'($t36); + + // $t37 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 + havoc $t37; + + // assume WellFormed($t37) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 + assume $IsValid'u64'($t37); + + // $t38 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 + havoc $t38; + + // assume WellFormed($t38) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 + assume $IsValid'bool'($t38); + + // $t39 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 + havoc $t39; + + // assume And(WellFormed($t39), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares($t39), addr), vector::spec_contains
(select pool_u64::Pool.shareholders($t39), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders($t39))), j: Range(0, Len
(select pool_u64::Pool.shareholders($t39))): Implies(Eq
(Index(select pool_u64::Pool.shareholders($t39), i), Index(select pool_u64::Pool.shareholders($t39), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 + assume ($IsValid'$1_pool_u64_Pool'($t39) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($t39), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($t39), addr)))) && (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($t39))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($t39))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; + (var j := $i_3; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($t39), i), ReadVec($shareholders#$1_pool_u64_Pool($t39), j)) ==> $IsEqual'num'(i, j)))))))))); + + // $t40 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 + havoc $t40; + + // assume WellFormed($t40) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 + assume $IsValid'vec'address''($t40); + + // $t41 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 + havoc $t41; + + // assume WellFormed($t41) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 + assume $IsValid'u64'($t41); + + // $t42 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 + havoc $t42; + + // assume WellFormed($t42) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 + assume $IsValid'address'($t42); + + // $t43 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 + havoc $t43; + + // assume And(WellFormed($t43), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares($t43), addr), vector::spec_contains
(select pool_u64::Pool.shareholders($t43), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders($t43))), j: Range(0, Len
(select pool_u64::Pool.shareholders($t43))): Implies(Eq
(Index(select pool_u64::Pool.shareholders($t43), i), Index(select pool_u64::Pool.shareholders($t43), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 + assume ($IsValid'$1_pool_u64_Pool'($t43) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($t43), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($t43), addr)))) && (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($t43))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($t43))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; + (var j := $i_3; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($t43), i), ReadVec($shareholders#$1_pool_u64_Pool($t43), j)) ==> $IsEqual'num'(i, j)))))))))); + + // $t44 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 + havoc $t44; + + // assume WellFormed($t44) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 + assume $IsValid'u64'($t44); + + // $t45 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 + havoc $t45; + + // assume WellFormed($t45) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 + assume $IsValid'u64'($t45); + + // $t46 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 + havoc $t46; + + // assume WellFormed($t46) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 + assume $IsValid'$1_coin_Coin'$1_aptos_coin_AptosCoin''($t46); + + // $t47 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 + havoc $t47; + + // assume WellFormed($t47) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 + assume $IsValid'$1_staking_contract_DistributeEvent'($t47); + + // $t3 := havoc[mut]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 + havoc $temp_0'$1_event_EventHandle'$1_staking_contract_DistributeEvent''; + $t3 := $UpdateMutation($t3, $temp_0'$1_event_EventHandle'$1_staking_contract_DistributeEvent''); + + // assume WellFormed($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 + assume $IsValid'$1_event_EventHandle'$1_staking_contract_DistributeEvent''($Dereference($t3)); + + // $t33 := havoc[mut]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 + havoc $temp_0'$1_pool_u64_Pool'; + $t33 := $UpdateMutation($t33, $temp_0'$1_pool_u64_Pool'); + + // assume And(WellFormed($t33), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares($t33), addr), vector::spec_contains
(select pool_u64::Pool.shareholders($t33), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders($t33))), j: Range(0, Len
(select pool_u64::Pool.shareholders($t33))): Implies(Eq
(Index(select pool_u64::Pool.shareholders($t33), i), Index(select pool_u64::Pool.shareholders($t33), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 + assume ($IsValid'$1_pool_u64_Pool'($Dereference($t33)) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($Dereference($t33)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($Dereference($t33)), addr)))) && (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($Dereference($t33)))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($Dereference($t33)))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; + (var j := $i_3; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($Dereference($t33)), i), ReadVec($shareholders#$1_pool_u64_Pool($Dereference($t33)), j)) ==> $IsEqual'num'(i, j)))))))))); + + // $t48 := havoc[mut_all]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 + havoc $t48; + + // assume WellFormed($t48) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 + assume $IsValid'vec'address''($Dereference($t48)); + + // $t49 := havoc[mut_all]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 + havoc $t49; + + // assume WellFormed($t49) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 + assume $IsValid'$1_coin_Coin'$1_aptos_coin_AptosCoin''($Dereference($t49)); + + // trace_local[distribute_events]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 + assume {:print "$info(): enter loop, variable(s) distribute_events, coins, recipients havocked and reassigned"} true; + $temp_0'$1_event_EventHandle'$1_staking_contract_DistributeEvent'' := $Dereference($t3); + assume {:print "$track_local(56,8,3):", $temp_0'$1_event_EventHandle'$1_staking_contract_DistributeEvent''} $temp_0'$1_event_EventHandle'$1_staking_contract_DistributeEvent'' == $temp_0'$1_event_EventHandle'$1_staking_contract_DistributeEvent''; + + // trace_local[coins]($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 + assume {:print "$track_local(56,8,6):", $t6} $t6 == $t6; + + // trace_local[recipients]($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 + assume {:print "$track_local(56,8,14):", $t14} $t14 == $t14; + + // assume Not(AbortFlag()) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 + assume !$abort_flag; + + // $t35 := read_ref($t33) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 + $t35 := $Dereference($t33); + + // $t36 := pool_u64::shareholders_count($t35) on_abort goto L11 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:16+47 + call $t36 := $1_pool_u64_shareholders_count($t35); + if ($abort_flag) { + assume {:print "$at(133,28515,28562)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(56,8):", $t23} $t23 == $t23; + goto L11; + } + + // $t37 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:66+1 + $t37 := 0; + assume $IsValid'u64'($t37); + + // $t38 := >($t36, $t37) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:64+1 + call $t38 := $Gt($t36, $t37); + + // if ($t38) goto L13 else goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:9+661 + if ($t38) { goto L13; } else { goto L2; } + + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:9+661 +L3: + + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:600:53+17 + assume {:print "$at(133,28622,28639)"} true; +L4: + + // $t39 := read_ref($t33) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:600:53+17 + assume {:print "$at(133,28622,28639)"} true; + $t39 := $Dereference($t33); + + // $t14 := pool_u64::shareholders($t39) on_abort goto L11 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:600:30+41 + call $t14 := $1_pool_u64_shareholders($t39); + if ($abort_flag) { + assume {:print "$at(133,28599,28640)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(56,8):", $t23} $t23 == $t23; + goto L11; + } + + // trace_local[recipients]($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:600:17+10 + assume {:print "$track_local(56,8,14):", $t14} $t14 == $t14; + + // $t48 := borrow_local($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:601:45+15 + assume {:print "$at(133,28686,28701)"} true; + $t48 := $Mutation($Local(14), EmptyVec(), $t14); + + // $t40 := read_ref($t48) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:601:44+20 + $t40 := $Dereference($t48); + + // trace_local[recipients]($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:601:44+20 + assume {:print "$track_local(56,8,14):", $t14} $t14 == $t14; + + // $t41 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:601:62+1 + $t41 := 0; + assume $IsValid'u64'($t41); + + // $t42 := vector::borrow
($t40, $t41) on_abort goto L11 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:601:30+34 + call $t42 := $1_vector_borrow'address'($t40, $t41); + if ($abort_flag) { + assume {:print "$at(133,28671,28705)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(56,8):", $t23} $t23 == $t23; + goto L11; + } + + // trace_local[recipient]($t42) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:601:17+9 + assume {:print "$track_local(56,8,13):", $t42} $t42 == $t42; + + // $t43 := read_ref($t33) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:602:50+30 + assume {:print "$at(133,28756,28786)"} true; + $t43 := $Dereference($t33); + + // $t44 := pool_u64::shares($t43, $t42) on_abort goto L11 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:602:34+46 + call $t44 := $1_pool_u64_shares($t43, $t42); + if ($abort_flag) { + assume {:print "$at(133,28740,28786)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(56,8):", $t23} $t23 == $t23; + goto L11; + } + + // trace_local[current_shares]($t44) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:602:17+14 + assume {:print "$track_local(56,8,7):", $t44} $t44 == $t44; + + // assume Identical($t50, pool_u64::spec_shares_to_amount_with_total_coins($t33, $t44, select pool_u64::Pool.total_coins($t33))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:145:9+102 + assume {:print "$at(59,5992,6094)"} true; + assume ($t50 == $1_pool_u64_spec_shares_to_amount_with_total_coins($Dereference($t33), $t44, $total_coins#$1_pool_u64_Pool($Dereference($t33)))); + + // assume Identical($t51, Sub(simple_map::spec_get(select pool_u64::Pool.shares($t33), $t42), $t44)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:181:9+83 + assume {:print "$at(59,7643,7726)"} true; + assume ($t51 == ($1_simple_map_spec_get'address_u64'($shares#$1_pool_u64_Pool($Dereference($t33)), $t42) - $t44)); + + // $t45 := pool_u64::redeem_shares($t33, $t42, $t44) on_abort goto L11 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:603:40+69 + assume {:print "$at(133,28827,28896)"} true; + call $t45,$t33 := $1_pool_u64_redeem_shares($t33, $t42, $t44); + if ($abort_flag) { + assume {:print "$at(133,28827,28896)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(56,8):", $t23} $t23 == $t23; + goto L11; + } + + // trace_local[amount_to_distribute]($t45) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:603:17+20 + assume {:print "$track_local(56,8,5):", $t45} $t45 == $t45; + + // $t49 := borrow_local($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:604:52+10 + assume {:print "$at(133,28949,28959)"} true; + $t49 := $Mutation($Local(6), EmptyVec(), $t6); + + // assume Identical($t52, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + assume {:print "$at(95,1664,1763)"} true; + assume ($t52 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + + // $t46 := coin::extract($t49, $t45) on_abort goto L11 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:604:38+47 + assume {:print "$at(133,28935,28982)"} true; + call $t46,$t49 := $1_coin_extract'$1_aptos_coin_AptosCoin'($t49, $t45); + if ($abort_flag) { + assume {:print "$at(133,28935,28982)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(56,8):", $t23} $t23 == $t23; + goto L11; + } + + // write_back[LocalRoot($t6)@]($t49) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:604:38+47 + $t6 := $Dereference($t49); + + // trace_local[coins]($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:604:38+47 + assume {:print "$track_local(56,8,6):", $t6} $t6 == $t6; + + // assume Identical($t53, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + assume {:print "$at(95,1664,1763)"} true; + assume ($t53 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + + // coin::deposit($t42, $t46) on_abort goto L11 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:604:13+73 + assume {:print "$at(133,28910,28983)"} true; + call $1_coin_deposit'$1_aptos_coin_AptosCoin'($t42, $t46); + if ($abort_flag) { + assume {:print "$at(133,28910,28983)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(56,8):", $t23} $t23 == $t23; + goto L11; + } + + // $t47 := pack staking_contract::DistributeEvent($t1, $t18, $t42, $t45) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:608:17+83 + assume {:print "$at(133,29061,29144)"} true; + $t47 := $1_staking_contract_DistributeEvent($t1, $t18, $t42, $t45); + + // opaque begin: event::emit_event($t3, $t47) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:606:13+160 + assume {:print "$at(133,28998,29158)"} true; + + // opaque end: event::emit_event($t3, $t47) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:606:13+160 + + // goto L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:609:14+1 + assume {:print "$at(133,29158,29159)"} true; + goto L9; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:613:9+202 + assume {:print "$at(133,29251,29453)"} true; +L2: + + // destroy($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:613:9+202 + assume {:print "$at(133,29251,29453)"} true; + + // $t54 := copy($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:613:25+6 + $t54 := $t6; + + // assume Identical($t55, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + assume {:print "$at(95,1664,1763)"} true; + assume ($t55 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + + // $t56 := coin::value($t54) on_abort goto L11 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:613:13+19 + assume {:print "$at(133,29255,29274)"} true; + call $t56 := $1_coin_value'$1_aptos_coin_AptosCoin'($t54); + if ($abort_flag) { + assume {:print "$at(133,29255,29274)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(56,8):", $t23} $t23 == $t23; + goto L11; + } + + // $t57 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:613:35+1 + $t57 := 0; + assume $IsValid'u64'($t57); + + // $t58 := >($t56, $t57) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:613:33+1 + call $t58 := $Gt($t56, $t57); + + // if ($t58) goto L7 else goto L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:613:9+202 + if ($t58) { goto L7; } else { goto L6; } + + // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:614:27+6 + assume {:print "$at(133,29308,29314)"} true; +L7: + + // $t59 := move($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:614:35+5 + assume {:print "$at(133,29316,29321)"} true; + $t59 := $t6; + + // assume Identical($t60, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + assume {:print "$at(95,1664,1763)"} true; + assume ($t60 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + + // coin::deposit($t0, $t59) on_abort goto L11 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:614:13+28 + assume {:print "$at(133,29294,29322)"} true; + call $1_coin_deposit'$1_aptos_coin_AptosCoin'($t0, $t59); + if ($abort_flag) { + assume {:print "$at(133,29294,29322)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(56,8):", $t23} $t23 == $t23; + goto L11; + } + + // $t61 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:615:61+1 + assume {:print "$at(133,29384,29385)"} true; + $t61 := 0; + assume $IsValid'u64'($t61); + + // pool_u64::update_total_coins($t33, $t61) on_abort goto L11 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:615:13+50 + call $t33 := $1_pool_u64_update_total_coins($t33, $t61); + if ($abort_flag) { + assume {:print "$at(133,29336,29386)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(56,8):", $t23} $t23 == $t23; + goto L11; + } + + // write_back[Reference($t2).distribution_pool (pool_u64::Pool)]($t33) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:615:13+50 + $t2 := $UpdateMutation($t2, $Update'$1_staking_contract_StakingContract'_distribution_pool($Dereference($t2), $Dereference($t33))); + + // trace_local[staking_contract]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:615:13+50 + $temp_0'$1_staking_contract_StakingContract' := $Dereference($t2); + assume {:print "$track_local(56,8,2):", $temp_0'$1_staking_contract_StakingContract'} $temp_0'$1_staking_contract_StakingContract' == $temp_0'$1_staking_contract_StakingContract'; + + // goto L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:613:9+202 + assume {:print "$at(133,29251,29453)"} true; + goto L8; + + // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:617:13+25 + assume {:print "$at(133,29417,29442)"} true; +L6: + + // write_back[Reference($t2).distribution_pool (pool_u64::Pool)]($t33) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:617:13+25 + assume {:print "$at(133,29417,29442)"} true; + $t2 := $UpdateMutation($t2, $Update'$1_staking_contract_StakingContract'_distribution_pool($Dereference($t2), $Dereference($t33))); + + // trace_local[staking_contract]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:617:13+25 + $temp_0'$1_staking_contract_StakingContract' := $Dereference($t2); + assume {:print "$track_local(56,8,2):", $temp_0'$1_staking_contract_StakingContract'} $temp_0'$1_staking_contract_StakingContract' == $temp_0'$1_staking_contract_StakingContract'; + + // destroy($t33) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:617:13+25 + + // $t62 := move($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:617:32+5 + $t62 := $t6; + + // assume Identical($t63, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + assume {:print "$at(95,1664,1763)"} true; + assume ($t63 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + + // coin::destroy_zero($t62) on_abort goto L11 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:617:13+25 + assume {:print "$at(133,29417,29442)"} true; + call $1_coin_destroy_zero'$1_aptos_coin_AptosCoin'($t62); + if ($abort_flag) { + assume {:print "$at(133,29417,29442)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(56,8):", $t23} $t23 == $t23; + goto L11; + } + + // label L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:613:9+202 + assume {:print "$at(133,29251,29453)"} true; +L8: + + // trace_local[staking_contract]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:613:9+202 + assume {:print "$at(133,29251,29453)"} true; + $temp_0'$1_staking_contract_StakingContract' := $Dereference($t2); + assume {:print "$track_local(56,8,2):", $temp_0'$1_staking_contract_StakingContract'} $temp_0'$1_staking_contract_StakingContract' == $temp_0'$1_staking_contract_StakingContract'; + + // pack_ref_deep($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:613:9+202 + + // trace_local[distribute_events]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:613:9+202 + $temp_0'$1_event_EventHandle'$1_staking_contract_DistributeEvent'' := $Dereference($t3); + assume {:print "$track_local(56,8,3):", $temp_0'$1_event_EventHandle'$1_staking_contract_DistributeEvent''} $temp_0'$1_event_EventHandle'$1_staking_contract_DistributeEvent'' == $temp_0'$1_event_EventHandle'$1_staking_contract_DistributeEvent''; + + // goto L10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:613:9+202 + goto L10; + + // label L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:613:9+202 + // Loop invariant checking block for the loop started with header: L5 +L9: + + // stop() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:613:9+202 + assume {:print "$at(133,29251,29453)"} true; + assume false; + return; + + // label L10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:619:5+1 + assume {:print "$at(133,29458,29459)"} true; +L10: + + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:619:5+1 + assume {:print "$at(133,29458,29459)"} true; + $ret0 := $t2; + $ret1 := $t3; + return; + + // label L11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:619:5+1 +L11: + + // abort($t23) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:619:5+1 + assume {:print "$at(133,29458,29459)"} true; + $abort_code := $t23; + $abort_flag := true; + return; + + // label L12 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L12: + + // destroy($t3) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L0 at :1:1+10 + goto L0; + + // label L13 at :1:1+10 +L13: + + // destroy($t2) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L3 at :1:1+10 + goto L3; + +} + +// fun staking_contract::get_staking_contract_amounts_internal [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:653:5+869 +procedure {:inline 1} $1_staking_contract_get_staking_contract_amounts_internal(_$t0: $1_staking_contract_StakingContract) returns ($ret0: int, $ret1: int, $ret2: int) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: $1_stake_StakePool; + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: int; + var $t12: int; + var $t13: int; + var $t14: int; + var $t15: int; + var $t16: int; + var $t17: int; + var $t18: int; + var $t19: int; + var $t20: int; + var $t21: int; + var $t22: int; + var $t23: int; + var $t0: $1_staking_contract_StakingContract; + var $temp_0'$1_staking_contract_StakingContract': $1_staking_contract_StakingContract; + var $temp_0'u64': int; + $t0 := _$t0; + + // bytecode translation starts here + // assume Identical($t5, select staking_contract::StakingContract.pool_address($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:299:9+49 + assume {:print "$at(134,12621,12670)"} true; + assume ($t5 == $pool_address#$1_staking_contract_StakingContract($t0)); + + // assume Identical($t6, global($t5)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:300:9+56 + assume {:print "$at(134,12679,12735)"} true; + assume ($t6 == $ResourceValue($1_stake_StakePool_$memory, $t5)); + + // assume Identical($t7, coin::$value(select stake::StakePool.active($t6))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:301:9+44 + assume {:print "$at(134,12744,12788)"} true; + assume ($t7 == $1_coin_$value'$1_aptos_coin_AptosCoin'($active#$1_stake_StakePool($t6))); + + // assume Identical($t8, coin::$value(select stake::StakePool.pending_active($t6))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:302:9+60 + assume {:print "$at(134,12797,12857)"} true; + assume ($t8 == $1_coin_$value'$1_aptos_coin_AptosCoin'($pending_active#$1_stake_StakePool($t6))); + + // assume Identical($t9, Add($t7, $t8)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:303:9+49 + assume {:print "$at(134,12866,12915)"} true; + assume ($t9 == ($t7 + $t8)); + + // assume Identical($t10, Sub($t9, select staking_contract::StakingContract.principal($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:304:9+74 + assume {:print "$at(134,12924,12998)"} true; + assume ($t10 == ($t9 - $principal#$1_staking_contract_StakingContract($t0))); + + // trace_local[staking_contract]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:653:5+1 + assume {:print "$at(133,31011,31012)"} true; + assume {:print "$track_local(56,9,0):", $t0} $t0 == $t0; + + // $t11 := get_field.pool_address($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:658:63+29 + assume {:print "$at(133,31532,31561)"} true; + $t11 := $pool_address#$1_staking_contract_StakingContract($t0); + + // ($t12, $t13, $t14, $t15) := stake::get_stake($t11) on_abort goto L2 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:658:46+47 + call $t12,$t13,$t14,$t15 := $1_stake_get_stake($t11); + if ($abort_flag) { + assume {:print "$at(133,31515,31562)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(56,9):", $t16} $t16 == $t16; + goto L2; + } + + // destroy($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:658:41+1 + + // trace_local[pending_active]($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:658:25+14 + assume {:print "$track_local(56,9,3):", $t14} $t14 == $t14; + + // destroy($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:658:22+1 + + // $t17 := +($t12, $t14) on_abort goto L2 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:659:41+1 + assume {:print "$at(133,31604,31605)"} true; + call $t17 := $AddU64($t12, $t14); + if ($abort_flag) { + assume {:print "$at(133,31604,31605)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(56,9):", $t16} $t16 == $t16; + goto L2; + } + + // trace_local[total_active_stake]($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:659:13+18 + assume {:print "$track_local(56,9,4):", $t17} $t17 == $t17; + + // $t18 := get_field.principal($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:660:56+26 + assume {:print "$at(133,31677,31703)"} true; + $t18 := $principal#$1_staking_contract_StakingContract($t0); + + // $t19 := -($t17, $t18) on_abort goto L2 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:660:54+1 + call $t19 := $Sub($t17, $t18); + if ($abort_flag) { + assume {:print "$at(133,31675,31676)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(56,9):", $t16} $t16 == $t16; + goto L2; + } + + // trace_local[accumulated_rewards]($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:660:13+19 + assume {:print "$track_local(56,9,1):", $t19} $t19 == $t19; + + // $t20 := get_field.commission_percentage($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:661:55+38 + assume {:print "$at(133,31759,31797)"} true; + $t20 := $commission_percentage#$1_staking_contract_StakingContract($t0); + + // $t21 := *($t19, $t20) on_abort goto L2 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:661:53+1 + call $t21 := $MulU64($t19, $t20); + if ($abort_flag) { + assume {:print "$at(133,31757,31758)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(56,9):", $t16} $t16 == $t16; + goto L2; + } + + // $t22 := 100 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:661:96+3 + $t22 := 100; + assume $IsValid'u64'($t22); + + // $t23 := /($t21, $t22) on_abort goto L2 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:661:94+1 + call $t23 := $Div($t21, $t22); + if ($abort_flag) { + assume {:print "$at(133,31798,31799)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(56,9):", $t16} $t16 == $t16; + goto L2; + } + + // trace_local[commission_amount]($t23) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:661:13+17 + assume {:print "$track_local(56,9,2):", $t23} $t23 == $t23; + + // trace_return[0]($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:663:9+60 + assume {:print "$at(133,31814,31874)"} true; + assume {:print "$track_return(56,9,0):", $t17} $t17 == $t17; + + // trace_return[1]($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:663:9+60 + assume {:print "$track_return(56,9,1):", $t19} $t19 == $t19; + + // trace_return[2]($t23) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:663:9+60 + assume {:print "$track_return(56,9,2):", $t23} $t23 == $t23; + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:664:5+1 + assume {:print "$at(133,31879,31880)"} true; +L1: + + // return ($t17, $t19, $t23) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:664:5+1 + assume {:print "$at(133,31879,31880)"} true; + $ret0 := $t17; + $ret1 := $t19; + $ret2 := $t23; + return; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:664:5+1 +L2: + + // abort($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:664:5+1 + assume {:print "$at(133,31879,31880)"} true; + $abort_code := $t16; + $abort_flag := true; + return; + +} + +// fun staking_contract::request_commission_internal [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:422:5+1338 +procedure {:inline 1} $1_staking_contract_request_commission_internal(_$t0: int, _$t1: $Mutation ($1_staking_contract_StakingContract), _$t2: $Mutation ($1_event_EventHandle'$1_staking_contract_AddDistributionEvent'), _$t3: $Mutation ($1_event_EventHandle'$1_staking_contract_RequestCommissionEvent')) returns ($ret0: int, $ret1: $Mutation ($1_staking_contract_StakingContract), $ret2: $Mutation ($1_event_EventHandle'$1_staking_contract_AddDistributionEvent'), $ret3: $Mutation ($1_event_EventHandle'$1_staking_contract_RequestCommissionEvent')) +{ + // declare local variables + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: $1_stake_StakePool; + var $t9: int; + var $t10: int; + var $t11: int; + var $t12: int; + var $t13: $1_staking_contract_StakingContract; + var $t14: int; + var $t15: $1_stake_StakePool; + var $t16: int; + var $t17: int; + var $t18: int; + var $t19: int; + var $t20: int; + var $t21: int; + var $t22: int; + var $t23: int; + var $t24: int; + var $t25: $Mutation (int); + var $t26: int; + var $t27: bool; + var $t28: int; + var $t29: int; + var $t30: $1_stake_OwnerCapability; + var $t31: int; + var $t32: $1_stake_StakePool; + var $t33: int; + var $t34: int; + var $t35: $1_staking_contract_RequestCommissionEvent; + var $t0: int; + var $t1: $Mutation ($1_staking_contract_StakingContract); + var $t2: $Mutation ($1_event_EventHandle'$1_staking_contract_AddDistributionEvent'); + var $t3: $Mutation ($1_event_EventHandle'$1_staking_contract_RequestCommissionEvent'); + var $temp_0'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent'': $1_event_EventHandle'$1_staking_contract_AddDistributionEvent'; + var $temp_0'$1_event_EventHandle'$1_staking_contract_RequestCommissionEvent'': $1_event_EventHandle'$1_staking_contract_RequestCommissionEvent'; + var $temp_0'$1_staking_contract_StakingContract': $1_staking_contract_StakingContract; + var $temp_0'address': int; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + + // bytecode translation starts here + // assume Identical($t7, select staking_contract::StakingContract.pool_address($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:299:9+49 + assume {:print "$at(134,12621,12670)"} true; + assume ($t7 == $pool_address#$1_staking_contract_StakingContract($Dereference($t1))); + + // assume Identical($t8, global($t7)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:300:9+56 + assume {:print "$at(134,12679,12735)"} true; + assume ($t8 == $ResourceValue($1_stake_StakePool_$memory, $t7)); + + // assume Identical($t9, coin::$value(select stake::StakePool.active($t8))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:301:9+44 + assume {:print "$at(134,12744,12788)"} true; + assume ($t9 == $1_coin_$value'$1_aptos_coin_AptosCoin'($active#$1_stake_StakePool($t8))); + + // assume Identical($t10, coin::$value(select stake::StakePool.pending_active($t8))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:302:9+60 + assume {:print "$at(134,12797,12857)"} true; + assume ($t10 == $1_coin_$value'$1_aptos_coin_AptosCoin'($pending_active#$1_stake_StakePool($t8))); + + // assume Identical($t11, Add($t9, $t10)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:303:9+49 + assume {:print "$at(134,12866,12915)"} true; + assume ($t11 == ($t9 + $t10)); + + // assume Identical($t12, Sub($t11, select staking_contract::StakingContract.principal($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:304:9+74 + assume {:print "$at(134,12924,12998)"} true; + assume ($t12 == ($t11 - $principal#$1_staking_contract_StakingContract($Dereference($t1)))); + + // trace_local[operator]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:422:5+1 + assume {:print "$at(133,20130,20131)"} true; + assume {:print "$track_local(56,14,0):", $t0} $t0 == $t0; + + // trace_local[staking_contract]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:422:5+1 + $temp_0'$1_staking_contract_StakingContract' := $Dereference($t1); + assume {:print "$track_local(56,14,1):", $temp_0'$1_staking_contract_StakingContract'} $temp_0'$1_staking_contract_StakingContract' == $temp_0'$1_staking_contract_StakingContract'; + + // trace_local[add_distribution_events]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:422:5+1 + $temp_0'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent'' := $Dereference($t2); + assume {:print "$track_local(56,14,2):", $temp_0'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent''} $temp_0'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent'' == $temp_0'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent''; + + // trace_local[request_commission_events]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:422:5+1 + $temp_0'$1_event_EventHandle'$1_staking_contract_RequestCommissionEvent'' := $Dereference($t3); + assume {:print "$track_local(56,14,3):", $temp_0'$1_event_EventHandle'$1_staking_contract_RequestCommissionEvent''} $temp_0'$1_event_EventHandle'$1_staking_contract_RequestCommissionEvent'' == $temp_0'$1_event_EventHandle'$1_staking_contract_RequestCommissionEvent''; + + // $t13 := read_ref($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:430:51+16 + assume {:print "$at(133,20593,20609)"} true; + $t13 := $Dereference($t1); + + // assume Identical($t14, select staking_contract::StakingContract.pool_address($t13)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:299:9+49 + assume {:print "$at(134,12621,12670)"} true; + assume ($t14 == $pool_address#$1_staking_contract_StakingContract($t13)); + + // assume Identical($t15, global($t14)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:300:9+56 + assume {:print "$at(134,12679,12735)"} true; + assume ($t15 == $ResourceValue($1_stake_StakePool_$memory, $t14)); + + // assume Identical($t16, coin::$value(select stake::StakePool.active($t15))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:301:9+44 + assume {:print "$at(134,12744,12788)"} true; + assume ($t16 == $1_coin_$value'$1_aptos_coin_AptosCoin'($active#$1_stake_StakePool($t15))); + + // assume Identical($t17, coin::$value(select stake::StakePool.pending_active($t15))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:302:9+60 + assume {:print "$at(134,12797,12857)"} true; + assume ($t17 == $1_coin_$value'$1_aptos_coin_AptosCoin'($pending_active#$1_stake_StakePool($t15))); + + // assume Identical($t18, Add($t16, $t17)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:303:9+49 + assume {:print "$at(134,12866,12915)"} true; + assume ($t18 == ($t16 + $t17)); + + // assume Identical($t19, Sub($t18, select staking_contract::StakingContract.principal($t13))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:304:9+74 + assume {:print "$at(134,12924,12998)"} true; + assume ($t19 == ($t18 - $principal#$1_staking_contract_StakingContract($t13))); + + // ($t20, $t21, $t22) := staking_contract::get_staking_contract_amounts_internal($t13) on_abort goto L3 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:430:13+55 + assume {:print "$at(133,20555,20610)"} true; + call $t20,$t21,$t22 := $1_staking_contract_get_staking_contract_amounts_internal($t13); + if ($abort_flag) { + assume {:print "$at(133,20555,20610)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(56,14):", $t23} $t23 == $t23; + goto L3; + } + + // trace_local[commission_amount]($t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:429:55+17 + assume {:print "$at(133,20522,20539)"} true; + assume {:print "$track_local(56,14,5):", $t22} $t22 == $t22; + + // trace_local[accumulated_rewards]($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:429:34+19 + assume {:print "$track_local(56,14,4):", $t21} $t21 == $t21; + + // $t24 := -($t20, $t22) on_abort goto L3 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:431:57+1 + assume {:print "$at(133,20668,20669)"} true; + call $t24 := $Sub($t20, $t22); + if ($abort_flag) { + assume {:print "$at(133,20668,20669)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(56,14):", $t23} $t23 == $t23; + goto L3; + } + + // $t25 := borrow_field.principal($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:431:9+26 + $t25 := $ChildMutation($t1, 0, $principal#$1_staking_contract_StakingContract($Dereference($t1))); + + // write_ref($t25, $t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:431:9+67 + $t25 := $UpdateMutation($t25, $t24); + + // write_back[Reference($t1).principal (u64)]($t25) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:431:9+67 + $t1 := $UpdateMutation($t1, $Update'$1_staking_contract_StakingContract'_principal($Dereference($t1), $Dereference($t25))); + + // trace_local[staking_contract]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:431:9+67 + $temp_0'$1_staking_contract_StakingContract' := $Dereference($t1); + assume {:print "$track_local(56,14,1):", $temp_0'$1_staking_contract_StakingContract'} $temp_0'$1_staking_contract_StakingContract' == $temp_0'$1_staking_contract_StakingContract'; + + // $t26 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:434:34+1 + assume {:print "$at(133,20781,20782)"} true; + $t26 := 0; + assume $IsValid'u64'($t26); + + // $t27 := ==($t22, $t26) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:434:31+2 + $t27 := $IsEqual'u64'($t22, $t26); + + // if ($t27) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:434:9+60 + if ($t27) { goto L1; } else { goto L0; } + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:435:13+8 + assume {:print "$at(133,20798,20806)"} true; +L1: + + // destroy($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:435:13+8 + assume {:print "$at(133,20798,20806)"} true; + + // destroy($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:435:13+8 + + // destroy($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:435:13+8 + + // $t28 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:435:20+1 + $t28 := 0; + assume $IsValid'u64'($t28); + + // trace_return[0]($t28) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:435:13+8 + assume {:print "$track_return(56,14,0):", $t28} $t28 == $t28; + + // trace_local[staking_contract]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:435:13+8 + $temp_0'$1_staking_contract_StakingContract' := $Dereference($t1); + assume {:print "$track_local(56,14,1):", $temp_0'$1_staking_contract_StakingContract'} $temp_0'$1_staking_contract_StakingContract' == $temp_0'$1_staking_contract_StakingContract'; + + // pack_ref_deep($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:435:13+8 + + // trace_local[add_distribution_events]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:435:13+8 + $temp_0'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent'' := $Dereference($t2); + assume {:print "$track_local(56,14,2):", $temp_0'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent''} $temp_0'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent'' == $temp_0'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent''; + + // trace_local[request_commission_events]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:435:13+8 + $temp_0'$1_event_EventHandle'$1_staking_contract_RequestCommissionEvent'' := $Dereference($t3); + assume {:print "$track_local(56,14,3):", $temp_0'$1_event_EventHandle'$1_staking_contract_RequestCommissionEvent''} $temp_0'$1_event_EventHandle'$1_staking_contract_RequestCommissionEvent'' == $temp_0'$1_event_EventHandle'$1_staking_contract_RequestCommissionEvent''; + + // $t29 := move($t28) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:435:13+8 + $t29 := $t28; + + // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:435:13+8 + goto L2; + + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:439:26+8 + assume {:print "$at(133,20892,20900)"} true; +L0: + + // staking_contract::add_distribution($t0, $t1, $t0, $t22, $t2) on_abort goto L3 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:439:9+98 + assume {:print "$at(133,20875,20973)"} true; + call $t1,$t2 := $1_staking_contract_add_distribution($t0, $t1, $t0, $t22, $t2); + if ($abort_flag) { + assume {:print "$at(133,20875,20973)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(56,14):", $t23} $t23 == $t23; + goto L3; + } + + // $t30 := get_field.owner_cap($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:443:51+27 + assume {:print "$at(133,21174,21201)"} true; + $t30 := $owner_cap#$1_staking_contract_StakingContract($Dereference($t1)); + + // assume Identical($t31, select stake::OwnerCapability.pool_address($t30)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:56:9+42 + assume {:print "$at(132,2499,2541)"} true; + assume ($t31 == $pool_address#$1_stake_OwnerCapability($t30)); + + // assume Identical($t32, global($t31)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:57:9+53 + assume {:print "$at(132,2550,2603)"} true; + assume ($t32 == $ResourceValue($1_stake_StakePool_$memory, $t31)); + + // assume Identical($t33, math64::$min($t22, select coin::Coin.value(select stake::StakePool.active($t32)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:60:9+76 + assume {:print "$at(132,2725,2801)"} true; + assume ($t33 == $1_math64_$min($t22, $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($active#$1_stake_StakePool($t32)))); + + // stake::unlock_with_cap($t22, $t30) on_abort goto L3 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:443:9+70 + assume {:print "$at(133,21132,21202)"} true; + call $1_stake_unlock_with_cap($t22, $t30); + if ($abort_flag) { + assume {:print "$at(133,21132,21202)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(56,14):", $t23} $t23 == $t23; + goto L3; + } + + // $t34 := get_field.pool_address($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:445:28+29 + assume {:print "$at(133,21232,21261)"} true; + $t34 := $pool_address#$1_staking_contract_StakingContract($Dereference($t1)); + + // trace_local[pool_address]($t34) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:445:13+12 + assume {:print "$track_local(56,14,6):", $t34} $t34 == $t34; + + // $t35 := pack staking_contract::RequestCommissionEvent($t0, $t34, $t21, $t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:448:13+89 + assume {:print "$at(133,21334,21423)"} true; + $t35 := $1_staking_contract_RequestCommissionEvent($t0, $t34, $t21, $t22); + + // opaque begin: event::emit_event($t3, $t35) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:446:9+163 + assume {:print "$at(133,21271,21434)"} true; + + // opaque end: event::emit_event($t3, $t35) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:446:9+163 + + // trace_return[0]($t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:451:9+17 + assume {:print "$at(133,21445,21462)"} true; + assume {:print "$track_return(56,14,0):", $t22} $t22 == $t22; + + // trace_local[staking_contract]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:451:9+17 + $temp_0'$1_staking_contract_StakingContract' := $Dereference($t1); + assume {:print "$track_local(56,14,1):", $temp_0'$1_staking_contract_StakingContract'} $temp_0'$1_staking_contract_StakingContract' == $temp_0'$1_staking_contract_StakingContract'; + + // pack_ref_deep($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:451:9+17 + + // trace_local[add_distribution_events]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:451:9+17 + $temp_0'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent'' := $Dereference($t2); + assume {:print "$track_local(56,14,2):", $temp_0'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent''} $temp_0'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent'' == $temp_0'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent''; + + // trace_local[request_commission_events]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:451:9+17 + $temp_0'$1_event_EventHandle'$1_staking_contract_RequestCommissionEvent'' := $Dereference($t3); + assume {:print "$track_local(56,14,3):", $temp_0'$1_event_EventHandle'$1_staking_contract_RequestCommissionEvent''} $temp_0'$1_event_EventHandle'$1_staking_contract_RequestCommissionEvent'' == $temp_0'$1_event_EventHandle'$1_staking_contract_RequestCommissionEvent''; + + // $t29 := move($t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:451:9+17 + $t29 := $t22; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:452:5+1 + assume {:print "$at(133,21467,21468)"} true; +L2: + + // return $t29 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:452:5+1 + assume {:print "$at(133,21467,21468)"} true; + $ret0 := $t29; + $ret1 := $t1; + $ret2 := $t2; + $ret3 := $t3; + return; + + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:452:5+1 +L3: + + // abort($t23) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:452:5+1 + assume {:print "$at(133,21467,21468)"} true; + $abort_code := $t23; + $abort_flag := true; + return; + +} + +// fun staking_contract::reset_lockup [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:352:5+596 +procedure {:inline 1} $1_staking_contract_reset_lockup(_$t0: $signer, _$t1: int) returns () +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: $Mutation ($1_staking_contract_StakingContract); + var $t5: $Mutation ($1_staking_contract_Store); + var $t6: int; + var $t7: Table int ($1_staking_contract_StakingContract); + var $t8: $1_staking_contract_Store; + var $t9: $1_staking_contract_StakingContract; + var $t10: int; + var $t11: $1_staking_config_StakingConfig; + var $t12: $1_stake_StakePool; + var $t13: int; + var $t14: int; + var $t15: int; + var $t16: int; + var $t17: int; + var $t18: Table int ($1_staking_contract_StakingContract); + var $t19: $Mutation ($1_staking_contract_Store); + var $t20: $Mutation (Table int ($1_staking_contract_StakingContract)); + var $t21: $Mutation ($1_staking_contract_StakingContract); + var $t22: int; + var $t23: $1_stake_OwnerCapability; + var $t24: $1_staking_config_StakingConfig; + var $t25: int; + var $t26: $1_stake_StakePool; + var $t27: int; + var $t28: int; + var $t29: $Mutation ($1_event_EventHandle'$1_staking_contract_ResetLockupEvent'); + var $t30: $1_staking_contract_ResetLockupEvent; + var $t0: $signer; + var $t1: int; + var $temp_0'$1_staking_contract_StakingContract': $1_staking_contract_StakingContract; + var $temp_0'$1_staking_contract_Store': $1_staking_contract_Store; + var $temp_0'address': int; + var $temp_0'signer': $signer; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // assume Identical($t6, signer::$address_of($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:106:9+48 + assume {:print "$at(134,4774,4822)"} true; + assume ($t6 == $1_signer_$address_of($t0)); + + // assume Identical($t7, select staking_contract::Store.staking_contracts(global($t6))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 + assume {:print "$at(134,11481,11545)"} true; + assume ($t7 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t6))); + + // assume Identical($t8, global($t6)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:316:9+34 + assume {:print "$at(134,13411,13445)"} true; + assume ($t8 == $ResourceValue($1_staking_contract_Store_$memory, $t6)); + + // assume Identical($t9, simple_map::spec_get(select staking_contract::Store.staking_contracts($t8), $t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:317:9+79 + assume {:print "$at(134,13454,13533)"} true; + assume ($t9 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($t8), $t1)); + + // assume Identical($t10, select stake::OwnerCapability.pool_address(select staking_contract::StakingContract.owner_cap($t9))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:318:9+59 + assume {:print "$at(134,13542,13601)"} true; + assume ($t10 == $pool_address#$1_stake_OwnerCapability($owner_cap#$1_staking_contract_StakingContract($t9))); + + // assume Identical($t11, global(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:323:9+69 + assume {:print "$at(134,13747,13816)"} true; + assume ($t11 == $ResourceValue($1_staking_config_StakingConfig_$memory, 1)); + + // assume Identical($t12, global($t10)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:324:9+56 + assume {:print "$at(134,13825,13881)"} true; + assume ($t12 == $ResourceValue($1_stake_StakePool_$memory, $t10)); + + // assume Identical($t13, select stake::StakePool.locked_until_secs($t12)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:325:9+57 + assume {:print "$at(134,13890,13947)"} true; + assume ($t13 == $locked_until_secs#$1_stake_StakePool($t12)); + + // assume Identical($t14, Div(select timestamp::CurrentTimeMicroseconds.microseconds(global(0x1)), 1000000)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:326:9+126 + assume {:print "$at(134,13956,14082)"} true; + assume ($t14 == ($microseconds#$1_timestamp_CurrentTimeMicroseconds($ResourceValue($1_timestamp_CurrentTimeMicroseconds_$memory, 1)) div 1000000)); + + // assume Identical($t15, Add($t14, select staking_config::StakingConfig.recurring_lockup_duration_secs($t11))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:327:9+77 + assume {:print "$at(134,14091,14168)"} true; + assume ($t15 == ($t14 + $recurring_lockup_duration_secs#$1_staking_config_StakingConfig($t11))); + + // trace_local[staker]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:352:5+1 + assume {:print "$at(133,16467,16468)"} true; + assume {:print "$track_local(56,15,0):", $t0} $t0 == $t0; + + // trace_local[operator]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:352:5+1 + assume {:print "$track_local(56,15,1):", $t1} $t1 == $t1; + + // $t16 := signer::address_of($t0) on_abort goto L2 with $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:353:30+26 + assume {:print "$at(133,16579,16605)"} true; + call $t16 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(133,16579,16605)"} true; + $t17 := $abort_code; + assume {:print "$track_abort(56,15):", $t17} $t17 == $t17; + goto L2; + } + + // trace_local[staker_address]($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:353:13+14 + assume {:print "$track_local(56,15,3):", $t16} $t16 == $t16; + + // assume Identical($t18, select staking_contract::Store.staking_contracts(global($t16))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 + assume {:print "$at(134,11481,11545)"} true; + assume ($t18 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t16))); + + // staking_contract::assert_staking_contract_exists($t16, $t1) on_abort goto L2 with $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:354:9+56 + assume {:print "$at(133,16615,16671)"} true; + call $1_staking_contract_assert_staking_contract_exists($t16, $t1); + if ($abort_flag) { + assume {:print "$at(133,16615,16671)"} true; + $t17 := $abort_code; + assume {:print "$track_abort(56,15):", $t17} $t17 == $t17; + goto L2; + } + + // $t19 := borrow_global($t16) on_abort goto L2 with $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:356:21+17 + assume {:print "$at(133,16694,16711)"} true; + if (!$ResourceExists($1_staking_contract_Store_$memory, $t16)) { + call $ExecFailureAbort(); + } else { + $t19 := $Mutation($Global($t16), EmptyVec(), $ResourceValue($1_staking_contract_Store_$memory, $t16)); + } + if ($abort_flag) { + assume {:print "$at(133,16694,16711)"} true; + $t17 := $abort_code; + assume {:print "$track_abort(56,15):", $t17} $t17 == $t17; + goto L2; + } + + // trace_local[store]($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:356:13+5 + $temp_0'$1_staking_contract_Store' := $Dereference($t19); + assume {:print "$track_local(56,15,5):", $temp_0'$1_staking_contract_Store'} $temp_0'$1_staking_contract_Store' == $temp_0'$1_staking_contract_Store'; + + // $t20 := borrow_field.staking_contracts($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:357:55+28 + assume {:print "$at(133,16790,16818)"} true; + $t20 := $ChildMutation($t19, 0, $staking_contracts#$1_staking_contract_Store($Dereference($t19))); + + // $t21 := simple_map::borrow_mut($t20, $t1) on_abort goto L2 with $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:357:32+63 + call $t21,$t20 := $1_simple_map_borrow_mut'address_$1_staking_contract_StakingContract'($t20, $t1); + if ($abort_flag) { + assume {:print "$at(133,16767,16830)"} true; + $t17 := $abort_code; + assume {:print "$track_abort(56,15):", $t17} $t17 == $t17; + goto L2; + } + + // trace_local[staking_contract]($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:357:13+16 + $temp_0'$1_staking_contract_StakingContract' := $Dereference($t21); + assume {:print "$track_local(56,15,4):", $temp_0'$1_staking_contract_StakingContract'} $temp_0'$1_staking_contract_StakingContract' == $temp_0'$1_staking_contract_StakingContract'; + + // $t22 := get_field.pool_address($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:358:28+29 + assume {:print "$at(133,16859,16888)"} true; + $t22 := $pool_address#$1_staking_contract_StakingContract($Dereference($t21)); + + // trace_local[pool_address]($t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:358:13+12 + assume {:print "$track_local(56,15,2):", $t22} $t22 == $t22; + + // $t23 := get_field.owner_cap($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:359:41+27 + assume {:print "$at(133,16930,16957)"} true; + $t23 := $owner_cap#$1_staking_contract_StakingContract($Dereference($t21)); + + // assume Identical($t24, global(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:67:9+69 + assume {:print "$at(132,3047,3116)"} true; + assume ($t24 == $ResourceValue($1_staking_config_StakingConfig_$memory, 1)); + + // assume Identical($t25, select stake::OwnerCapability.pool_address($t23)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:68:9+42 + assume {:print "$at(132,3125,3167)"} true; + assume ($t25 == $pool_address#$1_stake_OwnerCapability($t23)); + + // assume Identical($t26, global($t25)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:69:9+53 + assume {:print "$at(132,3176,3229)"} true; + assume ($t26 == $ResourceValue($1_stake_StakePool_$memory, $t25)); + + // assume Identical($t27, timestamp::spec_now_seconds()) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:71:9+48 + assume {:print "$at(132,3301,3349)"} true; + assume ($t27 == $1_timestamp_spec_now_seconds($1_timestamp_CurrentTimeMicroseconds_$memory)); + + // assume Identical($t28, select staking_config::StakingConfig.recurring_lockup_duration_secs($t24)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:72:9+51 + assume {:print "$at(132,3358,3409)"} true; + assume ($t28 == $recurring_lockup_duration_secs#$1_staking_config_StakingConfig($t24)); + + // stake::increase_lockup_with_cap($t23) on_abort goto L2 with $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:359:9+60 + assume {:print "$at(133,16898,16958)"} true; + call $1_stake_increase_lockup_with_cap($t23); + if ($abort_flag) { + assume {:print "$at(133,16898,16958)"} true; + $t17 := $abort_code; + assume {:print "$track_abort(56,15):", $t17} $t17 == $t17; + goto L2; + } + + // $t29 := borrow_field.reset_lockup_events($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:361:20+30 + assume {:print "$at(133,16980,17010)"} true; + $t29 := $ChildMutation($t19, 3, $reset_lockup_events#$1_staking_contract_Store($Dereference($t19))); + + // $t30 := pack staking_contract::ResetLockupEvent($t1, $t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:361:52+43 + $t30 := $1_staking_contract_ResetLockupEvent($t1, $t22); + + // opaque begin: event::emit_event($t29, $t30) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:361:9+87 + + // opaque end: event::emit_event($t29, $t30) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:361:9+87 + + // write_back[Reference($t19).reset_lockup_events (event::EventHandle)]($t29) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:361:9+87 + $t19 := $UpdateMutation($t19, $Update'$1_staking_contract_Store'_reset_lockup_events($Dereference($t19), $Dereference($t29))); + + // pack_ref_deep($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:361:9+87 + + // write_back[staking_contract::Store@]($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:361:9+87 + $1_staking_contract_Store_$memory := $ResourceUpdate($1_staking_contract_Store_$memory, $GlobalLocationAddress($t19), + $Dereference($t19)); + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:362:5+1 + assume {:print "$at(133,17062,17063)"} true; +L1: + + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:362:5+1 + assume {:print "$at(133,17062,17063)"} true; + return; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:362:5+1 +L2: + + // abort($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:362:5+1 + assume {:print "$at(133,17062,17063)"} true; + $abort_code := $t17; + $abort_flag := true; + return; + +} + +// fun staking_contract::staking_contract_amounts [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:208:5+395 +procedure {:inline 1} $1_staking_contract_staking_contract_amounts(_$t0: int, _$t1: int) returns ($ret0: int, $ret1: int, $ret2: int) +{ + // declare local variables + var $t2: Table int ($1_staking_contract_StakingContract); + var $t3: $1_staking_contract_StakingContract; + var $t4: Table int ($1_staking_contract_StakingContract); + var $t5: int; + var $t6: $1_stake_StakePool; + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: Table int ($1_staking_contract_StakingContract); + var $t12: int; + var $t13: $1_staking_contract_Store; + var $t14: Table int ($1_staking_contract_StakingContract); + var $t15: $1_staking_contract_StakingContract; + var $t16: int; + var $t17: $1_stake_StakePool; + var $t18: int; + var $t19: int; + var $t20: int; + var $t21: int; + var $t22: int; + var $t23: int; + var $t24: int; + var $t0: int; + var $t1: int; + var $temp_0'address': int; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // assume Identical($t2, select staking_contract::Store.staking_contracts(global($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:25:9+64 + assume {:print "$at(134,958,1022)"} true; + assume ($t2 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t0))); + + // assume Identical($t3, simple_map::spec_get($t2, $t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:26:9+73 + assume {:print "$at(134,1031,1104)"} true; + assume ($t3 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($t2, $t1)); + + // assume Identical($t4, select staking_contract::Store.staking_contracts(global($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:259:9+64 + assume {:print "$at(134,11186,11250)"} true; + assume ($t4 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t0))); + + // assume Identical($t5, select staking_contract::StakingContract.pool_address($t3)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:299:9+49 + assume {:print "$at(134,12621,12670)"} true; + assume ($t5 == $pool_address#$1_staking_contract_StakingContract($t3)); + + // assume Identical($t6, global($t5)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:300:9+56 + assume {:print "$at(134,12679,12735)"} true; + assume ($t6 == $ResourceValue($1_stake_StakePool_$memory, $t5)); + + // assume Identical($t7, coin::$value(select stake::StakePool.active($t6))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:301:9+44 + assume {:print "$at(134,12744,12788)"} true; + assume ($t7 == $1_coin_$value'$1_aptos_coin_AptosCoin'($active#$1_stake_StakePool($t6))); + + // assume Identical($t8, coin::$value(select stake::StakePool.pending_active($t6))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:302:9+60 + assume {:print "$at(134,12797,12857)"} true; + assume ($t8 == $1_coin_$value'$1_aptos_coin_AptosCoin'($pending_active#$1_stake_StakePool($t6))); + + // assume Identical($t9, Add($t7, $t8)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:303:9+49 + assume {:print "$at(134,12866,12915)"} true; + assume ($t9 == ($t7 + $t8)); + + // assume Identical($t10, Sub($t9, select staking_contract::StakingContract.principal($t3))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:304:9+74 + assume {:print "$at(134,12924,12998)"} true; + assume ($t10 == ($t9 - $principal#$1_staking_contract_StakingContract($t3))); + + // trace_local[staker]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:208:5+1 + assume {:print "$at(133,9573,9574)"} true; + assume {:print "$track_local(56,17,0):", $t0} $t0 == $t0; + + // trace_local[operator]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:208:5+1 + assume {:print "$track_local(56,17,1):", $t1} $t1 == $t1; + + // assume Identical($t11, select staking_contract::Store.staking_contracts(global($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 + assume {:print "$at(134,11481,11545)"} true; + assume ($t11 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t0))); + + // staking_contract::assert_staking_contract_exists($t0, $t1) on_abort goto L2 with $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:209:9+48 + assume {:print "$at(133,9687,9735)"} true; + call $1_staking_contract_assert_staking_contract_exists($t0, $t1); + if ($abort_flag) { + assume {:print "$at(133,9687,9735)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(56,17):", $t12} $t12 == $t12; + goto L2; + } + + // $t13 := get_global($t0) on_abort goto L2 with $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:210:34+13 + assume {:print "$at(133,9770,9783)"} true; + if (!$ResourceExists($1_staking_contract_Store_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t13 := $ResourceValue($1_staking_contract_Store_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(133,9770,9783)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(56,17):", $t12} $t12 == $t12; + goto L2; + } + + // $t14 := get_field.staking_contracts($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:210:33+47 + $t14 := $staking_contracts#$1_staking_contract_Store($t13); + + // $t15 := simple_map::borrow($t14, $t1) on_abort goto L2 with $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:211:32+48 + assume {:print "$at(133,9849,9897)"} true; + call $t15 := $1_simple_map_borrow'address_$1_staking_contract_StakingContract'($t14, $t1); + if ($abort_flag) { + assume {:print "$at(133,9849,9897)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(56,17):", $t12} $t12 == $t12; + goto L2; + } + + // assume Identical($t16, select staking_contract::StakingContract.pool_address($t15)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:299:9+49 + assume {:print "$at(134,12621,12670)"} true; + assume ($t16 == $pool_address#$1_staking_contract_StakingContract($t15)); + + // assume Identical($t17, global($t16)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:300:9+56 + assume {:print "$at(134,12679,12735)"} true; + assume ($t17 == $ResourceValue($1_stake_StakePool_$memory, $t16)); + + // assume Identical($t18, coin::$value(select stake::StakePool.active($t17))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:301:9+44 + assume {:print "$at(134,12744,12788)"} true; + assume ($t18 == $1_coin_$value'$1_aptos_coin_AptosCoin'($active#$1_stake_StakePool($t17))); + + // assume Identical($t19, coin::$value(select stake::StakePool.pending_active($t17))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:302:9+60 + assume {:print "$at(134,12797,12857)"} true; + assume ($t19 == $1_coin_$value'$1_aptos_coin_AptosCoin'($pending_active#$1_stake_StakePool($t17))); + + // assume Identical($t20, Add($t18, $t19)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:303:9+49 + assume {:print "$at(134,12866,12915)"} true; + assume ($t20 == ($t18 + $t19)); + + // assume Identical($t21, Sub($t20, select staking_contract::StakingContract.principal($t15))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:304:9+74 + assume {:print "$at(134,12924,12998)"} true; + assume ($t21 == ($t20 - $principal#$1_staking_contract_StakingContract($t15))); + + // ($t22, $t23, $t24) := staking_contract::get_staking_contract_amounts_internal($t15) on_abort goto L2 with $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:212:9+55 + assume {:print "$at(133,9907,9962)"} true; + call $t22,$t23,$t24 := $1_staking_contract_get_staking_contract_amounts_internal($t15); + if ($abort_flag) { + assume {:print "$at(133,9907,9962)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(56,17):", $t12} $t12 == $t12; + goto L2; + } + + // trace_return[0]($t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:212:9+55 + assume {:print "$track_return(56,17,0):", $t22} $t22 == $t22; + + // trace_return[1]($t23) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:212:9+55 + assume {:print "$track_return(56,17,1):", $t23} $t23 == $t23; + + // trace_return[2]($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:212:9+55 + assume {:print "$track_return(56,17,2):", $t24} $t24 == $t24; + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:213:5+1 + assume {:print "$at(133,9967,9968)"} true; +L1: + + // return ($t22, $t23, $t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:213:5+1 + assume {:print "$at(133,9967,9968)"} true; + $ret0 := $t22; + $ret1 := $t23; + $ret2 := $t24; + return; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:213:5+1 +L2: + + // abort($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:213:5+1 + assume {:print "$at(133,9967,9968)"} true; + $abort_code := $t12; + $abort_flag := true; + return; + +} + +// fun staking_contract::switch_operator [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:526:5+1891 +procedure {:inline 1} $1_staking_contract_switch_operator(_$t0: $signer, _$t1: int, _$t2: int, _$t3: int) returns () +{ + // declare local variables + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: $Mutation ($1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent'); + var $t9: int; + var $t10: int; + var $t11: $1_staking_contract_StakingContract; + var $t12: $Mutation (Table int ($1_staking_contract_StakingContract)); + var $t13: $Mutation ($1_staking_contract_Store); + var $t14: int; + var $t15: $1_staking_contract_Store; + var $t16: Table int ($1_staking_contract_StakingContract); + var $t17: Table int ($1_staking_contract_StakingContract); + var $t18: int; + var $t19: int; + var $t20: Table int ($1_staking_contract_StakingContract); + var $t21: $Mutation ($1_staking_contract_Store); + var $t22: $Mutation (Table int ($1_staking_contract_StakingContract)); + var $t23: Table int ($1_staking_contract_StakingContract); + var $t24: bool; + var $t25: bool; + var $t26: int; + var $t27: int; + var $t28: int; + var $t29: $1_staking_contract_StakingContract; + var $t30: $Mutation ($1_staking_contract_StakingContract); + var $t31: $Mutation ($1_event_EventHandle'$1_staking_contract_DistributeEvent'); + var $t32: int; + var $t33: $1_stake_StakePool; + var $t34: $Mutation ($1_staking_contract_StakingContract); + var $t35: $Mutation ($1_event_EventHandle'$1_staking_contract_AddDistributionEvent'); + var $t36: $Mutation ($1_event_EventHandle'$1_staking_contract_RequestCommissionEvent'); + var $t37: int; + var $t38: $1_stake_StakePool; + var $t39: int; + var $t40: int; + var $t41: int; + var $t42: int; + var $t43: int; + var $t44: $1_staking_contract_StakingContract; + var $t45: $1_stake_OwnerCapability; + var $t46: int; + var $t47: $Mutation ($1_staking_contract_StakingContract); + var $t48: $Mutation (int); + var $t49: $1_staking_contract_StakingContract; + var $t50: int; + var $t51: $1_staking_contract_StakingContract; + var $t52: $Mutation ($1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent'); + var $t53: $1_staking_contract_SwitchOperatorEvent; + var $t0: $signer; + var $t1: int; + var $t2: int; + var $t3: int; + var $temp_0'$1_simple_map_SimpleMap'address_$1_staking_contract_StakingContract'': Table int ($1_staking_contract_StakingContract); + var $temp_0'$1_staking_contract_StakingContract': $1_staking_contract_StakingContract; + var $temp_0'$1_staking_contract_Store': $1_staking_contract_Store; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + + // bytecode translation starts here + // assume Identical($t14, signer::$address_of($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:170:9+48 + assume {:print "$at(134,7475,7523)"} true; + assume ($t14 == $1_signer_$address_of($t0)); + + // assume Identical($t15, global($t14)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:172:9+42 + assume {:print "$at(134,7620,7662)"} true; + assume ($t15 == $ResourceValue($1_staking_contract_Store_$memory, $t14)); + + // assume Identical($t16, select staking_contract::Store.staking_contracts($t15)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:173:9+48 + assume {:print "$at(134,7671,7719)"} true; + assume ($t16 == $staking_contracts#$1_staking_contract_Store($t15)); + + // assume Identical($t17, select staking_contract::Store.staking_contracts(global($t14))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 + assume {:print "$at(134,11481,11545)"} true; + assume ($t17 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t14))); + + // trace_local[staker]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:526:5+1 + assume {:print "$at(133,24994,24995)"} true; + assume {:print "$track_local(56,19,0):", $t0} $t0 == $t0; + + // trace_local[old_operator]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:526:5+1 + assume {:print "$track_local(56,19,1):", $t1} $t1 == $t1; + + // trace_local[new_operator]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:526:5+1 + assume {:print "$track_local(56,19,2):", $t2} $t2 == $t2; + + // trace_local[new_commission_percentage]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:526:5+1 + assume {:print "$track_local(56,19,3):", $t3} $t3 == $t3; + + // $t18 := signer::address_of($t0) on_abort goto L4 with $t19 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:532:30+26 + assume {:print "$at(133,25207,25233)"} true; + call $t18 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(133,25207,25233)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(56,19):", $t19} $t19 == $t19; + goto L4; + } + + // trace_local[staker_address]($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:532:13+14 + assume {:print "$track_local(56,19,10):", $t18} $t18 == $t18; + + // assume Identical($t20, select staking_contract::Store.staking_contracts(global($t18))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 + assume {:print "$at(134,11481,11545)"} true; + assume ($t20 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t18))); + + // staking_contract::assert_staking_contract_exists($t18, $t1) on_abort goto L4 with $t19 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:533:9+60 + assume {:print "$at(133,25243,25303)"} true; + call $1_staking_contract_assert_staking_contract_exists($t18, $t1); + if ($abort_flag) { + assume {:print "$at(133,25243,25303)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(56,19):", $t19} $t19 == $t19; + goto L4; + } + + // $t21 := borrow_global($t18) on_abort goto L4 with $t19 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:536:21+17 + assume {:print "$at(133,25439,25456)"} true; + if (!$ResourceExists($1_staking_contract_Store_$memory, $t18)) { + call $ExecFailureAbort(); + } else { + $t21 := $Mutation($Global($t18), EmptyVec(), $ResourceValue($1_staking_contract_Store_$memory, $t18)); + } + if ($abort_flag) { + assume {:print "$at(133,25439,25456)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(56,19):", $t19} $t19 == $t19; + goto L4; + } + + // trace_local[store]($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:536:13+5 + $temp_0'$1_staking_contract_Store' := $Dereference($t21); + assume {:print "$track_local(56,19,13):", $temp_0'$1_staking_contract_Store'} $temp_0'$1_staking_contract_Store' == $temp_0'$1_staking_contract_Store'; + + // $t22 := borrow_field.staking_contracts($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:537:33+28 + assume {:print "$at(133,25513,25541)"} true; + $t22 := $ChildMutation($t21, 0, $staking_contracts#$1_staking_contract_Store($Dereference($t21))); + + // trace_local[staking_contracts]($t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:537:13+17 + $temp_0'$1_simple_map_SimpleMap'address_$1_staking_contract_StakingContract'' := $Dereference($t22); + assume {:print "$track_local(56,19,12):", $temp_0'$1_simple_map_SimpleMap'address_$1_staking_contract_StakingContract''} $temp_0'$1_simple_map_SimpleMap'address_$1_staking_contract_StakingContract'' == $temp_0'$1_simple_map_SimpleMap'address_$1_staking_contract_StakingContract''; + + // $t23 := read_ref($t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:539:38+34 + assume {:print "$at(133,25597,25631)"} true; + $t23 := $Dereference($t22); + + // $t24 := simple_map::contains_key($t23, $t2) on_abort goto L4 with $t19 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:539:14+58 + call $t24 := $1_simple_map_contains_key'address_$1_staking_contract_StakingContract'($t23, $t2); + if ($abort_flag) { + assume {:print "$at(133,25573,25631)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(56,19):", $t19} $t19 == $t19; + goto L4; + } + + // $t25 := !($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:539:13+1 + call $t25 := $Not($t24); + + // if ($t25) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:538:9+156 + assume {:print "$at(133,25551,25707)"} true; + if ($t25) { goto L1; } else { goto L0; } + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:538:9+156 +L1: + + // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:538:9+156 + assume {:print "$at(133,25551,25707)"} true; + goto L2; + + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:538:9+156 +L0: + + // destroy($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:538:9+156 + assume {:print "$at(133,25551,25707)"} true; + + // pack_ref_deep($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:538:9+156 + + // destroy($t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:538:9+156 + + // $t26 := 5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:540:34+29 + assume {:print "$at(133,25666,25695)"} true; + $t26 := 5; + assume $IsValid'u64'($t26); + + // $t27 := error::invalid_state($t26) on_abort goto L4 with $t19 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:540:13+51 + call $t27 := $1_error_invalid_state($t26); + if ($abort_flag) { + assume {:print "$at(133,25645,25696)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(56,19):", $t19} $t19 == $t19; + goto L4; + } + + // trace_abort($t27) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:538:9+156 + assume {:print "$at(133,25551,25707)"} true; + assume {:print "$track_abort(56,19):", $t27} $t27 == $t27; + + // $t19 := move($t27) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:538:9+156 + $t19 := $t27; + + // goto L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:538:9+156 + goto L4; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:543:56+17 + assume {:print "$at(133,25765,25782)"} true; +L2: + + // ($t28, $t29) := simple_map::remove($t22, $t1) on_abort goto L4 with $t19 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:543:37+52 + assume {:print "$at(133,25746,25798)"} true; + call $t28,$t29,$t22 := $1_simple_map_remove'address_$1_staking_contract_StakingContract'($t22, $t1); + if ($abort_flag) { + assume {:print "$at(133,25746,25798)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(56,19):", $t19} $t19 == $t19; + goto L4; + } + + // $t11 := $t29 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:543:17+16 + $t11 := $t29; + + // trace_local[staking_contract]($t11) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:543:17+16 + assume {:print "$track_local(56,19,11):", $t11} $t11 == $t11; + + // destroy($t28) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:543:14+1 + + // $t30 := borrow_local($t11) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:545:59+21 + assume {:print "$at(133,25919,25940)"} true; + $t30 := $Mutation($Local(11), EmptyVec(), $t11); + + // $t31 := borrow_field.distribute_events($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:545:82+28 + $t31 := $ChildMutation($t21, 9, $distribute_events#$1_staking_contract_Store($Dereference($t21))); + + // assume Identical($t32, select staking_contract::StakingContract.pool_address($t30)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:194:9+49 + assume {:print "$at(134,8605,8654)"} true; + assume ($t32 == $pool_address#$1_staking_contract_StakingContract($Dereference($t30))); + + // assume Identical($t33, global($t32)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:195:9+63 + assume {:print "$at(134,8663,8726)"} true; + assume ($t33 == $ResourceValue($1_stake_StakePool_$memory, $t32)); + + // staking_contract::distribute_internal($t18, $t1, $t30, $t31) on_abort goto L4 with $t19 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:545:9+102 + assume {:print "$at(133,25869,25971)"} true; + call $t30,$t31 := $1_staking_contract_distribute_internal($t18, $t1, $t30, $t31); + if ($abort_flag) { + assume {:print "$at(133,25869,25971)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(56,19):", $t19} $t19 == $t19; + goto L4; + } + + // pack_ref_deep($t30) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:545:9+102 + + // write_back[LocalRoot($t11)@]($t30) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:545:9+102 + $t11 := $Dereference($t30); + + // trace_local[staking_contract]($t11) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:545:9+102 + assume {:print "$track_local(56,19,11):", $t11} $t11 == $t11; + + // write_back[Reference($t21).distribute_events (event::EventHandle)]($t31) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:545:9+102 + $t21 := $UpdateMutation($t21, $Update'$1_staking_contract_Store'_distribute_events($Dereference($t21), $Dereference($t31))); + + // $t34 := borrow_local($t11) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:551:13+21 + assume {:print "$at(133,26216,26237)"} true; + $t34 := $Mutation($Local(11), EmptyVec(), $t11); + + // $t35 := borrow_field.add_distribution_events($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:552:13+34 + assume {:print "$at(133,26251,26285)"} true; + $t35 := $ChildMutation($t21, 8, $add_distribution_events#$1_staking_contract_Store($Dereference($t21))); + + // $t36 := borrow_field.request_commission_events($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:553:13+36 + assume {:print "$at(133,26299,26335)"} true; + $t36 := $ChildMutation($t21, 5, $request_commission_events#$1_staking_contract_Store($Dereference($t21))); + + // assume Identical($t37, select staking_contract::StakingContract.pool_address($t34)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:299:9+49 + assume {:print "$at(134,12621,12670)"} true; + assume ($t37 == $pool_address#$1_staking_contract_StakingContract($Dereference($t34))); + + // assume Identical($t38, global($t37)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:300:9+56 + assume {:print "$at(134,12679,12735)"} true; + assume ($t38 == $ResourceValue($1_stake_StakePool_$memory, $t37)); + + // assume Identical($t39, coin::$value(select stake::StakePool.active($t38))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:301:9+44 + assume {:print "$at(134,12744,12788)"} true; + assume ($t39 == $1_coin_$value'$1_aptos_coin_AptosCoin'($active#$1_stake_StakePool($t38))); + + // assume Identical($t40, coin::$value(select stake::StakePool.pending_active($t38))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:302:9+60 + assume {:print "$at(134,12797,12857)"} true; + assume ($t40 == $1_coin_$value'$1_aptos_coin_AptosCoin'($pending_active#$1_stake_StakePool($t38))); + + // assume Identical($t41, Add($t39, $t40)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:303:9+49 + assume {:print "$at(134,12866,12915)"} true; + assume ($t41 == ($t39 + $t40)); + + // assume Identical($t42, Sub($t41, select staking_contract::StakingContract.principal($t34))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:304:9+74 + assume {:print "$at(134,12924,12998)"} true; + assume ($t42 == ($t41 - $principal#$1_staking_contract_StakingContract($Dereference($t34)))); + + // $t43 := staking_contract::request_commission_internal($t1, $t34, $t35, $t36) on_abort goto L4 with $t19 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:549:9+197 + assume {:print "$at(133,26149,26346)"} true; + call $t43,$t34,$t35,$t36 := $1_staking_contract_request_commission_internal($t1, $t34, $t35, $t36); + if ($abort_flag) { + assume {:print "$at(133,26149,26346)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(56,19):", $t19} $t19 == $t19; + goto L4; + } + + // pack_ref_deep($t34) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:549:9+197 + + // write_back[LocalRoot($t11)@]($t34) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:549:9+197 + $t11 := $Dereference($t34); + + // trace_local[staking_contract]($t11) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:549:9+197 + assume {:print "$track_local(56,19,11):", $t11} $t11 == $t11; + + // write_back[Reference($t21).add_distribution_events (event::EventHandle)]($t35) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:549:9+197 + $t21 := $UpdateMutation($t21, $Update'$1_staking_contract_Store'_add_distribution_events($Dereference($t21), $Dereference($t35))); + + // write_back[Reference($t21).request_commission_events (event::EventHandle)]($t36) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:549:9+197 + $t21 := $UpdateMutation($t21, $Update'$1_staking_contract_Store'_request_commission_events($Dereference($t21), $Dereference($t36))); + + // destroy($t43) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:549:9+197 + + // $t44 := copy($t11) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:557:39+16 + assume {:print "$at(133,26471,26487)"} true; + $t44 := $t11; + + // $t45 := get_field.owner_cap($t44) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:557:38+27 + $t45 := $owner_cap#$1_staking_contract_StakingContract($t44); + + // assume Identical($t46, select stake::OwnerCapability.pool_address($t45)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:104:9+42 + assume {:print "$at(132,4820,4862)"} true; + assume ($t46 == $pool_address#$1_stake_OwnerCapability($t45)); + + // stake::set_operator_with_cap($t45, $t2) on_abort goto L4 with $t19 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:557:9+71 + assume {:print "$at(133,26441,26512)"} true; + call $1_stake_set_operator_with_cap($t45, $t2); + if ($abort_flag) { + assume {:print "$at(133,26441,26512)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(56,19):", $t19} $t19 == $t19; + goto L4; + } + + // $t47 := borrow_local($t11) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:558:9+16 + assume {:print "$at(133,26522,26538)"} true; + $t47 := $Mutation($Local(11), EmptyVec(), $t11); + + // $t48 := borrow_field.commission_percentage($t47) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:558:9+38 + $t48 := $ChildMutation($t47, 3, $commission_percentage#$1_staking_contract_StakingContract($Dereference($t47))); + + // write_ref($t48, $t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:558:9+66 + $t48 := $UpdateMutation($t48, $t3); + + // write_back[Reference($t47).commission_percentage (u64)]($t48) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:558:9+66 + $t47 := $UpdateMutation($t47, $Update'$1_staking_contract_StakingContract'_commission_percentage($Dereference($t47), $Dereference($t48))); + + // pack_ref_deep($t47) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:558:9+66 + + // write_back[LocalRoot($t11)@]($t47) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:558:9+66 + $t11 := $Dereference($t47); + + // trace_local[staking_contract]($t11) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:558:9+66 + assume {:print "$track_local(56,19,11):", $t11} $t11 == $t11; + + // $t49 := copy($t11) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:560:28+16 + assume {:print "$at(133,26618,26634)"} true; + $t49 := $t11; + + // $t50 := get_field.pool_address($t49) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:560:28+29 + $t50 := $pool_address#$1_staking_contract_StakingContract($t49); + + // trace_local[pool_address]($t50) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:560:13+12 + assume {:print "$track_local(56,19,9):", $t50} $t50 == $t50; + + // $t51 := move($t11) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:561:58+16 + assume {:print "$at(133,26706,26722)"} true; + $t51 := $t11; + + // simple_map::add($t22, $t2, $t51) on_abort goto L4 with $t19 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:561:9+66 + call $t22 := $1_simple_map_add'address_$1_staking_contract_StakingContract'($t22, $t2, $t51); + if ($abort_flag) { + assume {:print "$at(133,26657,26723)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(56,19):", $t19} $t19 == $t19; + goto L4; + } + + // write_back[Reference($t21).staking_contracts (simple_map::SimpleMap)]($t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:561:9+66 + $t21 := $UpdateMutation($t21, $Update'$1_staking_contract_Store'_staking_contracts($Dereference($t21), $Dereference($t22))); + + // $t52 := borrow_field.switch_operator_events($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:563:13+33 + assume {:print "$at(133,26757,26790)"} true; + $t52 := $ChildMutation($t21, 7, $switch_operator_events#$1_staking_contract_Store($Dereference($t21))); + + // $t53 := pack staking_contract::SwitchOperatorEvent($t1, $t2, $t50) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:564:13+64 + assume {:print "$at(133,26804,26868)"} true; + $t53 := $1_staking_contract_SwitchOperatorEvent($t1, $t2, $t50); + + // opaque begin: event::emit_event($t52, $t53) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:562:9+145 + assume {:print "$at(133,26733,26878)"} true; + + // opaque end: event::emit_event($t52, $t53) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:562:9+145 + + // write_back[Reference($t21).switch_operator_events (event::EventHandle)]($t52) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:562:9+145 + $t21 := $UpdateMutation($t21, $Update'$1_staking_contract_Store'_switch_operator_events($Dereference($t21), $Dereference($t52))); + + // pack_ref_deep($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:562:9+145 + + // write_back[staking_contract::Store@]($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:562:9+145 + $1_staking_contract_Store_$memory := $ResourceUpdate($1_staking_contract_Store_$memory, $GlobalLocationAddress($t21), + $Dereference($t21)); + + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:566:5+1 + assume {:print "$at(133,26884,26885)"} true; +L3: + + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:566:5+1 + assume {:print "$at(133,26884,26885)"} true; + return; + + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:566:5+1 +L4: + + // abort($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:566:5+1 + assume {:print "$at(133,26884,26885)"} true; + $abort_code := $t19; + $abort_flag := true; + return; + +} + +// fun staking_contract::unlock_stake [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:456:5+2017 +procedure {:inline 1} $1_staking_contract_unlock_stake(_$t0: $signer, _$t1: int, _$t2: int) returns () +{ + // declare local variables + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: $Mutation ($1_event_EventHandle'$1_staking_contract_UnlockStakeEvent'); + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: int; + var $t12: $Mutation ($1_staking_contract_StakingContract); + var $t13: $Mutation ($1_staking_contract_Store); + var $t14: int; + var $t15: bool; + var $t16: int; + var $t17: int; + var $t18: Table int ($1_staking_contract_StakingContract); + var $t19: $Mutation ($1_staking_contract_Store); + var $t20: $Mutation (Table int ($1_staking_contract_StakingContract)); + var $t21: $Mutation ($1_staking_contract_StakingContract); + var $t22: $Mutation ($1_event_EventHandle'$1_staking_contract_DistributeEvent'); + var $t23: int; + var $t24: $1_stake_StakePool; + var $t25: $Mutation ($1_event_EventHandle'$1_staking_contract_AddDistributionEvent'); + var $t26: $Mutation ($1_event_EventHandle'$1_staking_contract_RequestCommissionEvent'); + var $t27: int; + var $t28: $1_stake_StakePool; + var $t29: int; + var $t30: int; + var $t31: int; + var $t32: int; + var $t33: int; + var $t34: int; + var $t35: int; + var $t36: int; + var $t37: int; + var $t38: int; + var $t39: bool; + var $t40: int; + var $t41: int; + var $t42: $Mutation (int); + var $t43: $Mutation ($1_event_EventHandle'$1_staking_contract_AddDistributionEvent'); + var $t44: $1_stake_OwnerCapability; + var $t45: int; + var $t46: $1_stake_StakePool; + var $t47: int; + var $t48: int; + var $t49: $Mutation ($1_event_EventHandle'$1_staking_contract_UnlockStakeEvent'); + var $t50: $1_staking_contract_UnlockStakeEvent; + var $t0: $signer; + var $t1: int; + var $t2: int; + var $temp_0'$1_staking_contract_StakingContract': $1_staking_contract_StakingContract; + var $temp_0'$1_staking_contract_Store': $1_staking_contract_Store; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // bytecode translation starts here + // trace_local[staker]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:456:5+1 + assume {:print "$at(133,21655,21656)"} true; + assume {:print "$track_local(56,22,0):", $t0} $t0 == $t0; + + // trace_local[operator]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:456:5+1 + assume {:print "$track_local(56,22,1):", $t1} $t1 == $t1; + + // trace_local[amount]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:456:5+1 + assume {:print "$track_local(56,22,2):", $t2} $t2 == $t2; + + // $t14 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:458:23+1 + assume {:print "$at(133,21814,21815)"} true; + $t14 := 0; + assume $IsValid'u64'($t14); + + // $t15 := ==($t2, $t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:458:20+2 + $t15 := $IsEqual'u64'($t2, $t14); + + // if ($t15) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:458:9+23 + if ($t15) { goto L1; } else { goto L0; } + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:458:26+6 +L1: + + // goto L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:458:26+6 + assume {:print "$at(133,21817,21823)"} true; + goto L4; + + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:460:49+6 + assume {:print "$at(133,21874,21880)"} true; +L0: + + // $t16 := signer::address_of($t0) on_abort goto L5 with $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:460:30+26 + assume {:print "$at(133,21855,21881)"} true; + call $t16 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(133,21855,21881)"} true; + $t17 := $abort_code; + assume {:print "$track_abort(56,22):", $t17} $t17 == $t17; + goto L5; + } + + // trace_local[staker_address]($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:460:13+14 + assume {:print "$track_local(56,22,11):", $t16} $t16 == $t16; + + // assume Identical($t18, select staking_contract::Store.staking_contracts(global($t16))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 + assume {:print "$at(134,11481,11545)"} true; + assume ($t18 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t16))); + + // staking_contract::assert_staking_contract_exists($t16, $t1) on_abort goto L5 with $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:461:9+56 + assume {:print "$at(133,21891,21947)"} true; + call $1_staking_contract_assert_staking_contract_exists($t16, $t1); + if ($abort_flag) { + assume {:print "$at(133,21891,21947)"} true; + $t17 := $abort_code; + assume {:print "$track_abort(56,22):", $t17} $t17 == $t17; + goto L5; + } + + // $t19 := borrow_global($t16) on_abort goto L5 with $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:463:21+17 + assume {:print "$at(133,21970,21987)"} true; + if (!$ResourceExists($1_staking_contract_Store_$memory, $t16)) { + call $ExecFailureAbort(); + } else { + $t19 := $Mutation($Global($t16), EmptyVec(), $ResourceValue($1_staking_contract_Store_$memory, $t16)); + } + if ($abort_flag) { + assume {:print "$at(133,21970,21987)"} true; + $t17 := $abort_code; + assume {:print "$track_abort(56,22):", $t17} $t17 == $t17; + goto L5; + } + + // trace_local[store]($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:463:13+5 + $temp_0'$1_staking_contract_Store' := $Dereference($t19); + assume {:print "$track_local(56,22,13):", $temp_0'$1_staking_contract_Store'} $temp_0'$1_staking_contract_Store' == $temp_0'$1_staking_contract_Store'; + + // $t20 := borrow_field.staking_contracts($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:464:55+28 + assume {:print "$at(133,22066,22094)"} true; + $t20 := $ChildMutation($t19, 0, $staking_contracts#$1_staking_contract_Store($Dereference($t19))); + + // $t21 := simple_map::borrow_mut($t20, $t1) on_abort goto L5 with $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:464:32+63 + call $t21,$t20 := $1_simple_map_borrow_mut'address_$1_staking_contract_StakingContract'($t20, $t1); + if ($abort_flag) { + assume {:print "$at(133,22043,22106)"} true; + $t17 := $abort_code; + assume {:print "$track_abort(56,22):", $t17} $t17 == $t17; + goto L5; + } + + // trace_local[staking_contract]($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:464:13+16 + $temp_0'$1_staking_contract_StakingContract' := $Dereference($t21); + assume {:print "$track_local(56,22,12):", $temp_0'$1_staking_contract_StakingContract'} $temp_0'$1_staking_contract_StakingContract' == $temp_0'$1_staking_contract_StakingContract'; + + // $t22 := borrow_field.distribute_events($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:467:73+28 + assume {:print "$at(133,22242,22270)"} true; + $t22 := $ChildMutation($t19, 9, $distribute_events#$1_staking_contract_Store($Dereference($t19))); + + // assume Identical($t23, select staking_contract::StakingContract.pool_address($t21)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:194:9+49 + assume {:print "$at(134,8605,8654)"} true; + assume ($t23 == $pool_address#$1_staking_contract_StakingContract($Dereference($t21))); + + // assume Identical($t24, global($t23)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:195:9+63 + assume {:print "$at(134,8663,8726)"} true; + assume ($t24 == $ResourceValue($1_stake_StakePool_$memory, $t23)); + + // staking_contract::distribute_internal($t16, $t1, $t21, $t22) on_abort goto L5 with $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:467:9+93 + assume {:print "$at(133,22178,22271)"} true; + call $t21,$t22 := $1_staking_contract_distribute_internal($t16, $t1, $t21, $t22); + if ($abort_flag) { + assume {:print "$at(133,22178,22271)"} true; + $t17 := $abort_code; + assume {:print "$track_abort(56,22):", $t17} $t17 == $t17; + goto L5; + } + + // write_back[Reference($t19).distribute_events (event::EventHandle)]($t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:467:9+93 + $t19 := $UpdateMutation($t19, $Update'$1_staking_contract_Store'_distribute_events($Dereference($t19), $Dereference($t22))); + + // $t25 := borrow_field.add_distribution_events($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:474:13+34 + assume {:print "$at(133,22564,22598)"} true; + $t25 := $ChildMutation($t19, 8, $add_distribution_events#$1_staking_contract_Store($Dereference($t19))); + + // $t26 := borrow_field.request_commission_events($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:475:13+36 + assume {:print "$at(133,22612,22648)"} true; + $t26 := $ChildMutation($t19, 5, $request_commission_events#$1_staking_contract_Store($Dereference($t19))); + + // assume Identical($t27, select staking_contract::StakingContract.pool_address($t21)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:299:9+49 + assume {:print "$at(134,12621,12670)"} true; + assume ($t27 == $pool_address#$1_staking_contract_StakingContract($Dereference($t21))); + + // assume Identical($t28, global($t27)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:300:9+56 + assume {:print "$at(134,12679,12735)"} true; + assume ($t28 == $ResourceValue($1_stake_StakePool_$memory, $t27)); + + // assume Identical($t29, coin::$value(select stake::StakePool.active($t28))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:301:9+44 + assume {:print "$at(134,12744,12788)"} true; + assume ($t29 == $1_coin_$value'$1_aptos_coin_AptosCoin'($active#$1_stake_StakePool($t28))); + + // assume Identical($t30, coin::$value(select stake::StakePool.pending_active($t28))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:302:9+60 + assume {:print "$at(134,12797,12857)"} true; + assume ($t30 == $1_coin_$value'$1_aptos_coin_AptosCoin'($pending_active#$1_stake_StakePool($t28))); + + // assume Identical($t31, Add($t29, $t30)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:303:9+49 + assume {:print "$at(134,12866,12915)"} true; + assume ($t31 == ($t29 + $t30)); + + // assume Identical($t32, Sub($t31, select staking_contract::StakingContract.principal($t21))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:304:9+74 + assume {:print "$at(134,12924,12998)"} true; + assume ($t32 == ($t31 - $principal#$1_staking_contract_StakingContract($Dereference($t21)))); + + // $t33 := staking_contract::request_commission_internal($t1, $t21, $t25, $t26) on_abort goto L5 with $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:471:31+188 + assume {:print "$at(133,22471,22659)"} true; + call $t33,$t21,$t25,$t26 := $1_staking_contract_request_commission_internal($t1, $t21, $t25, $t26); + if ($abort_flag) { + assume {:print "$at(133,22471,22659)"} true; + $t17 := $abort_code; + assume {:print "$track_abort(56,22):", $t17} $t17 == $t17; + goto L5; + } + + // write_back[Reference($t19).add_distribution_events (event::EventHandle)]($t25) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:471:31+188 + $t19 := $UpdateMutation($t19, $Update'$1_staking_contract_Store'_add_distribution_events($Dereference($t19), $Dereference($t25))); + + // write_back[Reference($t19).request_commission_events (event::EventHandle)]($t26) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:471:31+188 + $t19 := $UpdateMutation($t19, $Update'$1_staking_contract_Store'_request_commission_events($Dereference($t19), $Dereference($t26))); + + // trace_local[commission_paid]($t33) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:471:13+15 + assume {:print "$track_local(56,22,9):", $t33} $t33 == $t33; + + // $t34 := get_field.pool_address($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:480:50+29 + assume {:print "$at(133,22870,22899)"} true; + $t34 := $pool_address#$1_staking_contract_StakingContract($Dereference($t21)); + + // ($t35, $t36, $t37, $t38) := stake::get_stake($t34) on_abort goto L5 with $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:480:33+47 + call $t35,$t36,$t37,$t38 := $1_stake_get_stake($t34); + if ($abort_flag) { + assume {:print "$at(133,22853,22900)"} true; + $t17 := $abort_code; + assume {:print "$track_abort(56,22):", $t17} $t17 == $t17; + goto L5; + } + + // destroy($t38) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:480:28+1 + + // destroy($t37) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:480:25+1 + + // destroy($t36) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:480:22+1 + + // trace_local[active]($t35) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:480:14+6 + assume {:print "$track_local(56,22,8):", $t35} $t35 == $t35; + + // $t39 := <($t35, $t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:481:20+1 + assume {:print "$at(133,22921,22922)"} true; + call $t39 := $Lt($t35, $t2); + + // if ($t39) goto L3 else goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:481:9+61 + if ($t39) { goto L3; } else { goto L2; } + + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:482:22+6 + assume {:print "$at(133,22954,22960)"} true; +L3: + + // $t2 := $t35 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:482:13+6 + assume {:print "$at(133,22945,22951)"} true; + $t2 := $t35; + + // trace_local[amount]($t35) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:482:13+6 + assume {:print "$track_local(56,22,2):", $t35} $t35 == $t35; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:484:38+16 + assume {:print "$at(133,23010,23026)"} true; +L2: + + // $t40 := get_field.principal($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:484:38+26 + assume {:print "$at(133,23010,23036)"} true; + $t40 := $principal#$1_staking_contract_StakingContract($Dereference($t21)); + + // $t41 := -($t40, $t2) on_abort goto L5 with $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:484:65+1 + call $t41 := $Sub($t40, $t2); + if ($abort_flag) { + assume {:print "$at(133,23037,23038)"} true; + $t17 := $abort_code; + assume {:print "$track_abort(56,22):", $t17} $t17 == $t17; + goto L5; + } + + // $t42 := borrow_field.principal($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:484:9+26 + $t42 := $ChildMutation($t21, 0, $principal#$1_staking_contract_StakingContract($Dereference($t21))); + + // write_ref($t42, $t41) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:484:9+64 + $t42 := $UpdateMutation($t42, $t41); + + // write_back[Reference($t21).principal (u64)]($t42) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:484:9+64 + $t21 := $UpdateMutation($t21, $Update'$1_staking_contract_StakingContract'_principal($Dereference($t21), $Dereference($t42))); + + // $t43 := borrow_field.add_distribution_events($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:488:65+34 + assume {:print "$at(133,23187,23221)"} true; + $t43 := $ChildMutation($t19, 8, $add_distribution_events#$1_staking_contract_Store($Dereference($t19))); + + // staking_contract::add_distribution($t1, $t21, $t16, $t2, $t43) on_abort goto L5 with $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:487:9+117 + assume {:print "$at(133,23105,23222)"} true; + call $t21,$t43 := $1_staking_contract_add_distribution($t1, $t21, $t16, $t2, $t43); + if ($abort_flag) { + assume {:print "$at(133,23105,23222)"} true; + $t17 := $abort_code; + assume {:print "$track_abort(56,22):", $t17} $t17 == $t17; + goto L5; + } + + // write_back[Reference($t19).add_distribution_events (event::EventHandle)]($t43) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:487:9+117 + $t19 := $UpdateMutation($t19, $Update'$1_staking_contract_Store'_add_distribution_events($Dereference($t19), $Dereference($t43))); + + // $t44 := get_field.owner_cap($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:492:40+27 + assume {:print "$at(133,23421,23448)"} true; + $t44 := $owner_cap#$1_staking_contract_StakingContract($Dereference($t21)); + + // assume Identical($t45, select stake::OwnerCapability.pool_address($t44)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:56:9+42 + assume {:print "$at(132,2499,2541)"} true; + assume ($t45 == $pool_address#$1_stake_OwnerCapability($t44)); + + // assume Identical($t46, global($t45)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:57:9+53 + assume {:print "$at(132,2550,2603)"} true; + assume ($t46 == $ResourceValue($1_stake_StakePool_$memory, $t45)); + + // assume Identical($t47, math64::$min($t2, select coin::Coin.value(select stake::StakePool.active($t46)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:60:9+76 + assume {:print "$at(132,2725,2801)"} true; + assume ($t47 == $1_math64_$min($t2, $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($active#$1_stake_StakePool($t46)))); + + // stake::unlock_with_cap($t2, $t44) on_abort goto L5 with $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:492:9+59 + assume {:print "$at(133,23390,23449)"} true; + call $1_stake_unlock_with_cap($t2, $t44); + if ($abort_flag) { + assume {:print "$at(133,23390,23449)"} true; + $t17 := $abort_code; + assume {:print "$track_abort(56,22):", $t17} $t17 == $t17; + goto L5; + } + + // $t48 := get_field.pool_address($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:494:28+29 + assume {:print "$at(133,23479,23508)"} true; + $t48 := $pool_address#$1_staking_contract_StakingContract($Dereference($t21)); + + // write_back[Reference($t20)[]]($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:494:28+29 + $t20 := $UpdateMutation($t20, UpdateTable($Dereference($t20), ReadVec(p#$Mutation($t21), LenVec(p#$Mutation($t20))), $Dereference($t21))); + + // write_back[Reference($t19).staking_contracts (simple_map::SimpleMap)]($t20) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:494:28+29 + $t19 := $UpdateMutation($t19, $Update'$1_staking_contract_Store'_staking_contracts($Dereference($t19), $Dereference($t20))); + + // trace_local[pool_address]($t48) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:494:13+12 + assume {:print "$track_local(56,22,10):", $t48} $t48 == $t48; + + // $t49 := borrow_field.unlock_stake_events($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:496:13+30 + assume {:print "$at(133,23542,23572)"} true; + $t49 := $ChildMutation($t19, 6, $unlock_stake_events#$1_staking_contract_Store($Dereference($t19))); + + // $t50 := pack staking_contract::UnlockStakeEvent($t1, $t48, $t2, $t33) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:497:13+68 + assume {:print "$at(133,23586,23654)"} true; + $t50 := $1_staking_contract_UnlockStakeEvent($t1, $t48, $t2, $t33); + + // opaque begin: event::emit_event($t49, $t50) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:495:9+147 + assume {:print "$at(133,23518,23665)"} true; + + // opaque end: event::emit_event($t49, $t50) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:495:9+147 + + // write_back[Reference($t19).unlock_stake_events (event::EventHandle)]($t49) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:495:9+147 + $t19 := $UpdateMutation($t19, $Update'$1_staking_contract_Store'_unlock_stake_events($Dereference($t19), $Dereference($t49))); + + // pack_ref_deep($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:495:9+147 + + // write_back[staking_contract::Store@]($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:495:9+147 + $1_staking_contract_Store_$memory := $ResourceUpdate($1_staking_contract_Store_$memory, $GlobalLocationAddress($t19), + $Dereference($t19)); + + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:499:5+1 + assume {:print "$at(133,23671,23672)"} true; +L4: + + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:499:5+1 + assume {:print "$at(133,23671,23672)"} true; + return; + + // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:499:5+1 +L5: + + // abort($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:499:5+1 + assume {:print "$at(133,23671,23672)"} true; + $abort_code := $t17; + $abort_flag := true; + return; + +} + +// fun staking_contract::update_distribution_pool [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:692:5+1743 +procedure {:inline 1} $1_staking_contract_update_distribution_pool(_$t0: $Mutation ($1_pool_u64_Pool), _$t1: int, _$t2: int, _$t3: int) returns ($ret0: $Mutation ($1_pool_u64_Pool)) +{ + // declare local variables + var $t4: Vec (int); + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: int; + var $t12: int; + var $t13: int; + var $t14: int; + var $t15: int; + var $t16: int; + var $t17: int; + var $t18: Vec (int); + var $t19: $1_pool_u64_Pool; + var $t20: int; + var $t21: int; + var $t22: bool; + var $t23: $1_pool_u64_Pool; + var $t24: Vec (int); + var $t25: int; + var $t26: int; + var $t27: bool; + var $t28: int; + var $t29: bool; + var $t30: $1_pool_u64_Pool; + var $t31: int; + var $t32: $1_pool_u64_Pool; + var $t33: int; + var $t34: $1_pool_u64_Pool; + var $t35: int; + var $t36: int; + var $t37: int; + var $t38: int; + var $t39: int; + var $t40: $1_pool_u64_Pool; + var $t41: int; + var $t42: int; + var $t43: int; + var $t44: int; + var $t45: int; + var $t0: $Mutation ($1_pool_u64_Pool); + var $t1: int; + var $t2: int; + var $t3: int; + var $temp_0'$1_pool_u64_Pool': $1_pool_u64_Pool; + var $temp_0'address': int; + var $temp_0'u64': int; + var $temp_0'vec'address'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + + // bytecode translation starts here + // trace_local[distribution_pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:692:5+1 + assume {:print "$at(133,33342,33343)"} true; + $temp_0'$1_pool_u64_Pool' := $Dereference($t0); + assume {:print "$track_local(56,24,0):", $temp_0'$1_pool_u64_Pool'} $temp_0'$1_pool_u64_Pool' == $temp_0'$1_pool_u64_Pool'; + + // trace_local[updated_total_coins]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:692:5+1 + assume {:print "$track_local(56,24,1):", $t1} $t1 == $t1; + + // trace_local[operator]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:692:5+1 + assume {:print "$track_local(56,24,2):", $t2} $t2 == $t2; + + // trace_local[commission_percentage]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:692:5+1 + assume {:print "$track_local(56,24,3):", $t3} $t3 == $t3; + + // $t19 := read_ref($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:699:35+17 + assume {:print "$at(133,33632,33649)"} true; + $t19 := $Dereference($t0); + + // $t20 := pool_u64::total_coins($t19) on_abort goto L10 with $t21 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:699:13+40 + call $t20 := $1_pool_u64_total_coins($t19); + if ($abort_flag) { + assume {:print "$at(133,33610,33650)"} true; + $t21 := $abort_code; + assume {:print "$track_abort(56,24):", $t21} $t21 == $t21; + goto L10; + } + + // $t22 := ==($t20, $t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:699:54+2 + $t22 := $IsEqual'u64'($t20, $t1); + + // if ($t22) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:699:9+99 + if ($t22) { goto L1; } else { goto L0; } + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:700:13+6 + assume {:print "$at(133,33689,33695)"} true; +L1: + + // destroy($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:700:13+6 + assume {:print "$at(133,33689,33695)"} true; + + // trace_local[distribution_pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:700:13+6 + $temp_0'$1_pool_u64_Pool' := $Dereference($t0); + assume {:print "$track_local(56,24,0):", $temp_0'$1_pool_u64_Pool'} $temp_0'$1_pool_u64_Pool' == $temp_0'$1_pool_u64_Pool'; + + // pack_ref_deep($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:700:13+6 + + // goto L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:700:13+6 + goto L9; + + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:705:52+17 + assume {:print "$at(133,33933,33950)"} true; +L0: + + // $t23 := read_ref($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:705:52+17 + assume {:print "$at(133,33933,33950)"} true; + $t23 := $Dereference($t0); + + // $t24 := pool_u64::shareholders($t23) on_abort goto L10 with $t21 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:705:29+41 + call $t24 := $1_pool_u64_shareholders($t23); + if ($abort_flag) { + assume {:print "$at(133,33910,33951)"} true; + $t21 := $abort_code; + assume {:print "$track_abort(56,24):", $t21} $t21 == $t21; + goto L10; + } + + // trace_local[v#216]($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:706:9+1038 + assume {:print "$at(133,33961,34999)"} true; + assume {:print "$track_local(56,24,18):", $t24} $t24 == $t24; + + // $t25 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:261:17+1 + assume {:print "$at(18,9246,9247)"} true; + $t25 := 0; + assume $IsValid'u64'($t25); + + // trace_local[i#218]($t25) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:261:13+1 + assume {:print "$track_local(56,24,11):", $t25} $t25 == $t25; + + // $t26 := vector::length
($t24) on_abort goto L10 with $t21 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:262:19+9 + assume {:print "$at(18,9267,9276)"} true; + call $t26 := $1_vector_length'address'($t24); + if ($abort_flag) { + assume {:print "$at(18,9267,9276)"} true; + $t21 := $abort_code; + assume {:print "$track_abort(56,24):", $t21} $t21 == $t21; + goto L10; + } + + // trace_local[len#219]($t26) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:262:13+3 + assume {:print "$track_local(56,24,12):", $t26} $t26 == $t26; + + // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume {:print "$at(18,9293,9294)"} true; +L7: + + // $t11 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume {:print "$at(18,9293,9294)"} true; + havoc $t11; + + // assume WellFormed($t11) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume $IsValid'u64'($t11); + + // $t27 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + havoc $t27; + + // assume WellFormed($t27) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume $IsValid'bool'($t27); + + // $t28 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + havoc $t28; + + // assume WellFormed($t28) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume $IsValid'address'($t28); + + // $t29 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + havoc $t29; + + // assume WellFormed($t29) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume $IsValid'bool'($t29); + + // $t30 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + havoc $t30; + + // assume And(WellFormed($t30), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares($t30), addr), vector::spec_contains
(select pool_u64::Pool.shareholders($t30), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders($t30))), j: Range(0, Len
(select pool_u64::Pool.shareholders($t30))): Implies(Eq
(Index(select pool_u64::Pool.shareholders($t30), i), Index(select pool_u64::Pool.shareholders($t30), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume ($IsValid'$1_pool_u64_Pool'($t30) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($t30), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($t30), addr)))) && (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($t30))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($t30))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; + (var j := $i_3; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($t30), i), ReadVec($shareholders#$1_pool_u64_Pool($t30), j)) ==> $IsEqual'num'(i, j)))))))))); + + // $t31 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + havoc $t31; + + // assume WellFormed($t31) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume $IsValid'u64'($t31); + + // $t32 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + havoc $t32; + + // assume And(WellFormed($t32), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares($t32), addr), vector::spec_contains
(select pool_u64::Pool.shareholders($t32), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders($t32))), j: Range(0, Len
(select pool_u64::Pool.shareholders($t32))): Implies(Eq
(Index(select pool_u64::Pool.shareholders($t32), i), Index(select pool_u64::Pool.shareholders($t32), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume ($IsValid'$1_pool_u64_Pool'($t32) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($t32), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($t32), addr)))) && (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($t32))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($t32))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; + (var j := $i_3; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($t32), i), ReadVec($shareholders#$1_pool_u64_Pool($t32), j)) ==> $IsEqual'num'(i, j)))))))))); + + // $t33 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + havoc $t33; + + // assume WellFormed($t33) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume $IsValid'u64'($t33); + + // $t34 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + havoc $t34; + + // assume And(WellFormed($t34), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares($t34), addr), vector::spec_contains
(select pool_u64::Pool.shareholders($t34), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders($t34))), j: Range(0, Len
(select pool_u64::Pool.shareholders($t34))): Implies(Eq
(Index(select pool_u64::Pool.shareholders($t34), i), Index(select pool_u64::Pool.shareholders($t34), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume ($IsValid'$1_pool_u64_Pool'($t34) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($t34), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($t34), addr)))) && (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($t34))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($t34))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; + (var j := $i_3; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($t34), i), ReadVec($shareholders#$1_pool_u64_Pool($t34), j)) ==> $IsEqual'num'(i, j)))))))))); + + // $t35 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + havoc $t35; + + // assume WellFormed($t35) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume $IsValid'u64'($t35); + + // $t36 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + havoc $t36; + + // assume WellFormed($t36) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume $IsValid'u64'($t36); + + // $t37 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + havoc $t37; + + // assume WellFormed($t37) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume $IsValid'u64'($t37); + + // $t38 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + havoc $t38; + + // assume WellFormed($t38) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume $IsValid'u64'($t38); + + // $t39 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + havoc $t39; + + // assume WellFormed($t39) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume $IsValid'u64'($t39); + + // $t40 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + havoc $t40; + + // assume And(WellFormed($t40), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares($t40), addr), vector::spec_contains
(select pool_u64::Pool.shareholders($t40), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders($t40))), j: Range(0, Len
(select pool_u64::Pool.shareholders($t40))): Implies(Eq
(Index(select pool_u64::Pool.shareholders($t40), i), Index(select pool_u64::Pool.shareholders($t40), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume ($IsValid'$1_pool_u64_Pool'($t40) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($t40), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($t40), addr)))) && (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($t40))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($t40))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; + (var j := $i_3; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($t40), i), ReadVec($shareholders#$1_pool_u64_Pool($t40), j)) ==> $IsEqual'num'(i, j)))))))))); + + // $t41 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + havoc $t41; + + // assume WellFormed($t41) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume $IsValid'u64'($t41); + + // $t42 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + havoc $t42; + + // assume WellFormed($t42) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume $IsValid'u64'($t42); + + // $t43 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + havoc $t43; + + // assume WellFormed($t43) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume $IsValid'u64'($t43); + + // $t0 := havoc[mut]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + havoc $temp_0'$1_pool_u64_Pool'; + $t0 := $UpdateMutation($t0, $temp_0'$1_pool_u64_Pool'); + + // assume And(WellFormed($t0), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares($t0), addr), vector::spec_contains
(select pool_u64::Pool.shareholders($t0), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders($t0))), j: Range(0, Len
(select pool_u64::Pool.shareholders($t0))): Implies(Eq
(Index(select pool_u64::Pool.shareholders($t0), i), Index(select pool_u64::Pool.shareholders($t0), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume ($IsValid'$1_pool_u64_Pool'($Dereference($t0)) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($Dereference($t0)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($Dereference($t0)), addr)))) && (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($Dereference($t0)))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($Dereference($t0)))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; + (var j := $i_3; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($Dereference($t0)), i), ReadVec($shareholders#$1_pool_u64_Pool($Dereference($t0)), j)) ==> $IsEqual'num'(i, j)))))))))); + + // trace_local[distribution_pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume {:print "$info(): enter loop, variable(s) distribution_pool, i#218 havocked and reassigned"} true; + $temp_0'$1_pool_u64_Pool' := $Dereference($t0); + assume {:print "$track_local(56,24,0):", $temp_0'$1_pool_u64_Pool'} $temp_0'$1_pool_u64_Pool' == $temp_0'$1_pool_u64_Pool'; + + // trace_local[i#218]($t11) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume {:print "$track_local(56,24,11):", $t11} $t11 == $t11; + + // assume Not(AbortFlag()) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume !$abort_flag; + + // $t27 := <($t11, $t26) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:18+1 + call $t27 := $Lt($t11, $t26); + + // if ($t27) goto L3 else goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:9+78 + if ($t27) { goto L3; } else { goto L2; } + + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:9+78 +L3: + + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:264:22+1 + assume {:print "$at(18,9325,9326)"} true; +L4: + + // $t28 := vector::borrow
($t24, $t11) on_abort goto L10 with $t21 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:264:15+12 + assume {:print "$at(18,9318,9330)"} true; + call $t28 := $1_vector_borrow'address'($t24, $t11); + if ($abort_flag) { + assume {:print "$at(18,9318,9330)"} true; + $t21 := $abort_code; + assume {:print "$track_abort(56,24):", $t21} $t21 == $t21; + goto L10; + } + + // trace_local[shareholder#221]($t28) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:707:17+11 + assume {:print "$at(133,34028,34039)"} true; + assume {:print "$track_local(56,24,14):", $t28} $t28 == $t28; + + // $t29 := !=($t28, $t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:708:29+2 + assume {:print "$at(133,34093,34095)"} true; + $t29 := !$IsEqual'address'($t28, $t2); + + // if ($t29) goto L6 else goto L11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:708:13+910 + if ($t29) { goto L6; } else { goto L11; } + + // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:709:47+17 + assume {:print "$at(133,34154,34171)"} true; +L6: + + // $t30 := read_ref($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:709:46+32 + assume {:print "$at(133,34153,34185)"} true; + $t30 := $Dereference($t0); + + // $t31 := pool_u64::shares($t30, $t28) on_abort goto L10 with $t21 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:709:30+48 + call $t31 := $1_pool_u64_shares($t30, $t28); + if ($abort_flag) { + assume {:print "$at(133,34137,34185)"} true; + $t21 := $abort_code; + assume {:print "$track_abort(56,24):", $t21} $t21 == $t21; + goto L10; + } + + // trace_local[shares#222]($t31) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:709:21+6 + assume {:print "$track_local(56,24,15):", $t31} $t31 == $t31; + + // $t32 := read_ref($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:710:55+32 + assume {:print "$at(133,34241,34273)"} true; + $t32 := $Dereference($t0); + + // assume Identical($t44, pool_u64::spec_shares($t32, $t28)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:53:9+44 + assume {:print "$at(59,1730,1774)"} true; + assume ($t44 == $1_pool_u64_spec_shares($t32, $t28)); + + // assume Identical($t45, select pool_u64::Pool.total_coins($t32)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:54:9+35 + assume {:print "$at(59,1783,1818)"} true; + assume ($t45 == $total_coins#$1_pool_u64_Pool($t32)); + + // $t33 := pool_u64::balance($t32, $t28) on_abort goto L10 with $t21 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:710:38+49 + assume {:print "$at(133,34224,34273)"} true; + call $t33 := $1_pool_u64_balance($t32, $t28); + if ($abort_flag) { + assume {:print "$at(133,34224,34273)"} true; + $t21 := $abort_code; + assume {:print "$track_abort(56,24):", $t21} $t21 == $t21; + goto L10; + } + + // trace_local[previous_worth#223]($t33) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:710:21+14 + assume {:print "$track_local(56,24,13):", $t33} $t33 == $t33; + + // $t34 := read_ref($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:711:80+69 + assume {:print "$at(133,34354,34423)"} true; + $t34 := $Dereference($t0); + + // $t35 := pool_u64::shares_to_amount_with_total_coins($t34, $t31, $t1) on_abort goto L10 with $t21 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:711:37+112 + call $t35 := $1_pool_u64_shares_to_amount_with_total_coins($t34, $t31, $t1); + if ($abort_flag) { + assume {:print "$at(133,34311,34423)"} true; + $t21 := $abort_code; + assume {:print "$track_abort(56,24):", $t21} $t21 == $t21; + goto L10; + } + + // $t36 := -($t35, $t33) on_abort goto L10 with $t21 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:713:56+1 + assume {:print "$at(133,34480,34481)"} true; + call $t36 := $Sub($t35, $t33); + if ($abort_flag) { + assume {:print "$at(133,34480,34481)"} true; + $t21 := $abort_code; + assume {:print "$track_abort(56,24):", $t21} $t21 == $t21; + goto L10; + } + + // $t37 := *($t36, $t3) on_abort goto L10 with $t21 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:713:74+1 + call $t37 := $MulU64($t36, $t3); + if ($abort_flag) { + assume {:print "$at(133,34498,34499)"} true; + $t21 := $abort_code; + assume {:print "$track_abort(56,24):", $t21} $t21 == $t21; + goto L10; + } + + // $t38 := 100 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:713:100+3 + $t38 := 100; + assume $IsValid'u64'($t38); + + // $t39 := /($t37, $t38) on_abort goto L10 with $t21 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:713:98+1 + call $t39 := $Div($t37, $t38); + if ($abort_flag) { + assume {:print "$at(133,34522,34523)"} true; + $t21 := $abort_code; + assume {:print "$track_abort(56,24):", $t21} $t21 == $t21; + goto L10; + } + + // trace_local[unpaid_commission#225]($t39) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:713:21+17 + assume {:print "$track_local(56,24,17):", $t39} $t39 == $t39; + + // $t40 := read_ref($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:716:85+80 + assume {:print "$at(133,34787,34867)"} true; + $t40 := $Dereference($t0); + + // $t41 := pool_u64::amount_to_shares_with_total_coins($t40, $t39, $t1) on_abort goto L10 with $t21 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:716:42+123 + call $t41 := $1_pool_u64_amount_to_shares_with_total_coins($t40, $t39, $t1); + if ($abort_flag) { + assume {:print "$at(133,34744,34867)"} true; + $t21 := $abort_code; + assume {:print "$track_abort(56,24):", $t21} $t21 == $t21; + goto L10; + } + + // trace_local[shares_to_transfer#226]($t41) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:716:21+18 + assume {:print "$track_local(56,24,16):", $t41} $t41 == $t41; + + // pool_u64::transfer_shares($t0, $t28, $t2, $t41) on_abort goto L10 with $t21 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:718:17+87 + assume {:print "$at(133,34885,34972)"} true; + call $t0 := $1_pool_u64_transfer_shares($t0, $t28, $t2, $t41); + if ($abort_flag) { + assume {:print "$at(133,34885,34972)"} true; + $t21 := $abort_code; + assume {:print "$track_abort(56,24):", $t21} $t21 == $t21; + goto L10; + } + + // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:265:17+1 + assume {:print "$at(18,9349,9350)"} true; +L5: + + // $t42 := 1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:265:21+1 + assume {:print "$at(18,9353,9354)"} true; + $t42 := 1; + assume $IsValid'u64'($t42); + + // $t43 := +($t11, $t42) on_abort goto L10 with $t21 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:265:19+1 + call $t43 := $AddU64($t11, $t42); + if ($abort_flag) { + assume {:print "$at(18,9351,9352)"} true; + $t21 := $abort_code; + assume {:print "$track_abort(56,24):", $t21} $t21 == $t21; + goto L10; + } + + // trace_local[i#218]($t43) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:265:13+1 + assume {:print "$track_local(56,24,11):", $t43} $t43 == $t43; + + // goto L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:265:13+9 + goto L8; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:722:9+68 + assume {:print "$at(133,35010,35078)"} true; +L2: + + // pool_u64::update_total_coins($t0, $t1) on_abort goto L10 with $t21 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:722:9+68 + assume {:print "$at(133,35010,35078)"} true; + call $t0 := $1_pool_u64_update_total_coins($t0, $t1); + if ($abort_flag) { + assume {:print "$at(133,35010,35078)"} true; + $t21 := $abort_code; + assume {:print "$track_abort(56,24):", $t21} $t21 == $t21; + goto L10; + } + + // trace_local[distribution_pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:722:77+1 + $temp_0'$1_pool_u64_Pool' := $Dereference($t0); + assume {:print "$track_local(56,24,0):", $temp_0'$1_pool_u64_Pool'} $temp_0'$1_pool_u64_Pool' == $temp_0'$1_pool_u64_Pool'; + + // pack_ref_deep($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:722:77+1 + + // goto L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:722:77+1 + goto L9; + + // label L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:722:9+68 + // Loop invariant checking block for the loop started with header: L7 +L8: + + // stop() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:722:9+68 + assume {:print "$at(133,35010,35078)"} true; + assume false; + return; + + // label L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:723:5+1 + assume {:print "$at(133,35084,35085)"} true; +L9: + + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:723:5+1 + assume {:print "$at(133,35084,35085)"} true; + $ret0 := $t0; + return; + + // label L10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:723:5+1 +L10: + + // abort($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:723:5+1 + assume {:print "$at(133,35084,35085)"} true; + $abort_code := $t21; + $abort_flag := true; + return; + + // label L11 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L11: + + // destroy($t0) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L5 at :1:1+10 + goto L5; + +} + +// fun staking_contract::update_voter [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:335:5+754 +procedure {:inline 1} $1_staking_contract_update_voter(_$t0: $signer, _$t1: int, _$t2: int) returns () +{ + // declare local variables + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: $Mutation ($1_staking_contract_StakingContract); + var $t7: $Mutation ($1_staking_contract_Store); + var $t8: int; + var $t9: $1_staking_contract_Store; + var $t10: $1_staking_contract_StakingContract; + var $t11: int; + var $t12: Table int ($1_staking_contract_StakingContract); + var $t13: int; + var $t14: int; + var $t15: Table int ($1_staking_contract_StakingContract); + var $t16: $Mutation ($1_staking_contract_Store); + var $t17: $Mutation (Table int ($1_staking_contract_StakingContract)); + var $t18: $Mutation ($1_staking_contract_StakingContract); + var $t19: int; + var $t20: int; + var $t21: $1_stake_OwnerCapability; + var $t22: int; + var $t23: $Mutation ($1_event_EventHandle'$1_staking_contract_UpdateVoterEvent'); + var $t24: $1_staking_contract_UpdateVoterEvent; + var $t0: $signer; + var $t1: int; + var $t2: int; + var $temp_0'$1_staking_contract_StakingContract': $1_staking_contract_StakingContract; + var $temp_0'$1_staking_contract_Store': $1_staking_contract_Store; + var $temp_0'address': int; + var $temp_0'signer': $signer; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // bytecode translation starts here + // assume Identical($t8, signer::$address_of($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:99:9+48 + assume {:print "$at(134,4471,4519)"} true; + assume ($t8 == $1_signer_$address_of($t0)); + + // assume Identical($t9, global($t8)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:276:9+34 + assume {:print "$at(134,11729,11763)"} true; + assume ($t9 == $ResourceValue($1_staking_contract_Store_$memory, $t8)); + + // assume Identical($t10, simple_map::spec_get(select staking_contract::Store.staking_contracts($t9), $t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:277:9+79 + assume {:print "$at(134,11772,11851)"} true; + assume ($t10 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($t9), $t1)); + + // assume Identical($t11, select staking_contract::StakingContract.pool_address($t10)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:278:9+49 + assume {:print "$at(134,11860,11909)"} true; + assume ($t11 == $pool_address#$1_staking_contract_StakingContract($t10)); + + // assume Identical($t12, select staking_contract::Store.staking_contracts(global($t8))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 + assume {:print "$at(134,11481,11545)"} true; + assume ($t12 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t8))); + + // trace_local[staker]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:335:5+1 + assume {:print "$at(133,15603,15604)"} true; + assume {:print "$track_local(56,25,0):", $t0} $t0 == $t0; + + // trace_local[operator]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:335:5+1 + assume {:print "$track_local(56,25,1):", $t1} $t1 == $t1; + + // trace_local[new_voter]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:335:5+1 + assume {:print "$track_local(56,25,2):", $t2} $t2 == $t2; + + // $t13 := signer::address_of($t0) on_abort goto L2 with $t14 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:336:30+26 + assume {:print "$at(133,15735,15761)"} true; + call $t13 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(133,15735,15761)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(56,25):", $t14} $t14 == $t14; + goto L2; + } + + // trace_local[staker_address]($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:336:13+14 + assume {:print "$track_local(56,25,5):", $t13} $t13 == $t13; + + // assume Identical($t15, select staking_contract::Store.staking_contracts(global($t13))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 + assume {:print "$at(134,11481,11545)"} true; + assume ($t15 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t13))); + + // staking_contract::assert_staking_contract_exists($t13, $t1) on_abort goto L2 with $t14 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:337:9+56 + assume {:print "$at(133,15771,15827)"} true; + call $1_staking_contract_assert_staking_contract_exists($t13, $t1); + if ($abort_flag) { + assume {:print "$at(133,15771,15827)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(56,25):", $t14} $t14 == $t14; + goto L2; + } + + // $t16 := borrow_global($t13) on_abort goto L2 with $t14 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:339:21+17 + assume {:print "$at(133,15850,15867)"} true; + if (!$ResourceExists($1_staking_contract_Store_$memory, $t13)) { + call $ExecFailureAbort(); + } else { + $t16 := $Mutation($Global($t13), EmptyVec(), $ResourceValue($1_staking_contract_Store_$memory, $t13)); + } + if ($abort_flag) { + assume {:print "$at(133,15850,15867)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(56,25):", $t14} $t14 == $t14; + goto L2; + } + + // trace_local[store]($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:339:13+5 + $temp_0'$1_staking_contract_Store' := $Dereference($t16); + assume {:print "$track_local(56,25,7):", $temp_0'$1_staking_contract_Store'} $temp_0'$1_staking_contract_Store' == $temp_0'$1_staking_contract_Store'; + + // $t17 := borrow_field.staking_contracts($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:340:55+28 + assume {:print "$at(133,15946,15974)"} true; + $t17 := $ChildMutation($t16, 0, $staking_contracts#$1_staking_contract_Store($Dereference($t16))); + + // $t18 := simple_map::borrow_mut($t17, $t1) on_abort goto L2 with $t14 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:340:32+63 + call $t18,$t17 := $1_simple_map_borrow_mut'address_$1_staking_contract_StakingContract'($t17, $t1); + if ($abort_flag) { + assume {:print "$at(133,15923,15986)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(56,25):", $t14} $t14 == $t14; + goto L2; + } + + // trace_local[staking_contract]($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:340:13+16 + $temp_0'$1_staking_contract_StakingContract' := $Dereference($t18); + assume {:print "$track_local(56,25,6):", $temp_0'$1_staking_contract_StakingContract'} $temp_0'$1_staking_contract_StakingContract' == $temp_0'$1_staking_contract_StakingContract'; + + // $t19 := get_field.pool_address($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:341:28+29 + assume {:print "$at(133,16015,16044)"} true; + $t19 := $pool_address#$1_staking_contract_StakingContract($Dereference($t18)); + + // trace_local[pool_address]($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:341:13+12 + assume {:print "$track_local(56,25,4):", $t19} $t19 == $t19; + + // $t20 := stake::get_delegated_voter($t19) on_abort goto L2 with $t14 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:342:25+40 + assume {:print "$at(133,16070,16110)"} true; + call $t20 := $1_stake_get_delegated_voter($t19); + if ($abort_flag) { + assume {:print "$at(133,16070,16110)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(56,25):", $t14} $t14 == $t14; + goto L2; + } + + // trace_local[old_voter]($t20) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:342:13+9 + assume {:print "$track_local(56,25,3):", $t20} $t20 == $t20; + + // $t21 := get_field.owner_cap($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:343:45+27 + assume {:print "$at(133,16156,16183)"} true; + $t21 := $owner_cap#$1_staking_contract_StakingContract($Dereference($t18)); + + // assume Identical($t22, select stake::OwnerCapability.pool_address($t21)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:136:9+42 + assume {:print "$at(132,6139,6181)"} true; + assume ($t22 == $pool_address#$1_stake_OwnerCapability($t21)); + + // stake::set_delegated_voter_with_cap($t21, $t2) on_abort goto L2 with $t14 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:343:9+75 + assume {:print "$at(133,16120,16195)"} true; + call $1_stake_set_delegated_voter_with_cap($t21, $t2); + if ($abort_flag) { + assume {:print "$at(133,16120,16195)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(56,25):", $t14} $t14 == $t14; + goto L2; + } + + // $t23 := borrow_field.update_voter_events($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:346:13+30 + assume {:print "$at(133,16230,16260)"} true; + $t23 := $ChildMutation($t16, 2, $update_voter_events#$1_staking_contract_Store($Dereference($t16))); + + // $t24 := pack staking_contract::UpdateVoterEvent($t1, $t19, $t20, $t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:347:13+65 + assume {:print "$at(133,16274,16339)"} true; + $t24 := $1_staking_contract_UpdateVoterEvent($t1, $t19, $t20, $t2); + + // opaque begin: event::emit_event($t23, $t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:345:9+144 + assume {:print "$at(133,16206,16350)"} true; + + // opaque end: event::emit_event($t23, $t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:345:9+144 + + // write_back[Reference($t16).update_voter_events (event::EventHandle)]($t23) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:345:9+144 + $t16 := $UpdateMutation($t16, $Update'$1_staking_contract_Store'_update_voter_events($Dereference($t16), $Dereference($t23))); + + // pack_ref_deep($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:345:9+144 + + // write_back[staking_contract::Store@]($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:345:9+144 + $1_staking_contract_Store_$memory := $ResourceUpdate($1_staking_contract_Store_$memory, $GlobalLocationAddress($t16), + $Dereference($t16)); + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:349:5+1 + assume {:print "$at(133,16356,16357)"} true; +L1: + + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:349:5+1 + assume {:print "$at(133,16356,16357)"} true; + return; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:349:5+1 +L2: + + // abort($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:349:5+1 + assume {:print "$at(133,16356,16357)"} true; + $abort_code := $t14; + $abort_flag := true; + return; + +} + +// struct vesting::DistributeEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:230:5+134 +type {:datatype} $1_vesting_DistributeEvent; +function {:constructor} $1_vesting_DistributeEvent($admin: int, $vesting_contract_address: int, $amount: int): $1_vesting_DistributeEvent; +function {:inline} $Update'$1_vesting_DistributeEvent'_admin(s: $1_vesting_DistributeEvent, x: int): $1_vesting_DistributeEvent { + $1_vesting_DistributeEvent(x, $vesting_contract_address#$1_vesting_DistributeEvent(s), $amount#$1_vesting_DistributeEvent(s)) +} +function {:inline} $Update'$1_vesting_DistributeEvent'_vesting_contract_address(s: $1_vesting_DistributeEvent, x: int): $1_vesting_DistributeEvent { + $1_vesting_DistributeEvent($admin#$1_vesting_DistributeEvent(s), x, $amount#$1_vesting_DistributeEvent(s)) +} +function {:inline} $Update'$1_vesting_DistributeEvent'_amount(s: $1_vesting_DistributeEvent, x: int): $1_vesting_DistributeEvent { + $1_vesting_DistributeEvent($admin#$1_vesting_DistributeEvent(s), $vesting_contract_address#$1_vesting_DistributeEvent(s), x) +} +function $IsValid'$1_vesting_DistributeEvent'(s: $1_vesting_DistributeEvent): bool { + $IsValid'address'($admin#$1_vesting_DistributeEvent(s)) + && $IsValid'address'($vesting_contract_address#$1_vesting_DistributeEvent(s)) + && $IsValid'u64'($amount#$1_vesting_DistributeEvent(s)) +} +function {:inline} $IsEqual'$1_vesting_DistributeEvent'(s1: $1_vesting_DistributeEvent, s2: $1_vesting_DistributeEvent): bool { + s1 == s2 +} + +// struct vesting::ResetLockupEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:200:5+194 +type {:datatype} $1_vesting_ResetLockupEvent; +function {:constructor} $1_vesting_ResetLockupEvent($admin: int, $vesting_contract_address: int, $staking_pool_address: int, $new_lockup_expiration_secs: int): $1_vesting_ResetLockupEvent; +function {:inline} $Update'$1_vesting_ResetLockupEvent'_admin(s: $1_vesting_ResetLockupEvent, x: int): $1_vesting_ResetLockupEvent { + $1_vesting_ResetLockupEvent(x, $vesting_contract_address#$1_vesting_ResetLockupEvent(s), $staking_pool_address#$1_vesting_ResetLockupEvent(s), $new_lockup_expiration_secs#$1_vesting_ResetLockupEvent(s)) +} +function {:inline} $Update'$1_vesting_ResetLockupEvent'_vesting_contract_address(s: $1_vesting_ResetLockupEvent, x: int): $1_vesting_ResetLockupEvent { + $1_vesting_ResetLockupEvent($admin#$1_vesting_ResetLockupEvent(s), x, $staking_pool_address#$1_vesting_ResetLockupEvent(s), $new_lockup_expiration_secs#$1_vesting_ResetLockupEvent(s)) +} +function {:inline} $Update'$1_vesting_ResetLockupEvent'_staking_pool_address(s: $1_vesting_ResetLockupEvent, x: int): $1_vesting_ResetLockupEvent { + $1_vesting_ResetLockupEvent($admin#$1_vesting_ResetLockupEvent(s), $vesting_contract_address#$1_vesting_ResetLockupEvent(s), x, $new_lockup_expiration_secs#$1_vesting_ResetLockupEvent(s)) +} +function {:inline} $Update'$1_vesting_ResetLockupEvent'_new_lockup_expiration_secs(s: $1_vesting_ResetLockupEvent, x: int): $1_vesting_ResetLockupEvent { + $1_vesting_ResetLockupEvent($admin#$1_vesting_ResetLockupEvent(s), $vesting_contract_address#$1_vesting_ResetLockupEvent(s), $staking_pool_address#$1_vesting_ResetLockupEvent(s), x) +} +function $IsValid'$1_vesting_ResetLockupEvent'(s: $1_vesting_ResetLockupEvent): bool { + $IsValid'address'($admin#$1_vesting_ResetLockupEvent(s)) + && $IsValid'address'($vesting_contract_address#$1_vesting_ResetLockupEvent(s)) + && $IsValid'address'($staking_pool_address#$1_vesting_ResetLockupEvent(s)) + && $IsValid'u64'($new_lockup_expiration_secs#$1_vesting_ResetLockupEvent(s)) +} +function {:inline} $IsEqual'$1_vesting_ResetLockupEvent'(s1: $1_vesting_ResetLockupEvent, s2: $1_vesting_ResetLockupEvent): bool { + s1 == s2 +} + +// struct vesting::UpdateVoterEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:192:5+209 +type {:datatype} $1_vesting_UpdateVoterEvent; +function {:constructor} $1_vesting_UpdateVoterEvent($admin: int, $vesting_contract_address: int, $staking_pool_address: int, $old_voter: int, $new_voter: int): $1_vesting_UpdateVoterEvent; +function {:inline} $Update'$1_vesting_UpdateVoterEvent'_admin(s: $1_vesting_UpdateVoterEvent, x: int): $1_vesting_UpdateVoterEvent { + $1_vesting_UpdateVoterEvent(x, $vesting_contract_address#$1_vesting_UpdateVoterEvent(s), $staking_pool_address#$1_vesting_UpdateVoterEvent(s), $old_voter#$1_vesting_UpdateVoterEvent(s), $new_voter#$1_vesting_UpdateVoterEvent(s)) +} +function {:inline} $Update'$1_vesting_UpdateVoterEvent'_vesting_contract_address(s: $1_vesting_UpdateVoterEvent, x: int): $1_vesting_UpdateVoterEvent { + $1_vesting_UpdateVoterEvent($admin#$1_vesting_UpdateVoterEvent(s), x, $staking_pool_address#$1_vesting_UpdateVoterEvent(s), $old_voter#$1_vesting_UpdateVoterEvent(s), $new_voter#$1_vesting_UpdateVoterEvent(s)) +} +function {:inline} $Update'$1_vesting_UpdateVoterEvent'_staking_pool_address(s: $1_vesting_UpdateVoterEvent, x: int): $1_vesting_UpdateVoterEvent { + $1_vesting_UpdateVoterEvent($admin#$1_vesting_UpdateVoterEvent(s), $vesting_contract_address#$1_vesting_UpdateVoterEvent(s), x, $old_voter#$1_vesting_UpdateVoterEvent(s), $new_voter#$1_vesting_UpdateVoterEvent(s)) +} +function {:inline} $Update'$1_vesting_UpdateVoterEvent'_old_voter(s: $1_vesting_UpdateVoterEvent, x: int): $1_vesting_UpdateVoterEvent { + $1_vesting_UpdateVoterEvent($admin#$1_vesting_UpdateVoterEvent(s), $vesting_contract_address#$1_vesting_UpdateVoterEvent(s), $staking_pool_address#$1_vesting_UpdateVoterEvent(s), x, $new_voter#$1_vesting_UpdateVoterEvent(s)) +} +function {:inline} $Update'$1_vesting_UpdateVoterEvent'_new_voter(s: $1_vesting_UpdateVoterEvent, x: int): $1_vesting_UpdateVoterEvent { + $1_vesting_UpdateVoterEvent($admin#$1_vesting_UpdateVoterEvent(s), $vesting_contract_address#$1_vesting_UpdateVoterEvent(s), $staking_pool_address#$1_vesting_UpdateVoterEvent(s), $old_voter#$1_vesting_UpdateVoterEvent(s), x) +} +function $IsValid'$1_vesting_UpdateVoterEvent'(s: $1_vesting_UpdateVoterEvent): bool { + $IsValid'address'($admin#$1_vesting_UpdateVoterEvent(s)) + && $IsValid'address'($vesting_contract_address#$1_vesting_UpdateVoterEvent(s)) + && $IsValid'address'($staking_pool_address#$1_vesting_UpdateVoterEvent(s)) + && $IsValid'address'($old_voter#$1_vesting_UpdateVoterEvent(s)) + && $IsValid'address'($new_voter#$1_vesting_UpdateVoterEvent(s)) +} +function {:inline} $IsEqual'$1_vesting_UpdateVoterEvent'(s1: $1_vesting_UpdateVoterEvent, s2: $1_vesting_UpdateVoterEvent): bool { + s1 == s2 +} + +// struct vesting::AdminStore at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:165:5+265 +type {:datatype} $1_vesting_AdminStore; +function {:constructor} $1_vesting_AdminStore($vesting_contracts: Vec (int), $nonce: int, $create_events: $1_event_EventHandle'$1_vesting_CreateVestingContractEvent'): $1_vesting_AdminStore; +function {:inline} $Update'$1_vesting_AdminStore'_vesting_contracts(s: $1_vesting_AdminStore, x: Vec (int)): $1_vesting_AdminStore { + $1_vesting_AdminStore(x, $nonce#$1_vesting_AdminStore(s), $create_events#$1_vesting_AdminStore(s)) +} +function {:inline} $Update'$1_vesting_AdminStore'_nonce(s: $1_vesting_AdminStore, x: int): $1_vesting_AdminStore { + $1_vesting_AdminStore($vesting_contracts#$1_vesting_AdminStore(s), x, $create_events#$1_vesting_AdminStore(s)) +} +function {:inline} $Update'$1_vesting_AdminStore'_create_events(s: $1_vesting_AdminStore, x: $1_event_EventHandle'$1_vesting_CreateVestingContractEvent'): $1_vesting_AdminStore { + $1_vesting_AdminStore($vesting_contracts#$1_vesting_AdminStore(s), $nonce#$1_vesting_AdminStore(s), x) +} +function $IsValid'$1_vesting_AdminStore'(s: $1_vesting_AdminStore): bool { + $IsValid'vec'address''($vesting_contracts#$1_vesting_AdminStore(s)) + && $IsValid'u64'($nonce#$1_vesting_AdminStore(s)) + && $IsValid'$1_event_EventHandle'$1_vesting_CreateVestingContractEvent''($create_events#$1_vesting_AdminStore(s)) +} +function {:inline} $IsEqual'$1_vesting_AdminStore'(s1: $1_vesting_AdminStore, s2: $1_vesting_AdminStore): bool { + $IsEqual'vec'address''($vesting_contracts#$1_vesting_AdminStore(s1), $vesting_contracts#$1_vesting_AdminStore(s2)) + && $IsEqual'u64'($nonce#$1_vesting_AdminStore(s1), $nonce#$1_vesting_AdminStore(s2)) + && $IsEqual'$1_event_EventHandle'$1_vesting_CreateVestingContractEvent''($create_events#$1_vesting_AdminStore(s1), $create_events#$1_vesting_AdminStore(s2))} +var $1_vesting_AdminStore_$memory: $Memory $1_vesting_AdminStore; + +// struct vesting::AdminWithdrawEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:241:5+137 +type {:datatype} $1_vesting_AdminWithdrawEvent; +function {:constructor} $1_vesting_AdminWithdrawEvent($admin: int, $vesting_contract_address: int, $amount: int): $1_vesting_AdminWithdrawEvent; +function {:inline} $Update'$1_vesting_AdminWithdrawEvent'_admin(s: $1_vesting_AdminWithdrawEvent, x: int): $1_vesting_AdminWithdrawEvent { + $1_vesting_AdminWithdrawEvent(x, $vesting_contract_address#$1_vesting_AdminWithdrawEvent(s), $amount#$1_vesting_AdminWithdrawEvent(s)) +} +function {:inline} $Update'$1_vesting_AdminWithdrawEvent'_vesting_contract_address(s: $1_vesting_AdminWithdrawEvent, x: int): $1_vesting_AdminWithdrawEvent { + $1_vesting_AdminWithdrawEvent($admin#$1_vesting_AdminWithdrawEvent(s), x, $amount#$1_vesting_AdminWithdrawEvent(s)) +} +function {:inline} $Update'$1_vesting_AdminWithdrawEvent'_amount(s: $1_vesting_AdminWithdrawEvent, x: int): $1_vesting_AdminWithdrawEvent { + $1_vesting_AdminWithdrawEvent($admin#$1_vesting_AdminWithdrawEvent(s), $vesting_contract_address#$1_vesting_AdminWithdrawEvent(s), x) +} +function $IsValid'$1_vesting_AdminWithdrawEvent'(s: $1_vesting_AdminWithdrawEvent): bool { + $IsValid'address'($admin#$1_vesting_AdminWithdrawEvent(s)) + && $IsValid'address'($vesting_contract_address#$1_vesting_AdminWithdrawEvent(s)) + && $IsValid'u64'($amount#$1_vesting_AdminWithdrawEvent(s)) +} +function {:inline} $IsEqual'$1_vesting_AdminWithdrawEvent'(s1: $1_vesting_AdminWithdrawEvent, s2: $1_vesting_AdminWithdrawEvent): bool { + s1 == s2 +} + +// struct vesting::CreateVestingContractEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:173:5+290 +type {:datatype} $1_vesting_CreateVestingContractEvent; +function {:constructor} $1_vesting_CreateVestingContractEvent($operator: int, $voter: int, $grant_amount: int, $withdrawal_address: int, $vesting_contract_address: int, $staking_pool_address: int, $commission_percentage: int): $1_vesting_CreateVestingContractEvent; +function {:inline} $Update'$1_vesting_CreateVestingContractEvent'_operator(s: $1_vesting_CreateVestingContractEvent, x: int): $1_vesting_CreateVestingContractEvent { + $1_vesting_CreateVestingContractEvent(x, $voter#$1_vesting_CreateVestingContractEvent(s), $grant_amount#$1_vesting_CreateVestingContractEvent(s), $withdrawal_address#$1_vesting_CreateVestingContractEvent(s), $vesting_contract_address#$1_vesting_CreateVestingContractEvent(s), $staking_pool_address#$1_vesting_CreateVestingContractEvent(s), $commission_percentage#$1_vesting_CreateVestingContractEvent(s)) +} +function {:inline} $Update'$1_vesting_CreateVestingContractEvent'_voter(s: $1_vesting_CreateVestingContractEvent, x: int): $1_vesting_CreateVestingContractEvent { + $1_vesting_CreateVestingContractEvent($operator#$1_vesting_CreateVestingContractEvent(s), x, $grant_amount#$1_vesting_CreateVestingContractEvent(s), $withdrawal_address#$1_vesting_CreateVestingContractEvent(s), $vesting_contract_address#$1_vesting_CreateVestingContractEvent(s), $staking_pool_address#$1_vesting_CreateVestingContractEvent(s), $commission_percentage#$1_vesting_CreateVestingContractEvent(s)) +} +function {:inline} $Update'$1_vesting_CreateVestingContractEvent'_grant_amount(s: $1_vesting_CreateVestingContractEvent, x: int): $1_vesting_CreateVestingContractEvent { + $1_vesting_CreateVestingContractEvent($operator#$1_vesting_CreateVestingContractEvent(s), $voter#$1_vesting_CreateVestingContractEvent(s), x, $withdrawal_address#$1_vesting_CreateVestingContractEvent(s), $vesting_contract_address#$1_vesting_CreateVestingContractEvent(s), $staking_pool_address#$1_vesting_CreateVestingContractEvent(s), $commission_percentage#$1_vesting_CreateVestingContractEvent(s)) +} +function {:inline} $Update'$1_vesting_CreateVestingContractEvent'_withdrawal_address(s: $1_vesting_CreateVestingContractEvent, x: int): $1_vesting_CreateVestingContractEvent { + $1_vesting_CreateVestingContractEvent($operator#$1_vesting_CreateVestingContractEvent(s), $voter#$1_vesting_CreateVestingContractEvent(s), $grant_amount#$1_vesting_CreateVestingContractEvent(s), x, $vesting_contract_address#$1_vesting_CreateVestingContractEvent(s), $staking_pool_address#$1_vesting_CreateVestingContractEvent(s), $commission_percentage#$1_vesting_CreateVestingContractEvent(s)) +} +function {:inline} $Update'$1_vesting_CreateVestingContractEvent'_vesting_contract_address(s: $1_vesting_CreateVestingContractEvent, x: int): $1_vesting_CreateVestingContractEvent { + $1_vesting_CreateVestingContractEvent($operator#$1_vesting_CreateVestingContractEvent(s), $voter#$1_vesting_CreateVestingContractEvent(s), $grant_amount#$1_vesting_CreateVestingContractEvent(s), $withdrawal_address#$1_vesting_CreateVestingContractEvent(s), x, $staking_pool_address#$1_vesting_CreateVestingContractEvent(s), $commission_percentage#$1_vesting_CreateVestingContractEvent(s)) +} +function {:inline} $Update'$1_vesting_CreateVestingContractEvent'_staking_pool_address(s: $1_vesting_CreateVestingContractEvent, x: int): $1_vesting_CreateVestingContractEvent { + $1_vesting_CreateVestingContractEvent($operator#$1_vesting_CreateVestingContractEvent(s), $voter#$1_vesting_CreateVestingContractEvent(s), $grant_amount#$1_vesting_CreateVestingContractEvent(s), $withdrawal_address#$1_vesting_CreateVestingContractEvent(s), $vesting_contract_address#$1_vesting_CreateVestingContractEvent(s), x, $commission_percentage#$1_vesting_CreateVestingContractEvent(s)) +} +function {:inline} $Update'$1_vesting_CreateVestingContractEvent'_commission_percentage(s: $1_vesting_CreateVestingContractEvent, x: int): $1_vesting_CreateVestingContractEvent { + $1_vesting_CreateVestingContractEvent($operator#$1_vesting_CreateVestingContractEvent(s), $voter#$1_vesting_CreateVestingContractEvent(s), $grant_amount#$1_vesting_CreateVestingContractEvent(s), $withdrawal_address#$1_vesting_CreateVestingContractEvent(s), $vesting_contract_address#$1_vesting_CreateVestingContractEvent(s), $staking_pool_address#$1_vesting_CreateVestingContractEvent(s), x) +} +function $IsValid'$1_vesting_CreateVestingContractEvent'(s: $1_vesting_CreateVestingContractEvent): bool { + $IsValid'address'($operator#$1_vesting_CreateVestingContractEvent(s)) + && $IsValid'address'($voter#$1_vesting_CreateVestingContractEvent(s)) + && $IsValid'u64'($grant_amount#$1_vesting_CreateVestingContractEvent(s)) + && $IsValid'address'($withdrawal_address#$1_vesting_CreateVestingContractEvent(s)) + && $IsValid'address'($vesting_contract_address#$1_vesting_CreateVestingContractEvent(s)) + && $IsValid'address'($staking_pool_address#$1_vesting_CreateVestingContractEvent(s)) + && $IsValid'u64'($commission_percentage#$1_vesting_CreateVestingContractEvent(s)) +} +function {:inline} $IsEqual'$1_vesting_CreateVestingContractEvent'(s1: $1_vesting_CreateVestingContractEvent, s2: $1_vesting_CreateVestingContractEvent): bool { + s1 == s2 +} + +// struct vesting::SetBeneficiaryEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:207:5+215 +type {:datatype} $1_vesting_SetBeneficiaryEvent; +function {:constructor} $1_vesting_SetBeneficiaryEvent($admin: int, $vesting_contract_address: int, $shareholder: int, $old_beneficiary: int, $new_beneficiary: int): $1_vesting_SetBeneficiaryEvent; +function {:inline} $Update'$1_vesting_SetBeneficiaryEvent'_admin(s: $1_vesting_SetBeneficiaryEvent, x: int): $1_vesting_SetBeneficiaryEvent { + $1_vesting_SetBeneficiaryEvent(x, $vesting_contract_address#$1_vesting_SetBeneficiaryEvent(s), $shareholder#$1_vesting_SetBeneficiaryEvent(s), $old_beneficiary#$1_vesting_SetBeneficiaryEvent(s), $new_beneficiary#$1_vesting_SetBeneficiaryEvent(s)) +} +function {:inline} $Update'$1_vesting_SetBeneficiaryEvent'_vesting_contract_address(s: $1_vesting_SetBeneficiaryEvent, x: int): $1_vesting_SetBeneficiaryEvent { + $1_vesting_SetBeneficiaryEvent($admin#$1_vesting_SetBeneficiaryEvent(s), x, $shareholder#$1_vesting_SetBeneficiaryEvent(s), $old_beneficiary#$1_vesting_SetBeneficiaryEvent(s), $new_beneficiary#$1_vesting_SetBeneficiaryEvent(s)) +} +function {:inline} $Update'$1_vesting_SetBeneficiaryEvent'_shareholder(s: $1_vesting_SetBeneficiaryEvent, x: int): $1_vesting_SetBeneficiaryEvent { + $1_vesting_SetBeneficiaryEvent($admin#$1_vesting_SetBeneficiaryEvent(s), $vesting_contract_address#$1_vesting_SetBeneficiaryEvent(s), x, $old_beneficiary#$1_vesting_SetBeneficiaryEvent(s), $new_beneficiary#$1_vesting_SetBeneficiaryEvent(s)) +} +function {:inline} $Update'$1_vesting_SetBeneficiaryEvent'_old_beneficiary(s: $1_vesting_SetBeneficiaryEvent, x: int): $1_vesting_SetBeneficiaryEvent { + $1_vesting_SetBeneficiaryEvent($admin#$1_vesting_SetBeneficiaryEvent(s), $vesting_contract_address#$1_vesting_SetBeneficiaryEvent(s), $shareholder#$1_vesting_SetBeneficiaryEvent(s), x, $new_beneficiary#$1_vesting_SetBeneficiaryEvent(s)) +} +function {:inline} $Update'$1_vesting_SetBeneficiaryEvent'_new_beneficiary(s: $1_vesting_SetBeneficiaryEvent, x: int): $1_vesting_SetBeneficiaryEvent { + $1_vesting_SetBeneficiaryEvent($admin#$1_vesting_SetBeneficiaryEvent(s), $vesting_contract_address#$1_vesting_SetBeneficiaryEvent(s), $shareholder#$1_vesting_SetBeneficiaryEvent(s), $old_beneficiary#$1_vesting_SetBeneficiaryEvent(s), x) +} +function $IsValid'$1_vesting_SetBeneficiaryEvent'(s: $1_vesting_SetBeneficiaryEvent): bool { + $IsValid'address'($admin#$1_vesting_SetBeneficiaryEvent(s)) + && $IsValid'address'($vesting_contract_address#$1_vesting_SetBeneficiaryEvent(s)) + && $IsValid'address'($shareholder#$1_vesting_SetBeneficiaryEvent(s)) + && $IsValid'address'($old_beneficiary#$1_vesting_SetBeneficiaryEvent(s)) + && $IsValid'address'($new_beneficiary#$1_vesting_SetBeneficiaryEvent(s)) +} +function {:inline} $IsEqual'$1_vesting_SetBeneficiaryEvent'(s1: $1_vesting_SetBeneficiaryEvent, s2: $1_vesting_SetBeneficiaryEvent): bool { + s1 == s2 +} + +// struct vesting::StakingInfo at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:123:5+384 +type {:datatype} $1_vesting_StakingInfo; +function {:constructor} $1_vesting_StakingInfo($pool_address: int, $operator: int, $voter: int, $commission_percentage: int): $1_vesting_StakingInfo; +function {:inline} $Update'$1_vesting_StakingInfo'_pool_address(s: $1_vesting_StakingInfo, x: int): $1_vesting_StakingInfo { + $1_vesting_StakingInfo(x, $operator#$1_vesting_StakingInfo(s), $voter#$1_vesting_StakingInfo(s), $commission_percentage#$1_vesting_StakingInfo(s)) +} +function {:inline} $Update'$1_vesting_StakingInfo'_operator(s: $1_vesting_StakingInfo, x: int): $1_vesting_StakingInfo { + $1_vesting_StakingInfo($pool_address#$1_vesting_StakingInfo(s), x, $voter#$1_vesting_StakingInfo(s), $commission_percentage#$1_vesting_StakingInfo(s)) +} +function {:inline} $Update'$1_vesting_StakingInfo'_voter(s: $1_vesting_StakingInfo, x: int): $1_vesting_StakingInfo { + $1_vesting_StakingInfo($pool_address#$1_vesting_StakingInfo(s), $operator#$1_vesting_StakingInfo(s), x, $commission_percentage#$1_vesting_StakingInfo(s)) +} +function {:inline} $Update'$1_vesting_StakingInfo'_commission_percentage(s: $1_vesting_StakingInfo, x: int): $1_vesting_StakingInfo { + $1_vesting_StakingInfo($pool_address#$1_vesting_StakingInfo(s), $operator#$1_vesting_StakingInfo(s), $voter#$1_vesting_StakingInfo(s), x) +} +function $IsValid'$1_vesting_StakingInfo'(s: $1_vesting_StakingInfo): bool { + $IsValid'address'($pool_address#$1_vesting_StakingInfo(s)) + && $IsValid'address'($operator#$1_vesting_StakingInfo(s)) + && $IsValid'address'($voter#$1_vesting_StakingInfo(s)) + && $IsValid'u64'($commission_percentage#$1_vesting_StakingInfo(s)) +} +function {:inline} $IsEqual'$1_vesting_StakingInfo'(s1: $1_vesting_StakingInfo, s2: $1_vesting_StakingInfo): bool { + s1 == s2 +} + +// struct vesting::TerminateEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:236:5+112 +type {:datatype} $1_vesting_TerminateEvent; +function {:constructor} $1_vesting_TerminateEvent($admin: int, $vesting_contract_address: int): $1_vesting_TerminateEvent; +function {:inline} $Update'$1_vesting_TerminateEvent'_admin(s: $1_vesting_TerminateEvent, x: int): $1_vesting_TerminateEvent { + $1_vesting_TerminateEvent(x, $vesting_contract_address#$1_vesting_TerminateEvent(s)) +} +function {:inline} $Update'$1_vesting_TerminateEvent'_vesting_contract_address(s: $1_vesting_TerminateEvent, x: int): $1_vesting_TerminateEvent { + $1_vesting_TerminateEvent($admin#$1_vesting_TerminateEvent(s), x) +} +function $IsValid'$1_vesting_TerminateEvent'(s: $1_vesting_TerminateEvent): bool { + $IsValid'address'($admin#$1_vesting_TerminateEvent(s)) + && $IsValid'address'($vesting_contract_address#$1_vesting_TerminateEvent(s)) +} +function {:inline} $IsEqual'$1_vesting_TerminateEvent'(s1: $1_vesting_TerminateEvent, s2: $1_vesting_TerminateEvent): bool { + s1 == s2 +} + +// struct vesting::UnlockRewardsEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:215:5+176 +type {:datatype} $1_vesting_UnlockRewardsEvent; +function {:constructor} $1_vesting_UnlockRewardsEvent($admin: int, $vesting_contract_address: int, $staking_pool_address: int, $amount: int): $1_vesting_UnlockRewardsEvent; +function {:inline} $Update'$1_vesting_UnlockRewardsEvent'_admin(s: $1_vesting_UnlockRewardsEvent, x: int): $1_vesting_UnlockRewardsEvent { + $1_vesting_UnlockRewardsEvent(x, $vesting_contract_address#$1_vesting_UnlockRewardsEvent(s), $staking_pool_address#$1_vesting_UnlockRewardsEvent(s), $amount#$1_vesting_UnlockRewardsEvent(s)) +} +function {:inline} $Update'$1_vesting_UnlockRewardsEvent'_vesting_contract_address(s: $1_vesting_UnlockRewardsEvent, x: int): $1_vesting_UnlockRewardsEvent { + $1_vesting_UnlockRewardsEvent($admin#$1_vesting_UnlockRewardsEvent(s), x, $staking_pool_address#$1_vesting_UnlockRewardsEvent(s), $amount#$1_vesting_UnlockRewardsEvent(s)) +} +function {:inline} $Update'$1_vesting_UnlockRewardsEvent'_staking_pool_address(s: $1_vesting_UnlockRewardsEvent, x: int): $1_vesting_UnlockRewardsEvent { + $1_vesting_UnlockRewardsEvent($admin#$1_vesting_UnlockRewardsEvent(s), $vesting_contract_address#$1_vesting_UnlockRewardsEvent(s), x, $amount#$1_vesting_UnlockRewardsEvent(s)) +} +function {:inline} $Update'$1_vesting_UnlockRewardsEvent'_amount(s: $1_vesting_UnlockRewardsEvent, x: int): $1_vesting_UnlockRewardsEvent { + $1_vesting_UnlockRewardsEvent($admin#$1_vesting_UnlockRewardsEvent(s), $vesting_contract_address#$1_vesting_UnlockRewardsEvent(s), $staking_pool_address#$1_vesting_UnlockRewardsEvent(s), x) +} +function $IsValid'$1_vesting_UnlockRewardsEvent'(s: $1_vesting_UnlockRewardsEvent): bool { + $IsValid'address'($admin#$1_vesting_UnlockRewardsEvent(s)) + && $IsValid'address'($vesting_contract_address#$1_vesting_UnlockRewardsEvent(s)) + && $IsValid'address'($staking_pool_address#$1_vesting_UnlockRewardsEvent(s)) + && $IsValid'u64'($amount#$1_vesting_UnlockRewardsEvent(s)) +} +function {:inline} $IsEqual'$1_vesting_UnlockRewardsEvent'(s1: $1_vesting_UnlockRewardsEvent, s2: $1_vesting_UnlockRewardsEvent): bool { + s1 == s2 +} + +// struct vesting::UpdateOperatorEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:183:5+254 +type {:datatype} $1_vesting_UpdateOperatorEvent; +function {:constructor} $1_vesting_UpdateOperatorEvent($admin: int, $vesting_contract_address: int, $staking_pool_address: int, $old_operator: int, $new_operator: int, $commission_percentage: int): $1_vesting_UpdateOperatorEvent; +function {:inline} $Update'$1_vesting_UpdateOperatorEvent'_admin(s: $1_vesting_UpdateOperatorEvent, x: int): $1_vesting_UpdateOperatorEvent { + $1_vesting_UpdateOperatorEvent(x, $vesting_contract_address#$1_vesting_UpdateOperatorEvent(s), $staking_pool_address#$1_vesting_UpdateOperatorEvent(s), $old_operator#$1_vesting_UpdateOperatorEvent(s), $new_operator#$1_vesting_UpdateOperatorEvent(s), $commission_percentage#$1_vesting_UpdateOperatorEvent(s)) +} +function {:inline} $Update'$1_vesting_UpdateOperatorEvent'_vesting_contract_address(s: $1_vesting_UpdateOperatorEvent, x: int): $1_vesting_UpdateOperatorEvent { + $1_vesting_UpdateOperatorEvent($admin#$1_vesting_UpdateOperatorEvent(s), x, $staking_pool_address#$1_vesting_UpdateOperatorEvent(s), $old_operator#$1_vesting_UpdateOperatorEvent(s), $new_operator#$1_vesting_UpdateOperatorEvent(s), $commission_percentage#$1_vesting_UpdateOperatorEvent(s)) +} +function {:inline} $Update'$1_vesting_UpdateOperatorEvent'_staking_pool_address(s: $1_vesting_UpdateOperatorEvent, x: int): $1_vesting_UpdateOperatorEvent { + $1_vesting_UpdateOperatorEvent($admin#$1_vesting_UpdateOperatorEvent(s), $vesting_contract_address#$1_vesting_UpdateOperatorEvent(s), x, $old_operator#$1_vesting_UpdateOperatorEvent(s), $new_operator#$1_vesting_UpdateOperatorEvent(s), $commission_percentage#$1_vesting_UpdateOperatorEvent(s)) +} +function {:inline} $Update'$1_vesting_UpdateOperatorEvent'_old_operator(s: $1_vesting_UpdateOperatorEvent, x: int): $1_vesting_UpdateOperatorEvent { + $1_vesting_UpdateOperatorEvent($admin#$1_vesting_UpdateOperatorEvent(s), $vesting_contract_address#$1_vesting_UpdateOperatorEvent(s), $staking_pool_address#$1_vesting_UpdateOperatorEvent(s), x, $new_operator#$1_vesting_UpdateOperatorEvent(s), $commission_percentage#$1_vesting_UpdateOperatorEvent(s)) +} +function {:inline} $Update'$1_vesting_UpdateOperatorEvent'_new_operator(s: $1_vesting_UpdateOperatorEvent, x: int): $1_vesting_UpdateOperatorEvent { + $1_vesting_UpdateOperatorEvent($admin#$1_vesting_UpdateOperatorEvent(s), $vesting_contract_address#$1_vesting_UpdateOperatorEvent(s), $staking_pool_address#$1_vesting_UpdateOperatorEvent(s), $old_operator#$1_vesting_UpdateOperatorEvent(s), x, $commission_percentage#$1_vesting_UpdateOperatorEvent(s)) +} +function {:inline} $Update'$1_vesting_UpdateOperatorEvent'_commission_percentage(s: $1_vesting_UpdateOperatorEvent, x: int): $1_vesting_UpdateOperatorEvent { + $1_vesting_UpdateOperatorEvent($admin#$1_vesting_UpdateOperatorEvent(s), $vesting_contract_address#$1_vesting_UpdateOperatorEvent(s), $staking_pool_address#$1_vesting_UpdateOperatorEvent(s), $old_operator#$1_vesting_UpdateOperatorEvent(s), $new_operator#$1_vesting_UpdateOperatorEvent(s), x) +} +function $IsValid'$1_vesting_UpdateOperatorEvent'(s: $1_vesting_UpdateOperatorEvent): bool { + $IsValid'address'($admin#$1_vesting_UpdateOperatorEvent(s)) + && $IsValid'address'($vesting_contract_address#$1_vesting_UpdateOperatorEvent(s)) + && $IsValid'address'($staking_pool_address#$1_vesting_UpdateOperatorEvent(s)) + && $IsValid'address'($old_operator#$1_vesting_UpdateOperatorEvent(s)) + && $IsValid'address'($new_operator#$1_vesting_UpdateOperatorEvent(s)) + && $IsValid'u64'($commission_percentage#$1_vesting_UpdateOperatorEvent(s)) +} +function {:inline} $IsEqual'$1_vesting_UpdateOperatorEvent'(s1: $1_vesting_UpdateOperatorEvent, s2: $1_vesting_UpdateOperatorEvent): bool { + s1 == s2 +} + +// struct vesting::VestEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:222:5+195 +type {:datatype} $1_vesting_VestEvent; +function {:constructor} $1_vesting_VestEvent($admin: int, $vesting_contract_address: int, $staking_pool_address: int, $period_vested: int, $amount: int): $1_vesting_VestEvent; +function {:inline} $Update'$1_vesting_VestEvent'_admin(s: $1_vesting_VestEvent, x: int): $1_vesting_VestEvent { + $1_vesting_VestEvent(x, $vesting_contract_address#$1_vesting_VestEvent(s), $staking_pool_address#$1_vesting_VestEvent(s), $period_vested#$1_vesting_VestEvent(s), $amount#$1_vesting_VestEvent(s)) +} +function {:inline} $Update'$1_vesting_VestEvent'_vesting_contract_address(s: $1_vesting_VestEvent, x: int): $1_vesting_VestEvent { + $1_vesting_VestEvent($admin#$1_vesting_VestEvent(s), x, $staking_pool_address#$1_vesting_VestEvent(s), $period_vested#$1_vesting_VestEvent(s), $amount#$1_vesting_VestEvent(s)) +} +function {:inline} $Update'$1_vesting_VestEvent'_staking_pool_address(s: $1_vesting_VestEvent, x: int): $1_vesting_VestEvent { + $1_vesting_VestEvent($admin#$1_vesting_VestEvent(s), $vesting_contract_address#$1_vesting_VestEvent(s), x, $period_vested#$1_vesting_VestEvent(s), $amount#$1_vesting_VestEvent(s)) +} +function {:inline} $Update'$1_vesting_VestEvent'_period_vested(s: $1_vesting_VestEvent, x: int): $1_vesting_VestEvent { + $1_vesting_VestEvent($admin#$1_vesting_VestEvent(s), $vesting_contract_address#$1_vesting_VestEvent(s), $staking_pool_address#$1_vesting_VestEvent(s), x, $amount#$1_vesting_VestEvent(s)) +} +function {:inline} $Update'$1_vesting_VestEvent'_amount(s: $1_vesting_VestEvent, x: int): $1_vesting_VestEvent { + $1_vesting_VestEvent($admin#$1_vesting_VestEvent(s), $vesting_contract_address#$1_vesting_VestEvent(s), $staking_pool_address#$1_vesting_VestEvent(s), $period_vested#$1_vesting_VestEvent(s), x) +} +function $IsValid'$1_vesting_VestEvent'(s: $1_vesting_VestEvent): bool { + $IsValid'address'($admin#$1_vesting_VestEvent(s)) + && $IsValid'address'($vesting_contract_address#$1_vesting_VestEvent(s)) + && $IsValid'address'($staking_pool_address#$1_vesting_VestEvent(s)) + && $IsValid'u64'($period_vested#$1_vesting_VestEvent(s)) + && $IsValid'u64'($amount#$1_vesting_VestEvent(s)) +} +function {:inline} $IsEqual'$1_vesting_VestEvent'(s1: $1_vesting_VestEvent, s2: $1_vesting_VestEvent): bool { + s1 == s2 +} + +// struct vesting::VestingAccountManagement at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:161:5+90 +type {:datatype} $1_vesting_VestingAccountManagement; +function {:constructor} $1_vesting_VestingAccountManagement($roles: Table int (int)): $1_vesting_VestingAccountManagement; +function {:inline} $Update'$1_vesting_VestingAccountManagement'_roles(s: $1_vesting_VestingAccountManagement, x: Table int (int)): $1_vesting_VestingAccountManagement { + $1_vesting_VestingAccountManagement(x) +} +function $IsValid'$1_vesting_VestingAccountManagement'(s: $1_vesting_VestingAccountManagement): bool { + $IsValid'$1_simple_map_SimpleMap'$1_string_String_address''($roles#$1_vesting_VestingAccountManagement(s)) +} +function {:inline} $IsEqual'$1_vesting_VestingAccountManagement'(s1: $1_vesting_VestingAccountManagement, s2: $1_vesting_VestingAccountManagement): bool { + $IsEqual'$1_simple_map_SimpleMap'$1_string_String_address''($roles#$1_vesting_VestingAccountManagement(s1), $roles#$1_vesting_VestingAccountManagement(s2))} +var $1_vesting_VestingAccountManagement_$memory: $Memory $1_vesting_VestingAccountManagement; + +// struct vesting::VestingContract at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:134:5+1189 +type {:datatype} $1_vesting_VestingContract; +function {:constructor} $1_vesting_VestingContract($state: int, $admin: int, $grant_pool: $1_pool_u64_Pool, $beneficiaries: Table int (int), $vesting_schedule: $1_vesting_VestingSchedule, $withdrawal_address: int, $staking: $1_vesting_StakingInfo, $remaining_grant: int, $signer_cap: $1_account_SignerCapability, $update_operator_events: $1_event_EventHandle'$1_vesting_UpdateOperatorEvent', $update_voter_events: $1_event_EventHandle'$1_vesting_UpdateVoterEvent', $reset_lockup_events: $1_event_EventHandle'$1_vesting_ResetLockupEvent', $set_beneficiary_events: $1_event_EventHandle'$1_vesting_SetBeneficiaryEvent', $unlock_rewards_events: $1_event_EventHandle'$1_vesting_UnlockRewardsEvent', $vest_events: $1_event_EventHandle'$1_vesting_VestEvent', $distribute_events: $1_event_EventHandle'$1_vesting_DistributeEvent', $terminate_events: $1_event_EventHandle'$1_vesting_TerminateEvent', $admin_withdraw_events: $1_event_EventHandle'$1_vesting_AdminWithdrawEvent'): $1_vesting_VestingContract; +function {:inline} $Update'$1_vesting_VestingContract'_state(s: $1_vesting_VestingContract, x: int): $1_vesting_VestingContract { + $1_vesting_VestingContract(x, $admin#$1_vesting_VestingContract(s), $grant_pool#$1_vesting_VestingContract(s), $beneficiaries#$1_vesting_VestingContract(s), $vesting_schedule#$1_vesting_VestingContract(s), $withdrawal_address#$1_vesting_VestingContract(s), $staking#$1_vesting_VestingContract(s), $remaining_grant#$1_vesting_VestingContract(s), $signer_cap#$1_vesting_VestingContract(s), $update_operator_events#$1_vesting_VestingContract(s), $update_voter_events#$1_vesting_VestingContract(s), $reset_lockup_events#$1_vesting_VestingContract(s), $set_beneficiary_events#$1_vesting_VestingContract(s), $unlock_rewards_events#$1_vesting_VestingContract(s), $vest_events#$1_vesting_VestingContract(s), $distribute_events#$1_vesting_VestingContract(s), $terminate_events#$1_vesting_VestingContract(s), $admin_withdraw_events#$1_vesting_VestingContract(s)) +} +function {:inline} $Update'$1_vesting_VestingContract'_admin(s: $1_vesting_VestingContract, x: int): $1_vesting_VestingContract { + $1_vesting_VestingContract($state#$1_vesting_VestingContract(s), x, $grant_pool#$1_vesting_VestingContract(s), $beneficiaries#$1_vesting_VestingContract(s), $vesting_schedule#$1_vesting_VestingContract(s), $withdrawal_address#$1_vesting_VestingContract(s), $staking#$1_vesting_VestingContract(s), $remaining_grant#$1_vesting_VestingContract(s), $signer_cap#$1_vesting_VestingContract(s), $update_operator_events#$1_vesting_VestingContract(s), $update_voter_events#$1_vesting_VestingContract(s), $reset_lockup_events#$1_vesting_VestingContract(s), $set_beneficiary_events#$1_vesting_VestingContract(s), $unlock_rewards_events#$1_vesting_VestingContract(s), $vest_events#$1_vesting_VestingContract(s), $distribute_events#$1_vesting_VestingContract(s), $terminate_events#$1_vesting_VestingContract(s), $admin_withdraw_events#$1_vesting_VestingContract(s)) +} +function {:inline} $Update'$1_vesting_VestingContract'_grant_pool(s: $1_vesting_VestingContract, x: $1_pool_u64_Pool): $1_vesting_VestingContract { + $1_vesting_VestingContract($state#$1_vesting_VestingContract(s), $admin#$1_vesting_VestingContract(s), x, $beneficiaries#$1_vesting_VestingContract(s), $vesting_schedule#$1_vesting_VestingContract(s), $withdrawal_address#$1_vesting_VestingContract(s), $staking#$1_vesting_VestingContract(s), $remaining_grant#$1_vesting_VestingContract(s), $signer_cap#$1_vesting_VestingContract(s), $update_operator_events#$1_vesting_VestingContract(s), $update_voter_events#$1_vesting_VestingContract(s), $reset_lockup_events#$1_vesting_VestingContract(s), $set_beneficiary_events#$1_vesting_VestingContract(s), $unlock_rewards_events#$1_vesting_VestingContract(s), $vest_events#$1_vesting_VestingContract(s), $distribute_events#$1_vesting_VestingContract(s), $terminate_events#$1_vesting_VestingContract(s), $admin_withdraw_events#$1_vesting_VestingContract(s)) +} +function {:inline} $Update'$1_vesting_VestingContract'_beneficiaries(s: $1_vesting_VestingContract, x: Table int (int)): $1_vesting_VestingContract { + $1_vesting_VestingContract($state#$1_vesting_VestingContract(s), $admin#$1_vesting_VestingContract(s), $grant_pool#$1_vesting_VestingContract(s), x, $vesting_schedule#$1_vesting_VestingContract(s), $withdrawal_address#$1_vesting_VestingContract(s), $staking#$1_vesting_VestingContract(s), $remaining_grant#$1_vesting_VestingContract(s), $signer_cap#$1_vesting_VestingContract(s), $update_operator_events#$1_vesting_VestingContract(s), $update_voter_events#$1_vesting_VestingContract(s), $reset_lockup_events#$1_vesting_VestingContract(s), $set_beneficiary_events#$1_vesting_VestingContract(s), $unlock_rewards_events#$1_vesting_VestingContract(s), $vest_events#$1_vesting_VestingContract(s), $distribute_events#$1_vesting_VestingContract(s), $terminate_events#$1_vesting_VestingContract(s), $admin_withdraw_events#$1_vesting_VestingContract(s)) +} +function {:inline} $Update'$1_vesting_VestingContract'_vesting_schedule(s: $1_vesting_VestingContract, x: $1_vesting_VestingSchedule): $1_vesting_VestingContract { + $1_vesting_VestingContract($state#$1_vesting_VestingContract(s), $admin#$1_vesting_VestingContract(s), $grant_pool#$1_vesting_VestingContract(s), $beneficiaries#$1_vesting_VestingContract(s), x, $withdrawal_address#$1_vesting_VestingContract(s), $staking#$1_vesting_VestingContract(s), $remaining_grant#$1_vesting_VestingContract(s), $signer_cap#$1_vesting_VestingContract(s), $update_operator_events#$1_vesting_VestingContract(s), $update_voter_events#$1_vesting_VestingContract(s), $reset_lockup_events#$1_vesting_VestingContract(s), $set_beneficiary_events#$1_vesting_VestingContract(s), $unlock_rewards_events#$1_vesting_VestingContract(s), $vest_events#$1_vesting_VestingContract(s), $distribute_events#$1_vesting_VestingContract(s), $terminate_events#$1_vesting_VestingContract(s), $admin_withdraw_events#$1_vesting_VestingContract(s)) +} +function {:inline} $Update'$1_vesting_VestingContract'_withdrawal_address(s: $1_vesting_VestingContract, x: int): $1_vesting_VestingContract { + $1_vesting_VestingContract($state#$1_vesting_VestingContract(s), $admin#$1_vesting_VestingContract(s), $grant_pool#$1_vesting_VestingContract(s), $beneficiaries#$1_vesting_VestingContract(s), $vesting_schedule#$1_vesting_VestingContract(s), x, $staking#$1_vesting_VestingContract(s), $remaining_grant#$1_vesting_VestingContract(s), $signer_cap#$1_vesting_VestingContract(s), $update_operator_events#$1_vesting_VestingContract(s), $update_voter_events#$1_vesting_VestingContract(s), $reset_lockup_events#$1_vesting_VestingContract(s), $set_beneficiary_events#$1_vesting_VestingContract(s), $unlock_rewards_events#$1_vesting_VestingContract(s), $vest_events#$1_vesting_VestingContract(s), $distribute_events#$1_vesting_VestingContract(s), $terminate_events#$1_vesting_VestingContract(s), $admin_withdraw_events#$1_vesting_VestingContract(s)) +} +function {:inline} $Update'$1_vesting_VestingContract'_staking(s: $1_vesting_VestingContract, x: $1_vesting_StakingInfo): $1_vesting_VestingContract { + $1_vesting_VestingContract($state#$1_vesting_VestingContract(s), $admin#$1_vesting_VestingContract(s), $grant_pool#$1_vesting_VestingContract(s), $beneficiaries#$1_vesting_VestingContract(s), $vesting_schedule#$1_vesting_VestingContract(s), $withdrawal_address#$1_vesting_VestingContract(s), x, $remaining_grant#$1_vesting_VestingContract(s), $signer_cap#$1_vesting_VestingContract(s), $update_operator_events#$1_vesting_VestingContract(s), $update_voter_events#$1_vesting_VestingContract(s), $reset_lockup_events#$1_vesting_VestingContract(s), $set_beneficiary_events#$1_vesting_VestingContract(s), $unlock_rewards_events#$1_vesting_VestingContract(s), $vest_events#$1_vesting_VestingContract(s), $distribute_events#$1_vesting_VestingContract(s), $terminate_events#$1_vesting_VestingContract(s), $admin_withdraw_events#$1_vesting_VestingContract(s)) +} +function {:inline} $Update'$1_vesting_VestingContract'_remaining_grant(s: $1_vesting_VestingContract, x: int): $1_vesting_VestingContract { + $1_vesting_VestingContract($state#$1_vesting_VestingContract(s), $admin#$1_vesting_VestingContract(s), $grant_pool#$1_vesting_VestingContract(s), $beneficiaries#$1_vesting_VestingContract(s), $vesting_schedule#$1_vesting_VestingContract(s), $withdrawal_address#$1_vesting_VestingContract(s), $staking#$1_vesting_VestingContract(s), x, $signer_cap#$1_vesting_VestingContract(s), $update_operator_events#$1_vesting_VestingContract(s), $update_voter_events#$1_vesting_VestingContract(s), $reset_lockup_events#$1_vesting_VestingContract(s), $set_beneficiary_events#$1_vesting_VestingContract(s), $unlock_rewards_events#$1_vesting_VestingContract(s), $vest_events#$1_vesting_VestingContract(s), $distribute_events#$1_vesting_VestingContract(s), $terminate_events#$1_vesting_VestingContract(s), $admin_withdraw_events#$1_vesting_VestingContract(s)) +} +function {:inline} $Update'$1_vesting_VestingContract'_signer_cap(s: $1_vesting_VestingContract, x: $1_account_SignerCapability): $1_vesting_VestingContract { + $1_vesting_VestingContract($state#$1_vesting_VestingContract(s), $admin#$1_vesting_VestingContract(s), $grant_pool#$1_vesting_VestingContract(s), $beneficiaries#$1_vesting_VestingContract(s), $vesting_schedule#$1_vesting_VestingContract(s), $withdrawal_address#$1_vesting_VestingContract(s), $staking#$1_vesting_VestingContract(s), $remaining_grant#$1_vesting_VestingContract(s), x, $update_operator_events#$1_vesting_VestingContract(s), $update_voter_events#$1_vesting_VestingContract(s), $reset_lockup_events#$1_vesting_VestingContract(s), $set_beneficiary_events#$1_vesting_VestingContract(s), $unlock_rewards_events#$1_vesting_VestingContract(s), $vest_events#$1_vesting_VestingContract(s), $distribute_events#$1_vesting_VestingContract(s), $terminate_events#$1_vesting_VestingContract(s), $admin_withdraw_events#$1_vesting_VestingContract(s)) +} +function {:inline} $Update'$1_vesting_VestingContract'_update_operator_events(s: $1_vesting_VestingContract, x: $1_event_EventHandle'$1_vesting_UpdateOperatorEvent'): $1_vesting_VestingContract { + $1_vesting_VestingContract($state#$1_vesting_VestingContract(s), $admin#$1_vesting_VestingContract(s), $grant_pool#$1_vesting_VestingContract(s), $beneficiaries#$1_vesting_VestingContract(s), $vesting_schedule#$1_vesting_VestingContract(s), $withdrawal_address#$1_vesting_VestingContract(s), $staking#$1_vesting_VestingContract(s), $remaining_grant#$1_vesting_VestingContract(s), $signer_cap#$1_vesting_VestingContract(s), x, $update_voter_events#$1_vesting_VestingContract(s), $reset_lockup_events#$1_vesting_VestingContract(s), $set_beneficiary_events#$1_vesting_VestingContract(s), $unlock_rewards_events#$1_vesting_VestingContract(s), $vest_events#$1_vesting_VestingContract(s), $distribute_events#$1_vesting_VestingContract(s), $terminate_events#$1_vesting_VestingContract(s), $admin_withdraw_events#$1_vesting_VestingContract(s)) +} +function {:inline} $Update'$1_vesting_VestingContract'_update_voter_events(s: $1_vesting_VestingContract, x: $1_event_EventHandle'$1_vesting_UpdateVoterEvent'): $1_vesting_VestingContract { + $1_vesting_VestingContract($state#$1_vesting_VestingContract(s), $admin#$1_vesting_VestingContract(s), $grant_pool#$1_vesting_VestingContract(s), $beneficiaries#$1_vesting_VestingContract(s), $vesting_schedule#$1_vesting_VestingContract(s), $withdrawal_address#$1_vesting_VestingContract(s), $staking#$1_vesting_VestingContract(s), $remaining_grant#$1_vesting_VestingContract(s), $signer_cap#$1_vesting_VestingContract(s), $update_operator_events#$1_vesting_VestingContract(s), x, $reset_lockup_events#$1_vesting_VestingContract(s), $set_beneficiary_events#$1_vesting_VestingContract(s), $unlock_rewards_events#$1_vesting_VestingContract(s), $vest_events#$1_vesting_VestingContract(s), $distribute_events#$1_vesting_VestingContract(s), $terminate_events#$1_vesting_VestingContract(s), $admin_withdraw_events#$1_vesting_VestingContract(s)) +} +function {:inline} $Update'$1_vesting_VestingContract'_reset_lockup_events(s: $1_vesting_VestingContract, x: $1_event_EventHandle'$1_vesting_ResetLockupEvent'): $1_vesting_VestingContract { + $1_vesting_VestingContract($state#$1_vesting_VestingContract(s), $admin#$1_vesting_VestingContract(s), $grant_pool#$1_vesting_VestingContract(s), $beneficiaries#$1_vesting_VestingContract(s), $vesting_schedule#$1_vesting_VestingContract(s), $withdrawal_address#$1_vesting_VestingContract(s), $staking#$1_vesting_VestingContract(s), $remaining_grant#$1_vesting_VestingContract(s), $signer_cap#$1_vesting_VestingContract(s), $update_operator_events#$1_vesting_VestingContract(s), $update_voter_events#$1_vesting_VestingContract(s), x, $set_beneficiary_events#$1_vesting_VestingContract(s), $unlock_rewards_events#$1_vesting_VestingContract(s), $vest_events#$1_vesting_VestingContract(s), $distribute_events#$1_vesting_VestingContract(s), $terminate_events#$1_vesting_VestingContract(s), $admin_withdraw_events#$1_vesting_VestingContract(s)) +} +function {:inline} $Update'$1_vesting_VestingContract'_set_beneficiary_events(s: $1_vesting_VestingContract, x: $1_event_EventHandle'$1_vesting_SetBeneficiaryEvent'): $1_vesting_VestingContract { + $1_vesting_VestingContract($state#$1_vesting_VestingContract(s), $admin#$1_vesting_VestingContract(s), $grant_pool#$1_vesting_VestingContract(s), $beneficiaries#$1_vesting_VestingContract(s), $vesting_schedule#$1_vesting_VestingContract(s), $withdrawal_address#$1_vesting_VestingContract(s), $staking#$1_vesting_VestingContract(s), $remaining_grant#$1_vesting_VestingContract(s), $signer_cap#$1_vesting_VestingContract(s), $update_operator_events#$1_vesting_VestingContract(s), $update_voter_events#$1_vesting_VestingContract(s), $reset_lockup_events#$1_vesting_VestingContract(s), x, $unlock_rewards_events#$1_vesting_VestingContract(s), $vest_events#$1_vesting_VestingContract(s), $distribute_events#$1_vesting_VestingContract(s), $terminate_events#$1_vesting_VestingContract(s), $admin_withdraw_events#$1_vesting_VestingContract(s)) +} +function {:inline} $Update'$1_vesting_VestingContract'_unlock_rewards_events(s: $1_vesting_VestingContract, x: $1_event_EventHandle'$1_vesting_UnlockRewardsEvent'): $1_vesting_VestingContract { + $1_vesting_VestingContract($state#$1_vesting_VestingContract(s), $admin#$1_vesting_VestingContract(s), $grant_pool#$1_vesting_VestingContract(s), $beneficiaries#$1_vesting_VestingContract(s), $vesting_schedule#$1_vesting_VestingContract(s), $withdrawal_address#$1_vesting_VestingContract(s), $staking#$1_vesting_VestingContract(s), $remaining_grant#$1_vesting_VestingContract(s), $signer_cap#$1_vesting_VestingContract(s), $update_operator_events#$1_vesting_VestingContract(s), $update_voter_events#$1_vesting_VestingContract(s), $reset_lockup_events#$1_vesting_VestingContract(s), $set_beneficiary_events#$1_vesting_VestingContract(s), x, $vest_events#$1_vesting_VestingContract(s), $distribute_events#$1_vesting_VestingContract(s), $terminate_events#$1_vesting_VestingContract(s), $admin_withdraw_events#$1_vesting_VestingContract(s)) +} +function {:inline} $Update'$1_vesting_VestingContract'_vest_events(s: $1_vesting_VestingContract, x: $1_event_EventHandle'$1_vesting_VestEvent'): $1_vesting_VestingContract { + $1_vesting_VestingContract($state#$1_vesting_VestingContract(s), $admin#$1_vesting_VestingContract(s), $grant_pool#$1_vesting_VestingContract(s), $beneficiaries#$1_vesting_VestingContract(s), $vesting_schedule#$1_vesting_VestingContract(s), $withdrawal_address#$1_vesting_VestingContract(s), $staking#$1_vesting_VestingContract(s), $remaining_grant#$1_vesting_VestingContract(s), $signer_cap#$1_vesting_VestingContract(s), $update_operator_events#$1_vesting_VestingContract(s), $update_voter_events#$1_vesting_VestingContract(s), $reset_lockup_events#$1_vesting_VestingContract(s), $set_beneficiary_events#$1_vesting_VestingContract(s), $unlock_rewards_events#$1_vesting_VestingContract(s), x, $distribute_events#$1_vesting_VestingContract(s), $terminate_events#$1_vesting_VestingContract(s), $admin_withdraw_events#$1_vesting_VestingContract(s)) +} +function {:inline} $Update'$1_vesting_VestingContract'_distribute_events(s: $1_vesting_VestingContract, x: $1_event_EventHandle'$1_vesting_DistributeEvent'): $1_vesting_VestingContract { + $1_vesting_VestingContract($state#$1_vesting_VestingContract(s), $admin#$1_vesting_VestingContract(s), $grant_pool#$1_vesting_VestingContract(s), $beneficiaries#$1_vesting_VestingContract(s), $vesting_schedule#$1_vesting_VestingContract(s), $withdrawal_address#$1_vesting_VestingContract(s), $staking#$1_vesting_VestingContract(s), $remaining_grant#$1_vesting_VestingContract(s), $signer_cap#$1_vesting_VestingContract(s), $update_operator_events#$1_vesting_VestingContract(s), $update_voter_events#$1_vesting_VestingContract(s), $reset_lockup_events#$1_vesting_VestingContract(s), $set_beneficiary_events#$1_vesting_VestingContract(s), $unlock_rewards_events#$1_vesting_VestingContract(s), $vest_events#$1_vesting_VestingContract(s), x, $terminate_events#$1_vesting_VestingContract(s), $admin_withdraw_events#$1_vesting_VestingContract(s)) +} +function {:inline} $Update'$1_vesting_VestingContract'_terminate_events(s: $1_vesting_VestingContract, x: $1_event_EventHandle'$1_vesting_TerminateEvent'): $1_vesting_VestingContract { + $1_vesting_VestingContract($state#$1_vesting_VestingContract(s), $admin#$1_vesting_VestingContract(s), $grant_pool#$1_vesting_VestingContract(s), $beneficiaries#$1_vesting_VestingContract(s), $vesting_schedule#$1_vesting_VestingContract(s), $withdrawal_address#$1_vesting_VestingContract(s), $staking#$1_vesting_VestingContract(s), $remaining_grant#$1_vesting_VestingContract(s), $signer_cap#$1_vesting_VestingContract(s), $update_operator_events#$1_vesting_VestingContract(s), $update_voter_events#$1_vesting_VestingContract(s), $reset_lockup_events#$1_vesting_VestingContract(s), $set_beneficiary_events#$1_vesting_VestingContract(s), $unlock_rewards_events#$1_vesting_VestingContract(s), $vest_events#$1_vesting_VestingContract(s), $distribute_events#$1_vesting_VestingContract(s), x, $admin_withdraw_events#$1_vesting_VestingContract(s)) +} +function {:inline} $Update'$1_vesting_VestingContract'_admin_withdraw_events(s: $1_vesting_VestingContract, x: $1_event_EventHandle'$1_vesting_AdminWithdrawEvent'): $1_vesting_VestingContract { + $1_vesting_VestingContract($state#$1_vesting_VestingContract(s), $admin#$1_vesting_VestingContract(s), $grant_pool#$1_vesting_VestingContract(s), $beneficiaries#$1_vesting_VestingContract(s), $vesting_schedule#$1_vesting_VestingContract(s), $withdrawal_address#$1_vesting_VestingContract(s), $staking#$1_vesting_VestingContract(s), $remaining_grant#$1_vesting_VestingContract(s), $signer_cap#$1_vesting_VestingContract(s), $update_operator_events#$1_vesting_VestingContract(s), $update_voter_events#$1_vesting_VestingContract(s), $reset_lockup_events#$1_vesting_VestingContract(s), $set_beneficiary_events#$1_vesting_VestingContract(s), $unlock_rewards_events#$1_vesting_VestingContract(s), $vest_events#$1_vesting_VestingContract(s), $distribute_events#$1_vesting_VestingContract(s), $terminate_events#$1_vesting_VestingContract(s), x) +} +function $IsValid'$1_vesting_VestingContract'(s: $1_vesting_VestingContract): bool { + $IsValid'u64'($state#$1_vesting_VestingContract(s)) + && $IsValid'address'($admin#$1_vesting_VestingContract(s)) + && $IsValid'$1_pool_u64_Pool'($grant_pool#$1_vesting_VestingContract(s)) + && $IsValid'$1_simple_map_SimpleMap'address_address''($beneficiaries#$1_vesting_VestingContract(s)) + && $IsValid'$1_vesting_VestingSchedule'($vesting_schedule#$1_vesting_VestingContract(s)) + && $IsValid'address'($withdrawal_address#$1_vesting_VestingContract(s)) + && $IsValid'$1_vesting_StakingInfo'($staking#$1_vesting_VestingContract(s)) + && $IsValid'u64'($remaining_grant#$1_vesting_VestingContract(s)) + && $IsValid'$1_account_SignerCapability'($signer_cap#$1_vesting_VestingContract(s)) + && $IsValid'$1_event_EventHandle'$1_vesting_UpdateOperatorEvent''($update_operator_events#$1_vesting_VestingContract(s)) + && $IsValid'$1_event_EventHandle'$1_vesting_UpdateVoterEvent''($update_voter_events#$1_vesting_VestingContract(s)) + && $IsValid'$1_event_EventHandle'$1_vesting_ResetLockupEvent''($reset_lockup_events#$1_vesting_VestingContract(s)) + && $IsValid'$1_event_EventHandle'$1_vesting_SetBeneficiaryEvent''($set_beneficiary_events#$1_vesting_VestingContract(s)) + && $IsValid'$1_event_EventHandle'$1_vesting_UnlockRewardsEvent''($unlock_rewards_events#$1_vesting_VestingContract(s)) + && $IsValid'$1_event_EventHandle'$1_vesting_VestEvent''($vest_events#$1_vesting_VestingContract(s)) + && $IsValid'$1_event_EventHandle'$1_vesting_DistributeEvent''($distribute_events#$1_vesting_VestingContract(s)) + && $IsValid'$1_event_EventHandle'$1_vesting_TerminateEvent''($terminate_events#$1_vesting_VestingContract(s)) + && $IsValid'$1_event_EventHandle'$1_vesting_AdminWithdrawEvent''($admin_withdraw_events#$1_vesting_VestingContract(s)) +} +function {:inline} $IsEqual'$1_vesting_VestingContract'(s1: $1_vesting_VestingContract, s2: $1_vesting_VestingContract): bool { + $IsEqual'u64'($state#$1_vesting_VestingContract(s1), $state#$1_vesting_VestingContract(s2)) + && $IsEqual'address'($admin#$1_vesting_VestingContract(s1), $admin#$1_vesting_VestingContract(s2)) + && $IsEqual'$1_pool_u64_Pool'($grant_pool#$1_vesting_VestingContract(s1), $grant_pool#$1_vesting_VestingContract(s2)) + && $IsEqual'$1_simple_map_SimpleMap'address_address''($beneficiaries#$1_vesting_VestingContract(s1), $beneficiaries#$1_vesting_VestingContract(s2)) + && $IsEqual'$1_vesting_VestingSchedule'($vesting_schedule#$1_vesting_VestingContract(s1), $vesting_schedule#$1_vesting_VestingContract(s2)) + && $IsEqual'address'($withdrawal_address#$1_vesting_VestingContract(s1), $withdrawal_address#$1_vesting_VestingContract(s2)) + && $IsEqual'$1_vesting_StakingInfo'($staking#$1_vesting_VestingContract(s1), $staking#$1_vesting_VestingContract(s2)) + && $IsEqual'u64'($remaining_grant#$1_vesting_VestingContract(s1), $remaining_grant#$1_vesting_VestingContract(s2)) + && $IsEqual'$1_account_SignerCapability'($signer_cap#$1_vesting_VestingContract(s1), $signer_cap#$1_vesting_VestingContract(s2)) + && $IsEqual'$1_event_EventHandle'$1_vesting_UpdateOperatorEvent''($update_operator_events#$1_vesting_VestingContract(s1), $update_operator_events#$1_vesting_VestingContract(s2)) + && $IsEqual'$1_event_EventHandle'$1_vesting_UpdateVoterEvent''($update_voter_events#$1_vesting_VestingContract(s1), $update_voter_events#$1_vesting_VestingContract(s2)) + && $IsEqual'$1_event_EventHandle'$1_vesting_ResetLockupEvent''($reset_lockup_events#$1_vesting_VestingContract(s1), $reset_lockup_events#$1_vesting_VestingContract(s2)) + && $IsEqual'$1_event_EventHandle'$1_vesting_SetBeneficiaryEvent''($set_beneficiary_events#$1_vesting_VestingContract(s1), $set_beneficiary_events#$1_vesting_VestingContract(s2)) + && $IsEqual'$1_event_EventHandle'$1_vesting_UnlockRewardsEvent''($unlock_rewards_events#$1_vesting_VestingContract(s1), $unlock_rewards_events#$1_vesting_VestingContract(s2)) + && $IsEqual'$1_event_EventHandle'$1_vesting_VestEvent''($vest_events#$1_vesting_VestingContract(s1), $vest_events#$1_vesting_VestingContract(s2)) + && $IsEqual'$1_event_EventHandle'$1_vesting_DistributeEvent''($distribute_events#$1_vesting_VestingContract(s1), $distribute_events#$1_vesting_VestingContract(s2)) + && $IsEqual'$1_event_EventHandle'$1_vesting_TerminateEvent''($terminate_events#$1_vesting_VestingContract(s1), $terminate_events#$1_vesting_VestingContract(s2)) + && $IsEqual'$1_event_EventHandle'$1_vesting_AdminWithdrawEvent''($admin_withdraw_events#$1_vesting_VestingContract(s1), $admin_withdraw_events#$1_vesting_VestingContract(s2))} +var $1_vesting_VestingContract_$memory: $Memory $1_vesting_VestingContract; + +// struct vesting::VestingSchedule at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:106:5+1037 +type {:datatype} $1_vesting_VestingSchedule; +function {:constructor} $1_vesting_VestingSchedule($schedule: Vec ($1_fixed_point32_FixedPoint32), $start_timestamp_secs: int, $period_duration: int, $last_vested_period: int): $1_vesting_VestingSchedule; +function {:inline} $Update'$1_vesting_VestingSchedule'_schedule(s: $1_vesting_VestingSchedule, x: Vec ($1_fixed_point32_FixedPoint32)): $1_vesting_VestingSchedule { + $1_vesting_VestingSchedule(x, $start_timestamp_secs#$1_vesting_VestingSchedule(s), $period_duration#$1_vesting_VestingSchedule(s), $last_vested_period#$1_vesting_VestingSchedule(s)) +} +function {:inline} $Update'$1_vesting_VestingSchedule'_start_timestamp_secs(s: $1_vesting_VestingSchedule, x: int): $1_vesting_VestingSchedule { + $1_vesting_VestingSchedule($schedule#$1_vesting_VestingSchedule(s), x, $period_duration#$1_vesting_VestingSchedule(s), $last_vested_period#$1_vesting_VestingSchedule(s)) +} +function {:inline} $Update'$1_vesting_VestingSchedule'_period_duration(s: $1_vesting_VestingSchedule, x: int): $1_vesting_VestingSchedule { + $1_vesting_VestingSchedule($schedule#$1_vesting_VestingSchedule(s), $start_timestamp_secs#$1_vesting_VestingSchedule(s), x, $last_vested_period#$1_vesting_VestingSchedule(s)) +} +function {:inline} $Update'$1_vesting_VestingSchedule'_last_vested_period(s: $1_vesting_VestingSchedule, x: int): $1_vesting_VestingSchedule { + $1_vesting_VestingSchedule($schedule#$1_vesting_VestingSchedule(s), $start_timestamp_secs#$1_vesting_VestingSchedule(s), $period_duration#$1_vesting_VestingSchedule(s), x) +} +function $IsValid'$1_vesting_VestingSchedule'(s: $1_vesting_VestingSchedule): bool { + $IsValid'vec'$1_fixed_point32_FixedPoint32''($schedule#$1_vesting_VestingSchedule(s)) + && $IsValid'u64'($start_timestamp_secs#$1_vesting_VestingSchedule(s)) + && $IsValid'u64'($period_duration#$1_vesting_VestingSchedule(s)) + && $IsValid'u64'($last_vested_period#$1_vesting_VestingSchedule(s)) +} +function {:inline} $IsEqual'$1_vesting_VestingSchedule'(s1: $1_vesting_VestingSchedule, s2: $1_vesting_VestingSchedule): bool { + $IsEqual'vec'$1_fixed_point32_FixedPoint32''($schedule#$1_vesting_VestingSchedule(s1), $schedule#$1_vesting_VestingSchedule(s2)) + && $IsEqual'u64'($start_timestamp_secs#$1_vesting_VestingSchedule(s1), $start_timestamp_secs#$1_vesting_VestingSchedule(s2)) + && $IsEqual'u64'($period_duration#$1_vesting_VestingSchedule(s1), $period_duration#$1_vesting_VestingSchedule(s2)) + && $IsEqual'u64'($last_vested_period#$1_vesting_VestingSchedule(s1), $last_vested_period#$1_vesting_VestingSchedule(s2))} + +// fun vesting::operator [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:321:5+244 +procedure {:timeLimit 200} $1_vesting_operator$verify(_$t0: int) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: $1_vesting_VestingContract; + var $t3: $1_vesting_StakingInfo; + var $t4: int; + var $t0: int; + var $temp_0'address': int; + var $1_vesting_VestingContract_$memory#60: $Memory $1_vesting_VestingContract; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:321:5+1 + assume {:print "$at(2,14901,14902)"} true; + assume $IsValid'address'($t0); + + // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:321:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); + (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; + (var j := $i_4; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); + + // @60 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:321:5+1 + $1_vesting_VestingContract_$memory#60 := $1_vesting_VestingContract_$memory; + + // trace_local[vesting_contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:321:5+1 + assume {:print "$track_local(57,14,0):", $t0} $t0 == $t0; + + // vesting::assert_vesting_contract_exists($t0) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:322:9+56 + assume {:print "$at(2,15000,15056)"} true; + call $1_vesting_assert_vesting_contract_exists($t0); + if ($abort_flag) { + assume {:print "$at(2,15000,15056)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(57,14):", $t1} $t1 == $t1; + goto L2; + } + + // $t2 := get_global($t0) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:323:9+13 + assume {:print "$at(2,15066,15079)"} true; + if (!$ResourceExists($1_vesting_VestingContract_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t2 := $ResourceValue($1_vesting_VestingContract_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(2,15066,15079)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(57,14):", $t1} $t1 == $t1; + goto L2; + } + + // $t3 := get_field.staking($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:323:9+64 + $t3 := $staking#$1_vesting_VestingContract($t2); + + // $t4 := get_field.operator($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:323:9+73 + $t4 := $operator#$1_vesting_StakingInfo($t3); + + // trace_return[0]($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:323:9+73 + assume {:print "$track_return(57,14,0):", $t4} $t4 == $t4; + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:324:5+1 + assume {:print "$at(2,15144,15145)"} true; +L1: + + // assert Not(Not(exists[@60]($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:36:9+61 + assume {:print "$at(3,1205,1266)"} true; + assert {:msg "assert_failed(3,1205,1266): function does not abort under this condition"} + !!$ResourceExists($1_vesting_VestingContract_$memory#60, $t0); + + // return $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:36:9+61 + $ret0 := $t4; + return; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:324:5+1 + assume {:print "$at(2,15144,15145)"} true; +L2: + + // assert Not(exists[@60]($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:35:5+135 + assume {:print "$at(3,1137,1272)"} true; + assert {:msg "assert_failed(3,1137,1272): abort not covered by any of the `aborts_if` clauses"} + !$ResourceExists($1_vesting_VestingContract_$memory#60, $t0); + + // abort($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:35:5+135 + $abort_code := $t1; + $abort_flag := true; + return; + +} + +// fun vesting::voter [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:331:5+238 +procedure {:timeLimit 200} $1_vesting_voter$verify(_$t0: int) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: $1_vesting_VestingContract; + var $t3: $1_vesting_StakingInfo; + var $t4: int; + var $t0: int; + var $temp_0'address': int; + var $1_vesting_VestingContract_$memory#59: $Memory $1_vesting_VestingContract; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:331:5+1 + assume {:print "$at(2,15393,15394)"} true; + assume $IsValid'address'($t0); + + // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:331:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); + (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; + (var j := $i_4; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); + + // @59 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:331:5+1 + $1_vesting_VestingContract_$memory#59 := $1_vesting_VestingContract_$memory; + + // trace_local[vesting_contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:331:5+1 + assume {:print "$track_local(57,40,0):", $t0} $t0 == $t0; + + // vesting::assert_vesting_contract_exists($t0) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:332:9+56 + assume {:print "$at(2,15489,15545)"} true; + call $1_vesting_assert_vesting_contract_exists($t0); + if ($abort_flag) { + assume {:print "$at(2,15489,15545)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(57,40):", $t1} $t1 == $t1; + goto L2; + } + + // $t2 := get_global($t0) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:333:9+13 + assume {:print "$at(2,15555,15568)"} true; + if (!$ResourceExists($1_vesting_VestingContract_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t2 := $ResourceValue($1_vesting_VestingContract_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(2,15555,15568)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(57,40):", $t1} $t1 == $t1; + goto L2; + } + + // $t3 := get_field.staking($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:333:9+64 + $t3 := $staking#$1_vesting_VestingContract($t2); + + // $t4 := get_field.voter($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:333:9+70 + $t4 := $voter#$1_vesting_StakingInfo($t3); + + // trace_return[0]($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:333:9+70 + assume {:print "$track_return(57,40,0):", $t4} $t4 == $t4; + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:334:5+1 + assume {:print "$at(2,15630,15631)"} true; +L1: + + // assert Not(Not(exists[@59]($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:40:9+61 + assume {:print "$at(3,1343,1404)"} true; + assert {:msg "assert_failed(3,1343,1404): function does not abort under this condition"} + !!$ResourceExists($1_vesting_VestingContract_$memory#59, $t0); + + // return $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:40:9+61 + $ret0 := $t4; + return; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:334:5+1 + assume {:print "$at(2,15630,15631)"} true; +L2: + + // assert Not(exists[@59]($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:39:5+132 + assume {:print "$at(3,1278,1410)"} true; + assert {:msg "assert_failed(3,1278,1410): abort not covered by any of the `aborts_if` clauses"} + !$ResourceExists($1_vesting_VestingContract_$memory#59, $t0); + + // abort($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:39:5+132 + $abort_code := $t1; + $abort_flag := true; + return; + +} + +// fun vesting::shareholder [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:396:5+811 +procedure {:timeLimit 200} $1_vesting_shareholder$verify(_$t0: int, _$t1: int) returns ($ret0: int) +{ + // declare local variables + var $t2: Vec (int); + var $t3: bool; + var $t4: int; + var $t5: int; + var $t6: bool; + var $t7: int; + var $t8: Vec (int); + var $t9: Vec (int); + var $t10: $1_vesting_VestingContract; + var $t11: $1_vesting_VestingContract; + var $t12: $1_vesting_VestingContract; + var $t13: int; + var $t14: $1_vesting_VestingContract; + var $t15: Vec (int); + var $t16: bool; + var $t17: int; + var $t18: $1_vesting_VestingContract; + var $t19: int; + var $t20: bool; + var $t21: int; + var $t22: int; + var $t23: bool; + var $t24: int; + var $t25: int; + var $t26: bool; + var $t27: bool; + var $t28: bool; + var $t29: int; + var $t30: int; + var $t0: int; + var $t1: int; + var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; + var $temp_0'address': int; + var $temp_0'bool': bool; + var $temp_0'u64': int; + var $temp_0'vec'address'': Vec (int); + var $1_vesting_VestingContract_$memory#105: $Memory $1_vesting_VestingContract; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:396:5+1 + assume {:print "$at(2,19217,19218)"} true; + assume $IsValid'address'($t0); + + // assume WellFormed($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:396:5+1 + assume $IsValid'address'($t1); + + // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:396:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); + (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; + (var j := $i_4; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); + + // assume Identical($t11, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:389:9+65 + assume {:print "$at(3,16378,16443)"} true; + assume ($t11 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); + + // @105 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:396:5+1 + assume {:print "$at(2,19217,19218)"} true; + $1_vesting_VestingContract_$memory#105 := $1_vesting_VestingContract_$memory; + + // trace_local[vesting_contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:396:5+1 + assume {:print "$track_local(57,23,0):", $t0} $t0 == $t0; + + // trace_local[shareholder_or_beneficiary]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:396:5+1 + assume {:print "$track_local(57,23,1):", $t1} $t1 == $t1; + + // assume Identical($t12, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:389:9+65 + assume {:print "$at(3,16378,16443)"} true; + assume ($t12 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); + + // vesting::assert_active_vesting_contract($t0) on_abort goto L13 with $t13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:397:9+56 + assume {:print "$at(2,19356,19412)"} true; + call $1_vesting_assert_active_vesting_contract($t0); + if ($abort_flag) { + assume {:print "$at(2,19356,19412)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(57,23):", $t13} $t13 == $t13; + goto L13; + } + + // assume Identical($t14, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:389:9+65 + assume {:print "$at(3,16378,16443)"} true; + assume ($t14 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); + + // $t15 := vesting::shareholders($t0) on_abort goto L13 with $t13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:399:29+38 + assume {:print "$at(2,19443,19481)"} true; + call $t15 := $1_vesting_shareholders($t0); + if ($abort_flag) { + assume {:print "$at(2,19443,19481)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(57,23):", $t13} $t13 == $t13; + goto L13; + } + + // trace_local[shareholders]($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:399:13+12 + assume {:print "$track_local(57,23,8):", $t15} $t15 == $t15; + + // $t16 := vector::contains
($t15, $t1) on_abort goto L13 with $t13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:400:13+59 + assume {:print "$at(2,19495,19554)"} true; + call $t16 := $1_vector_contains'address'($t15, $t1); + if ($abort_flag) { + assume {:print "$at(2,19495,19554)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(57,23):", $t13} $t13 == $t13; + goto L13; + } + + // if ($t16) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:400:9+122 + if ($t16) { goto L1; } else { goto L0; } + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:401:13+33 + assume {:print "$at(2,19570,19603)"} true; +L1: + + // trace_return[0]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:401:13+33 + assume {:print "$at(2,19570,19603)"} true; + assume {:print "$track_return(57,23,0):", $t1} $t1 == $t1; + + // $t17 := move($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:401:13+33 + $t17 := $t1; + + // goto L12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:401:13+33 + goto L12; + + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:403:63+24 + assume {:print "$at(2,19677,19701)"} true; +L0: + + // $t18 := get_global($t0) on_abort goto L13 with $t13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:403:32+13 + assume {:print "$at(2,19646,19659)"} true; + if (!$ResourceExists($1_vesting_VestingContract_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t18 := $ResourceValue($1_vesting_VestingContract_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(2,19646,19659)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(57,23):", $t13} $t13 == $t13; + goto L13; + } + + // trace_local[vesting_contract]($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:403:13+16 + assume {:print "$track_local(57,23,10):", $t18} $t18 == $t18; + + // $t19 := 0x0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:404:22+4 + assume {:print "$at(2,19725,19729)"} true; + $t19 := 0; + assume $IsValid'address'($t19); + + // trace_local[result]($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:404:13+6 + assume {:print "$track_local(57,23,5):", $t19} $t19 == $t19; + + // trace_local[v#251]($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:405:9+266 + assume {:print "$at(2,19739,20005)"} true; + assume {:print "$track_local(57,23,9):", $t15} $t15 == $t15; + + // $t20 := false at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:534:22+5 + assume {:print "$at(18,18638,18643)"} true; + $t20 := false; + assume $IsValid'bool'($t20); + + // trace_local[result#253]($t20) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:534:13+6 + assume {:print "$track_local(57,23,6):", $t20} $t20 == $t20; + + // $t21 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:535:17+1 + assume {:print "$at(18,18661,18662)"} true; + $t21 := 0; + assume $IsValid'u64'($t21); + + // trace_local[i#254]($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:535:13+1 + assume {:print "$track_local(57,23,4):", $t21} $t21 == $t21; + + // label L10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:536:16+1 + assume {:print "$at(18,18679,18680)"} true; +L10: + + // $t3 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:536:16+1 + assume {:print "$at(18,18679,18680)"} true; + havoc $t3; + + // assume WellFormed($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:536:16+1 + assume $IsValid'bool'($t3); + + // $t4 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:536:16+1 + havoc $t4; + + // assume WellFormed($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:536:16+1 + assume $IsValid'u64'($t4); + + // $t5 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:536:16+1 + havoc $t5; + + // assume WellFormed($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:536:16+1 + assume $IsValid'address'($t5); + + // $t6 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:536:16+1 + havoc $t6; + + // assume WellFormed($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:536:16+1 + assume $IsValid'bool'($t6); + + // $t22 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:536:16+1 + havoc $t22; + + // assume WellFormed($t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:536:16+1 + assume $IsValid'u64'($t22); + + // $t23 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:536:16+1 + havoc $t23; + + // assume WellFormed($t23) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:536:16+1 + assume $IsValid'bool'($t23); + + // $t24 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:536:16+1 + havoc $t24; + + // assume WellFormed($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:536:16+1 + assume $IsValid'address'($t24); + + // $t25 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:536:16+1 + havoc $t25; + + // assume WellFormed($t25) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:536:16+1 + assume $IsValid'address'($t25); + + // $t26 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:536:16+1 + havoc $t26; + + // assume WellFormed($t26) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:536:16+1 + assume $IsValid'bool'($t26); + + // $t27 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:536:16+1 + havoc $t27; + + // assume WellFormed($t27) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:536:16+1 + assume $IsValid'bool'($t27); + + // $t28 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:536:16+1 + havoc $t28; + + // assume WellFormed($t28) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:536:16+1 + assume $IsValid'bool'($t28); + + // $t29 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:536:16+1 + havoc $t29; + + // assume WellFormed($t29) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:536:16+1 + assume $IsValid'u64'($t29); + + // $t30 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:536:16+1 + havoc $t30; + + // assume WellFormed($t30) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:536:16+1 + assume $IsValid'u64'($t30); + + // trace_local[i#254]($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:536:16+1 + assume {:print "$info(): enter loop, variable(s) i#254, result, result#253 havocked and reassigned"} true; + assume {:print "$track_local(57,23,4):", $t4} $t4 == $t4; + + // trace_local[result]($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:536:16+1 + assume {:print "$track_local(57,23,5):", $t5} $t5 == $t5; + + // trace_local[result#253]($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:536:16+1 + assume {:print "$track_local(57,23,6):", $t6} $t6 == $t6; + + // assume Not(AbortFlag()) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:536:16+1 + assume !$abort_flag; + + // $t22 := vector::length
($t15) on_abort goto L13 with $t13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:536:20+9 + call $t22 := $1_vector_length'address'($t15); + if ($abort_flag) { + assume {:print "$at(18,18683,18692)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(57,23):", $t13} $t13 == $t13; + goto L13; + } + + // $t23 := <($t4, $t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:536:18+1 + call $t23 := $Lt($t4, $t22); + + // if ($t23) goto L3 else goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:536:9+156 + if ($t23) { goto L3; } else { goto L2; } + + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:536:9+156 +L3: + + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:537:31+1 + assume {:print "$at(18,18726,18727)"} true; +L4: + + // $t24 := vector::borrow
($t15, $t4) on_abort goto L13 with $t13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:537:24+12 + assume {:print "$at(18,18719,18731)"} true; + call $t24 := $1_vector_borrow'address'($t15, $t4); + if ($abort_flag) { + assume {:print "$at(18,18719,18731)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(57,23):", $t13} $t13 == $t13; + goto L13; + } + + // trace_local[shareholder#255]($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:537:24+12 + assume {:print "$track_local(57,23,7):", $t24} $t24 == $t24; + + // $t25 := vesting::get_beneficiary($t18, $t24) on_abort goto L13 with $t13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:406:47+47 + assume {:print "$at(2,19827,19874)"} true; + call $t25 := $1_vesting_get_beneficiary($t18, $t24); + if ($abort_flag) { + assume {:print "$at(2,19827,19874)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(57,23):", $t13} $t13 == $t13; + goto L13; + } + + // $t26 := ==($t1, $t25) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:406:44+2 + $t26 := $IsEqual'address'($t1, $t25); + + // if ($t26) goto L6 else goto L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:406:13+201 + if ($t26) { goto L6; } else { goto L5; } + + // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:407:27+11 + assume {:print "$at(2,19904,19915)"} true; +L6: + + // $t5 := $t24 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:407:17+6 + assume {:print "$at(2,19894,19900)"} true; + $t5 := $t24; + + // trace_local[result]($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:407:17+6 + assume {:print "$track_local(57,23,5):", $t24} $t24 == $t24; + + // $t27 := true at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:408:17+4 + assume {:print "$at(2,19933,19937)"} true; + $t27 := true; + assume $IsValid'bool'($t27); + + // $t3 := $t27 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:406:13+201 + assume {:print "$at(2,19793,19994)"} true; + $t3 := $t27; + + // goto L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:406:13+201 + goto L7; + + // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:406:13+201 +L5: + + // $t28 := false at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:410:17+5 + assume {:print "$at(2,19975,19980)"} true; + $t28 := false; + assume $IsValid'bool'($t28); + + // $t3 := $t28 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:406:13+201 + assume {:print "$at(2,19793,19994)"} true; + $t3 := $t28; + + // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:406:13+201 +L7: + + // $t6 := $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:537:13+6 + assume {:print "$at(18,18708,18714)"} true; + $t6 := $t3; + + // trace_local[result#253]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:537:13+6 + assume {:print "$track_local(57,23,6):", $t3} $t3 == $t3; + + // if ($t3) goto L9 else goto L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:538:13+49 + assume {:print "$at(18,18746,18795)"} true; + if ($t3) { goto L9; } else { goto L8; } + + // label L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:539:17+5 + assume {:print "$at(18,18776,18781)"} true; +L9: + + // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:539:17+5 + assume {:print "$at(18,18776,18781)"} true; + goto L2; + + // label L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:541:17+1 + assume {:print "$at(18,18813,18814)"} true; +L8: + + // $t29 := 1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:541:21+1 + assume {:print "$at(18,18817,18818)"} true; + $t29 := 1; + assume $IsValid'u64'($t29); + + // $t30 := +($t4, $t29) on_abort goto L13 with $t13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:541:19+1 + call $t30 := $AddU64($t4, $t29); + if ($abort_flag) { + assume {:print "$at(18,18815,18816)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(57,23):", $t13} $t13 == $t13; + goto L13; + } + + // trace_local[i#254]($t30) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:541:13+1 + assume {:print "$track_local(57,23,4):", $t30} $t30 == $t30; + + // goto L11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:541:13+9 + goto L11; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:543:9+6 + assume {:print "$at(18,18838,18844)"} true; +L2: + + // destroy($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:543:9+6 + assume {:print "$at(18,18838,18844)"} true; + + // trace_return[0]($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:414:9+6 + assume {:print "$at(2,20016,20022)"} true; + assume {:print "$track_return(57,23,0):", $t5} $t5 == $t5; + + // $t17 := move($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:414:9+6 + $t17 := $t5; + + // goto L12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:414:9+6 + goto L12; + + // label L11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:543:9+6 + // Loop invariant checking block for the loop started with header: L10 + assume {:print "$at(18,18838,18844)"} true; +L11: + + // stop() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:543:9+6 + assume {:print "$at(18,18838,18844)"} true; + assume false; + return; + + // label L12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:415:5+1 + assume {:print "$at(2,20027,20028)"} true; +L12: + + // assert Not(Not(exists[@105]($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:388:9+53 + assume {:print "$at(3,16316,16369)"} true; + assert {:msg "assert_failed(3,16316,16369): function does not abort under this condition"} + !!$ResourceExists($1_vesting_VestingContract_$memory#105, $t0); + + // assert Not(Neq(select vesting::VestingContract.state($t11), 1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:390:9+56 + assume {:print "$at(3,16452,16508)"} true; + assert {:msg "assert_failed(3,16452,16508): function does not abort under this condition"} + !!$IsEqual'u64'($state#$1_vesting_VestingContract($t11), 1); + + // return $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:390:9+56 + $ret0 := $t17; + return; + + // label L13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:415:5+1 + assume {:print "$at(2,20027,20028)"} true; +L13: + + // assert Or(Not(exists[@105]($t0)), Neq(select vesting::VestingContract.state($t11), 1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:119:5+375 + assume {:print "$at(3,5566,5941)"} true; + assert {:msg "assert_failed(3,5566,5941): abort not covered by any of the `aborts_if` clauses"} + (!$ResourceExists($1_vesting_VestingContract_$memory#105, $t0) || !$IsEqual'u64'($state#$1_vesting_VestingContract($t11), 1)); + + // abort($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:119:5+375 + $abort_code := $t13; + $abort_flag := true; + return; + +} + +// fun vesting::shareholders [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:383:5+325 +procedure {:inline 1} $1_vesting_shareholders(_$t0: int) returns ($ret0: Vec (int)) +{ + // declare local variables + var $t1: $1_vesting_VestingContract; + var $t2: $1_vesting_VestingContract; + var $t3: int; + var $t4: $1_vesting_VestingContract; + var $t5: $1_pool_u64_Pool; + var $t6: Vec (int); + var $t0: int; + var $temp_0'address': int; + var $temp_0'vec'address'': Vec (int); + $t0 := _$t0; + + // bytecode translation starts here + // assume Identical($t1, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:389:9+65 + assume {:print "$at(3,16378,16443)"} true; + assume ($t1 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); + + // trace_local[vesting_contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:383:5+1 + assume {:print "$at(2,18423,18424)"} true; + assume {:print "$track_local(57,24,0):", $t0} $t0 == $t0; + + // assume Identical($t2, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:389:9+65 + assume {:print "$at(3,16378,16443)"} true; + assume ($t2 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); + + // vesting::assert_active_vesting_contract($t0) on_abort goto L2 with $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:384:9+56 + assume {:print "$at(2,18534,18590)"} true; + call $1_vesting_assert_active_vesting_contract($t0); + if ($abort_flag) { + assume {:print "$at(2,18534,18590)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(57,24):", $t3} $t3 == $t3; + goto L2; + } + + // $t4 := get_global($t0) on_abort goto L2 with $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:386:32+13 + assume {:print "$at(2,18624,18637)"} true; + if (!$ResourceExists($1_vesting_VestingContract_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t4 := $ResourceValue($1_vesting_VestingContract_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(2,18624,18637)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(57,24):", $t3} $t3 == $t3; + goto L2; + } + + // $t5 := get_field.grant_pool($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:387:32+28 + assume {:print "$at(2,18713,18741)"} true; + $t5 := $grant_pool#$1_vesting_VestingContract($t4); + + // $t6 := pool_u64::shareholders($t5) on_abort goto L2 with $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:387:9+52 + call $t6 := $1_pool_u64_shareholders($t5); + if ($abort_flag) { + assume {:print "$at(2,18690,18742)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(57,24):", $t3} $t3 == $t3; + goto L2; + } + + // trace_return[0]($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:387:9+52 + assume {:print "$track_return(57,24,0):", $t6} $t6 == $t6; + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:388:5+1 + assume {:print "$at(2,18747,18748)"} true; +L1: + + // return $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:388:5+1 + assume {:print "$at(2,18747,18748)"} true; + $ret0 := $t6; + return; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:388:5+1 +L2: + + // abort($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:388:5+1 + assume {:print "$at(2,18747,18748)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun vesting::shareholders [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:383:5+325 +procedure {:timeLimit 200} $1_vesting_shareholders$verify(_$t0: int) returns ($ret0: Vec (int)) +{ + // declare local variables + var $t1: $1_vesting_VestingContract; + var $t2: $1_vesting_VestingContract; + var $t3: int; + var $t4: $1_vesting_VestingContract; + var $t5: $1_pool_u64_Pool; + var $t6: Vec (int); + var $t0: int; + var $temp_0'address': int; + var $temp_0'vec'address'': Vec (int); + var $1_vesting_VestingContract_$memory#75: $Memory $1_vesting_VestingContract; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:383:5+1 + assume {:print "$at(2,18423,18424)"} true; + assume $IsValid'address'($t0); + + // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:383:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); + (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; + (var j := $i_4; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); + + // assume Identical($t1, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:389:9+65 + assume {:print "$at(3,16378,16443)"} true; + assume ($t1 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); + + // @75 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:383:5+1 + assume {:print "$at(2,18423,18424)"} true; + $1_vesting_VestingContract_$memory#75 := $1_vesting_VestingContract_$memory; + + // trace_local[vesting_contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:383:5+1 + assume {:print "$track_local(57,24,0):", $t0} $t0 == $t0; + + // assume Identical($t2, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:389:9+65 + assume {:print "$at(3,16378,16443)"} true; + assume ($t2 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); + + // vesting::assert_active_vesting_contract($t0) on_abort goto L2 with $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:384:9+56 + assume {:print "$at(2,18534,18590)"} true; + call $1_vesting_assert_active_vesting_contract($t0); + if ($abort_flag) { + assume {:print "$at(2,18534,18590)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(57,24):", $t3} $t3 == $t3; + goto L2; + } + + // $t4 := get_global($t0) on_abort goto L2 with $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:386:32+13 + assume {:print "$at(2,18624,18637)"} true; + if (!$ResourceExists($1_vesting_VestingContract_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t4 := $ResourceValue($1_vesting_VestingContract_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(2,18624,18637)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(57,24):", $t3} $t3 == $t3; + goto L2; + } + + // $t5 := get_field.grant_pool($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:387:32+28 + assume {:print "$at(2,18713,18741)"} true; + $t5 := $grant_pool#$1_vesting_VestingContract($t4); + + // $t6 := pool_u64::shareholders($t5) on_abort goto L2 with $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:387:9+52 + call $t6 := $1_pool_u64_shareholders($t5); + if ($abort_flag) { + assume {:print "$at(2,18690,18742)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(57,24):", $t3} $t3 == $t3; + goto L2; + } + + // trace_return[0]($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:387:9+52 + assume {:print "$track_return(57,24,0):", $t6} $t6 == $t6; + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:388:5+1 + assume {:print "$at(2,18747,18748)"} true; +L1: + + // assert Not(Not(exists[@75]($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:388:9+53 + assume {:print "$at(3,16316,16369)"} true; + assert {:msg "assert_failed(3,16316,16369): function does not abort under this condition"} + !!$ResourceExists($1_vesting_VestingContract_$memory#75, $t0); + + // assert Not(Neq(select vesting::VestingContract.state($t1), 1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:390:9+56 + assume {:print "$at(3,16452,16508)"} true; + assert {:msg "assert_failed(3,16452,16508): function does not abort under this condition"} + !!$IsEqual'u64'($state#$1_vesting_VestingContract($t1), 1); + + // return $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:390:9+56 + $ret0 := $t6; + return; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:388:5+1 + assume {:print "$at(2,18747,18748)"} true; +L2: + + // assert Or(Not(exists[@75]($t0)), Neq(select vesting::VestingContract.state($t1), 1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:113:5+185 + assume {:print "$at(3,5262,5447)"} true; + assert {:msg "assert_failed(3,5262,5447): abort not covered by any of the `aborts_if` clauses"} + (!$ResourceExists($1_vesting_VestingContract_$memory#75, $t0) || !$IsEqual'u64'($state#$1_vesting_VestingContract($t1), 1)); + + // abort($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:113:5+185 + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun vesting::distribute [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:623:5+1779 +procedure {:inline 1} $1_vesting_distribute(_$t0: int) returns () +{ + // declare local variables + var $t1: int; + var $t2: Vec (int); + var $t3: int; + var $t4: int; + var $t5: $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $t6: $1_pool_u64_Pool; + var $t7: int; + var $t8: int; + var $t9: $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $t10: int; + var $t11: int; + var $t12: int; + var $t13: Vec (int); + var $t14: $Mutation ($1_vesting_VestingContract); + var $t15: $1_vesting_VestingContract; + var $t16: int; + var $t17: $Mutation ($1_vesting_VestingContract); + var $t18: $1_vesting_VestingContract; + var $t19: $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $t20: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t21: int; + var $t22: int; + var $t23: bool; + var $t24: $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $t25: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t26: $1_pool_u64_Pool; + var $t27: Vec (int); + var $t28: int; + var $t29: int; + var $t30: bool; + var $t31: int; + var $t32: int; + var $t33: int; + var $t34: $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $t35: $1_vesting_VestingContract; + var $t36: int; + var $t37: int; + var $t38: int; + var $t39: $Mutation ($1_coin_Coin'$1_aptos_coin_AptosCoin'); + var $t40: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t41: $1_account_Account; + var $t42: $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $t43: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t44: int; + var $t45: int; + var $t46: bool; + var $t47: int; + var $t48: $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $t49: $1_account_Account; + var $t50: $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $t51: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t52: $Mutation ($1_event_EventHandle'$1_vesting_DistributeEvent'); + var $t53: int; + var $t54: $1_vesting_DistributeEvent; + var $t0: int; + var $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin'': $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $temp_0'$1_pool_u64_Pool': $1_pool_u64_Pool; + var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; + var $temp_0'address': int; + var $temp_0'u64': int; + var $temp_0'vec'address'': Vec (int); + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:623:5+1 + assume {:print "$at(2,29668,29669)"} true; + assume {:print "$track_local(57,8,0):", $t0} $t0 == $t0; + + // assume Identical($t15, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:389:9+65 + assume {:print "$at(3,16378,16443)"} true; + assume ($t15 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); + + // vesting::assert_active_vesting_contract($t0) on_abort goto L11 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:624:9+48 + assume {:print "$at(2,29758,29806)"} true; + call $1_vesting_assert_active_vesting_contract($t0); + if ($abort_flag) { + assume {:print "$at(2,29758,29806)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(57,8):", $t16} $t16 == $t16; + goto L11; + } + + // $t17 := borrow_global($t0) on_abort goto L11 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:626:32+17 + assume {:print "$at(2,29840,29857)"} true; + if (!$ResourceExists($1_vesting_VestingContract_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t17 := $Mutation($Global($t0), EmptyVec(), $ResourceValue($1_vesting_VestingContract_$memory, $t0)); + } + if ($abort_flag) { + assume {:print "$at(2,29840,29857)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(57,8):", $t16} $t16 == $t16; + goto L11; + } + + // trace_local[vesting_contract]($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:626:13+16 + $temp_0'$1_vesting_VestingContract' := $Dereference($t17); + assume {:print "$track_local(57,8,14):", $temp_0'$1_vesting_VestingContract'} $temp_0'$1_vesting_VestingContract' == $temp_0'$1_vesting_VestingContract'; + + // $t18 := read_ref($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:627:35+36 + assume {:print "$at(2,29928,29964)"} true; + $t18 := $Dereference($t17); + + // $t5 := vesting::withdraw_stake($t18, $t0) on_abort goto L11 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:627:21+50 + call $t5 := $1_vesting_withdraw_stake($t18, $t0); + if ($abort_flag) { + assume {:print "$at(2,29914,29964)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(57,8):", $t16} $t16 == $t16; + goto L11; + } + + // trace_local[coins]($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:627:13+5 + assume {:print "$track_local(57,8,5):", $t5} $t5 == $t5; + + // $t19 := copy($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:628:53+6 + assume {:print "$at(2,30018,30024)"} true; + $t19 := $t5; + + // assume Identical($t20, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + assume {:print "$at(95,1664,1763)"} true; + assume ($t20 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + + // $t21 := coin::value($t19) on_abort goto L11 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:628:41+19 + assume {:print "$at(2,30006,30025)"} true; + call $t21 := $1_coin_value'$1_aptos_coin_AptosCoin'($t19); + if ($abort_flag) { + assume {:print "$at(2,30006,30025)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(57,8):", $t16} $t16 == $t16; + goto L11; + } + + // trace_local[total_distribution_amount]($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:628:13+25 + assume {:print "$track_local(57,8,12):", $t21} $t21 == $t21; + + // $t22 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:629:42+1 + assume {:print "$at(2,30068,30069)"} true; + $t22 := 0; + assume $IsValid'u64'($t22); + + // $t23 := ==($t21, $t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:629:39+2 + $t23 := $IsEqual'u64'($t21, $t22); + + // if ($t23) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:629:9+105 + if ($t23) { goto L1; } else { goto L0; } + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:630:13+25 + assume {:print "$at(2,30085,30110)"} true; +L1: + + // pack_ref_deep($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:630:13+25 + assume {:print "$at(2,30085,30110)"} true; + + // destroy($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:630:13+25 + + // $t24 := move($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:630:32+5 + $t24 := $t5; + + // assume Identical($t25, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + assume {:print "$at(95,1664,1763)"} true; + assume ($t25 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + + // coin::destroy_zero($t24) on_abort goto L11 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:630:13+25 + assume {:print "$at(2,30085,30110)"} true; + call $1_coin_destroy_zero'$1_aptos_coin_AptosCoin'($t24); + if ($abort_flag) { + assume {:print "$at(2,30085,30110)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(57,8):", $t16} $t16 == $t16; + goto L11; + } + + // goto L10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:631:13+6 + assume {:print "$at(2,30124,30130)"} true; + goto L10; + + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:635:27+16 + assume {:print "$at(2,30242,30258)"} true; +L0: + + // $t26 := get_field.grant_pool($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:635:26+28 + assume {:print "$at(2,30241,30269)"} true; + $t26 := $grant_pool#$1_vesting_VestingContract($Dereference($t17)); + + // trace_local[grant_pool]($t26) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:635:13+10 + assume {:print "$track_local(57,8,6):", $t26} $t26 == $t26; + + // $t27 := pool_u64::shareholders($t26) on_abort goto L11 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:636:29+34 + assume {:print "$at(2,30299,30333)"} true; + call $t27 := $1_pool_u64_shareholders($t26); + if ($abort_flag) { + assume {:print "$at(2,30299,30333)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(57,8):", $t16} $t16 == $t16; + goto L11; + } + + // trace_local[v#235]($t27) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:637:9+519 + assume {:print "$at(2,30343,30862)"} true; + assume {:print "$track_local(57,8,13):", $t27} $t27 == $t27; + + // $t28 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:261:17+1 + assume {:print "$at(18,9246,9247)"} true; + $t28 := 0; + assume $IsValid'u64'($t28); + + // trace_local[i#237]($t28) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:261:13+1 + assume {:print "$track_local(57,8,7):", $t28} $t28 == $t28; + + // $t29 := vector::length
($t27) on_abort goto L11 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:262:19+9 + assume {:print "$at(18,9267,9276)"} true; + call $t29 := $1_vector_length'address'($t27); + if ($abort_flag) { + assume {:print "$at(18,9267,9276)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(57,8):", $t16} $t16 == $t16; + goto L11; + } + + // trace_local[len#238]($t29) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:262:13+3 + assume {:print "$track_local(57,8,8):", $t29} $t29 == $t29; + + // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume {:print "$at(18,9293,9294)"} true; +L5: + + // $t5 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume {:print "$at(18,9293,9294)"} true; + havoc $t5; + + // assume WellFormed($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume $IsValid'$1_coin_Coin'$1_aptos_coin_AptosCoin''($t5); + + // $t7 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + havoc $t7; + + // assume WellFormed($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume $IsValid'u64'($t7); + + // $t30 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + havoc $t30; + + // assume WellFormed($t30) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume $IsValid'bool'($t30); + + // $t31 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + havoc $t31; + + // assume WellFormed($t31) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume $IsValid'address'($t31); + + // $t32 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + havoc $t32; + + // assume WellFormed($t32) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume $IsValid'u64'($t32); + + // $t33 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + havoc $t33; + + // assume WellFormed($t33) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume $IsValid'u64'($t33); + + // $t34 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + havoc $t34; + + // assume WellFormed($t34) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume $IsValid'$1_coin_Coin'$1_aptos_coin_AptosCoin''($t34); + + // $t35 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + havoc $t35; + + // assume And(WellFormed($t35), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t35)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t35)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t35)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t35)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t35)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t35)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume ($IsValid'$1_vesting_VestingContract'($t35) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t35)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t35)), addr)))) && (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t35)))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t35)))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; + (var j := $i_3; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t35)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t35)), j)) ==> $IsEqual'num'(i, j)))))))))); + + // $t36 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + havoc $t36; + + // assume WellFormed($t36) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume $IsValid'address'($t36); + + // $t37 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + havoc $t37; + + // assume WellFormed($t37) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume $IsValid'u64'($t37); + + // $t38 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + havoc $t38; + + // assume WellFormed($t38) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume $IsValid'u64'($t38); + + // $t39 := havoc[mut_all]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + havoc $t39; + + // assume WellFormed($t39) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume $IsValid'$1_coin_Coin'$1_aptos_coin_AptosCoin''($Dereference($t39)); + + // trace_local[coins]($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume {:print "$info(): enter loop, variable(s) coins, i#237 havocked and reassigned"} true; + assume {:print "$track_local(57,8,5):", $t5} $t5 == $t5; + + // trace_local[i#237]($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume {:print "$track_local(57,8,7):", $t7} $t7 == $t7; + + // assume Not(AbortFlag()) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume !$abort_flag; + + // $t30 := <($t7, $t29) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:18+1 + call $t30 := $Lt($t7, $t29); + + // if ($t30) goto L3 else goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:9+78 + if ($t30) { goto L3; } else { goto L2; } + + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:9+78 +L3: + + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:264:22+1 + assume {:print "$at(18,9325,9326)"} true; +L4: + + // $t31 := vector::borrow
($t27, $t7) on_abort goto L11 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:264:15+12 + assume {:print "$at(18,9318,9330)"} true; + call $t31 := $1_vector_borrow'address'($t27, $t7); + if ($abort_flag) { + assume {:print "$at(18,9318,9330)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(57,8):", $t16} $t16 == $t16; + goto L11; + } + + // trace_local[shareholder#240]($t31) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:638:17+11 + assume {:print "$at(2,30410,30421)"} true; + assume {:print "$track_local(57,8,10):", $t31} $t31 == $t31; + + // $t32 := pool_u64::shares($t26, $t31) on_abort goto L11 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:639:26+41 + assume {:print "$at(2,30463,30504)"} true; + call $t32 := $1_pool_u64_shares($t26, $t31); + if ($abort_flag) { + assume {:print "$at(2,30463,30504)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(57,8):", $t16} $t16 == $t16; + goto L11; + } + + // trace_local[shares#241]($t32) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:639:17+6 + assume {:print "$track_local(57,8,11):", $t32} $t32 == $t32; + + // $t33 := pool_u64::shares_to_amount_with_total_coins($t26, $t32, $t21) on_abort goto L11 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:640:26+90 + assume {:print "$at(2,30531,30621)"} true; + call $t33 := $1_pool_u64_shares_to_amount_with_total_coins($t26, $t32, $t21); + if ($abort_flag) { + assume {:print "$at(2,30531,30621)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(57,8):", $t16} $t16 == $t16; + goto L11; + } + + // trace_local[amount#242]($t33) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:640:17+6 + assume {:print "$track_local(57,8,4):", $t33} $t33 == $t33; + + // $t39 := borrow_local($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:641:48+10 + assume {:print "$at(2,30670,30680)"} true; + $t39 := $Mutation($Local(5), EmptyVec(), $t5); + + // assume Identical($t40, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + assume {:print "$at(95,1664,1763)"} true; + assume ($t40 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + + // $t34 := coin::extract($t39, $t33) on_abort goto L11 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:641:34+33 + assume {:print "$at(2,30656,30689)"} true; + call $t34,$t39 := $1_coin_extract'$1_aptos_coin_AptosCoin'($t39, $t33); + if ($abort_flag) { + assume {:print "$at(2,30656,30689)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(57,8):", $t16} $t16 == $t16; + goto L11; + } + + // write_back[LocalRoot($t5)@]($t39) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:641:34+33 + $t5 := $Dereference($t39); + + // trace_local[coins]($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:641:34+33 + assume {:print "$track_local(57,8,5):", $t5} $t5 == $t5; + + // trace_local[share_of_coins#243]($t34) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:641:17+14 + assume {:print "$track_local(57,8,9):", $t34} $t34 == $t34; + + // $t35 := read_ref($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:642:52+31 + assume {:print "$at(2,30742,30773)"} true; + $t35 := $Dereference($t17); + + // $t36 := vesting::get_beneficiary($t35, $t31) on_abort goto L11 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:642:37+46 + call $t36 := $1_vesting_get_beneficiary($t35, $t31); + if ($abort_flag) { + assume {:print "$at(2,30727,30773)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(57,8):", $t16} $t16 == $t16; + goto L11; + } + + // assume Identical($t41, global($t36)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.spec.move:200:9+39 + assume {:print "$at(81,9368,9407)"} true; + assume ($t41 == $ResourceValue($1_account_Account_$memory, $t36)); + + // aptos_account::deposit_coins($t36, $t34) on_abort goto L11 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:643:13+63 + assume {:print "$at(2,30787,30850)"} true; + call $1_aptos_account_deposit_coins'$1_aptos_coin_AptosCoin'($t36, $t34); + if ($abort_flag) { + assume {:print "$at(2,30787,30850)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(57,8):", $t16} $t16 == $t16; + goto L11; + } + + // $t37 := 1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:265:21+1 + assume {:print "$at(18,9353,9354)"} true; + $t37 := 1; + assume $IsValid'u64'($t37); + + // $t38 := +($t7, $t37) on_abort goto L11 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:265:19+1 + call $t38 := $AddU64($t7, $t37); + if ($abort_flag) { + assume {:print "$at(18,9351,9352)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(57,8):", $t16} $t16 == $t16; + goto L11; + } + + // trace_local[i#237]($t38) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:265:13+1 + assume {:print "$track_local(57,8,7):", $t38} $t38 == $t38; + + // goto L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:265:13+9 + goto L9; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:647:9+182 + assume {:print "$at(2,30970,31152)"} true; +L2: + + // $t42 := copy($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:647:25+6 + assume {:print "$at(2,30986,30992)"} true; + $t42 := $t5; + + // assume Identical($t43, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + assume {:print "$at(95,1664,1763)"} true; + assume ($t43 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + + // $t44 := coin::value($t42) on_abort goto L11 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:647:13+19 + assume {:print "$at(2,30974,30993)"} true; + call $t44 := $1_coin_value'$1_aptos_coin_AptosCoin'($t42); + if ($abort_flag) { + assume {:print "$at(2,30974,30993)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(57,8):", $t16} $t16 == $t16; + goto L11; + } + + // $t45 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:647:35+1 + $t45 := 0; + assume $IsValid'u64'($t45); + + // $t46 := >($t44, $t45) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:647:33+1 + call $t46 := $Gt($t44, $t45); + + // if ($t46) goto L7 else goto L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:647:9+182 + if ($t46) { goto L7; } else { goto L6; } + + // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:648:42+16 + assume {:print "$at(2,31042,31058)"} true; +L7: + + // $t47 := get_field.withdrawal_address($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:648:42+35 + assume {:print "$at(2,31042,31077)"} true; + $t47 := $withdrawal_address#$1_vesting_VestingContract($Dereference($t17)); + + // $t48 := move($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:648:79+5 + $t48 := $t5; + + // assume Identical($t49, global($t47)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.spec.move:200:9+39 + assume {:print "$at(81,9368,9407)"} true; + assume ($t49 == $ResourceValue($1_account_Account_$memory, $t47)); + + // aptos_account::deposit_coins($t47, $t48) on_abort goto L11 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:648:13+72 + assume {:print "$at(2,31013,31085)"} true; + call $1_aptos_account_deposit_coins'$1_aptos_coin_AptosCoin'($t47, $t48); + if ($abort_flag) { + assume {:print "$at(2,31013,31085)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(57,8):", $t16} $t16 == $t16; + goto L11; + } + + // goto L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:648:85+1 + goto L8; + + // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:650:32+5 + assume {:print "$at(2,31135,31140)"} true; +L6: + + // $t50 := move($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:650:32+5 + assume {:print "$at(2,31135,31140)"} true; + $t50 := $t5; + + // assume Identical($t51, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + assume {:print "$at(95,1664,1763)"} true; + assume ($t51 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + + // coin::destroy_zero($t50) on_abort goto L11 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:650:13+25 + assume {:print "$at(2,31116,31141)"} true; + call $1_coin_destroy_zero'$1_aptos_coin_AptosCoin'($t50); + if ($abort_flag) { + assume {:print "$at(2,31116,31141)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(57,8):", $t16} $t16 == $t16; + goto L11; + } + + // label L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:654:18+16 + assume {:print "$at(2,31192,31208)"} true; +L8: + + // $t52 := borrow_field.distribute_events($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:654:13+39 + assume {:print "$at(2,31187,31226)"} true; + $t52 := $ChildMutation($t17, 15, $distribute_events#$1_vesting_VestingContract($Dereference($t17))); + + // $t53 := get_field.admin($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:656:24+22 + assume {:print "$at(2,31281,31303)"} true; + $t53 := $admin#$1_vesting_VestingContract($Dereference($t17)); + + // $t54 := pack vesting::DistributeEvent($t53, $t0, $t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:655:13+189 + assume {:print "$at(2,31240,31429)"} true; + $t54 := $1_vesting_DistributeEvent($t53, $t0, $t21); + + // opaque begin: event::emit_event($t52, $t54) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:653:9+277 + assume {:print "$at(2,31163,31440)"} true; + + // opaque end: event::emit_event($t52, $t54) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:653:9+277 + + // write_back[Reference($t17).distribute_events (event::EventHandle)]($t52) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:653:9+277 + $t17 := $UpdateMutation($t17, $Update'$1_vesting_VestingContract'_distribute_events($Dereference($t17), $Dereference($t52))); + + // pack_ref_deep($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:653:9+277 + + // write_back[vesting::VestingContract@]($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:653:9+277 + $1_vesting_VestingContract_$memory := $ResourceUpdate($1_vesting_VestingContract_$memory, $GlobalLocationAddress($t17), + $Dereference($t17)); + + // goto L10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:660:10+1 + assume {:print "$at(2,31440,31441)"} true; + goto L10; + + // label L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:654:18+16 + // Loop invariant checking block for the loop started with header: L5 + assume {:print "$at(2,31192,31208)"} true; +L9: + + // stop() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:654:18+16 + assume {:print "$at(2,31192,31208)"} true; + assume false; + return; + + // label L10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:661:5+1 + assume {:print "$at(2,31446,31447)"} true; +L10: + + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:661:5+1 + assume {:print "$at(2,31446,31447)"} true; + return; + + // label L11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:661:5+1 +L11: + + // abort($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:661:5+1 + assume {:print "$at(2,31446,31447)"} true; + $abort_code := $t16; + $abort_flag := true; + return; + +} + +// fun vesting::distribute [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:623:5+1779 +procedure {:timeLimit 200} $1_vesting_distribute$verify(_$t0: int) returns () +{ + // declare local variables + var $t1: int; + var $t2: Vec (int); + var $t3: int; + var $t4: int; + var $t5: $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $t6: $1_pool_u64_Pool; + var $t7: int; + var $t8: int; + var $t9: $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $t10: int; + var $t11: int; + var $t12: int; + var $t13: Vec (int); + var $t14: $Mutation ($1_vesting_VestingContract); + var $t15: $1_vesting_VestingContract; + var $t16: int; + var $t17: $Mutation ($1_vesting_VestingContract); + var $t18: $1_vesting_VestingContract; + var $t19: $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $t20: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t21: int; + var $t22: int; + var $t23: bool; + var $t24: $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $t25: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t26: $1_pool_u64_Pool; + var $t27: Vec (int); + var $t28: int; + var $t29: int; + var $t30: bool; + var $t31: int; + var $t32: int; + var $t33: int; + var $t34: $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $t35: $1_vesting_VestingContract; + var $t36: int; + var $t37: int; + var $t38: int; + var $t39: $Mutation ($1_coin_Coin'$1_aptos_coin_AptosCoin'); + var $t40: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t41: $1_account_Account; + var $t42: $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $t43: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t44: int; + var $t45: int; + var $t46: bool; + var $t47: int; + var $t48: $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $t49: $1_account_Account; + var $t50: $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $t51: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t52: $Mutation ($1_event_EventHandle'$1_vesting_DistributeEvent'); + var $t53: int; + var $t54: $1_vesting_DistributeEvent; + var $t0: int; + var $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin'': $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $temp_0'$1_pool_u64_Pool': $1_pool_u64_Pool; + var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; + var $temp_0'address': int; + var $temp_0'u64': int; + var $temp_0'vec'address'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:623:5+1 + assume {:print "$at(2,29668,29669)"} true; + assume $IsValid'address'($t0); + + // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.rotation_capability_offer($rsc)))), 1), Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.signer_capability_offer($rsc)))), 1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:623:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_account_Account_$memory, $a_0)}(var $rsc := $ResourceValue($1_account_Account_$memory, $a_0); + (($IsValid'$1_account_Account'($rsc) && ((LenVec($vec#$1_option_Option'address'($for#$1_account_CapabilityOffer'$1_account_RotationCapability'($rotation_capability_offer#$1_account_Account($rsc)))) <= 1) && (LenVec($vec#$1_option_Option'address'($for#$1_account_CapabilityOffer'$1_account_SignerCapability'($signer_capability_offer#$1_account_Account($rsc)))) <= 1)))))); + + // assume forall $rsc: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: select option::Option.vec(select coin::CoinInfo.supply($rsc)): And(And(And(And(And(Iff(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($elem)), option::$is_none(select optional_aggregator::OptionalAggregator.integer($elem))), Iff(option::$is_some(select optional_aggregator::OptionalAggregator.integer($elem)), option::$is_none(select optional_aggregator::OptionalAggregator.aggregator($elem)))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.integer($elem)), Le(select optional_aggregator::Integer.value(option::$borrow(select optional_aggregator::OptionalAggregator.integer($elem))), select optional_aggregator::Integer.limit(option::$borrow(select optional_aggregator::OptionalAggregator.integer($elem)))))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($elem)), Le(aggregator::spec_aggregator_get_val(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($elem))), aggregator::spec_get_limit(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($elem)))))), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.aggregator($elem))), 1)), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.integer($elem))), 1)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:623:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'$1_aptos_coin_AptosCoin''($rsc) && ((LenVec($vec#$1_option_Option'$1_optional_aggregator_OptionalAggregator'($supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($rsc))) <= 1) && (var $range_1 := $vec#$1_option_Option'$1_optional_aggregator_OptionalAggregator'($supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($rsc)); (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)) <==> $1_option_$is_none'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)) ==> ($value#$1_optional_aggregator_Integer($1_option_$borrow'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) <= $limit#$1_optional_aggregator_Integer($1_option_$borrow'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)))))) && ($1_option_$is_some'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem))) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)))))) && (LenVec($vec#$1_option_Option'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem))) <= 1)) && (LenVec($vec#$1_option_Option'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) <= 1))))))))))); + + // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:623:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $a_0); + ($IsValid'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''($rsc)))); + + // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:623:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin''($rsc)))); + + // assume exists>(0x0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:623:5+1 + assume $ResourceExists($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, 0); + + // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:623:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin''($rsc)))); + + // assume exists>(0x0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:623:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, 0); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:623:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_aptos_account_DirectTransferConfig_$memory, $a_0)}(var $rsc := $ResourceValue($1_aptos_account_DirectTransferConfig_$memory, $a_0); + ($IsValid'$1_aptos_account_DirectTransferConfig'($rsc)))); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:623:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_chain_status_GenesisEndMarker_$memory, $a_0)}(var $rsc := $ResourceValue($1_chain_status_GenesisEndMarker_$memory, $a_0); + ($IsValid'$1_chain_status_GenesisEndMarker'($rsc)))); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:623:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_timestamp_CurrentTimeMicroseconds_$memory, $a_0)}(var $rsc := $ResourceValue($1_timestamp_CurrentTimeMicroseconds_$memory, $a_0); + ($IsValid'$1_timestamp_CurrentTimeMicroseconds'($rsc)))); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:623:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_stake_StakePool_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_StakePool_$memory, $a_0); + ($IsValid'$1_stake_StakePool'($rsc)))); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:623:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorConfig_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorConfig_$memory, $a_0); + ($IsValid'$1_stake_ValidatorConfig'($rsc)))); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:623:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorPerformance_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorPerformance_$memory, $a_0); + ($IsValid'$1_stake_ValidatorPerformance'($rsc)))); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:623:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorSet_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorSet_$memory, $a_0); + ($IsValid'$1_stake_ValidatorSet'($rsc)))); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:623:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_reconfiguration_Configuration_$memory, $a_0)}(var $rsc := $ResourceValue($1_reconfiguration_Configuration_$memory, $a_0); + ($IsValid'$1_reconfiguration_Configuration'($rsc)))); + + // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), forall $key: select staking_contract::Store.staking_contracts($rsc): And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), i), Index(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:623:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_staking_contract_Store_$memory, $a_0)}(var $rsc := $ResourceValue($1_staking_contract_Store_$memory, $a_0); + (($IsValid'$1_staking_contract_Store'($rsc) && (var $range_1 := $staking_contracts#$1_staking_contract_Store($rsc); (forall $key: int :: ContainsTable($range_1, $EncodeKey'address'($key)) ==> (((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), addr)))) && (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))))); (var $range_3 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))))); (forall $i_4: int, $i_5: int :: $InRange($range_2, $i_4) ==> $InRange($range_3, $i_5) ==> (var i := $i_4; + (var j := $i_5; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), i), ReadVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), j)) ==> $IsEqual'num'(i, j)))))))))))))))); + + // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:623:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); + (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; + (var j := $i_4; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); + + // assume Implies(chain_status::$is_operating(), exists(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:623:5+1779 + // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.spec.move:4:9+93 + assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory, 1)); + + // assume Implies(exists(0x1), stake::validator_set_is_valid()) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:623:5+1779 + // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:8:9+92 + assume ($ResourceExists($1_stake_ValidatorSet_$memory, 1) ==> $1_stake_validator_set_is_valid($1_stake_StakePool_$memory, $1_stake_ValidatorConfig_$memory, $1_stake_ValidatorPerformance_$memory, $1_stake_ValidatorSet_$memory)); + + // assume Implies(chain_status::$is_operating(), exists(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:623:5+1779 + // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:12:9+96 + assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_stake_ValidatorSet_$memory, 1)); + + // assume Implies(chain_status::$is_operating(), Ge(timestamp::spec_now_microseconds(), reconfiguration::$last_reconfiguration_time())) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:623:5+1779 + // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/reconfiguration.spec.move:8:9+137 + assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> ($1_timestamp_spec_now_microseconds($1_timestamp_CurrentTimeMicroseconds_$memory) >= $1_reconfiguration_$last_reconfiguration_time($1_reconfiguration_Configuration_$memory))); + + // trace_local[contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:623:5+1 + assume {:print "$track_local(57,8,0):", $t0} $t0 == $t0; + + // assume Identical($t15, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:389:9+65 + assume {:print "$at(3,16378,16443)"} true; + assume ($t15 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); + + // vesting::assert_active_vesting_contract($t0) on_abort goto L11 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:624:9+48 + assume {:print "$at(2,29758,29806)"} true; + call $1_vesting_assert_active_vesting_contract($t0); + if ($abort_flag) { + assume {:print "$at(2,29758,29806)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(57,8):", $t16} $t16 == $t16; + goto L11; + } + + // $t17 := borrow_global($t0) on_abort goto L11 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:626:32+17 + assume {:print "$at(2,29840,29857)"} true; + if (!$ResourceExists($1_vesting_VestingContract_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t17 := $Mutation($Global($t0), EmptyVec(), $ResourceValue($1_vesting_VestingContract_$memory, $t0)); + } + if ($abort_flag) { + assume {:print "$at(2,29840,29857)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(57,8):", $t16} $t16 == $t16; + goto L11; + } + + // trace_local[vesting_contract]($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:626:13+16 + $temp_0'$1_vesting_VestingContract' := $Dereference($t17); + assume {:print "$track_local(57,8,14):", $temp_0'$1_vesting_VestingContract'} $temp_0'$1_vesting_VestingContract' == $temp_0'$1_vesting_VestingContract'; + + // $t18 := read_ref($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:627:35+36 + assume {:print "$at(2,29928,29964)"} true; + $t18 := $Dereference($t17); + + // $t5 := vesting::withdraw_stake($t18, $t0) on_abort goto L11 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:627:21+50 + call $t5 := $1_vesting_withdraw_stake($t18, $t0); + if ($abort_flag) { + assume {:print "$at(2,29914,29964)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(57,8):", $t16} $t16 == $t16; + goto L11; + } + + // trace_local[coins]($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:627:13+5 + assume {:print "$track_local(57,8,5):", $t5} $t5 == $t5; + + // $t19 := copy($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:628:53+6 + assume {:print "$at(2,30018,30024)"} true; + $t19 := $t5; + + // assume Identical($t20, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + assume {:print "$at(95,1664,1763)"} true; + assume ($t20 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + + // $t21 := coin::value($t19) on_abort goto L11 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:628:41+19 + assume {:print "$at(2,30006,30025)"} true; + call $t21 := $1_coin_value'$1_aptos_coin_AptosCoin'($t19); + if ($abort_flag) { + assume {:print "$at(2,30006,30025)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(57,8):", $t16} $t16 == $t16; + goto L11; + } + + // trace_local[total_distribution_amount]($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:628:13+25 + assume {:print "$track_local(57,8,12):", $t21} $t21 == $t21; + + // $t22 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:629:42+1 + assume {:print "$at(2,30068,30069)"} true; + $t22 := 0; + assume $IsValid'u64'($t22); + + // $t23 := ==($t21, $t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:629:39+2 + $t23 := $IsEqual'u64'($t21, $t22); + + // if ($t23) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:629:9+105 + if ($t23) { goto L1; } else { goto L0; } + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:630:13+25 + assume {:print "$at(2,30085,30110)"} true; +L1: + + // assert forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t17)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t17)), addr)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 + // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 + assume {:print "$at(59,538,673)"} true; + assert {:msg "assert_failed(59,538,673): data invariant does not hold"} + (forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t17))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t17))), addr)))); + + // assert forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t17)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t17)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t17)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t17)), j)), Eq(i, j)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 + // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 + assume {:print "$at(59,738,867)"} true; + assert {:msg "assert_failed(59,738,867): data invariant does not hold"} + (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t17))))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t17))))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; + (var j := $i_3; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t17))), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t17))), j)) ==> $IsEqual'num'(i, j)))))))); + + // destroy($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:630:13+25 + assume {:print "$at(2,30085,30110)"} true; + + // $t24 := move($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:630:32+5 + $t24 := $t5; + + // assume Identical($t25, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + assume {:print "$at(95,1664,1763)"} true; + assume ($t25 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + + // coin::destroy_zero($t24) on_abort goto L11 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:630:13+25 + assume {:print "$at(2,30085,30110)"} true; + call $1_coin_destroy_zero'$1_aptos_coin_AptosCoin'($t24); + if ($abort_flag) { + assume {:print "$at(2,30085,30110)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(57,8):", $t16} $t16 == $t16; + goto L11; + } + + // goto L10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:631:13+6 + assume {:print "$at(2,30124,30130)"} true; + goto L10; + + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:635:27+16 + assume {:print "$at(2,30242,30258)"} true; +L0: + + // $t26 := get_field.grant_pool($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:635:26+28 + assume {:print "$at(2,30241,30269)"} true; + $t26 := $grant_pool#$1_vesting_VestingContract($Dereference($t17)); + + // trace_local[grant_pool]($t26) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:635:13+10 + assume {:print "$track_local(57,8,6):", $t26} $t26 == $t26; + + // $t27 := pool_u64::shareholders($t26) on_abort goto L11 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:636:29+34 + assume {:print "$at(2,30299,30333)"} true; + call $t27 := $1_pool_u64_shareholders($t26); + if ($abort_flag) { + assume {:print "$at(2,30299,30333)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(57,8):", $t16} $t16 == $t16; + goto L11; + } + + // trace_local[v#235]($t27) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:637:9+519 + assume {:print "$at(2,30343,30862)"} true; + assume {:print "$track_local(57,8,13):", $t27} $t27 == $t27; + + // $t28 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:261:17+1 + assume {:print "$at(18,9246,9247)"} true; + $t28 := 0; + assume $IsValid'u64'($t28); + + // trace_local[i#237]($t28) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:261:13+1 + assume {:print "$track_local(57,8,7):", $t28} $t28 == $t28; + + // $t29 := vector::length
($t27) on_abort goto L11 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:262:19+9 + assume {:print "$at(18,9267,9276)"} true; + call $t29 := $1_vector_length'address'($t27); + if ($abort_flag) { + assume {:print "$at(18,9267,9276)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(57,8):", $t16} $t16 == $t16; + goto L11; + } + + // trace_local[len#238]($t29) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:262:13+3 + assume {:print "$track_local(57,8,8):", $t29} $t29 == $t29; + + // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume {:print "$at(18,9293,9294)"} true; +L5: + + // $t5 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume {:print "$at(18,9293,9294)"} true; + havoc $t5; + + // assume WellFormed($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume $IsValid'$1_coin_Coin'$1_aptos_coin_AptosCoin''($t5); + + // $t7 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + havoc $t7; + + // assume WellFormed($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume $IsValid'u64'($t7); + + // $t30 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + havoc $t30; + + // assume WellFormed($t30) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume $IsValid'bool'($t30); + + // $t31 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + havoc $t31; + + // assume WellFormed($t31) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume $IsValid'address'($t31); + + // $t32 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + havoc $t32; + + // assume WellFormed($t32) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume $IsValid'u64'($t32); + + // $t33 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + havoc $t33; + + // assume WellFormed($t33) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume $IsValid'u64'($t33); + + // $t34 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + havoc $t34; + + // assume WellFormed($t34) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume $IsValid'$1_coin_Coin'$1_aptos_coin_AptosCoin''($t34); + + // $t35 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + havoc $t35; + + // assume And(WellFormed($t35), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t35)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t35)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t35)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t35)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t35)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t35)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume ($IsValid'$1_vesting_VestingContract'($t35) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t35)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t35)), addr)))) && (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t35)))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t35)))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; + (var j := $i_3; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t35)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t35)), j)) ==> $IsEqual'num'(i, j)))))))))); + + // $t36 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + havoc $t36; + + // assume WellFormed($t36) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume $IsValid'address'($t36); + + // $t37 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + havoc $t37; + + // assume WellFormed($t37) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume $IsValid'u64'($t37); + + // $t38 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + havoc $t38; + + // assume WellFormed($t38) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume $IsValid'u64'($t38); + + // $t39 := havoc[mut_all]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + havoc $t39; + + // assume WellFormed($t39) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume $IsValid'$1_coin_Coin'$1_aptos_coin_AptosCoin''($Dereference($t39)); + + // trace_local[coins]($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume {:print "$info(): enter loop, variable(s) coins, i#237 havocked and reassigned"} true; + assume {:print "$track_local(57,8,5):", $t5} $t5 == $t5; + + // trace_local[i#237]($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume {:print "$track_local(57,8,7):", $t7} $t7 == $t7; + + // assume Not(AbortFlag()) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume !$abort_flag; + + // $t30 := <($t7, $t29) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:18+1 + call $t30 := $Lt($t7, $t29); + + // if ($t30) goto L3 else goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:9+78 + if ($t30) { goto L3; } else { goto L2; } + + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:9+78 +L3: + + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:264:22+1 + assume {:print "$at(18,9325,9326)"} true; +L4: + + // $t31 := vector::borrow
($t27, $t7) on_abort goto L11 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:264:15+12 + assume {:print "$at(18,9318,9330)"} true; + call $t31 := $1_vector_borrow'address'($t27, $t7); + if ($abort_flag) { + assume {:print "$at(18,9318,9330)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(57,8):", $t16} $t16 == $t16; + goto L11; + } + + // trace_local[shareholder#240]($t31) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:638:17+11 + assume {:print "$at(2,30410,30421)"} true; + assume {:print "$track_local(57,8,10):", $t31} $t31 == $t31; + + // $t32 := pool_u64::shares($t26, $t31) on_abort goto L11 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:639:26+41 + assume {:print "$at(2,30463,30504)"} true; + call $t32 := $1_pool_u64_shares($t26, $t31); + if ($abort_flag) { + assume {:print "$at(2,30463,30504)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(57,8):", $t16} $t16 == $t16; + goto L11; + } + + // trace_local[shares#241]($t32) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:639:17+6 + assume {:print "$track_local(57,8,11):", $t32} $t32 == $t32; + + // $t33 := pool_u64::shares_to_amount_with_total_coins($t26, $t32, $t21) on_abort goto L11 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:640:26+90 + assume {:print "$at(2,30531,30621)"} true; + call $t33 := $1_pool_u64_shares_to_amount_with_total_coins($t26, $t32, $t21); + if ($abort_flag) { + assume {:print "$at(2,30531,30621)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(57,8):", $t16} $t16 == $t16; + goto L11; + } + + // trace_local[amount#242]($t33) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:640:17+6 + assume {:print "$track_local(57,8,4):", $t33} $t33 == $t33; + + // $t39 := borrow_local($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:641:48+10 + assume {:print "$at(2,30670,30680)"} true; + $t39 := $Mutation($Local(5), EmptyVec(), $t5); + + // assume Identical($t40, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + assume {:print "$at(95,1664,1763)"} true; + assume ($t40 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + + // $t34 := coin::extract($t39, $t33) on_abort goto L11 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:641:34+33 + assume {:print "$at(2,30656,30689)"} true; + call $t34,$t39 := $1_coin_extract'$1_aptos_coin_AptosCoin'($t39, $t33); + if ($abort_flag) { + assume {:print "$at(2,30656,30689)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(57,8):", $t16} $t16 == $t16; + goto L11; + } + + // write_back[LocalRoot($t5)@]($t39) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:641:34+33 + $t5 := $Dereference($t39); + + // trace_local[coins]($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:641:34+33 + assume {:print "$track_local(57,8,5):", $t5} $t5 == $t5; + + // trace_local[share_of_coins#243]($t34) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:641:17+14 + assume {:print "$track_local(57,8,9):", $t34} $t34 == $t34; + + // $t35 := read_ref($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:642:52+31 + assume {:print "$at(2,30742,30773)"} true; + $t35 := $Dereference($t17); + + // $t36 := vesting::get_beneficiary($t35, $t31) on_abort goto L11 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:642:37+46 + call $t36 := $1_vesting_get_beneficiary($t35, $t31); + if ($abort_flag) { + assume {:print "$at(2,30727,30773)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(57,8):", $t16} $t16 == $t16; + goto L11; + } + + // assume Identical($t41, global($t36)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.spec.move:200:9+39 + assume {:print "$at(81,9368,9407)"} true; + assume ($t41 == $ResourceValue($1_account_Account_$memory, $t36)); + + // aptos_account::deposit_coins($t36, $t34) on_abort goto L11 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:643:13+63 + assume {:print "$at(2,30787,30850)"} true; + call $1_aptos_account_deposit_coins'$1_aptos_coin_AptosCoin'($t36, $t34); + if ($abort_flag) { + assume {:print "$at(2,30787,30850)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(57,8):", $t16} $t16 == $t16; + goto L11; + } + + // $t37 := 1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:265:21+1 + assume {:print "$at(18,9353,9354)"} true; + $t37 := 1; + assume $IsValid'u64'($t37); + + // $t38 := +($t7, $t37) on_abort goto L11 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:265:19+1 + call $t38 := $AddU64($t7, $t37); + if ($abort_flag) { + assume {:print "$at(18,9351,9352)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(57,8):", $t16} $t16 == $t16; + goto L11; + } + + // trace_local[i#237]($t38) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:265:13+1 + assume {:print "$track_local(57,8,7):", $t38} $t38 == $t38; + + // goto L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:265:13+9 + goto L9; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:647:9+182 + assume {:print "$at(2,30970,31152)"} true; +L2: + + // $t42 := copy($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:647:25+6 + assume {:print "$at(2,30986,30992)"} true; + $t42 := $t5; + + // assume Identical($t43, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + assume {:print "$at(95,1664,1763)"} true; + assume ($t43 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + + // $t44 := coin::value($t42) on_abort goto L11 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:647:13+19 + assume {:print "$at(2,30974,30993)"} true; + call $t44 := $1_coin_value'$1_aptos_coin_AptosCoin'($t42); + if ($abort_flag) { + assume {:print "$at(2,30974,30993)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(57,8):", $t16} $t16 == $t16; + goto L11; + } + + // $t45 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:647:35+1 + $t45 := 0; + assume $IsValid'u64'($t45); + + // $t46 := >($t44, $t45) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:647:33+1 + call $t46 := $Gt($t44, $t45); + + // if ($t46) goto L7 else goto L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:647:9+182 + if ($t46) { goto L7; } else { goto L6; } + + // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:648:42+16 + assume {:print "$at(2,31042,31058)"} true; +L7: + + // $t47 := get_field.withdrawal_address($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:648:42+35 + assume {:print "$at(2,31042,31077)"} true; + $t47 := $withdrawal_address#$1_vesting_VestingContract($Dereference($t17)); + + // $t48 := move($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:648:79+5 + $t48 := $t5; + + // assume Identical($t49, global($t47)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.spec.move:200:9+39 + assume {:print "$at(81,9368,9407)"} true; + assume ($t49 == $ResourceValue($1_account_Account_$memory, $t47)); + + // aptos_account::deposit_coins($t47, $t48) on_abort goto L11 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:648:13+72 + assume {:print "$at(2,31013,31085)"} true; + call $1_aptos_account_deposit_coins'$1_aptos_coin_AptosCoin'($t47, $t48); + if ($abort_flag) { + assume {:print "$at(2,31013,31085)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(57,8):", $t16} $t16 == $t16; + goto L11; + } + + // goto L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:648:85+1 + goto L8; + + // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:650:32+5 + assume {:print "$at(2,31135,31140)"} true; +L6: + + // $t50 := move($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:650:32+5 + assume {:print "$at(2,31135,31140)"} true; + $t50 := $t5; + + // assume Identical($t51, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + assume {:print "$at(95,1664,1763)"} true; + assume ($t51 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + + // coin::destroy_zero($t50) on_abort goto L11 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:650:13+25 + assume {:print "$at(2,31116,31141)"} true; + call $1_coin_destroy_zero'$1_aptos_coin_AptosCoin'($t50); + if ($abort_flag) { + assume {:print "$at(2,31116,31141)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(57,8):", $t16} $t16 == $t16; + goto L11; + } + + // label L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:654:18+16 + assume {:print "$at(2,31192,31208)"} true; +L8: + + // $t52 := borrow_field.distribute_events($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:654:13+39 + assume {:print "$at(2,31187,31226)"} true; + $t52 := $ChildMutation($t17, 15, $distribute_events#$1_vesting_VestingContract($Dereference($t17))); + + // $t53 := get_field.admin($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:656:24+22 + assume {:print "$at(2,31281,31303)"} true; + $t53 := $admin#$1_vesting_VestingContract($Dereference($t17)); + + // $t54 := pack vesting::DistributeEvent($t53, $t0, $t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:655:13+189 + assume {:print "$at(2,31240,31429)"} true; + $t54 := $1_vesting_DistributeEvent($t53, $t0, $t21); + + // opaque begin: event::emit_event($t52, $t54) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:653:9+277 + assume {:print "$at(2,31163,31440)"} true; + + // opaque end: event::emit_event($t52, $t54) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:653:9+277 + + // write_back[Reference($t17).distribute_events (event::EventHandle)]($t52) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:653:9+277 + $t17 := $UpdateMutation($t17, $Update'$1_vesting_VestingContract'_distribute_events($Dereference($t17), $Dereference($t52))); + + // assert forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t17)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t17)), addr)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 + // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 + assume {:print "$at(59,538,673)"} true; + assert {:msg "assert_failed(59,538,673): data invariant does not hold"} + (forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t17))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t17))), addr)))); + + // assert forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t17)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t17)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t17)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t17)), j)), Eq(i, j)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 + // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 + assume {:print "$at(59,738,867)"} true; + assert {:msg "assert_failed(59,738,867): data invariant does not hold"} + (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t17))))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t17))))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; + (var j := $i_3; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t17))), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t17))), j)) ==> $IsEqual'num'(i, j)))))))); + + // write_back[vesting::VestingContract@]($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:653:9+277 + assume {:print "$at(2,31163,31440)"} true; + $1_vesting_VestingContract_$memory := $ResourceUpdate($1_vesting_VestingContract_$memory, $GlobalLocationAddress($t17), + $Dereference($t17)); + + // goto L10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:660:10+1 + assume {:print "$at(2,31440,31441)"} true; + goto L10; + + // label L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:654:18+16 + // Loop invariant checking block for the loop started with header: L5 + assume {:print "$at(2,31192,31208)"} true; +L9: + + // stop() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:654:18+16 + assume {:print "$at(2,31192,31208)"} true; + assume false; + return; + + // label L10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:661:5+1 + assume {:print "$at(2,31446,31447)"} true; +L10: + + // assert Not(false) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:661:5+1 + assume {:print "$at(2,31446,31447)"} true; + assert {:msg "assert_failed(2,31446,31447): function does not abort under this condition"} + !false; + + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:661:5+1 + return; + + // label L11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:661:5+1 +L11: + + // abort($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:661:5+1 + assume {:print "$at(2,31446,31447)"} true; + $abort_code := $t16; + $abort_flag := true; + return; + +} + +// fun vesting::reset_lockup [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+862 +procedure {:timeLimit 200} $1_vesting_reset_lockup$verify(_$t0: $signer, _$t1: int) returns () +{ + // declare local variables + var $t2: $signer; + var $t3: $Mutation ($1_vesting_VestingContract); + var $t4: $1_vesting_VestingContract; + var $t5: int; + var $t6: int; + var $t7: $1_staking_contract_Store; + var $t8: $1_staking_contract_StakingContract; + var $t9: int; + var $t10: Table int ($1_staking_contract_StakingContract); + var $t11: $1_staking_contract_Store; + var $t12: $1_staking_contract_StakingContract; + var $t13: int; + var $t14: $1_staking_config_StakingConfig; + var $t15: $1_stake_StakePool; + var $t16: int; + var $t17: int; + var $t18: int; + var $t19: $Mutation ($1_vesting_VestingContract); + var $t20: int; + var $t21: $1_vesting_VestingContract; + var $t22: $1_vesting_VestingContract; + var $t23: $signer; + var $t24: $1_vesting_StakingInfo; + var $t25: int; + var $t26: int; + var $t27: Table int ($1_staking_contract_StakingContract); + var $t28: $1_staking_contract_Store; + var $t29: $1_staking_contract_StakingContract; + var $t30: int; + var $t31: $1_staking_config_StakingConfig; + var $t32: $1_stake_StakePool; + var $t33: int; + var $t34: int; + var $t35: int; + var $t36: $Mutation ($1_event_EventHandle'$1_vesting_ResetLockupEvent'); + var $t37: int; + var $t38: $1_vesting_StakingInfo; + var $t39: int; + var $t40: $1_vesting_StakingInfo; + var $t41: int; + var $t42: int; + var $t43: $1_vesting_ResetLockupEvent; + var $t0: $signer; + var $t1: int; + var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $1_vesting_VestingContract_$memory#122: $Memory $1_vesting_VestingContract; + var $1_staking_contract_Store_$memory#123: $Memory $1_staking_contract_Store; + var $1_stake_StakePool_$memory#124: $Memory $1_stake_StakePool; + var $1_staking_config_StakingConfig_$memory#125: $Memory $1_staking_config_StakingConfig; + var $1_timestamp_CurrentTimeMicroseconds_$memory#126: $Memory $1_timestamp_CurrentTimeMicroseconds; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+1 + assume {:print "$at(2,36776,36777)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($addr#$signer($t0)); + + // assume WellFormed($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+1 + assume $IsValid'address'($t1); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_chain_status_GenesisEndMarker_$memory, $a_0)}(var $rsc := $ResourceValue($1_chain_status_GenesisEndMarker_$memory, $a_0); + ($IsValid'$1_chain_status_GenesisEndMarker'($rsc)))); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_timestamp_CurrentTimeMicroseconds_$memory, $a_0)}(var $rsc := $ResourceValue($1_timestamp_CurrentTimeMicroseconds_$memory, $a_0); + ($IsValid'$1_timestamp_CurrentTimeMicroseconds'($rsc)))); + + // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(And(Le(select staking_config::StakingConfig.rewards_rate($rsc), 1000000), Gt(select staking_config::StakingConfig.rewards_rate_denominator($rsc), 0)), Le(select staking_config::StakingConfig.rewards_rate($rsc), select staking_config::StakingConfig.rewards_rate_denominator($rsc)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_staking_config_StakingConfig_$memory, $a_0)}(var $rsc := $ResourceValue($1_staking_config_StakingConfig_$memory, $a_0); + (($IsValid'$1_staking_config_StakingConfig'($rsc) && ((($rewards_rate#$1_staking_config_StakingConfig($rsc) <= 1000000) && ($rewards_rate_denominator#$1_staking_config_StakingConfig($rsc) > 0)) && ($rewards_rate#$1_staking_config_StakingConfig($rsc) <= $rewards_rate_denominator#$1_staking_config_StakingConfig($rsc))))))); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_stake_StakePool_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_StakePool_$memory, $a_0); + ($IsValid'$1_stake_StakePool'($rsc)))); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorConfig_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorConfig_$memory, $a_0); + ($IsValid'$1_stake_ValidatorConfig'($rsc)))); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorPerformance_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorPerformance_$memory, $a_0); + ($IsValid'$1_stake_ValidatorPerformance'($rsc)))); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorSet_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorSet_$memory, $a_0); + ($IsValid'$1_stake_ValidatorSet'($rsc)))); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_reconfiguration_Configuration_$memory, $a_0)}(var $rsc := $ResourceValue($1_reconfiguration_Configuration_$memory, $a_0); + ($IsValid'$1_reconfiguration_Configuration'($rsc)))); + + // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), forall $key: select staking_contract::Store.staking_contracts($rsc): And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), i), Index(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_staking_contract_Store_$memory, $a_0)}(var $rsc := $ResourceValue($1_staking_contract_Store_$memory, $a_0); + (($IsValid'$1_staking_contract_Store'($rsc) && (var $range_1 := $staking_contracts#$1_staking_contract_Store($rsc); (forall $key: int :: ContainsTable($range_1, $EncodeKey'address'($key)) ==> (((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), addr)))) && (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))))); (var $range_3 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))))); (forall $i_4: int, $i_5: int :: $InRange($range_2, $i_4) ==> $InRange($range_3, $i_5) ==> (var i := $i_4; + (var j := $i_5; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), i), ReadVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), j)) ==> $IsEqual'num'(i, j)))))))))))))))); + + // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); + (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; + (var j := $i_4; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); + + // assume Implies(chain_status::$is_operating(), exists(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+862 + // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.spec.move:4:9+93 + assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory, 1)); + + // assume Implies(chain_status::$is_operating(), exists(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+862 + // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/configs/staking_config.spec.move:4:9+83 + assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_staking_config_StakingConfig_$memory, 1)); + + // assume Implies(exists(0x1), stake::validator_set_is_valid()) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+862 + // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:8:9+92 + assume ($ResourceExists($1_stake_ValidatorSet_$memory, 1) ==> $1_stake_validator_set_is_valid($1_stake_StakePool_$memory, $1_stake_ValidatorConfig_$memory, $1_stake_ValidatorPerformance_$memory, $1_stake_ValidatorSet_$memory)); + + // assume Implies(chain_status::$is_operating(), Ge(timestamp::spec_now_microseconds(), reconfiguration::$last_reconfiguration_time())) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+862 + // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/reconfiguration.spec.move:8:9+137 + assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> ($1_timestamp_spec_now_microseconds($1_timestamp_CurrentTimeMicroseconds_$memory) >= $1_reconfiguration_$last_reconfiguration_time($1_reconfiguration_Configuration_$memory))); + + // assume Identical($t4, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:228:9+65 + assume {:print "$at(3,9240,9305)"} true; + assume ($t4 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); + + // assume Identical($t5, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t4))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:231:9+49 + assume {:print "$at(3,9386,9435)"} true; + assume ($t5 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t4))); + + // assume Identical($t6, select account::SignerCapability.account(select vesting::VestingContract.signer_cap($t4))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:232:9+49 + assume {:print "$at(3,9444,9493)"} true; + assume ($t6 == $account#$1_account_SignerCapability($signer_cap#$1_vesting_VestingContract($t4))); + + // assume Identical($t7, global($t6)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:237:9+52 + assume {:print "$at(3,9665,9717)"} true; + assume ($t7 == $ResourceValue($1_staking_contract_Store_$memory, $t6)); + + // assume Identical($t8, simple_map::spec_get(select staking_contract::Store.staking_contracts($t7), $t5)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:238:9+79 + assume {:print "$at(3,9726,9805)"} true; + assume ($t8 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($t7), $t5)); + + // assume Identical($t9, select stake::OwnerCapability.pool_address(select staking_contract::StakingContract.owner_cap($t8))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:239:9+59 + assume {:print "$at(3,9814,9873)"} true; + assume ($t9 == $pool_address#$1_stake_OwnerCapability($owner_cap#$1_staking_contract_StakingContract($t8))); + + // assume Identical($t10, select staking_contract::Store.staking_contracts(global($t6))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 + assume {:print "$at(134,11481,11545)"} true; + assume ($t10 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t6))); + + // assume Identical($t11, global($t6)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:316:9+34 + assume {:print "$at(134,13411,13445)"} true; + assume ($t11 == $ResourceValue($1_staking_contract_Store_$memory, $t6)); + + // assume Identical($t12, simple_map::spec_get(select staking_contract::Store.staking_contracts($t11), $t5)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:317:9+79 + assume {:print "$at(134,13454,13533)"} true; + assume ($t12 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($t11), $t5)); + + // assume Identical($t13, select stake::OwnerCapability.pool_address(select staking_contract::StakingContract.owner_cap($t12))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:318:9+59 + assume {:print "$at(134,13542,13601)"} true; + assume ($t13 == $pool_address#$1_stake_OwnerCapability($owner_cap#$1_staking_contract_StakingContract($t12))); + + // assume Identical($t14, global(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:323:9+69 + assume {:print "$at(134,13747,13816)"} true; + assume ($t14 == $ResourceValue($1_staking_config_StakingConfig_$memory, 1)); + + // assume Identical($t15, global($t13)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:324:9+56 + assume {:print "$at(134,13825,13881)"} true; + assume ($t15 == $ResourceValue($1_stake_StakePool_$memory, $t13)); + + // assume Identical($t16, select stake::StakePool.locked_until_secs($t15)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:325:9+57 + assume {:print "$at(134,13890,13947)"} true; + assume ($t16 == $locked_until_secs#$1_stake_StakePool($t15)); + + // assume Identical($t17, Div(select timestamp::CurrentTimeMicroseconds.microseconds(global(0x1)), 1000000)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:326:9+126 + assume {:print "$at(134,13956,14082)"} true; + assume ($t17 == ($microseconds#$1_timestamp_CurrentTimeMicroseconds($ResourceValue($1_timestamp_CurrentTimeMicroseconds_$memory, 1)) div 1000000)); + + // assume Identical($t18, Add($t17, select staking_config::StakingConfig.recurring_lockup_duration_secs($t14))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:327:9+77 + assume {:print "$at(134,14091,14168)"} true; + assume ($t18 == ($t17 + $recurring_lockup_duration_secs#$1_staking_config_StakingConfig($t14))); + + // @126 := save_mem(timestamp::CurrentTimeMicroseconds) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+1 + assume {:print "$at(2,36776,36777)"} true; + $1_timestamp_CurrentTimeMicroseconds_$memory#126 := $1_timestamp_CurrentTimeMicroseconds_$memory; + + // @125 := save_mem(staking_config::StakingConfig) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+1 + $1_staking_config_StakingConfig_$memory#125 := $1_staking_config_StakingConfig_$memory; + + // @124 := save_mem(stake::StakePool) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+1 + $1_stake_StakePool_$memory#124 := $1_stake_StakePool_$memory; + + // @123 := save_mem(staking_contract::Store) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+1 + $1_staking_contract_Store_$memory#123 := $1_staking_contract_Store_$memory; + + // @122 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+1 + $1_vesting_VestingContract_$memory#122 := $1_vesting_VestingContract_$memory; + + // trace_local[admin]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+1 + assume {:print "$track_local(57,19,0):", $t0} $t0 == $t0; + + // trace_local[contract_address]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+1 + assume {:print "$track_local(57,19,1):", $t1} $t1 == $t1; + + // $t19 := borrow_global($t1) on_abort goto L2 with $t20 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:791:32+17 + assume {:print "$at(2,36930,36947)"} true; + if (!$ResourceExists($1_vesting_VestingContract_$memory, $t1)) { + call $ExecFailureAbort(); + } else { + $t19 := $Mutation($Global($t1), EmptyVec(), $ResourceValue($1_vesting_VestingContract_$memory, $t1)); + } + if ($abort_flag) { + assume {:print "$at(2,36930,36947)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(57,19):", $t20} $t20 == $t20; + goto L2; + } + + // trace_local[vesting_contract]($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:791:13+16 + $temp_0'$1_vesting_VestingContract' := $Dereference($t19); + assume {:print "$track_local(57,19,3):", $temp_0'$1_vesting_VestingContract'} $temp_0'$1_vesting_VestingContract' == $temp_0'$1_vesting_VestingContract'; + + // $t21 := read_ref($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:792:21+25 + assume {:print "$at(2,37004,37029)"} true; + $t21 := $Dereference($t19); + + // vesting::verify_admin($t0, $t21) on_abort goto L2 with $t20 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:792:9+37 + call $1_vesting_verify_admin($t0, $t21); + if ($abort_flag) { + assume {:print "$at(2,36992,37029)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(57,19):", $t20} $t20 == $t20; + goto L2; + } + + // $t22 := read_ref($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:793:68+16 + assume {:print "$at(2,37098,37114)"} true; + $t22 := $Dereference($t19); + + // $t23 := vesting::get_vesting_account_signer_internal($t22) on_abort goto L2 with $t20 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:793:32+53 + call $t23 := $1_vesting_get_vesting_account_signer_internal($t22); + if ($abort_flag) { + assume {:print "$at(2,37062,37115)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(57,19):", $t20} $t20 == $t20; + goto L2; + } + + // $t24 := get_field.staking($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:794:57+24 + assume {:print "$at(2,37173,37197)"} true; + $t24 := $staking#$1_vesting_VestingContract($Dereference($t19)); + + // $t25 := get_field.operator($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:794:57+33 + $t25 := $operator#$1_vesting_StakingInfo($t24); + + // assume Identical($t26, signer::$address_of($t23)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:106:9+48 + assume {:print "$at(134,4774,4822)"} true; + assume ($t26 == $1_signer_$address_of($t23)); + + // assume Identical($t27, select staking_contract::Store.staking_contracts(global($t26))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 + assume {:print "$at(134,11481,11545)"} true; + assume ($t27 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t26))); + + // assume Identical($t28, global($t26)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:316:9+34 + assume {:print "$at(134,13411,13445)"} true; + assume ($t28 == $ResourceValue($1_staking_contract_Store_$memory, $t26)); + + // assume Identical($t29, simple_map::spec_get(select staking_contract::Store.staking_contracts($t28), $t25)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:317:9+79 + assume {:print "$at(134,13454,13533)"} true; + assume ($t29 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($t28), $t25)); + + // assume Identical($t30, select stake::OwnerCapability.pool_address(select staking_contract::StakingContract.owner_cap($t29))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:318:9+59 + assume {:print "$at(134,13542,13601)"} true; + assume ($t30 == $pool_address#$1_stake_OwnerCapability($owner_cap#$1_staking_contract_StakingContract($t29))); + + // assume Identical($t31, global(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:323:9+69 + assume {:print "$at(134,13747,13816)"} true; + assume ($t31 == $ResourceValue($1_staking_config_StakingConfig_$memory, 1)); + + // assume Identical($t32, global($t30)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:324:9+56 + assume {:print "$at(134,13825,13881)"} true; + assume ($t32 == $ResourceValue($1_stake_StakePool_$memory, $t30)); + + // assume Identical($t33, select stake::StakePool.locked_until_secs($t32)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:325:9+57 + assume {:print "$at(134,13890,13947)"} true; + assume ($t33 == $locked_until_secs#$1_stake_StakePool($t32)); + + // assume Identical($t34, Div(select timestamp::CurrentTimeMicroseconds.microseconds(global(0x1)), 1000000)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:326:9+126 + assume {:print "$at(134,13956,14082)"} true; + assume ($t34 == ($microseconds#$1_timestamp_CurrentTimeMicroseconds($ResourceValue($1_timestamp_CurrentTimeMicroseconds_$memory, 1)) div 1000000)); + + // assume Identical($t35, Add($t34, select staking_config::StakingConfig.recurring_lockup_duration_secs($t31))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:327:9+77 + assume {:print "$at(134,14091,14168)"} true; + assume ($t35 == ($t34 + $recurring_lockup_duration_secs#$1_staking_config_StakingConfig($t31))); + + // staking_contract::reset_lockup($t23, $t25) on_abort goto L2 with $t20 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:794:9+82 + assume {:print "$at(2,37125,37207)"} true; + call $1_staking_contract_reset_lockup($t23, $t25); + if ($abort_flag) { + assume {:print "$at(2,37125,37207)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(57,19):", $t20} $t20 == $t20; + goto L2; + } + + // $t36 := borrow_field.reset_lockup_events($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:797:13+41 + assume {:print "$at(2,37242,37283)"} true; + $t36 := $ChildMutation($t19, 11, $reset_lockup_events#$1_vesting_VestingContract($Dereference($t19))); + + // $t37 := get_field.admin($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:799:24+22 + assume {:print "$at(2,37339,37361)"} true; + $t37 := $admin#$1_vesting_VestingContract($Dereference($t19)); + + // $t38 := get_field.staking($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:801:39+24 + assume {:print "$at(2,37461,37485)"} true; + $t38 := $staking#$1_vesting_VestingContract($Dereference($t19)); + + // $t39 := get_field.pool_address($t38) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:801:39+37 + $t39 := $pool_address#$1_vesting_StakingInfo($t38); + + // $t40 := get_field.staking($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:802:68+24 + assume {:print "$at(2,37567,37591)"} true; + $t40 := $staking#$1_vesting_VestingContract($Dereference($t19)); + + // $t41 := get_field.pool_address($t40) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:802:68+37 + $t41 := $pool_address#$1_vesting_StakingInfo($t40); + + // $t42 := stake::get_lockup_secs($t41) on_abort goto L2 with $t20 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:802:45+61 + call $t42 := $1_stake_get_lockup_secs($t41); + if ($abort_flag) { + assume {:print "$at(2,37544,37605)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(57,19):", $t20} $t20 == $t20; + goto L2; + } + + // $t43 := pack vesting::ResetLockupEvent($t37, $t1, $t39, $t42) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:798:13+323 + assume {:print "$at(2,37297,37620)"} true; + $t43 := $1_vesting_ResetLockupEvent($t37, $t1, $t39, $t42); + + // opaque begin: event::emit_event($t36, $t43) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:796:9+413 + assume {:print "$at(2,37218,37631)"} true; + + // opaque end: event::emit_event($t36, $t43) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:796:9+413 + + // write_back[Reference($t19).reset_lockup_events (event::EventHandle)]($t36) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:796:9+413 + $t19 := $UpdateMutation($t19, $Update'$1_vesting_VestingContract'_reset_lockup_events($Dereference($t19), $Dereference($t36))); + + // assert forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t19)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t19)), addr)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 + // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 + assume {:print "$at(59,538,673)"} true; + assert {:msg "assert_failed(59,538,673): data invariant does not hold"} + (forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t19))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t19))), addr)))); + + // assert forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t19)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t19)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t19)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t19)), j)), Eq(i, j)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 + // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 + assume {:print "$at(59,738,867)"} true; + assert {:msg "assert_failed(59,738,867): data invariant does not hold"} + (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t19))))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t19))))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; + (var j := $i_3; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t19))), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t19))), j)) ==> $IsEqual'num'(i, j)))))))); + + // write_back[vesting::VestingContract@]($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:796:9+413 + assume {:print "$at(2,37218,37631)"} true; + $1_vesting_VestingContract_$memory := $ResourceUpdate($1_vesting_VestingContract_$memory, $GlobalLocationAddress($t19), + $Dereference($t19)); + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:805:5+1 + assume {:print "$at(2,37637,37638)"} true; +L1: + + // assert Not(Not(exists[@122]($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:227:9+53 + assume {:print "$at(3,9178,9231)"} true; + assert {:msg "assert_failed(3,9178,9231): function does not abort under this condition"} + !!$ResourceExists($1_vesting_VestingContract_$memory#122, $t1); + + // assert Not(Neq
(signer::$address_of[]($t0), select vesting::VestingContract.admin($t4))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:229:9+62 + assume {:print "$at(3,9314,9376)"} true; + assert {:msg "assert_failed(3,9314,9376): function does not abort under this condition"} + !!$IsEqual'address'($1_signer_$address_of($t0), $admin#$1_vesting_VestingContract($t4)); + + // assert Not(Not(exists[@123]($t6))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:267:9+33 + assume {:print "$at(134,11439,11472)"} true; + assert {:msg "assert_failed(134,11439,11472): function does not abort under this condition"} + !!$ResourceExists($1_staking_contract_Store_$memory#123, $t6); + + // assert Not(Not(simple_map::spec_contains_key[]($t10, $t5))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:269:9+70 + assume {:print "$at(134,11554,11624)"} true; + assert {:msg "assert_failed(134,11554,11624): function does not abort under this condition"} + !!$1_simple_map_spec_contains_key'address_$1_staking_contract_StakingContract'($t10, $t5); + + // assert Not(Not(stake::$stake_pool_exists[@124]($t13))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:320:9+50 + assume {:print "$at(134,13611,13661)"} true; + assert {:msg "assert_failed(134,13611,13661): function does not abort under this condition"} + !!$1_stake_$stake_pool_exists($1_stake_StakePool_$memory#124, $t13); + + // assert Not(Not(exists[@125](0x1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:321:9+67 + assume {:print "$at(134,13670,13737)"} true; + assert {:msg "assert_failed(134,13670,13737): function does not abort under this condition"} + !!$ResourceExists($1_staking_config_StakingConfig_$memory#125, 1); + + // assert Not(Gt(Add($t17, select staking_config::StakingConfig.recurring_lockup_duration_secs($t14)), 18446744073709551615)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:328:9+68 + assume {:print "$at(134,14177,14245)"} true; + assert {:msg "assert_failed(134,14177,14245): function does not abort under this condition"} + !(($t17 + $recurring_lockup_duration_secs#$1_staking_config_StakingConfig($t14)) > 18446744073709551615); + + // assert Not(Or(Gt($t16, $t18), Eq($t16, $t18))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:329:9+106 + assume {:print "$at(134,14254,14360)"} true; + assert {:msg "assert_failed(134,14254,14360): function does not abort under this condition"} + !(($t16 > $t18) || $IsEqual'u64'($t16, $t18)); + + // assert Not(Not(exists[@126](0x1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:330:9+72 + assume {:print "$at(134,14369,14441)"} true; + assert {:msg "assert_failed(134,14369,14441): function does not abort under this condition"} + !!$ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory#126, 1); + + // assert Not(Not(exists[@124](select vesting::StakingInfo.pool_address(select vesting::VestingContract.staking($t4))))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:240:9+75 + assume {:print "$at(3,9882,9957)"} true; + assert {:msg "assert_failed(3,9882,9957): function does not abort under this condition"} + !!$ResourceExists($1_stake_StakePool_$memory#124, $pool_address#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t4))); + + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:240:9+75 + return; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:805:5+1 + assume {:print "$at(2,37637,37638)"} true; +L2: + + // assert Or(Or(Or(Or(Or(Or(Or(Or(Or(Not(exists[@122]($t1)), Neq
(signer::$address_of[]($t0), select vesting::VestingContract.admin($t4))), Not(exists[@123]($t6))), Not(simple_map::spec_contains_key[]($t10, $t5))), Not(stake::$stake_pool_exists[@124]($t13))), Not(exists[@125](0x1))), Gt(Add($t17, select staking_config::StakingConfig.recurring_lockup_duration_secs($t14)), 18446744073709551615)), Or(Gt($t16, $t18), Eq($t16, $t18))), Not(exists[@126](0x1))), Not(exists[@124](select vesting::StakingInfo.pool_address(select vesting::VestingContract.staking($t4))))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:223:5+879 + assume {:print "$at(3,9084,9963)"} true; + assert {:msg "assert_failed(3,9084,9963): abort not covered by any of the `aborts_if` clauses"} + (((((((((!$ResourceExists($1_vesting_VestingContract_$memory#122, $t1) || !$IsEqual'address'($1_signer_$address_of($t0), $admin#$1_vesting_VestingContract($t4))) || !$ResourceExists($1_staking_contract_Store_$memory#123, $t6)) || !$1_simple_map_spec_contains_key'address_$1_staking_contract_StakingContract'($t10, $t5)) || !$1_stake_$stake_pool_exists($1_stake_StakePool_$memory#124, $t13)) || !$ResourceExists($1_staking_config_StakingConfig_$memory#125, 1)) || (($t17 + $recurring_lockup_duration_secs#$1_staking_config_StakingConfig($t14)) > 18446744073709551615)) || (($t16 > $t18) || $IsEqual'u64'($t16, $t18))) || !$ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory#126, 1)) || !$ResourceExists($1_stake_StakePool_$memory#124, $pool_address#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t4)))); + + // abort($t20) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:223:5+879 + $abort_code := $t20; + $abort_flag := true; + return; + +} + +// fun vesting::stake_pool_address [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:251:5+258 +procedure {:timeLimit 200} $1_vesting_stake_pool_address$verify(_$t0: int) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: $1_vesting_VestingContract; + var $t3: $1_vesting_StakingInfo; + var $t4: int; + var $t0: int; + var $temp_0'address': int; + var $1_vesting_VestingContract_$memory#58: $Memory $1_vesting_VestingContract; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:251:5+1 + assume {:print "$at(2,11140,11141)"} true; + assume $IsValid'address'($t0); + + // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:251:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); + (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; + (var j := $i_4; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); + + // @58 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:251:5+1 + $1_vesting_VestingContract_$memory#58 := $1_vesting_VestingContract_$memory; + + // trace_local[vesting_contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:251:5+1 + assume {:print "$track_local(57,25,0):", $t0} $t0 == $t0; + + // vesting::assert_vesting_contract_exists($t0) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:252:9+56 + assume {:print "$at(2,11249,11305)"} true; + call $1_vesting_assert_vesting_contract_exists($t0); + if ($abort_flag) { + assume {:print "$at(2,11249,11305)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(57,25):", $t1} $t1 == $t1; + goto L2; + } + + // $t2 := get_global($t0) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:253:9+13 + assume {:print "$at(2,11315,11328)"} true; + if (!$ResourceExists($1_vesting_VestingContract_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t2 := $ResourceValue($1_vesting_VestingContract_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(2,11315,11328)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(57,25):", $t1} $t1 == $t1; + goto L2; + } + + // $t3 := get_field.staking($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:253:9+64 + $t3 := $staking#$1_vesting_VestingContract($t2); + + // $t4 := get_field.pool_address($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:253:9+77 + $t4 := $pool_address#$1_vesting_StakingInfo($t3); + + // trace_return[0]($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:253:9+77 + assume {:print "$track_return(57,25,0):", $t4} $t4 == $t4; + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:254:5+1 + assume {:print "$at(2,11397,11398)"} true; +L1: + + // assert Not(Not(exists[@58]($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:8:9+61 + assume {:print "$at(3,205,266)"} true; + assert {:msg "assert_failed(3,205,266): function does not abort under this condition"} + !!$ResourceExists($1_vesting_VestingContract_$memory#58, $t0); + + // return $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:8:9+61 + $ret0 := $t4; + return; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:254:5+1 + assume {:print "$at(2,11397,11398)"} true; +L2: + + // assert Not(exists[@58]($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:7:5+145 + assume {:print "$at(3,127,272)"} true; + assert {:msg "assert_failed(3,127,272): abort not covered by any of the `aborts_if` clauses"} + !$ResourceExists($1_vesting_VestingContract_$memory#58, $t0); + + // abort($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:7:5+145 + $abort_code := $t1; + $abort_flag := true; + return; + +} + +// fun vesting::unlock_rewards [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:539:5+312 +procedure {:inline 1} $1_vesting_unlock_rewards(_$t0: int) returns () +{ + // declare local variables + var $t1: int; + var $t2: $1_vesting_VestingContract; + var $t3: int; + var $t4: int; + var $t5: Table int ($1_staking_contract_StakingContract); + var $t6: $1_staking_contract_StakingContract; + var $t7: int; + var $t8: $1_stake_StakePool; + var $t9: int; + var $t10: int; + var $t11: int; + var $t12: int; + var $t13: int; + var $t14: $1_vesting_VestingContract; + var $t15: $1_vesting_VestingContract; + var $t16: int; + var $t17: int; + var $t18: Table int ($1_staking_contract_StakingContract); + var $t19: $1_staking_contract_StakingContract; + var $t20: int; + var $t21: $1_stake_StakePool; + var $t22: int; + var $t23: int; + var $t24: int; + var $t25: int; + var $t26: int; + var $t27: $1_vesting_VestingContract; + var $t28: int; + var $t29: int; + var $t30: $1_vesting_VestingContract; + var $t0: int; + var $temp_0'address': int; + var $temp_0'u64': int; + $t0 := _$t0; + + // bytecode translation starts here + // assume Identical($t2, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:60:9+73 + assume {:print "$at(3,2125,2198)"} true; + assume ($t2 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); + + // assume Identical($t3, $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:62:9+38 + assume {:print "$at(3,2208,2246)"} true; + assume ($t3 == $t0); + + // assume Identical($t4, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t2))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:63:9+49 + assume {:print "$at(3,2255,2304)"} true; + assume ($t4 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t2))); + + // assume Identical($t5, select staking_contract::Store.staking_contracts(global($t3))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:64:9+82 + assume {:print "$at(3,2313,2395)"} true; + assume ($t5 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t3))); + + // assume Identical($t6, simple_map::spec_get($t5, $t4)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:65:9+73 + assume {:print "$at(3,2404,2477)"} true; + assume ($t6 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($t5, $t4)); + + // assume Identical($t7, select staking_contract::StakingContract.pool_address($t6)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:70:9+49 + assume {:print "$at(3,2627,2676)"} true; + assume ($t7 == $pool_address#$1_staking_contract_StakingContract($t6)); + + // assume Identical($t8, global($t7)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:71:9+63 + assume {:print "$at(3,2685,2748)"} true; + assume ($t8 == $ResourceValue($1_stake_StakePool_$memory, $t7)); + + // assume Identical($t9, coin::$value(select stake::StakePool.active($t8))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:72:9+44 + assume {:print "$at(3,2757,2801)"} true; + assume ($t9 == $1_coin_$value'$1_aptos_coin_AptosCoin'($active#$1_stake_StakePool($t8))); + + // assume Identical($t10, coin::$value(select stake::StakePool.pending_active($t8))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:73:9+60 + assume {:print "$at(3,2810,2870)"} true; + assume ($t10 == $1_coin_$value'$1_aptos_coin_AptosCoin'($pending_active#$1_stake_StakePool($t8))); + + // assume Identical($t11, Add($t9, $t10)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:74:9+49 + assume {:print "$at(3,2879,2928)"} true; + assume ($t11 == ($t9 + $t10)); + + // assume Identical($t12, Sub($t11, select staking_contract::StakingContract.principal($t6))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:75:9+74 + assume {:print "$at(3,2937,3011)"} true; + assume ($t12 == ($t11 - $principal#$1_staking_contract_StakingContract($t6))); + + // assume Identical($t13, Div(Mul($t12, select staking_contract::StakingContract.commission_percentage($t6)), 100)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:76:9+91 + assume {:print "$at(3,3020,3111)"} true; + assume ($t13 == (($t12 * $commission_percentage#$1_staking_contract_StakingContract($t6)) div 100)); + + // assume Identical($t14, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:389:9+65 + assume {:print "$at(3,16378,16443)"} true; + assume ($t14 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); + + // assume And(Ge(select staking_contract::StakingContract.commission_percentage($t6), 0), Le(select staking_contract::StakingContract.commission_percentage($t6), 100)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:57:9+102 + assume {:print "$at(3,1905,2007)"} true; + assume (($commission_percentage#$1_staking_contract_StakingContract($t6) >= 0) && ($commission_percentage#$1_staking_contract_StakingContract($t6) <= 100)); + + // trace_local[contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:539:5+1 + assume {:print "$at(2,25614,25615)"} true; + assume {:print "$track_local(57,28,0):", $t0} $t0 == $t0; + + // assume Identical($t15, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:60:9+73 + assume {:print "$at(3,2125,2198)"} true; + assume ($t15 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); + + // assume Identical($t16, $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:62:9+38 + assume {:print "$at(3,2208,2246)"} true; + assume ($t16 == $t0); + + // assume Identical($t17, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t15))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:63:9+49 + assume {:print "$at(3,2255,2304)"} true; + assume ($t17 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t15))); + + // assume Identical($t18, select staking_contract::Store.staking_contracts(global($t16))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:64:9+82 + assume {:print "$at(3,2313,2395)"} true; + assume ($t18 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t16))); + + // assume Identical($t19, simple_map::spec_get($t18, $t17)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:65:9+73 + assume {:print "$at(3,2404,2477)"} true; + assume ($t19 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($t18, $t17)); + + // assume Identical($t20, select staking_contract::StakingContract.pool_address($t19)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:70:9+49 + assume {:print "$at(3,2627,2676)"} true; + assume ($t20 == $pool_address#$1_staking_contract_StakingContract($t19)); + + // assume Identical($t21, global($t20)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:71:9+63 + assume {:print "$at(3,2685,2748)"} true; + assume ($t21 == $ResourceValue($1_stake_StakePool_$memory, $t20)); + + // assume Identical($t22, coin::$value(select stake::StakePool.active($t21))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:72:9+44 + assume {:print "$at(3,2757,2801)"} true; + assume ($t22 == $1_coin_$value'$1_aptos_coin_AptosCoin'($active#$1_stake_StakePool($t21))); + + // assume Identical($t23, coin::$value(select stake::StakePool.pending_active($t21))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:73:9+60 + assume {:print "$at(3,2810,2870)"} true; + assume ($t23 == $1_coin_$value'$1_aptos_coin_AptosCoin'($pending_active#$1_stake_StakePool($t21))); + + // assume Identical($t24, Add($t22, $t23)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:74:9+49 + assume {:print "$at(3,2879,2928)"} true; + assume ($t24 == ($t22 + $t23)); + + // assume Identical($t25, Sub($t24, select staking_contract::StakingContract.principal($t19))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:75:9+74 + assume {:print "$at(3,2937,3011)"} true; + assume ($t25 == ($t24 - $principal#$1_staking_contract_StakingContract($t19))); + + // assume Identical($t26, Div(Mul($t25, select staking_contract::StakingContract.commission_percentage($t19)), 100)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:76:9+91 + assume {:print "$at(3,3020,3111)"} true; + assume ($t26 == (($t25 * $commission_percentage#$1_staking_contract_StakingContract($t19)) div 100)); + + // assume Identical($t27, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:389:9+65 + assume {:print "$at(3,16378,16443)"} true; + assume ($t27 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); + + // $t28 := vesting::total_accumulated_rewards($t0) on_abort goto L2 with $t29 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:540:35+43 + assume {:print "$at(2,25734,25777)"} true; + call $t28 := $1_vesting_total_accumulated_rewards($t0); + if ($abort_flag) { + assume {:print "$at(2,25734,25777)"} true; + $t29 := $abort_code; + assume {:print "$track_abort(57,28):", $t29} $t29 == $t29; + goto L2; + } + + // trace_local[accumulated_rewards]($t28) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:540:13+19 + assume {:print "$track_local(57,28,1):", $t28} $t28 == $t28; + + // $t30 := get_global($t0) on_abort goto L2 with $t29 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:541:32+13 + assume {:print "$at(2,25810,25823)"} true; + if (!$ResourceExists($1_vesting_VestingContract_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t30 := $ResourceValue($1_vesting_VestingContract_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(2,25810,25823)"} true; + $t29 := $abort_code; + assume {:print "$track_abort(57,28):", $t29} $t29 == $t29; + goto L2; + } + + // vesting::unlock_stake($t30, $t28) on_abort goto L2 with $t29 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:542:9+51 + assume {:print "$at(2,25868,25919)"} true; + call $1_vesting_unlock_stake($t30, $t28); + if ($abort_flag) { + assume {:print "$at(2,25868,25919)"} true; + $t29 := $abort_code; + assume {:print "$track_abort(57,28):", $t29} $t29 == $t29; + goto L2; + } + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:543:5+1 + assume {:print "$at(2,25925,25926)"} true; +L1: + + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:543:5+1 + assume {:print "$at(2,25925,25926)"} true; + return; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:543:5+1 +L2: + + // abort($t29) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:543:5+1 + assume {:print "$at(2,25925,25926)"} true; + $abort_code := $t29; + $abort_flag := true; + return; + +} + +// fun vesting::unlock_stake [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:951:5+259 +procedure {:inline 1} $1_vesting_unlock_stake(_$t0: $1_vesting_VestingContract, _$t1: int) returns () +{ + // declare local variables + var $t2: $signer; + var $t3: $signer; + var $t4: int; + var $t5: $1_vesting_StakingInfo; + var $t6: int; + var $t0: $1_vesting_VestingContract; + var $t1: int; + var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[vesting_contract]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:951:5+1 + assume {:print "$at(2,44426,44427)"} true; + assume {:print "$track_local(57,30,0):", $t0} $t0 == $t0; + + // trace_local[amount]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:951:5+1 + assume {:print "$track_local(57,30,1):", $t1} $t1 == $t1; + + // $t3 := vesting::get_vesting_account_signer_internal($t0) on_abort goto L2 with $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:952:32+53 + assume {:print "$at(2,44525,44578)"} true; + call $t3 := $1_vesting_get_vesting_account_signer_internal($t0); + if ($abort_flag) { + assume {:print "$at(2,44525,44578)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(57,30):", $t4} $t4 == $t4; + goto L2; + } + + // $t5 := get_field.staking($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:953:57+24 + assume {:print "$at(2,44636,44660)"} true; + $t5 := $staking#$1_vesting_VestingContract($t0); + + // $t6 := get_field.operator($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:953:57+33 + $t6 := $operator#$1_vesting_StakingInfo($t5); + + // staking_contract::unlock_stake($t3, $t6, $t1) on_abort goto L2 with $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:953:9+90 + call $1_staking_contract_unlock_stake($t3, $t6, $t1); + if ($abort_flag) { + assume {:print "$at(2,44588,44678)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(57,30):", $t4} $t4 == $t4; + goto L2; + } + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:954:5+1 + assume {:print "$at(2,44684,44685)"} true; +L1: + + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:954:5+1 + assume {:print "$at(2,44684,44685)"} true; + return; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:954:5+1 +L2: + + // abort($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:954:5+1 + assume {:print "$at(2,44684,44685)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun vesting::unlock_stake [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:951:5+259 +procedure {:timeLimit 200} $1_vesting_unlock_stake$verify(_$t0: $1_vesting_VestingContract, _$t1: int) returns () +{ + // declare local variables + var $t2: $signer; + var $t3: $signer; + var $t4: int; + var $t5: $1_vesting_StakingInfo; + var $t6: int; + var $t0: $1_vesting_VestingContract; + var $t1: int; + var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume And(WellFormed($t0), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t0)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t0)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t0)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t0)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t0)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t0)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:951:5+1 + assume {:print "$at(2,44426,44427)"} true; + assume ($IsValid'$1_vesting_VestingContract'($t0) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t0)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t0)), addr)))) && (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t0)))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t0)))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; + (var j := $i_3; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t0)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t0)), j)) ==> $IsEqual'num'(i, j)))))))))); + + // assume WellFormed($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:951:5+1 + assume $IsValid'u64'($t1); + + // assume forall $rsc: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: select option::Option.vec(select coin::CoinInfo.supply($rsc)): And(And(And(And(And(Iff(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($elem)), option::$is_none(select optional_aggregator::OptionalAggregator.integer($elem))), Iff(option::$is_some(select optional_aggregator::OptionalAggregator.integer($elem)), option::$is_none(select optional_aggregator::OptionalAggregator.aggregator($elem)))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.integer($elem)), Le(select optional_aggregator::Integer.value(option::$borrow(select optional_aggregator::OptionalAggregator.integer($elem))), select optional_aggregator::Integer.limit(option::$borrow(select optional_aggregator::OptionalAggregator.integer($elem)))))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($elem)), Le(aggregator::spec_aggregator_get_val(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($elem))), aggregator::spec_get_limit(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($elem)))))), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.aggregator($elem))), 1)), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.integer($elem))), 1)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:951:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'$1_aptos_coin_AptosCoin''($rsc) && ((LenVec($vec#$1_option_Option'$1_optional_aggregator_OptionalAggregator'($supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($rsc))) <= 1) && (var $range_1 := $vec#$1_option_Option'$1_optional_aggregator_OptionalAggregator'($supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($rsc)); (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)) <==> $1_option_$is_none'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)) ==> ($value#$1_optional_aggregator_Integer($1_option_$borrow'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) <= $limit#$1_optional_aggregator_Integer($1_option_$borrow'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)))))) && ($1_option_$is_some'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem))) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)))))) && (LenVec($vec#$1_option_Option'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem))) <= 1)) && (LenVec($vec#$1_option_Option'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) <= 1))))))))))); + + // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:951:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $a_0); + ($IsValid'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''($rsc)))); + + // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:951:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin''($rsc)))); + + // assume exists>(0x0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:951:5+1 + assume $ResourceExists($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, 0); + + // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:951:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin''($rsc)))); + + // assume exists>(0x0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:951:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, 0); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:951:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_chain_status_GenesisEndMarker_$memory, $a_0)}(var $rsc := $ResourceValue($1_chain_status_GenesisEndMarker_$memory, $a_0); + ($IsValid'$1_chain_status_GenesisEndMarker'($rsc)))); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:951:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_timestamp_CurrentTimeMicroseconds_$memory, $a_0)}(var $rsc := $ResourceValue($1_timestamp_CurrentTimeMicroseconds_$memory, $a_0); + ($IsValid'$1_timestamp_CurrentTimeMicroseconds'($rsc)))); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:951:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_stake_StakePool_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_StakePool_$memory, $a_0); + ($IsValid'$1_stake_StakePool'($rsc)))); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:951:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorConfig_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorConfig_$memory, $a_0); + ($IsValid'$1_stake_ValidatorConfig'($rsc)))); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:951:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorPerformance_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorPerformance_$memory, $a_0); + ($IsValid'$1_stake_ValidatorPerformance'($rsc)))); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:951:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorSet_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorSet_$memory, $a_0); + ($IsValid'$1_stake_ValidatorSet'($rsc)))); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:951:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_reconfiguration_Configuration_$memory, $a_0)}(var $rsc := $ResourceValue($1_reconfiguration_Configuration_$memory, $a_0); + ($IsValid'$1_reconfiguration_Configuration'($rsc)))); + + // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), forall $key: select staking_contract::Store.staking_contracts($rsc): And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), i), Index(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:951:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_staking_contract_Store_$memory, $a_0)}(var $rsc := $ResourceValue($1_staking_contract_Store_$memory, $a_0); + (($IsValid'$1_staking_contract_Store'($rsc) && (var $range_1 := $staking_contracts#$1_staking_contract_Store($rsc); (forall $key: int :: ContainsTable($range_1, $EncodeKey'address'($key)) ==> (((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), addr)))) && (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))))); (var $range_3 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))))); (forall $i_4: int, $i_5: int :: $InRange($range_2, $i_4) ==> $InRange($range_3, $i_5) ==> (var i := $i_4; + (var j := $i_5; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), i), ReadVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), j)) ==> $IsEqual'num'(i, j)))))))))))))))); + + // assume Implies(chain_status::$is_operating(), exists(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:951:5+259 + // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.spec.move:4:9+93 + assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory, 1)); + + // assume Implies(exists(0x1), stake::validator_set_is_valid()) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:951:5+259 + // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:8:9+92 + assume ($ResourceExists($1_stake_ValidatorSet_$memory, 1) ==> $1_stake_validator_set_is_valid($1_stake_StakePool_$memory, $1_stake_ValidatorConfig_$memory, $1_stake_ValidatorPerformance_$memory, $1_stake_ValidatorSet_$memory)); + + // assume Implies(chain_status::$is_operating(), exists(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:951:5+259 + // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:12:9+96 + assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_stake_ValidatorSet_$memory, 1)); + + // assume Implies(chain_status::$is_operating(), Ge(timestamp::spec_now_microseconds(), reconfiguration::$last_reconfiguration_time())) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:951:5+259 + // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/reconfiguration.spec.move:8:9+137 + assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> ($1_timestamp_spec_now_microseconds($1_timestamp_CurrentTimeMicroseconds_$memory) >= $1_reconfiguration_$last_reconfiguration_time($1_reconfiguration_Configuration_$memory))); + + // trace_local[vesting_contract]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:951:5+1 + assume {:print "$track_local(57,30,0):", $t0} $t0 == $t0; + + // trace_local[amount]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:951:5+1 + assume {:print "$track_local(57,30,1):", $t1} $t1 == $t1; + + // $t3 := vesting::get_vesting_account_signer_internal($t0) on_abort goto L2 with $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:952:32+53 + assume {:print "$at(2,44525,44578)"} true; + call $t3 := $1_vesting_get_vesting_account_signer_internal($t0); + if ($abort_flag) { + assume {:print "$at(2,44525,44578)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(57,30):", $t4} $t4 == $t4; + goto L2; + } + + // $t5 := get_field.staking($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:953:57+24 + assume {:print "$at(2,44636,44660)"} true; + $t5 := $staking#$1_vesting_VestingContract($t0); + + // $t6 := get_field.operator($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:953:57+33 + $t6 := $operator#$1_vesting_StakingInfo($t5); + + // staking_contract::unlock_stake($t3, $t6, $t1) on_abort goto L2 with $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:953:9+90 + call $1_staking_contract_unlock_stake($t3, $t6, $t1); + if ($abort_flag) { + assume {:print "$at(2,44588,44678)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(57,30):", $t4} $t4 == $t4; + goto L2; + } + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:954:5+1 + assume {:print "$at(2,44684,44685)"} true; +L1: + + // assert Not(false) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:954:5+1 + assume {:print "$at(2,44684,44685)"} true; + assert {:msg "assert_failed(2,44684,44685): function does not abort under this condition"} + !false; + + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:954:5+1 + return; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:954:5+1 +L2: + + // abort($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:954:5+1 + assume {:print "$at(2,44684,44685)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun vesting::update_voter [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:763:5+956 +procedure {:timeLimit 200} $1_vesting_update_voter$verify(_$t0: $signer, _$t1: int, _$t2: int) returns () +{ + // declare local variables + var $t3: $signer; + var $t4: $signer; + var $t5: int; + var $t6: $Mutation ($1_vesting_VestingContract); + var $t7: $1_vesting_VestingContract; + var $t8: int; + var $t9: int; + var $t10: $1_vesting_VestingContract; + var $t11: $1_staking_contract_Store; + var $t12: $1_staking_contract_StakingContract; + var $t13: int; + var $t14: Table int ($1_staking_contract_StakingContract); + var $t15: $Mutation ($1_vesting_VestingContract); + var $t16: int; + var $t17: $1_vesting_VestingContract; + var $t18: $1_vesting_VestingContract; + var $t19: $signer; + var $t20: $1_vesting_StakingInfo; + var $t21: int; + var $t22: $1_vesting_StakingInfo; + var $t23: int; + var $t24: int; + var $t25: $1_staking_contract_Store; + var $t26: $1_staking_contract_StakingContract; + var $t27: int; + var $t28: Table int ($1_staking_contract_StakingContract); + var $t29: $Mutation ($1_vesting_StakingInfo); + var $t30: $Mutation (int); + var $t31: $Mutation ($1_event_EventHandle'$1_vesting_UpdateVoterEvent'); + var $t32: int; + var $t33: $1_vesting_StakingInfo; + var $t34: int; + var $t35: $1_vesting_UpdateVoterEvent; + var $t0: $signer; + var $t1: int; + var $t2: int; + var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $1_vesting_VestingContract_$memory#113: $Memory $1_vesting_VestingContract; + var $1_stake_StakePool_$memory#114: $Memory $1_stake_StakePool; + var $1_staking_contract_Store_$memory#115: $Memory $1_staking_contract_Store; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:763:5+1 + assume {:print "$at(2,35814,35815)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($addr#$signer($t0)); + + // assume WellFormed($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:763:5+1 + assume $IsValid'address'($t1); + + // assume WellFormed($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:763:5+1 + assume $IsValid'address'($t2); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:763:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_stake_StakePool_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_StakePool_$memory, $a_0); + ($IsValid'$1_stake_StakePool'($rsc)))); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:763:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorConfig_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorConfig_$memory, $a_0); + ($IsValid'$1_stake_ValidatorConfig'($rsc)))); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:763:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorPerformance_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorPerformance_$memory, $a_0); + ($IsValid'$1_stake_ValidatorPerformance'($rsc)))); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:763:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorSet_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorSet_$memory, $a_0); + ($IsValid'$1_stake_ValidatorSet'($rsc)))); + + // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), forall $key: select staking_contract::Store.staking_contracts($rsc): And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), i), Index(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:763:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_staking_contract_Store_$memory, $a_0)}(var $rsc := $ResourceValue($1_staking_contract_Store_$memory, $a_0); + (($IsValid'$1_staking_contract_Store'($rsc) && (var $range_1 := $staking_contracts#$1_staking_contract_Store($rsc); (forall $key: int :: ContainsTable($range_1, $EncodeKey'address'($key)) ==> (((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), addr)))) && (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))))); (var $range_3 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))))); (forall $i_4: int, $i_5: int :: $InRange($range_2, $i_4) ==> $InRange($range_3, $i_5) ==> (var i := $i_4; + (var j := $i_5; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), i), ReadVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), j)) ==> $IsEqual'num'(i, j)))))))))))))))); + + // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:763:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); + (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; + (var j := $i_4; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); + + // assume Implies(exists(0x1), stake::validator_set_is_valid()) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:763:5+956 + // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:8:9+92 + assume ($ResourceExists($1_stake_ValidatorSet_$memory, 1) ==> $1_stake_validator_set_is_valid($1_stake_StakePool_$memory, $1_stake_ValidatorConfig_$memory, $1_stake_ValidatorPerformance_$memory, $1_stake_ValidatorSet_$memory)); + + // assume Identical($t7, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:216:9+65 + assume {:print "$at(3,8837,8902)"} true; + assume ($t7 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); + + // assume Identical($t8, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t7))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:217:9+49 + assume {:print "$at(3,8911,8960)"} true; + assume ($t8 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t7))); + + // assume Identical($t9, select account::SignerCapability.account(select vesting::VestingContract.signer_cap($t7))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:218:9+49 + assume {:print "$at(3,8969,9018)"} true; + assume ($t9 == $account#$1_account_SignerCapability($signer_cap#$1_vesting_VestingContract($t7))); + + // assume Identical($t10, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:382:9+65 + assume {:print "$at(3,16064,16129)"} true; + assume ($t10 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); + + // assume Identical($t11, global($t9)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:276:9+34 + assume {:print "$at(134,11729,11763)"} true; + assume ($t11 == $ResourceValue($1_staking_contract_Store_$memory, $t9)); + + // assume Identical($t12, simple_map::spec_get(select staking_contract::Store.staking_contracts($t11), $t8)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:277:9+79 + assume {:print "$at(134,11772,11851)"} true; + assume ($t12 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($t11), $t8)); + + // assume Identical($t13, select staking_contract::StakingContract.pool_address($t12)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:278:9+49 + assume {:print "$at(134,11860,11909)"} true; + assume ($t13 == $pool_address#$1_staking_contract_StakingContract($t12)); + + // assume Identical($t14, select staking_contract::Store.staking_contracts(global($t9))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 + assume {:print "$at(134,11481,11545)"} true; + assume ($t14 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t9))); + + // @114 := save_mem(stake::StakePool) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:763:5+1 + assume {:print "$at(2,35814,35815)"} true; + $1_stake_StakePool_$memory#114 := $1_stake_StakePool_$memory; + + // @115 := save_mem(staking_contract::Store) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:763:5+1 + $1_staking_contract_Store_$memory#115 := $1_staking_contract_Store_$memory; + + // @113 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:763:5+1 + $1_vesting_VestingContract_$memory#113 := $1_vesting_VestingContract_$memory; + + // trace_local[admin]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:763:5+1 + assume {:print "$track_local(57,33,0):", $t0} $t0 == $t0; + + // trace_local[contract_address]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:763:5+1 + assume {:print "$track_local(57,33,1):", $t1} $t1 == $t1; + + // trace_local[new_voter]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:763:5+1 + assume {:print "$track_local(57,33,2):", $t2} $t2 == $t2; + + // $t15 := borrow_global($t1) on_abort goto L2 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:768:32+17 + assume {:print "$at(2,35996,36013)"} true; + if (!$ResourceExists($1_vesting_VestingContract_$memory, $t1)) { + call $ExecFailureAbort(); + } else { + $t15 := $Mutation($Global($t1), EmptyVec(), $ResourceValue($1_vesting_VestingContract_$memory, $t1)); + } + if ($abort_flag) { + assume {:print "$at(2,35996,36013)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(57,33):", $t16} $t16 == $t16; + goto L2; + } + + // trace_local[vesting_contract]($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:768:13+16 + $temp_0'$1_vesting_VestingContract' := $Dereference($t15); + assume {:print "$track_local(57,33,6):", $temp_0'$1_vesting_VestingContract'} $temp_0'$1_vesting_VestingContract' == $temp_0'$1_vesting_VestingContract'; + + // $t17 := read_ref($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:769:21+25 + assume {:print "$at(2,36070,36095)"} true; + $t17 := $Dereference($t15); + + // vesting::verify_admin($t0, $t17) on_abort goto L2 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:769:9+37 + call $1_vesting_verify_admin($t0, $t17); + if ($abort_flag) { + assume {:print "$at(2,36058,36095)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(57,33):", $t16} $t16 == $t16; + goto L2; + } + + // $t18 := read_ref($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:770:68+16 + assume {:print "$at(2,36164,36180)"} true; + $t18 := $Dereference($t15); + + // $t19 := vesting::get_vesting_account_signer_internal($t18) on_abort goto L2 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:770:32+53 + call $t19 := $1_vesting_get_vesting_account_signer_internal($t18); + if ($abort_flag) { + assume {:print "$at(2,36128,36181)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(57,33):", $t16} $t16 == $t16; + goto L2; + } + + // trace_local[contract_signer]($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:770:13+15 + assume {:print "$track_local(57,33,4):", $t19} $t19 == $t19; + + // $t20 := get_field.staking($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:771:25+24 + assume {:print "$at(2,36207,36231)"} true; + $t20 := $staking#$1_vesting_VestingContract($Dereference($t15)); + + // $t21 := get_field.voter($t20) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:771:25+30 + $t21 := $voter#$1_vesting_StakingInfo($t20); + + // trace_local[old_voter]($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:771:13+9 + assume {:print "$track_local(57,33,5):", $t21} $t21 == $t21; + + // $t22 := get_field.staking($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:772:57+24 + assume {:print "$at(2,36295,36319)"} true; + $t22 := $staking#$1_vesting_VestingContract($Dereference($t15)); + + // $t23 := get_field.operator($t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:772:57+33 + $t23 := $operator#$1_vesting_StakingInfo($t22); + + // assume Identical($t24, signer::$address_of($t19)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:99:9+48 + assume {:print "$at(134,4471,4519)"} true; + assume ($t24 == $1_signer_$address_of($t19)); + + // assume Identical($t25, global($t24)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:276:9+34 + assume {:print "$at(134,11729,11763)"} true; + assume ($t25 == $ResourceValue($1_staking_contract_Store_$memory, $t24)); + + // assume Identical($t26, simple_map::spec_get(select staking_contract::Store.staking_contracts($t25), $t23)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:277:9+79 + assume {:print "$at(134,11772,11851)"} true; + assume ($t26 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($t25), $t23)); + + // assume Identical($t27, select staking_contract::StakingContract.pool_address($t26)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:278:9+49 + assume {:print "$at(134,11860,11909)"} true; + assume ($t27 == $pool_address#$1_staking_contract_StakingContract($t26)); + + // assume Identical($t28, select staking_contract::Store.staking_contracts(global($t24))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 + assume {:print "$at(134,11481,11545)"} true; + assume ($t28 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t24))); + + // staking_contract::update_voter($t19, $t23, $t2) on_abort goto L2 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:772:9+93 + assume {:print "$at(2,36247,36340)"} true; + call $1_staking_contract_update_voter($t19, $t23, $t2); + if ($abort_flag) { + assume {:print "$at(2,36247,36340)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(57,33):", $t16} $t16 == $t16; + goto L2; + } + + // $t29 := borrow_field.staking($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:773:9+24 + assume {:print "$at(2,36350,36374)"} true; + $t29 := $ChildMutation($t15, 6, $staking#$1_vesting_VestingContract($Dereference($t15))); + + // $t30 := borrow_field.voter($t29) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:773:9+30 + $t30 := $ChildMutation($t29, 2, $voter#$1_vesting_StakingInfo($Dereference($t29))); + + // write_ref($t30, $t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:773:9+42 + $t30 := $UpdateMutation($t30, $t2); + + // write_back[Reference($t29).voter (address)]($t30) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:773:9+42 + $t29 := $UpdateMutation($t29, $Update'$1_vesting_StakingInfo'_voter($Dereference($t29), $Dereference($t30))); + + // write_back[Reference($t15).staking (vesting::StakingInfo)]($t29) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:773:9+42 + $t15 := $UpdateMutation($t15, $Update'$1_vesting_VestingContract'_staking($Dereference($t15), $Dereference($t29))); + + // $t31 := borrow_field.update_voter_events($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:776:13+41 + assume {:print "$at(2,36427,36468)"} true; + $t31 := $ChildMutation($t15, 10, $update_voter_events#$1_vesting_VestingContract($Dereference($t15))); + + // $t32 := get_field.admin($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:778:24+22 + assume {:print "$at(2,36524,36546)"} true; + $t32 := $admin#$1_vesting_VestingContract($Dereference($t15)); + + // $t33 := get_field.staking($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:780:39+24 + assume {:print "$at(2,36646,36670)"} true; + $t33 := $staking#$1_vesting_VestingContract($Dereference($t15)); + + // $t34 := get_field.pool_address($t33) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:780:39+37 + $t34 := $pool_address#$1_vesting_StakingInfo($t33); + + // $t35 := pack vesting::UpdateVoterEvent($t32, $t1, $t34, $t21, $t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:777:13+270 + assume {:print "$at(2,36482,36752)"} true; + $t35 := $1_vesting_UpdateVoterEvent($t32, $t1, $t34, $t21, $t2); + + // opaque begin: event::emit_event($t31, $t35) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:775:9+360 + assume {:print "$at(2,36403,36763)"} true; + + // opaque end: event::emit_event($t31, $t35) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:775:9+360 + + // write_back[Reference($t15).update_voter_events (event::EventHandle)]($t31) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:775:9+360 + $t15 := $UpdateMutation($t15, $Update'$1_vesting_VestingContract'_update_voter_events($Dereference($t15), $Dereference($t31))); + + // assert forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t15)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t15)), addr)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 + // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 + assume {:print "$at(59,538,673)"} true; + assert {:msg "assert_failed(59,538,673): data invariant does not hold"} + (forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t15))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t15))), addr)))); + + // assert forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t15)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t15)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t15)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t15)), j)), Eq(i, j)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 + // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 + assume {:print "$at(59,738,867)"} true; + assert {:msg "assert_failed(59,738,867): data invariant does not hold"} + (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t15))))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t15))))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; + (var j := $i_3; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t15))), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t15))), j)) ==> $IsEqual'num'(i, j)))))))); + + // write_back[vesting::VestingContract@]($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:775:9+360 + assume {:print "$at(2,36403,36763)"} true; + $1_vesting_VestingContract_$memory := $ResourceUpdate($1_vesting_VestingContract_$memory, $GlobalLocationAddress($t15), + $Dereference($t15)); + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:785:5+1 + assume {:print "$at(2,36769,36770)"} true; +L1: + + // assert Not(Not(exists[@113]($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:381:9+53 + assume {:print "$at(3,16002,16055)"} true; + assert {:msg "assert_failed(3,16002,16055): function does not abort under this condition"} + !!$ResourceExists($1_vesting_VestingContract_$memory#113, $t1); + + // assert Not(Neq
(signer::$address_of[]($t0), select vesting::VestingContract.admin($t10))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:383:9+62 + assume {:print "$at(3,16138,16200)"} true; + assert {:msg "assert_failed(3,16138,16200): function does not abort under this condition"} + !!$IsEqual'address'($1_signer_$address_of($t0), $admin#$1_vesting_VestingContract($t10)); + + // assert Not(Not(exists[@114]($t13))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:279:9+50 + assume {:print "$at(134,11918,11968)"} true; + assert {:msg "assert_failed(134,11918,11968): function does not abort under this condition"} + !!$ResourceExists($1_stake_StakePool_$memory#114, $t13); + + // assert Not(Not(exists[@114](select stake::OwnerCapability.pool_address(select staking_contract::StakingContract.owner_cap($t12))))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:280:9+77 + assume {:print "$at(134,11977,12054)"} true; + assert {:msg "assert_failed(134,11977,12054): function does not abort under this condition"} + !!$ResourceExists($1_stake_StakePool_$memory#114, $pool_address#$1_stake_OwnerCapability($owner_cap#$1_staking_contract_StakingContract($t12))); + + // assert Not(Not(exists[@115]($t9))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:267:9+33 + assume {:print "$at(134,11439,11472)"} true; + assert {:msg "assert_failed(134,11439,11472): function does not abort under this condition"} + !!$ResourceExists($1_staking_contract_Store_$memory#115, $t9); + + // assert Not(Not(simple_map::spec_contains_key[]($t14, $t8))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:269:9+70 + assume {:print "$at(134,11554,11624)"} true; + assert {:msg "assert_failed(134,11554,11624): function does not abort under this condition"} + !!$1_simple_map_spec_contains_key'address_$1_staking_contract_StakingContract'($t14, $t8); + + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:269:9+70 + return; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:785:5+1 + assume {:print "$at(2,36769,36770)"} true; +L2: + + // assert Or(Or(Or(Or(Or(Not(exists[@113]($t1)), Neq
(signer::$address_of[]($t0), select vesting::VestingContract.admin($t10))), Not(exists[@114]($t13))), Not(exists[@114](select stake::OwnerCapability.pool_address(select staking_contract::StakingContract.owner_cap($t12))))), Not(exists[@115]($t9))), Not(simple_map::spec_contains_key[]($t14, $t8))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:209:5+401 + assume {:print "$at(3,8677,9078)"} true; + assert {:msg "assert_failed(3,8677,9078): abort not covered by any of the `aborts_if` clauses"} + (((((!$ResourceExists($1_vesting_VestingContract_$memory#113, $t1) || !$IsEqual'address'($1_signer_$address_of($t0), $admin#$1_vesting_VestingContract($t10))) || !$ResourceExists($1_stake_StakePool_$memory#114, $t13)) || !$ResourceExists($1_stake_StakePool_$memory#114, $pool_address#$1_stake_OwnerCapability($owner_cap#$1_staking_contract_StakingContract($t12)))) || !$ResourceExists($1_staking_contract_Store_$memory#115, $t9)) || !$1_simple_map_spec_contains_key'address_$1_staking_contract_StakingContract'($t14, $t8)); + + // abort($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:209:5+401 + $abort_code := $t16; + $abort_flag := true; + return; + +} + +// fun vesting::admin_withdraw [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:703:5+1003 +procedure {:timeLimit 200} $1_vesting_admin_withdraw$verify(_$t0: $signer, _$t1: int) returns () +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $t5: $Mutation ($1_vesting_VestingContract); + var $t6: $1_vesting_VestingContract; + var $t7: $1_vesting_VestingContract; + var $t8: $1_vesting_VestingContract; + var $t9: int; + var $t10: int; + var $t11: int; + var $t12: bool; + var $t13: int; + var $t14: int; + var $t15: $Mutation ($1_vesting_VestingContract); + var $t16: $1_vesting_VestingContract; + var $t17: $1_vesting_VestingContract; + var $t18: $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $t19: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t20: int; + var $t21: int; + var $t22: bool; + var $t23: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t24: int; + var $t25: $1_account_Account; + var $t26: $Mutation ($1_event_EventHandle'$1_vesting_AdminWithdrawEvent'); + var $t27: int; + var $t28: $1_vesting_AdminWithdrawEvent; + var $t0: $signer; + var $t1: int; + var $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin'': $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $temp_0'u64': int; + var $1_vesting_VestingContract_$memory#134: $Memory $1_vesting_VestingContract; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:703:5+1 + assume {:print "$at(2,33288,33289)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($addr#$signer($t0)); + + // assume WellFormed($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:703:5+1 + assume $IsValid'address'($t1); + + // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.rotation_capability_offer($rsc)))), 1), Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.signer_capability_offer($rsc)))), 1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:703:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_account_Account_$memory, $a_0)}(var $rsc := $ResourceValue($1_account_Account_$memory, $a_0); + (($IsValid'$1_account_Account'($rsc) && ((LenVec($vec#$1_option_Option'address'($for#$1_account_CapabilityOffer'$1_account_RotationCapability'($rotation_capability_offer#$1_account_Account($rsc)))) <= 1) && (LenVec($vec#$1_option_Option'address'($for#$1_account_CapabilityOffer'$1_account_SignerCapability'($signer_capability_offer#$1_account_Account($rsc)))) <= 1)))))); + + // assume forall $rsc: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: select option::Option.vec(select coin::CoinInfo.supply($rsc)): And(And(And(And(And(Iff(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($elem)), option::$is_none(select optional_aggregator::OptionalAggregator.integer($elem))), Iff(option::$is_some(select optional_aggregator::OptionalAggregator.integer($elem)), option::$is_none(select optional_aggregator::OptionalAggregator.aggregator($elem)))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.integer($elem)), Le(select optional_aggregator::Integer.value(option::$borrow(select optional_aggregator::OptionalAggregator.integer($elem))), select optional_aggregator::Integer.limit(option::$borrow(select optional_aggregator::OptionalAggregator.integer($elem)))))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($elem)), Le(aggregator::spec_aggregator_get_val(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($elem))), aggregator::spec_get_limit(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($elem)))))), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.aggregator($elem))), 1)), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.integer($elem))), 1)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:703:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'$1_aptos_coin_AptosCoin''($rsc) && ((LenVec($vec#$1_option_Option'$1_optional_aggregator_OptionalAggregator'($supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($rsc))) <= 1) && (var $range_1 := $vec#$1_option_Option'$1_optional_aggregator_OptionalAggregator'($supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($rsc)); (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)) <==> $1_option_$is_none'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)) ==> ($value#$1_optional_aggregator_Integer($1_option_$borrow'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) <= $limit#$1_optional_aggregator_Integer($1_option_$borrow'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)))))) && ($1_option_$is_some'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem))) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)))))) && (LenVec($vec#$1_option_Option'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem))) <= 1)) && (LenVec($vec#$1_option_Option'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) <= 1))))))))))); + + // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:703:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $a_0); + ($IsValid'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''($rsc)))); + + // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:703:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin''($rsc)))); + + // assume exists>(0x0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:703:5+1 + assume $ResourceExists($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, 0); + + // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:703:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin''($rsc)))); + + // assume exists>(0x0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:703:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, 0); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:703:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_aptos_account_DirectTransferConfig_$memory, $a_0)}(var $rsc := $ResourceValue($1_aptos_account_DirectTransferConfig_$memory, $a_0); + ($IsValid'$1_aptos_account_DirectTransferConfig'($rsc)))); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:703:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_chain_status_GenesisEndMarker_$memory, $a_0)}(var $rsc := $ResourceValue($1_chain_status_GenesisEndMarker_$memory, $a_0); + ($IsValid'$1_chain_status_GenesisEndMarker'($rsc)))); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:703:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_timestamp_CurrentTimeMicroseconds_$memory, $a_0)}(var $rsc := $ResourceValue($1_timestamp_CurrentTimeMicroseconds_$memory, $a_0); + ($IsValid'$1_timestamp_CurrentTimeMicroseconds'($rsc)))); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:703:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_stake_StakePool_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_StakePool_$memory, $a_0); + ($IsValid'$1_stake_StakePool'($rsc)))); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:703:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorConfig_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorConfig_$memory, $a_0); + ($IsValid'$1_stake_ValidatorConfig'($rsc)))); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:703:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorPerformance_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorPerformance_$memory, $a_0); + ($IsValid'$1_stake_ValidatorPerformance'($rsc)))); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:703:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorSet_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorSet_$memory, $a_0); + ($IsValid'$1_stake_ValidatorSet'($rsc)))); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:703:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_reconfiguration_Configuration_$memory, $a_0)}(var $rsc := $ResourceValue($1_reconfiguration_Configuration_$memory, $a_0); + ($IsValid'$1_reconfiguration_Configuration'($rsc)))); + + // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), forall $key: select staking_contract::Store.staking_contracts($rsc): And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), i), Index(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:703:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_staking_contract_Store_$memory, $a_0)}(var $rsc := $ResourceValue($1_staking_contract_Store_$memory, $a_0); + (($IsValid'$1_staking_contract_Store'($rsc) && (var $range_1 := $staking_contracts#$1_staking_contract_Store($rsc); (forall $key: int :: ContainsTable($range_1, $EncodeKey'address'($key)) ==> (((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), addr)))) && (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))))); (var $range_3 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))))); (forall $i_4: int, $i_5: int :: $InRange($range_2, $i_4) ==> $InRange($range_3, $i_5) ==> (var i := $i_4; + (var j := $i_5; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), i), ReadVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), j)) ==> $IsEqual'num'(i, j)))))))))))))))); + + // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:703:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); + (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; + (var j := $i_4; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); + + // assume Implies(chain_status::$is_operating(), exists(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:703:5+1003 + // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.spec.move:4:9+93 + assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory, 1)); + + // assume Implies(exists(0x1), stake::validator_set_is_valid()) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:703:5+1003 + // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:8:9+92 + assume ($ResourceExists($1_stake_ValidatorSet_$memory, 1) ==> $1_stake_validator_set_is_valid($1_stake_StakePool_$memory, $1_stake_ValidatorConfig_$memory, $1_stake_ValidatorPerformance_$memory, $1_stake_ValidatorSet_$memory)); + + // assume Implies(chain_status::$is_operating(), exists(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:703:5+1003 + // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:12:9+96 + assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_stake_ValidatorSet_$memory, 1)); + + // assume Implies(chain_status::$is_operating(), Ge(timestamp::spec_now_microseconds(), reconfiguration::$last_reconfiguration_time())) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:703:5+1003 + // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/reconfiguration.spec.move:8:9+137 + assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> ($1_timestamp_spec_now_microseconds($1_timestamp_CurrentTimeMicroseconds_$memory) >= $1_reconfiguration_$last_reconfiguration_time($1_reconfiguration_Configuration_$memory))); + + // assume Identical($t6, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:186:9+65 + assume {:print "$at(3,8025,8090)"} true; + assume ($t6 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); + + // assume Identical($t7, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:382:9+65 + assume {:print "$at(3,16064,16129)"} true; + assume ($t7 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); + + // @134 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:703:5+1 + assume {:print "$at(2,33288,33289)"} true; + $1_vesting_VestingContract_$memory#134 := $1_vesting_VestingContract_$memory; + + // trace_local[admin]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:703:5+1 + assume {:print "$track_local(57,1,0):", $t0} $t0 == $t0; + + // trace_local[contract_address]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:703:5+1 + assume {:print "$track_local(57,1,1):", $t1} $t1 == $t1; + + // $t8 := get_global($t1) on_abort goto L6 with $t9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:704:32+13 + assume {:print "$at(2,33421,33434)"} true; + if (!$ResourceExists($1_vesting_VestingContract_$memory, $t1)) { + call $ExecFailureAbort(); + } else { + $t8 := $ResourceValue($1_vesting_VestingContract_$memory, $t1); + } + if ($abort_flag) { + assume {:print "$at(2,33421,33434)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(57,1):", $t9} $t9 == $t9; + goto L6; + } + + // $t10 := get_field.state($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:705:17+22 + assume {:print "$at(2,33487,33509)"} true; + $t10 := $state#$1_vesting_VestingContract($t8); + + // $t11 := 2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:705:43+23 + $t11 := 2; + assume $IsValid'u64'($t11); + + // $t12 := ==($t10, $t11) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:705:40+2 + $t12 := $IsEqual'u64'($t10, $t11); + + // if ($t12) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:705:9+112 + if ($t12) { goto L1; } else { goto L0; } + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:705:9+112 +L1: + + // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:705:9+112 + assume {:print "$at(2,33479,33591)"} true; + goto L2; + + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:705:9+112 +L0: + + // $t13 := 9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:705:89+30 + assume {:print "$at(2,33559,33589)"} true; + $t13 := 9; + assume $IsValid'u64'($t13); + + // $t14 := error::invalid_state($t13) on_abort goto L6 with $t9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:705:68+52 + call $t14 := $1_error_invalid_state($t13); + if ($abort_flag) { + assume {:print "$at(2,33538,33590)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(57,1):", $t9} $t9 == $t9; + goto L6; + } + + // trace_abort($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:705:9+112 + assume {:print "$at(2,33479,33591)"} true; + assume {:print "$track_abort(57,1):", $t14} $t14 == $t14; + + // $t9 := move($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:705:9+112 + $t9 := $t14; + + // goto L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:705:9+112 + goto L6; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:707:67+16 + assume {:print "$at(2,33660,33676)"} true; +L2: + + // $t15 := borrow_global($t1) on_abort goto L6 with $t9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:707:32+17 + assume {:print "$at(2,33625,33642)"} true; + if (!$ResourceExists($1_vesting_VestingContract_$memory, $t1)) { + call $ExecFailureAbort(); + } else { + $t15 := $Mutation($Global($t1), EmptyVec(), $ResourceValue($1_vesting_VestingContract_$memory, $t1)); + } + if ($abort_flag) { + assume {:print "$at(2,33625,33642)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(57,1):", $t9} $t9 == $t9; + goto L6; + } + + // trace_local[vesting_contract#1]($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:707:13+16 + $temp_0'$1_vesting_VestingContract' := $Dereference($t15); + assume {:print "$track_local(57,1,5):", $temp_0'$1_vesting_VestingContract'} $temp_0'$1_vesting_VestingContract' == $temp_0'$1_vesting_VestingContract'; + + // $t16 := read_ref($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:708:21+25 + assume {:print "$at(2,33699,33724)"} true; + $t16 := $Dereference($t15); + + // vesting::verify_admin($t0, $t16) on_abort goto L6 with $t9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:708:9+37 + call $1_vesting_verify_admin($t0, $t16); + if ($abort_flag) { + assume {:print "$at(2,33687,33724)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(57,1):", $t9} $t9 == $t9; + goto L6; + } + + // $t17 := read_ref($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:709:35+36 + assume {:print "$at(2,33760,33796)"} true; + $t17 := $Dereference($t15); + + // $t18 := vesting::withdraw_stake($t17, $t1) on_abort goto L6 with $t9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:709:21+50 + call $t18 := $1_vesting_withdraw_stake($t17, $t1); + if ($abort_flag) { + assume {:print "$at(2,33746,33796)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(57,1):", $t9} $t9 == $t9; + goto L6; + } + + // trace_local[coins]($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:709:13+5 + assume {:print "$track_local(57,1,4):", $t18} $t18 == $t18; + + // assume Identical($t19, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + assume {:print "$at(95,1664,1763)"} true; + assume ($t19 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + + // $t20 := coin::value($t18) on_abort goto L6 with $t9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:710:22+19 + assume {:print "$at(2,33819,33838)"} true; + call $t20 := $1_coin_value'$1_aptos_coin_AptosCoin'($t18); + if ($abort_flag) { + assume {:print "$at(2,33819,33838)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(57,1):", $t9} $t9 == $t9; + goto L6; + } + + // trace_local[amount]($t20) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:710:13+6 + assume {:print "$track_local(57,1,3):", $t20} $t20 == $t20; + + // $t21 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:711:23+1 + assume {:print "$at(2,33862,33863)"} true; + $t21 := 0; + assume $IsValid'u64'($t21); + + // $t22 := ==($t20, $t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:711:20+2 + $t22 := $IsEqual'u64'($t20, $t21); + + // if ($t22) goto L4 else goto L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:711:9+86 + if ($t22) { goto L4; } else { goto L3; } + + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:712:13+25 + assume {:print "$at(2,33879,33904)"} true; +L4: + + // assert forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t15)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t15)), addr)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 + // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 + assume {:print "$at(59,538,673)"} true; + assert {:msg "assert_failed(59,538,673): data invariant does not hold"} + (forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t15))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t15))), addr)))); + + // assert forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t15)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t15)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t15)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t15)), j)), Eq(i, j)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 + // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 + assume {:print "$at(59,738,867)"} true; + assert {:msg "assert_failed(59,738,867): data invariant does not hold"} + (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t15))))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t15))))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; + (var j := $i_3; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t15))), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t15))), j)) ==> $IsEqual'num'(i, j)))))))); + + // destroy($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:712:13+25 + assume {:print "$at(2,33879,33904)"} true; + + // assume Identical($t23, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + assume {:print "$at(95,1664,1763)"} true; + assume ($t23 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + + // coin::destroy_zero($t18) on_abort goto L6 with $t9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:712:13+25 + assume {:print "$at(2,33879,33904)"} true; + call $1_coin_destroy_zero'$1_aptos_coin_AptosCoin'($t18); + if ($abort_flag) { + assume {:print "$at(2,33879,33904)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(57,1):", $t9} $t9 == $t9; + goto L6; + } + + // goto L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:713:13+6 + assume {:print "$at(2,33918,33924)"} true; + goto L5; + + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:715:38+16 + assume {:print "$at(2,33973,33989)"} true; +L3: + + // $t24 := get_field.withdrawal_address($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:715:38+35 + assume {:print "$at(2,33973,34008)"} true; + $t24 := $withdrawal_address#$1_vesting_VestingContract($Dereference($t15)); + + // assume Identical($t25, global($t24)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.spec.move:200:9+39 + assume {:print "$at(81,9368,9407)"} true; + assume ($t25 == $ResourceValue($1_account_Account_$memory, $t24)); + + // aptos_account::deposit_coins($t24, $t18) on_abort goto L6 with $t9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:715:9+72 + assume {:print "$at(2,33944,34016)"} true; + call $1_aptos_account_deposit_coins'$1_aptos_coin_AptosCoin'($t24, $t18); + if ($abort_flag) { + assume {:print "$at(2,33944,34016)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(57,1):", $t9} $t9 == $t9; + goto L6; + } + + // $t26 := borrow_field.admin_withdraw_events($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:718:13+43 + assume {:print "$at(2,34051,34094)"} true; + $t26 := $ChildMutation($t15, 17, $admin_withdraw_events#$1_vesting_VestingContract($Dereference($t15))); + + // $t27 := get_field.admin($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:720:24+22 + assume {:print "$at(2,34152,34174)"} true; + $t27 := $admin#$1_vesting_VestingContract($Dereference($t15)); + + // $t28 := pack vesting::AdminWithdrawEvent($t27, $t1, $t20) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:719:13+165 + assume {:print "$at(2,34108,34273)"} true; + $t28 := $1_vesting_AdminWithdrawEvent($t27, $t1, $t20); + + // opaque begin: event::emit_event($t26, $t28) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:717:9+257 + assume {:print "$at(2,34027,34284)"} true; + + // opaque end: event::emit_event($t26, $t28) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:717:9+257 + + // write_back[Reference($t15).admin_withdraw_events (event::EventHandle)]($t26) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:717:9+257 + $t15 := $UpdateMutation($t15, $Update'$1_vesting_VestingContract'_admin_withdraw_events($Dereference($t15), $Dereference($t26))); + + // assert forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t15)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t15)), addr)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 + // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 + assume {:print "$at(59,538,673)"} true; + assert {:msg "assert_failed(59,538,673): data invariant does not hold"} + (forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t15))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t15))), addr)))); + + // assert forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t15)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t15)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t15)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t15)), j)), Eq(i, j)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 + // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 + assume {:print "$at(59,738,867)"} true; + assert {:msg "assert_failed(59,738,867): data invariant does not hold"} + (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t15))))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t15))))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; + (var j := $i_3; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t15))), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t15))), j)) ==> $IsEqual'num'(i, j)))))))); + + // write_back[vesting::VestingContract@]($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:717:9+257 + assume {:print "$at(2,34027,34284)"} true; + $1_vesting_VestingContract_$memory := $ResourceUpdate($1_vesting_VestingContract_$memory, $GlobalLocationAddress($t15), + $Dereference($t15)); + + // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:725:5+1 + assume {:print "$at(2,34290,34291)"} true; +L5: + + // assert Not(Not(exists[@134]($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:381:9+53 + assume {:print "$at(3,16002,16055)"} true; + assert {:msg "assert_failed(3,16002,16055): function does not abort under this condition"} + !!$ResourceExists($1_vesting_VestingContract_$memory#134, $t1); + + // assert Not(Neq
(signer::$address_of[]($t0), select vesting::VestingContract.admin($t7))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:383:9+62 + assume {:print "$at(3,16138,16200)"} true; + assert {:msg "assert_failed(3,16138,16200): function does not abort under this condition"} + !!$IsEqual'address'($1_signer_$address_of($t0), $admin#$1_vesting_VestingContract($t7)); + + // assert Not(Neq(select vesting::VestingContract.state($t6), 2)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:187:9+60 + assume {:print "$at(3,8099,8159)"} true; + assert {:msg "assert_failed(3,8099,8159): function does not abort under this condition"} + !!$IsEqual'u64'($state#$1_vesting_VestingContract($t6), 2); + + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:187:9+60 + return; + + // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:725:5+1 + assume {:print "$at(2,34290,34291)"} true; +L6: + + // abort($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:725:5+1 + assume {:print "$at(2,34290,34291)"} true; + $abort_code := $t9; + $abort_flag := true; + return; + +} + +// fun vesting::assert_active_vesting_contract [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:945:5+349 +procedure {:inline 1} $1_vesting_assert_active_vesting_contract(_$t0: int) returns () +{ + // declare local variables + var $t1: $1_vesting_VestingContract; + var $t2: int; + var $t3: $1_vesting_VestingContract; + var $t4: int; + var $t5: int; + var $t6: bool; + var $t7: int; + var $t8: int; + var $t0: int; + var $temp_0'address': int; + $t0 := _$t0; + + // bytecode translation starts here + // assume Identical($t1, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:389:9+65 + assume {:print "$at(3,16378,16443)"} true; + assume ($t1 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); + + // trace_local[contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:945:5+1 + assume {:print "$at(2,44071,44072)"} true; + assume {:print "$track_local(57,2,0):", $t0} $t0 == $t0; + + // vesting::assert_vesting_contract_exists($t0) on_abort goto L4 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:946:9+48 + assume {:print "$at(2,44168,44216)"} true; + call $1_vesting_assert_vesting_contract_exists($t0); + if ($abort_flag) { + assume {:print "$at(2,44168,44216)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(57,2):", $t2} $t2 == $t2; + goto L4; + } + + // $t3 := get_global($t0) on_abort goto L4 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:947:32+13 + assume {:print "$at(2,44249,44262)"} true; + if (!$ResourceExists($1_vesting_VestingContract_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t3 := $ResourceValue($1_vesting_VestingContract_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(2,44249,44262)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(57,2):", $t2} $t2 == $t2; + goto L4; + } + + // $t4 := get_field.state($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:17+22 + assume {:print "$at(2,44315,44337)"} true; + $t4 := $state#$1_vesting_VestingContract($t3); + + // $t5 := 1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:43+19 + $t5 := 1; + assume $IsValid'u64'($t5); + + // $t6 := ==($t4, $t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:40+2 + $t6 := $IsEqual'u64'($t4, $t5); + + // if ($t6) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:9+106 + if ($t6) { goto L1; } else { goto L0; } + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:9+106 +L1: + + // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:9+106 + assume {:print "$at(2,44307,44413)"} true; + goto L2; + + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:85+28 +L0: + + // $t7 := 8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:85+28 + assume {:print "$at(2,44383,44411)"} true; + $t7 := 8; + assume $IsValid'u64'($t7); + + // $t8 := error::invalid_state($t7) on_abort goto L4 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:64+50 + call $t8 := $1_error_invalid_state($t7); + if ($abort_flag) { + assume {:print "$at(2,44362,44412)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(57,2):", $t2} $t2 == $t2; + goto L4; + } + + // trace_abort($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:9+106 + assume {:print "$at(2,44307,44413)"} true; + assume {:print "$track_abort(57,2):", $t8} $t8 == $t8; + + // $t2 := move($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:9+106 + $t2 := $t8; + + // goto L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:9+106 + goto L4; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:115+1 +L2: + + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:949:5+1 + assume {:print "$at(2,44419,44420)"} true; +L3: + + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:949:5+1 + assume {:print "$at(2,44419,44420)"} true; + return; + + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:949:5+1 +L4: + + // abort($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:949:5+1 + assume {:print "$at(2,44419,44420)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun vesting::assert_active_vesting_contract [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:945:5+349 +procedure {:timeLimit 200} $1_vesting_assert_active_vesting_contract$verify(_$t0: int) returns () +{ + // declare local variables + var $t1: $1_vesting_VestingContract; + var $t2: int; + var $t3: $1_vesting_VestingContract; + var $t4: int; + var $t5: int; + var $t6: bool; + var $t7: int; + var $t8: int; + var $t0: int; + var $temp_0'address': int; + var $1_vesting_VestingContract_$memory#61: $Memory $1_vesting_VestingContract; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:945:5+1 + assume {:print "$at(2,44071,44072)"} true; + assume $IsValid'address'($t0); + + // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:945:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); + (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; + (var j := $i_4; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); + + // assume Identical($t1, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:389:9+65 + assume {:print "$at(3,16378,16443)"} true; + assume ($t1 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); + + // @61 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:945:5+1 + assume {:print "$at(2,44071,44072)"} true; + $1_vesting_VestingContract_$memory#61 := $1_vesting_VestingContract_$memory; + + // trace_local[contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:945:5+1 + assume {:print "$track_local(57,2,0):", $t0} $t0 == $t0; + + // vesting::assert_vesting_contract_exists($t0) on_abort goto L4 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:946:9+48 + assume {:print "$at(2,44168,44216)"} true; + call $1_vesting_assert_vesting_contract_exists($t0); + if ($abort_flag) { + assume {:print "$at(2,44168,44216)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(57,2):", $t2} $t2 == $t2; + goto L4; + } + + // $t3 := get_global($t0) on_abort goto L4 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:947:32+13 + assume {:print "$at(2,44249,44262)"} true; + if (!$ResourceExists($1_vesting_VestingContract_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t3 := $ResourceValue($1_vesting_VestingContract_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(2,44249,44262)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(57,2):", $t2} $t2 == $t2; + goto L4; + } + + // $t4 := get_field.state($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:17+22 + assume {:print "$at(2,44315,44337)"} true; + $t4 := $state#$1_vesting_VestingContract($t3); + + // $t5 := 1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:43+19 + $t5 := 1; + assume $IsValid'u64'($t5); + + // $t6 := ==($t4, $t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:40+2 + $t6 := $IsEqual'u64'($t4, $t5); + + // if ($t6) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:9+106 + if ($t6) { goto L1; } else { goto L0; } + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:9+106 +L1: + + // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:9+106 + assume {:print "$at(2,44307,44413)"} true; + goto L2; + + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:85+28 +L0: + + // $t7 := 8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:85+28 + assume {:print "$at(2,44383,44411)"} true; + $t7 := 8; + assume $IsValid'u64'($t7); + + // $t8 := error::invalid_state($t7) on_abort goto L4 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:64+50 + call $t8 := $1_error_invalid_state($t7); + if ($abort_flag) { + assume {:print "$at(2,44362,44412)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(57,2):", $t2} $t2 == $t2; + goto L4; + } + + // trace_abort($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:9+106 + assume {:print "$at(2,44307,44413)"} true; + assume {:print "$track_abort(57,2):", $t8} $t8 == $t8; + + // $t2 := move($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:9+106 + $t2 := $t8; + + // goto L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:9+106 + goto L4; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:115+1 +L2: + + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:949:5+1 + assume {:print "$at(2,44419,44420)"} true; +L3: + + // assert Not(Not(exists[@61]($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:388:9+53 + assume {:print "$at(3,16316,16369)"} true; + assert {:msg "assert_failed(3,16316,16369): function does not abort under this condition"} + !!$ResourceExists($1_vesting_VestingContract_$memory#61, $t0); + + // assert Not(Neq(select vesting::VestingContract.state($t1), 1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:390:9+56 + assume {:print "$at(3,16452,16508)"} true; + assert {:msg "assert_failed(3,16452,16508): function does not abort under this condition"} + !!$IsEqual'u64'($state#$1_vesting_VestingContract($t1), 1); + + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:390:9+56 + return; + + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:949:5+1 + assume {:print "$at(2,44419,44420)"} true; +L4: + + // assert Or(Not(exists[@61]($t0)), Neq(select vesting::VestingContract.state($t1), 1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:351:5+134 + assume {:print "$at(3,14757,14891)"} true; + assert {:msg "assert_failed(3,14757,14891): abort not covered by any of the `aborts_if` clauses"} + (!$ResourceExists($1_vesting_VestingContract_$memory#61, $t0) || !$IsEqual'u64'($state#$1_vesting_VestingContract($t1), 1)); + + // abort($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:351:5+134 + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun vesting::assert_vesting_contract_exists [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:941:5+176 +procedure {:inline 1} $1_vesting_assert_vesting_contract_exists(_$t0: int) returns () +{ + // declare local variables + var $t1: bool; + var $t2: int; + var $t3: int; + var $t4: int; + var $t0: int; + var $temp_0'address': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:941:5+1 + assume {:print "$at(2,43889,43890)"} true; + assume {:print "$track_local(57,3,0):", $t0} $t0 == $t0; + + // $t1 := exists($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:17+6 + assume {:print "$at(2,43969,43975)"} true; + $t1 := $ResourceExists($1_vesting_VestingContract_$memory, $t0); + + // if ($t1) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:9+97 + if ($t1) { goto L1; } else { goto L0; } + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:9+97 +L1: + + // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:9+97 + assume {:print "$at(2,43961,44058)"} true; + goto L2; + + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:77+27 +L0: + + // $t2 := 10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:77+27 + assume {:print "$at(2,44029,44056)"} true; + $t2 := 10; + assume $IsValid'u64'($t2); + + // $t3 := error::not_found($t2) on_abort goto L4 with $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:60+45 + call $t3 := $1_error_not_found($t2); + if ($abort_flag) { + assume {:print "$at(2,44012,44057)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(57,3):", $t4} $t4 == $t4; + goto L4; + } + + // trace_abort($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:9+97 + assume {:print "$at(2,43961,44058)"} true; + assume {:print "$track_abort(57,3):", $t3} $t3 == $t3; + + // $t4 := move($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:9+97 + $t4 := $t3; + + // goto L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:9+97 + goto L4; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:106+1 +L2: + + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:943:5+1 + assume {:print "$at(2,44064,44065)"} true; +L3: + + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:943:5+1 + assume {:print "$at(2,44064,44065)"} true; + return; + + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:943:5+1 +L4: + + // abort($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:943:5+1 + assume {:print "$at(2,44064,44065)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun vesting::assert_vesting_contract_exists [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:941:5+176 +procedure {:timeLimit 200} $1_vesting_assert_vesting_contract_exists$verify(_$t0: int) returns () +{ + // declare local variables + var $t1: bool; + var $t2: int; + var $t3: int; + var $t4: int; + var $t0: int; + var $temp_0'address': int; + var $1_vesting_VestingContract_$memory#31: $Memory $1_vesting_VestingContract; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:941:5+1 + assume {:print "$at(2,43889,43890)"} true; + assume $IsValid'address'($t0); + + // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:941:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); + (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; + (var j := $i_4; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); + + // @31 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:941:5+1 + $1_vesting_VestingContract_$memory#31 := $1_vesting_VestingContract_$memory; + + // trace_local[contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:941:5+1 + assume {:print "$track_local(57,3,0):", $t0} $t0 == $t0; + + // $t1 := exists($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:17+6 + assume {:print "$at(2,43969,43975)"} true; + $t1 := $ResourceExists($1_vesting_VestingContract_$memory, $t0); + + // if ($t1) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:9+97 + if ($t1) { goto L1; } else { goto L0; } + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:9+97 +L1: + + // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:9+97 + assume {:print "$at(2,43961,44058)"} true; + goto L2; + + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:77+27 +L0: + + // $t2 := 10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:77+27 + assume {:print "$at(2,44029,44056)"} true; + $t2 := 10; + assume $IsValid'u64'($t2); + + // $t3 := error::not_found($t2) on_abort goto L4 with $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:60+45 + call $t3 := $1_error_not_found($t2); + if ($abort_flag) { + assume {:print "$at(2,44012,44057)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(57,3):", $t4} $t4 == $t4; + goto L4; + } + + // trace_abort($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:9+97 + assume {:print "$at(2,43961,44058)"} true; + assume {:print "$track_abort(57,3):", $t3} $t3 == $t3; + + // $t4 := move($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:9+97 + $t4 := $t3; + + // goto L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:9+97 + goto L4; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:106+1 +L2: + + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:943:5+1 + assume {:print "$at(2,44064,44065)"} true; +L3: + + // assert Not(Not(exists[@31]($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:348:9+53 + assume {:print "$at(3,14692,14745)"} true; + assert {:msg "assert_failed(3,14692,14745): function does not abort under this condition"} + !!$ResourceExists($1_vesting_VestingContract_$memory#31, $t0); + + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:348:9+53 + return; + + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:943:5+1 + assume {:print "$at(2,44064,44065)"} true; +L4: + + // assert Not(exists[@31]($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:347:5+132 + assume {:print "$at(3,14619,14751)"} true; + assert {:msg "assert_failed(3,14619,14751): abort not covered by any of the `aborts_if` clauses"} + !$ResourceExists($1_vesting_VestingContract_$memory#31, $t0); + + // abort($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:347:5+132 + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun vesting::beneficiary [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:293:5+282 +procedure {:timeLimit 200} $1_vesting_beneficiary$verify(_$t0: int, _$t1: int) returns ($ret0: int) +{ + // declare local variables + var $t2: int; + var $t3: $1_vesting_VestingContract; + var $t4: int; + var $t0: int; + var $t1: int; + var $temp_0'address': int; + var $1_vesting_VestingContract_$memory#104: $Memory $1_vesting_VestingContract; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:293:5+1 + assume {:print "$at(2,13591,13592)"} true; + assume $IsValid'address'($t0); + + // assume WellFormed($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:293:5+1 + assume $IsValid'address'($t1); + + // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:293:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); + (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; + (var j := $i_4; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); + + // @104 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:293:5+1 + $1_vesting_VestingContract_$memory#104 := $1_vesting_VestingContract_$memory; + + // trace_local[vesting_contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:293:5+1 + assume {:print "$track_local(57,4,0):", $t0} $t0 == $t0; + + // trace_local[shareholder]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:293:5+1 + assume {:print "$track_local(57,4,1):", $t1} $t1 == $t1; + + // vesting::assert_vesting_contract_exists($t0) on_abort goto L2 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:294:9+56 + assume {:print "$at(2,13715,13771)"} true; + call $1_vesting_assert_vesting_contract_exists($t0); + if ($abort_flag) { + assume {:print "$at(2,13715,13771)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(57,4):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := get_global($t0) on_abort goto L2 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:295:25+13 + assume {:print "$at(2,13797,13810)"} true; + if (!$ResourceExists($1_vesting_VestingContract_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t3 := $ResourceValue($1_vesting_VestingContract_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(2,13797,13810)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(57,4):", $t2} $t2 == $t2; + goto L2; + } + + // $t4 := vesting::get_beneficiary($t3, $t1) on_abort goto L2 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:295:9+86 + call $t4 := $1_vesting_get_beneficiary($t3, $t1); + if ($abort_flag) { + assume {:print "$at(2,13781,13867)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(57,4):", $t2} $t2 == $t2; + goto L2; + } + + // trace_return[0]($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:295:9+86 + assume {:print "$track_return(57,4,0):", $t4} $t4 == $t4; + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:296:5+1 + assume {:print "$at(2,13872,13873)"} true; +L1: + + // assert Not(Not(exists[@104]($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:24:9+61 + assume {:print "$at(3,811,872)"} true; + assert {:msg "assert_failed(3,811,872): function does not abort under this condition"} + !!$ResourceExists($1_vesting_VestingContract_$memory#104, $t0); + + // return $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:24:9+61 + $ret0 := $t4; + return; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:296:5+1 + assume {:print "$at(2,13872,13873)"} true; +L2: + + // assert Not(exists[@104]($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:23:5+160 + assume {:print "$at(3,718,878)"} true; + assert {:msg "assert_failed(3,718,878): abort not covered by any of the `aborts_if` clauses"} + !$ResourceExists($1_vesting_VestingContract_$memory#104, $t0); + + // abort($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:23:5+160 + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun vesting::vesting_schedule [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:346:5+260 +procedure {:timeLimit 200} $1_vesting_vesting_schedule$verify(_$t0: int) returns ($ret0: $1_vesting_VestingSchedule) +{ + // declare local variables + var $t1: int; + var $t2: $1_vesting_VestingContract; + var $t3: $1_vesting_VestingSchedule; + var $t0: int; + var $temp_0'$1_vesting_VestingSchedule': $1_vesting_VestingSchedule; + var $temp_0'address': int; + var $1_vesting_VestingContract_$memory#57: $Memory $1_vesting_VestingContract; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:346:5+1 + assume {:print "$at(2,16253,16254)"} true; + assume $IsValid'address'($t0); + + // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:346:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); + (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; + (var j := $i_4; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); + + // @57 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:346:5+1 + $1_vesting_VestingContract_$memory#57 := $1_vesting_VestingContract_$memory; + + // trace_local[vesting_contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:346:5+1 + assume {:print "$track_local(57,38,0):", $t0} $t0 == $t0; + + // vesting::assert_vesting_contract_exists($t0) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:347:9+56 + assume {:print "$at(2,16368,16424)"} true; + call $1_vesting_assert_vesting_contract_exists($t0); + if ($abort_flag) { + assume {:print "$at(2,16368,16424)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(57,38):", $t1} $t1 == $t1; + goto L2; + } + + // $t2 := get_global($t0) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:348:9+13 + assume {:print "$at(2,16434,16447)"} true; + if (!$ResourceExists($1_vesting_VestingContract_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t2 := $ResourceValue($1_vesting_VestingContract_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(2,16434,16447)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(57,38):", $t1} $t1 == $t1; + goto L2; + } + + // $t3 := get_field.vesting_schedule($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:348:9+73 + $t3 := $vesting_schedule#$1_vesting_VestingContract($t2); + + // trace_return[0]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:348:9+73 + assume {:print "$track_return(57,38,0):", $t3} $t3 == $t3; + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:349:5+1 + assume {:print "$at(2,16512,16513)"} true; +L1: + + // assert Not(Not(exists[@57]($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:44:9+61 + assume {:print "$at(3,1500,1561)"} true; + assert {:msg "assert_failed(3,1500,1561): function does not abort under this condition"} + !!$ResourceExists($1_vesting_VestingContract_$memory#57, $t0); + + // return $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:44:9+61 + $ret0 := $t3; + return; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:349:5+1 + assume {:print "$at(2,16512,16513)"} true; +L2: + + // assert Not(exists[@57]($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:43:5+151 + assume {:print "$at(3,1416,1567)"} true; + assert {:msg "assert_failed(3,1416,1567): abort not covered by any of the `aborts_if` clauses"} + !$ResourceExists($1_vesting_VestingContract_$memory#57, $t0); + + // abort($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:43:5+151 + $abort_code := $t1; + $abort_flag := true; + return; + +} + +// fun vesting::create_vesting_contract_account [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:915:5+1075 +procedure {:timeLimit 200} $1_vesting_create_vesting_contract_account$verify(_$t0: $signer, _$t1: Vec (int)) returns ($ret0: $signer, $ret1: $1_account_SignerCapability) +{ + // declare local variables + var $t2: int; + var $t3: $signer; + var $t4: $Mutation ($1_vesting_AdminStore); + var $t5: Vec (int); + var $t6: $1_account_SignerCapability; + var $t7: int; + var $t8: $1_vesting_AdminStore; + var $t9: Vec (int); + var $t10: Vec (int); + var $t11: Vec (int); + var $t12: Vec (int); + var $t13: Vec (int); + var $t14: int; + var $t15: bool; + var $t16: $1_account_Account; + var $t17: $1_account_Account; + var $t18: Vec (int); + var $t19: int; + var $t20: int; + var $t21: $Mutation ($1_vesting_AdminStore); + var $t22: int; + var $t23: $Mutation (Vec (int)); + var $t24: int; + var $t25: Vec (int); + var $t26: int; + var $t27: int; + var $t28: int; + var $t29: $Mutation (int); + var $t30: $Mutation (Vec (int)); + var $t31: Vec (int); + var $t32: $Mutation (Vec (int)); + var $t33: Vec (int); + var $t34: int; + var $t35: int; + var $t36: $1_account_Account; + var $t37: Vec (int); + var $t38: $signer; + var $t39: $1_account_SignerCapability; + var $t40: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t41: int; + var $t42: $1_account_Account; + var $t43: $1_account_Account; + var $t0: $signer; + var $t1: Vec (int); + var $temp_0'$1_account_SignerCapability': $1_account_SignerCapability; + var $temp_0'$1_vesting_AdminStore': $1_vesting_AdminStore; + var $temp_0'signer': $signer; + var $temp_0'vec'u8'': Vec (int); + var $1_vesting_AdminStore_$memory#98: $Memory $1_vesting_AdminStore; + var $1_account_Account_$memory#99: $Memory $1_account_Account; + var $1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory#100: $Memory $1_coin_CoinStore'$1_aptos_coin_AptosCoin'; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:915:5+1 + assume {:print "$at(2,42620,42621)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($addr#$signer($t0)); + + // assume WellFormed($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:915:5+1 + assume $IsValid'vec'u8''($t1); + + // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.rotation_capability_offer($rsc)))), 1), Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.signer_capability_offer($rsc)))), 1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:915:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_account_Account_$memory, $a_0)}(var $rsc := $ResourceValue($1_account_Account_$memory, $a_0); + (($IsValid'$1_account_Account'($rsc) && ((LenVec($vec#$1_option_Option'address'($for#$1_account_CapabilityOffer'$1_account_RotationCapability'($rotation_capability_offer#$1_account_Account($rsc)))) <= 1) && (LenVec($vec#$1_option_Option'address'($for#$1_account_CapabilityOffer'$1_account_SignerCapability'($signer_capability_offer#$1_account_Account($rsc)))) <= 1)))))); + + // assume forall $rsc: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: select option::Option.vec(select coin::CoinInfo.supply($rsc)): And(And(And(And(And(Iff(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($elem)), option::$is_none(select optional_aggregator::OptionalAggregator.integer($elem))), Iff(option::$is_some(select optional_aggregator::OptionalAggregator.integer($elem)), option::$is_none(select optional_aggregator::OptionalAggregator.aggregator($elem)))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.integer($elem)), Le(select optional_aggregator::Integer.value(option::$borrow(select optional_aggregator::OptionalAggregator.integer($elem))), select optional_aggregator::Integer.limit(option::$borrow(select optional_aggregator::OptionalAggregator.integer($elem)))))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($elem)), Le(aggregator::spec_aggregator_get_val(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($elem))), aggregator::spec_get_limit(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($elem)))))), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.aggregator($elem))), 1)), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.integer($elem))), 1)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:915:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'$1_aptos_coin_AptosCoin''($rsc) && ((LenVec($vec#$1_option_Option'$1_optional_aggregator_OptionalAggregator'($supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($rsc))) <= 1) && (var $range_1 := $vec#$1_option_Option'$1_optional_aggregator_OptionalAggregator'($supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($rsc)); (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)) <==> $1_option_$is_none'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)) ==> ($value#$1_optional_aggregator_Integer($1_option_$borrow'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) <= $limit#$1_optional_aggregator_Integer($1_option_$borrow'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)))))) && ($1_option_$is_some'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem))) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)))))) && (LenVec($vec#$1_option_Option'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem))) <= 1)) && (LenVec($vec#$1_option_Option'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) <= 1))))))))))); + + // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:915:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $a_0); + ($IsValid'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''($rsc)))); + + // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:915:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin''($rsc)))); + + // assume exists>(0x0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:915:5+1 + assume $ResourceExists($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, 0); + + // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:915:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin''($rsc)))); + + // assume exists>(0x0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:915:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, 0); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:915:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_vesting_AdminStore_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_AdminStore_$memory, $a_0); + ($IsValid'$1_vesting_AdminStore'($rsc)))); + + // assume Identical($t7, signer::$address_of($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:316:9+43 + assume {:print "$at(3,12878,12921)"} true; + assume ($t7 == $1_signer_$address_of($t0)); + + // assume Identical($t8, global($t7)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:317:9+49 + assume {:print "$at(3,12930,12979)"} true; + assume ($t8 == $ResourceValue($1_vesting_AdminStore_$memory, $t7)); + + // assume Identical($t9, bcs::$to_bytes
($t7)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:318:9+37 + assume {:print "$at(3,12988,13025)"} true; + assume ($t9 == $1_bcs_$to_bytes'address'($t7)); + + // assume Identical($t10, bcs::$to_bytes(select vesting::AdminStore.nonce($t8))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:319:9+45 + assume {:print "$at(3,13034,13079)"} true; + assume ($t10 == $1_bcs_$to_bytes'u64'($nonce#$1_vesting_AdminStore($t8))); + + // assume Identical($t11, ConcatVec($t9, $t10)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:321:9+32 + assume {:print "$at(3,13089,13121)"} true; + assume ($t11 == ConcatVec($t9, $t10)); + + // assume Identical($t12, ConcatVec($t11, [97, 112, 116, 111, 115, 95, 102, 114, 97, 109, 101, 119, 111, 114, 107, 58, 58, 118, 101, 115, 116, 105, 110, 103])) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:322:9+46 + assume {:print "$at(3,13130,13176)"} true; + assume ($t12 == ConcatVec($t11, ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(97, 112, 116, 111), MakeVec4(115, 95, 102, 114)), MakeVec4(97, 109, 101, 119)), MakeVec4(111, 114, 107, 58)), MakeVec4(58, 118, 101, 115)), MakeVec4(116, 105, 110, 103)))); + + // assume Identical($t13, ConcatVec($t12, $t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:323:9+49 + assume {:print "$at(3,13185,13234)"} true; + assume ($t13 == ConcatVec($t12, $t1)); + + // assume Identical($t14, account::spec_create_resource_address($t7, $t13)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:325:9+75 + assume {:print "$at(3,13244,13319)"} true; + assume ($t14 == $1_account_spec_create_resource_address($t7, $t13)); + + // assume Identical($t15, account::$exists_at($t14)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:329:9+43 + assume {:print "$at(3,13483,13526)"} true; + assume ($t15 == $1_account_$exists_at($1_account_Account_$memory, $t14)); + + // assume Identical($t16, global($t14)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:332:9+50 + assume {:print "$at(3,13658,13708)"} true; + assume ($t16 == $ResourceValue($1_account_Account_$memory, $t14)); + + // assume Identical($t17, global($t14)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:464:9+45 + assume {:print "$at(73,22404,22449)"} true; + assume ($t17 == $ResourceValue($1_account_Account_$memory, $t14)); + + // assume Identical($t18, bcs::$to_bytes
($t14)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:34:9+45 + assume {:print "$at(73,1495,1540)"} true; + assume ($t18 == $1_bcs_$to_bytes'address'($t14)); + + // @99 := save_mem(account::Account) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:915:5+1 + assume {:print "$at(2,42620,42621)"} true; + $1_account_Account_$memory#99 := $1_account_Account_$memory; + + // @100 := save_mem(coin::CoinStore) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:915:5+1 + $1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory#100 := $1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory; + + // @98 := save_mem(vesting::AdminStore) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:915:5+1 + $1_vesting_AdminStore_$memory#98 := $1_vesting_AdminStore_$memory; + + // trace_local[admin]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:915:5+1 + assume {:print "$track_local(57,6,0):", $t0} $t0 == $t0; + + // trace_local[contract_creation_seed]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:915:5+1 + assume {:print "$track_local(57,6,1):", $t1} $t1 == $t1; + + // $t19 := signer::address_of($t0) on_abort goto L2 with $t20 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:919:57+25 + assume {:print "$at(2,42837,42862)"} true; + call $t19 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(2,42837,42862)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(57,6):", $t20} $t20 == $t20; + goto L2; + } + + // $t21 := borrow_global($t19) on_abort goto L2 with $t20 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:919:27+17 + if (!$ResourceExists($1_vesting_AdminStore_$memory, $t19)) { + call $ExecFailureAbort(); + } else { + $t21 := $Mutation($Global($t19), EmptyVec(), $ResourceValue($1_vesting_AdminStore_$memory, $t19)); + } + if ($abort_flag) { + assume {:print "$at(2,42807,42824)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(57,6):", $t20} $t20 == $t20; + goto L2; + } + + // trace_local[admin_store]($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:919:13+11 + $temp_0'$1_vesting_AdminStore' := $Dereference($t21); + assume {:print "$track_local(57,6,4):", $temp_0'$1_vesting_AdminStore'} $temp_0'$1_vesting_AdminStore' == $temp_0'$1_vesting_AdminStore'; + + // $t22 := signer::address_of($t0) on_abort goto L2 with $t20 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:920:35+25 + assume {:print "$at(2,42899,42924)"} true; + call $t22 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(2,42899,42924)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(57,6):", $t20} $t20 == $t20; + goto L2; + } + + // $t5 := bcs::to_bytes
($t22) on_abort goto L2 with $t20 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:920:20+41 + call $t5 := $1_bcs_to_bytes'address'($t22); + if ($abort_flag) { + assume {:print "$at(2,42884,42925)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(57,6):", $t20} $t20 == $t20; + goto L2; + } + + // trace_local[seed]($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:920:13+4 + assume {:print "$track_local(57,6,5):", $t5} $t5 == $t5; + + // $t23 := borrow_local($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:921:24+9 + assume {:print "$at(2,42950,42959)"} true; + $t23 := $Mutation($Local(5), EmptyVec(), $t5); + + // $t24 := get_field.nonce($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:921:49+18 + $t24 := $nonce#$1_vesting_AdminStore($Dereference($t21)); + + // $t25 := bcs::to_bytes($t24) on_abort goto L2 with $t20 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:921:35+33 + call $t25 := $1_bcs_to_bytes'u64'($t24); + if ($abort_flag) { + assume {:print "$at(2,42961,42994)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(57,6):", $t20} $t20 == $t20; + goto L2; + } + + // vector::append($t23, $t25) on_abort goto L2 with $t20 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:921:9+60 + call $t23 := $1_vector_append'u8'($t23, $t25); + if ($abort_flag) { + assume {:print "$at(2,42935,42995)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(57,6):", $t20} $t20 == $t20; + goto L2; + } + + // write_back[LocalRoot($t5)@]($t23) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:921:9+60 + $t5 := $Dereference($t23); + + // trace_local[seed]($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:921:9+60 + assume {:print "$track_local(57,6,5):", $t5} $t5 == $t5; + + // $t26 := get_field.nonce($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:922:29+17 + assume {:print "$at(2,43025,43042)"} true; + $t26 := $nonce#$1_vesting_AdminStore($Dereference($t21)); + + // $t27 := 1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:922:49+1 + $t27 := 1; + assume $IsValid'u64'($t27); + + // $t28 := +($t26, $t27) on_abort goto L2 with $t20 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:922:47+1 + call $t28 := $AddU64($t26, $t27); + if ($abort_flag) { + assume {:print "$at(2,43043,43044)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(57,6):", $t20} $t20 == $t20; + goto L2; + } + + // $t29 := borrow_field.nonce($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:922:9+17 + $t29 := $ChildMutation($t21, 1, $nonce#$1_vesting_AdminStore($Dereference($t21))); + + // write_ref($t29, $t28) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:922:9+41 + $t29 := $UpdateMutation($t29, $t28); + + // write_back[Reference($t21).nonce (u64)]($t29) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:922:9+41 + $t21 := $UpdateMutation($t21, $Update'$1_vesting_AdminStore'_nonce($Dereference($t21), $Dereference($t29))); + + // write_back[vesting::AdminStore@]($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:922:9+41 + $1_vesting_AdminStore_$memory := $ResourceUpdate($1_vesting_AdminStore_$memory, $GlobalLocationAddress($t21), + $Dereference($t21)); + + // $t30 := borrow_local($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:926:24+9 + assume {:print "$at(2,43254,43263)"} true; + $t30 := $Mutation($Local(5), EmptyVec(), $t5); + + // $t31 := [97, 112, 116, 111, 115, 95, 102, 114, 97, 109, 101, 119, 111, 114, 107, 58, 58, 118, 101, 115, 116, 105, 110, 103] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:926:35+17 + $t31 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(97, 112, 116, 111), MakeVec4(115, 95, 102, 114)), MakeVec4(97, 109, 101, 119)), MakeVec4(111, 114, 107, 58)), MakeVec4(58, 118, 101, 115)), MakeVec4(116, 105, 110, 103)); + assume $IsValid'vec'u8''($t31); + + // vector::append($t30, $t31) on_abort goto L2 with $t20 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:926:9+44 + call $t30 := $1_vector_append'u8'($t30, $t31); + if ($abort_flag) { + assume {:print "$at(2,43239,43283)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(57,6):", $t20} $t20 == $t20; + goto L2; + } + + // write_back[LocalRoot($t5)@]($t30) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:926:9+44 + $t5 := $Dereference($t30); + + // trace_local[seed]($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:926:9+44 + assume {:print "$track_local(57,6,5):", $t5} $t5 == $t5; + + // $t32 := borrow_local($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:927:24+9 + assume {:print "$at(2,43308,43317)"} true; + $t32 := $Mutation($Local(5), EmptyVec(), $t5); + + // vector::append($t32, $t1) on_abort goto L2 with $t20 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:927:9+49 + call $t32 := $1_vector_append'u8'($t32, $t1); + if ($abort_flag) { + assume {:print "$at(2,43293,43342)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(57,6):", $t20} $t20 == $t20; + goto L2; + } + + // write_back[LocalRoot($t5)@]($t32) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:927:9+49 + $t5 := $Dereference($t32); + + // trace_local[seed]($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:927:9+49 + assume {:print "$track_local(57,6,5):", $t5} $t5 == $t5; + + // $t33 := move($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:929:84+4 + assume {:print "$at(2,43428,43432)"} true; + $t33 := $t5; + + // assume Identical($t34, signer::$address_of($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:396:9+45 + assume {:print "$at(73,19766,19811)"} true; + assume ($t34 == $1_signer_$address_of($t0)); + + // assume Identical($t35, account::spec_create_resource_address($t34, $t33)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:397:9+68 + assume {:print "$at(73,19820,19888)"} true; + assume ($t35 == $1_account_spec_create_resource_address($t34, $t33)); + + // assume Identical($t36, global($t35)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:464:9+45 + assume {:print "$at(73,22404,22449)"} true; + assume ($t36 == $ResourceValue($1_account_Account_$memory, $t35)); + + // assume Identical($t37, bcs::$to_bytes
($t35)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:34:9+45 + assume {:print "$at(73,1495,1540)"} true; + assume ($t37 == $1_bcs_$to_bytes'address'($t35)); + + // ($t38, $t39) := account::create_resource_account($t0, $t33) on_abort goto L2 with $t20 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:929:44+45 + assume {:print "$at(2,43388,43433)"} true; + call $t38,$t39 := $1_account_create_resource_account($t0, $t33); + if ($abort_flag) { + assume {:print "$at(2,43388,43433)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(57,6):", $t20} $t20 == $t20; + goto L2; + } + + // trace_local[signer_cap]($t39) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:929:30+10 + assume {:print "$track_local(57,6,6):", $t39} $t39 == $t39; + + // trace_local[account_signer]($t38) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:929:14+14 + assume {:print "$track_local(57,6,3):", $t38} $t38 == $t38; + + // assume Identical($t40, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + assume {:print "$at(95,1664,1763)"} true; + assume ($t40 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + + // assume Identical($t41, signer::$address_of($t38)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:342:9+47 + assume {:print "$at(95,14541,14588)"} true; + assume ($t41 == $1_signer_$address_of($t38)); + + // assume Identical($t42, global($t41)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:343:9+49 + assume {:print "$at(95,14597,14646)"} true; + assume ($t42 == $ResourceValue($1_account_Account_$memory, $t41)); + + // coin::register($t38) on_abort goto L2 with $t20 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:932:9+42 + assume {:print "$at(2,43608,43650)"} true; + call $1_coin_register'$1_aptos_coin_AptosCoin'($t38); + if ($abort_flag) { + assume {:print "$at(2,43608,43650)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(57,6):", $t20} $t20 == $t20; + goto L2; + } + + // trace_return[0]($t38) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:934:9+28 + assume {:print "$at(2,43661,43689)"} true; + assume {:print "$track_return(57,6,0):", $t38} $t38 == $t38; + + // trace_return[1]($t39) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:934:9+28 + assume {:print "$track_return(57,6,1):", $t39} $t39 == $t39; + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:935:5+1 + assume {:print "$at(2,43694,43695)"} true; +L1: + + // assume Identical($t43, global($t14)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:333:9+60 + assume {:print "$at(3,13717,13777)"} true; + assume ($t43 == $ResourceValue($1_account_Account_$memory, $t14)); + + // assert Not(Not(exists[@98]($t7))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:326:9+42 + assume {:print "$at(3,13328,13370)"} true; + assert {:msg "assert_failed(3,13328,13370): function does not abort under this condition"} + !!$ResourceExists($1_vesting_AdminStore_$memory#98, $t7); + + // assert Not(Neq(Len([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), 32)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:327:9+44 + assume {:print "$at(3,13379,13423)"} true; + assert {:msg "assert_failed(3,13379,13423): function does not abort under this condition"} + !!$IsEqual'num'(LenVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(0, 0, 0, 0), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0))), 32); + + // assert Not(Gt(Add(select vesting::AdminStore.nonce($t8), 1), 18446744073709551615)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:328:9+42 + assume {:print "$at(3,13432,13474)"} true; + assert {:msg "assert_failed(3,13432,13474): function does not abort under this condition"} + !(($nonce#$1_vesting_AdminStore($t8) + 1) > 18446744073709551615); + + // assert Not(And($t15, Neq(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.signer_capability_offer($t17)))), 0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:465:9+60 + assume {:print "$at(73,22458,22518)"} true; + assert {:msg "assert_failed(73,22458,22518): function does not abort under this condition"} + !($t15 && !$IsEqual'num'(LenVec($vec#$1_option_Option'address'($for#$1_account_CapabilityOffer'$1_account_SignerCapability'($signer_capability_offer#$1_account_Account($t17)))), 0)); + + // assert Not(And($t15, Neq(select account::Account.sequence_number($t17), 0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:466:9+39 + assume {:print "$at(73,22527,22566)"} true; + assert {:msg "assert_failed(73,22527,22566): function does not abort under this condition"} + !($t15 && !$IsEqual'u64'($sequence_number#$1_account_Account($t17), 0)); + + // assert Not(And(Not($t15), Neq(Len($t18), 32))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:35:9+40 + assume {:print "$at(73,1549,1589)"} true; + assert {:msg "assert_failed(73,1549,1589): function does not abort under this condition"} + !(!$t15 && !$IsEqual'num'(LenVec($t18), 32)); + + // assert Not(And(Not($t15), exists[@99]($t14))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:36:9+32 + assume {:print "$at(73,1598,1630)"} true; + assert {:msg "assert_failed(73,1598,1630): function does not abort under this condition"} + !(!$t15 && $ResourceExists($1_account_Account_$memory#99, $t14)); + + // assert Not(And(Not(exists[@100]>($t14)), Not(type_info::spec_is_struct[]()))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:334:9+115 + assume {:print "$at(3,13786,13901)"} true; + assert {:msg "assert_failed(3,13786,13901): function does not abort under this condition"} + !(!$ResourceExists($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory#100, $t14) && !true); + + // assert Not(And(And(Not(exists[@100]>($t14)), $t15), Gt(Add(select account::Account.guid_creation_num($t16), 2), 18446744073709551615))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:335:9+106 + assume {:print "$at(3,13910,14016)"} true; + assert {:msg "assert_failed(3,13910,14016): function does not abort under this condition"} + !((!$ResourceExists($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory#100, $t14) && $t15) && (($guid_creation_num#$1_account_Account($t16) + 2) > 18446744073709551615)); + + // assert Not(And(And(Not(exists[@100]>($t14)), $t15), Ge(Add(select account::Account.guid_creation_num($t16), 2), 1125899906842624))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:336:9+130 + assume {:print "$at(3,14025,14155)"} true; + assert {:msg "assert_failed(3,14025,14155): function does not abort under this condition"} + !((!$ResourceExists($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory#100, $t14) && $t15) && (($guid_creation_num#$1_account_Account($t16) + 2) >= 1125899906842624)); + + // assert And(And(exists($t14), Eq>(select account::Account.authentication_key($t43), [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])), exists>($t14)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:337:9+175 + assume {:print "$at(3,14164,14339)"} true; + assert {:msg "assert_failed(3,14164,14339): post-condition does not hold"} + (($ResourceExists($1_account_Account_$memory, $t14) && $IsEqual'vec'u8''($authentication_key#$1_account_Account($t43), ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(0, 0, 0, 0), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)))) && $ResourceExists($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $t14)); + + // assert Eq
(signer::$address_of($t38), $t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:339:9+54 + assume {:print "$at(3,14348,14402)"} true; + assert {:msg "assert_failed(3,14348,14402): post-condition does not hold"} + $IsEqual'address'($1_signer_$address_of($t38), $t14); + + // assert Eq
(select account::SignerCapability.account($t39), $t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:340:9+42 + assume {:print "$at(3,14411,14453)"} true; + assert {:msg "assert_failed(3,14411,14453): post-condition does not hold"} + $IsEqual'address'($account#$1_account_SignerCapability($t39), $t14); + + // return ($t38, $t39) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:340:9+42 + $ret0 := $t38; + $ret1 := $t39; + return; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:935:5+1 + assume {:print "$at(2,43694,43695)"} true; +L2: + + // assert Or(Or(Or(Or(Or(Or(Or(Or(Or(Not(exists[@98]($t7)), Neq(Len([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), 32)), Gt(Add(select vesting::AdminStore.nonce($t8), 1), 18446744073709551615)), And($t15, Neq(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.signer_capability_offer($t17)))), 0))), And($t15, Neq(select account::Account.sequence_number($t17), 0))), And(Not($t15), Neq(Len($t18), 32))), And(Not($t15), exists[@99]($t14))), And(Not(exists[@100]>($t14)), Not(type_info::spec_is_struct[]()))), And(And(Not(exists[@100]>($t14)), $t15), Gt(Add(select account::Account.guid_creation_num($t16), 2), 18446744073709551615))), And(And(Not(exists[@100]>($t14)), $t15), Ge(Add(select account::Account.guid_creation_num($t16), 2), 1125899906842624))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:312:5+1731 + assume {:print "$at(3,12728,14459)"} true; + assert {:msg "assert_failed(3,12728,14459): abort not covered by any of the `aborts_if` clauses"} + (((((((((!$ResourceExists($1_vesting_AdminStore_$memory#98, $t7) || !$IsEqual'num'(LenVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(0, 0, 0, 0), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0))), 32)) || (($nonce#$1_vesting_AdminStore($t8) + 1) > 18446744073709551615)) || ($t15 && !$IsEqual'num'(LenVec($vec#$1_option_Option'address'($for#$1_account_CapabilityOffer'$1_account_SignerCapability'($signer_capability_offer#$1_account_Account($t17)))), 0))) || ($t15 && !$IsEqual'u64'($sequence_number#$1_account_Account($t17), 0))) || (!$t15 && !$IsEqual'num'(LenVec($t18), 32))) || (!$t15 && $ResourceExists($1_account_Account_$memory#99, $t14))) || (!$ResourceExists($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory#100, $t14) && !true)) || ((!$ResourceExists($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory#100, $t14) && $t15) && (($guid_creation_num#$1_account_Account($t16) + 2) > 18446744073709551615))) || ((!$ResourceExists($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory#100, $t14) && $t15) && (($guid_creation_num#$1_account_Account($t16) + 2) >= 1125899906842624))); + + // abort($t20) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:312:5+1731 + $abort_code := $t20; + $abort_flag := true; + return; + +} + +// fun vesting::create_vesting_schedule [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:418:5+672 +procedure {:timeLimit 200} $1_vesting_create_vesting_schedule$verify(_$t0: Vec ($1_fixed_point32_FixedPoint32), _$t1: int, _$t2: int) returns ($ret0: $1_vesting_VestingSchedule) +{ + // declare local variables + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: bool; + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: bool; + var $t11: int; + var $t12: int; + var $t13: int; + var $t14: bool; + var $t15: int; + var $t16: int; + var $t17: int; + var $t18: $1_vesting_VestingSchedule; + var $t0: Vec ($1_fixed_point32_FixedPoint32); + var $t1: int; + var $t2: int; + var $temp_0'$1_vesting_VestingSchedule': $1_vesting_VestingSchedule; + var $temp_0'u64': int; + var $temp_0'vec'$1_fixed_point32_FixedPoint32'': Vec ($1_fixed_point32_FixedPoint32); + var $1_timestamp_CurrentTimeMicroseconds_$memory#45: $Memory $1_timestamp_CurrentTimeMicroseconds; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:418:5+1 + assume {:print "$at(2,20152,20153)"} true; + assume $IsValid'vec'$1_fixed_point32_FixedPoint32''($t0); + + // assume WellFormed($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:418:5+1 + assume $IsValid'u64'($t1); + + // assume WellFormed($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:418:5+1 + assume $IsValid'u64'($t2); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:418:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_chain_status_GenesisEndMarker_$memory, $a_0)}(var $rsc := $ResourceValue($1_chain_status_GenesisEndMarker_$memory, $a_0); + ($IsValid'$1_chain_status_GenesisEndMarker'($rsc)))); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:418:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_timestamp_CurrentTimeMicroseconds_$memory, $a_0)}(var $rsc := $ResourceValue($1_timestamp_CurrentTimeMicroseconds_$memory, $a_0); + ($IsValid'$1_timestamp_CurrentTimeMicroseconds'($rsc)))); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:418:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_reconfiguration_Configuration_$memory, $a_0)}(var $rsc := $ResourceValue($1_reconfiguration_Configuration_$memory, $a_0); + ($IsValid'$1_reconfiguration_Configuration'($rsc)))); + + // assume Implies(chain_status::$is_operating(), exists(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:418:5+672 + // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.spec.move:4:9+93 + assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory, 1)); + + // assume Implies(chain_status::$is_operating(), Ge(timestamp::spec_now_microseconds(), reconfiguration::$last_reconfiguration_time())) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:418:5+672 + // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/reconfiguration.spec.move:8:9+137 + assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> ($1_timestamp_spec_now_microseconds($1_timestamp_CurrentTimeMicroseconds_$memory) >= $1_reconfiguration_$last_reconfiguration_time($1_reconfiguration_Configuration_$memory))); + + // @45 := save_mem(timestamp::CurrentTimeMicroseconds) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:418:5+1 + $1_timestamp_CurrentTimeMicroseconds_$memory#45 := $1_timestamp_CurrentTimeMicroseconds_$memory; + + // trace_local[schedule]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:418:5+1 + assume {:print "$track_local(57,7,0):", $t0} $t0 == $t0; + + // trace_local[start_timestamp_secs]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:418:5+1 + assume {:print "$track_local(57,7,1):", $t1} $t1 == $t1; + + // trace_local[period_duration]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:418:5+1 + assume {:print "$track_local(57,7,2):", $t2} $t2 == $t2; + + // $t3 := vector::length($t0) on_abort goto L10 with $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:423:17+25 + assume {:print "$at(2,20334,20359)"} true; + call $t3 := $1_vector_length'$1_fixed_point32_FixedPoint32'($t0); + if ($abort_flag) { + assume {:print "$at(2,20334,20359)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(57,7):", $t4} $t4 == $t4; + goto L10; + } + + // $t5 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:423:45+1 + $t5 := 0; + assume $IsValid'u64'($t5); + + // $t6 := >($t3, $t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:423:43+1 + call $t6 := $Gt($t3, $t5); + + // if ($t6) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:423:9+88 + if ($t6) { goto L1; } else { goto L0; } + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:423:9+88 +L1: + + // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:423:9+88 + assume {:print "$at(2,20326,20414)"} true; + goto L2; + + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:423:72+23 +L0: + + // $t7 := 2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:423:72+23 + assume {:print "$at(2,20389,20412)"} true; + $t7 := 2; + assume $IsValid'u64'($t7); + + // $t8 := error::invalid_argument($t7) on_abort goto L10 with $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:423:48+48 + call $t8 := $1_error_invalid_argument($t7); + if ($abort_flag) { + assume {:print "$at(2,20365,20413)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(57,7):", $t4} $t4 == $t4; + goto L10; + } + + // trace_abort($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:423:9+88 + assume {:print "$at(2,20326,20414)"} true; + assume {:print "$track_abort(57,7):", $t8} $t8 == $t8; + + // $t4 := move($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:423:9+88 + $t4 := $t8; + + // goto L10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:423:9+88 + goto L10; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:424:17+15 + assume {:print "$at(2,20432,20447)"} true; +L2: + + // $t9 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:424:35+1 + assume {:print "$at(2,20450,20451)"} true; + $t9 := 0; + assume $IsValid'u64'($t9); + + // $t10 := >($t2, $t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:424:33+1 + call $t10 := $Gt($t2, $t9); + + // if ($t10) goto L4 else goto L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:424:9+84 + if ($t10) { goto L4; } else { goto L3; } + + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:424:9+84 +L4: + + // goto L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:424:9+84 + assume {:print "$at(2,20424,20508)"} true; + goto L5; + + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:424:62+29 +L3: + + // $t11 := 3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:424:62+29 + assume {:print "$at(2,20477,20506)"} true; + $t11 := 3; + assume $IsValid'u64'($t11); + + // $t12 := error::invalid_argument($t11) on_abort goto L10 with $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:424:38+54 + call $t12 := $1_error_invalid_argument($t11); + if ($abort_flag) { + assume {:print "$at(2,20453,20507)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(57,7):", $t4} $t4 == $t4; + goto L10; + } + + // trace_abort($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:424:9+84 + assume {:print "$at(2,20424,20508)"} true; + assume {:print "$track_abort(57,7):", $t12} $t12 == $t12; + + // $t4 := move($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:424:9+84 + $t4 := $t12; + + // goto L10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:424:9+84 + goto L10; + + // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:426:13+20 + assume {:print "$at(2,20539,20559)"} true; +L5: + + // $t13 := timestamp::now_seconds() on_abort goto L10 with $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:426:37+24 + assume {:print "$at(2,20563,20587)"} true; + call $t13 := $1_timestamp_now_seconds(); + if ($abort_flag) { + assume {:print "$at(2,20563,20587)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(57,7):", $t4} $t4 == $t4; + goto L10; + } + + // $t14 := >=($t1, $t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:426:34+2 + call $t14 := $Ge($t1, $t13); + + // if ($t14) goto L7 else goto L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:425:9+142 + assume {:print "$at(2,20518,20660)"} true; + if ($t14) { goto L7; } else { goto L6; } + + // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:425:9+142 +L7: + + // goto L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:425:9+142 + assume {:print "$at(2,20518,20660)"} true; + goto L8; + + // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:427:37+23 + assume {:print "$at(2,20625,20648)"} true; +L6: + + // $t15 := 6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:427:37+23 + assume {:print "$at(2,20625,20648)"} true; + $t15 := 6; + assume $IsValid'u64'($t15); + + // $t16 := error::invalid_argument($t15) on_abort goto L10 with $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:427:13+48 + call $t16 := $1_error_invalid_argument($t15); + if ($abort_flag) { + assume {:print "$at(2,20601,20649)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(57,7):", $t4} $t4 == $t4; + goto L10; + } + + // trace_abort($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:425:9+142 + assume {:print "$at(2,20518,20660)"} true; + assume {:print "$track_abort(57,7):", $t16} $t16 == $t16; + + // $t4 := move($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:425:9+142 + $t4 := $t16; + + // goto L10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:425:9+142 + goto L10; + + // label L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:431:13+8 + assume {:print "$at(2,20701,20709)"} true; +L8: + + // $t17 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:434:33+1 + assume {:print "$at(2,20806,20807)"} true; + $t17 := 0; + assume $IsValid'u64'($t17); + + // $t18 := pack vesting::VestingSchedule($t0, $t1, $t2, $t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:430:9+147 + assume {:print "$at(2,20671,20818)"} true; + $t18 := $1_vesting_VestingSchedule($t0, $t1, $t2, $t17); + + // trace_return[0]($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:430:9+147 + assume {:print "$track_return(57,7,0):", $t18} $t18 == $t18; + + // label L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:436:5+1 + assume {:print "$at(2,20823,20824)"} true; +L9: + + // assert Not(Not(Gt(Len($t0), 0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:131:9+31 + assume {:print "$at(3,6115,6146)"} true; + assert {:msg "assert_failed(3,6115,6146): function does not abort under this condition"} + !!(LenVec($t0) > 0); + + // assert Not(Not(Gt($t2, 0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:132:9+33 + assume {:print "$at(3,6155,6188)"} true; + assert {:msg "assert_failed(3,6155,6188): function does not abort under this condition"} + !!($t2 > 0); + + // assert Not(Not(exists[@45](0x1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:133:9+72 + assume {:print "$at(3,6197,6269)"} true; + assert {:msg "assert_failed(3,6197,6269): function does not abort under this condition"} + !!$ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory#45, 1); + + // assert Not(Not(Ge($t1, timestamp::$now_seconds[@45]()))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:134:9+62 + assume {:print "$at(3,6278,6340)"} true; + assert {:msg "assert_failed(3,6278,6340): function does not abort under this condition"} + !!($t1 >= $1_timestamp_$now_seconds($1_timestamp_CurrentTimeMicroseconds_$memory#45)); + + // return $t18 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:134:9+62 + $ret0 := $t18; + return; + + // label L10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:436:5+1 + assume {:print "$at(2,20823,20824)"} true; +L10: + + // assert Or(Or(Or(Not(Gt(Len($t0), 0)), Not(Gt($t2, 0))), Not(exists[@45](0x1))), Not(Ge($t1, timestamp::$now_seconds[@45]()))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:126:5+399 + assume {:print "$at(3,5947,6346)"} true; + assert {:msg "assert_failed(3,5947,6346): abort not covered by any of the `aborts_if` clauses"} + (((!(LenVec($t0) > 0) || !($t2 > 0)) || !$ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory#45, 1)) || !($t1 >= $1_timestamp_$now_seconds($1_timestamp_CurrentTimeMicroseconds_$memory#45))); + + // abort($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:126:5+399 + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun vesting::distribute_many [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:664:5+420 +procedure {:timeLimit 200} $1_vesting_distribute_many$verify(_$t0: Vec (int)) returns () +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: Vec (int); + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: bool; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: int; + var $t12: bool; + var $t13: int; + var $t14: int; + var $t15: int; + var $t0: Vec (int); + var $temp_0'u64': int; + var $temp_0'vec'address'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:664:5+1 + assume {:print "$at(2,31507,31508)"} true; + assume $IsValid'vec'address''($t0); + + // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.rotation_capability_offer($rsc)))), 1), Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.signer_capability_offer($rsc)))), 1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:664:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_account_Account_$memory, $a_0)}(var $rsc := $ResourceValue($1_account_Account_$memory, $a_0); + (($IsValid'$1_account_Account'($rsc) && ((LenVec($vec#$1_option_Option'address'($for#$1_account_CapabilityOffer'$1_account_RotationCapability'($rotation_capability_offer#$1_account_Account($rsc)))) <= 1) && (LenVec($vec#$1_option_Option'address'($for#$1_account_CapabilityOffer'$1_account_SignerCapability'($signer_capability_offer#$1_account_Account($rsc)))) <= 1)))))); + + // assume forall $rsc: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: select option::Option.vec(select coin::CoinInfo.supply($rsc)): And(And(And(And(And(Iff(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($elem)), option::$is_none(select optional_aggregator::OptionalAggregator.integer($elem))), Iff(option::$is_some(select optional_aggregator::OptionalAggregator.integer($elem)), option::$is_none(select optional_aggregator::OptionalAggregator.aggregator($elem)))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.integer($elem)), Le(select optional_aggregator::Integer.value(option::$borrow(select optional_aggregator::OptionalAggregator.integer($elem))), select optional_aggregator::Integer.limit(option::$borrow(select optional_aggregator::OptionalAggregator.integer($elem)))))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($elem)), Le(aggregator::spec_aggregator_get_val(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($elem))), aggregator::spec_get_limit(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($elem)))))), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.aggregator($elem))), 1)), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.integer($elem))), 1)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:664:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'$1_aptos_coin_AptosCoin''($rsc) && ((LenVec($vec#$1_option_Option'$1_optional_aggregator_OptionalAggregator'($supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($rsc))) <= 1) && (var $range_1 := $vec#$1_option_Option'$1_optional_aggregator_OptionalAggregator'($supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($rsc)); (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)) <==> $1_option_$is_none'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)) ==> ($value#$1_optional_aggregator_Integer($1_option_$borrow'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) <= $limit#$1_optional_aggregator_Integer($1_option_$borrow'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)))))) && ($1_option_$is_some'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem))) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)))))) && (LenVec($vec#$1_option_Option'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem))) <= 1)) && (LenVec($vec#$1_option_Option'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) <= 1))))))))))); + + // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:664:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $a_0); + ($IsValid'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''($rsc)))); + + // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:664:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin''($rsc)))); + + // assume exists>(0x0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:664:5+1 + assume $ResourceExists($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, 0); + + // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:664:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin''($rsc)))); + + // assume exists>(0x0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:664:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, 0); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:664:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_aptos_account_DirectTransferConfig_$memory, $a_0)}(var $rsc := $ResourceValue($1_aptos_account_DirectTransferConfig_$memory, $a_0); + ($IsValid'$1_aptos_account_DirectTransferConfig'($rsc)))); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:664:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_chain_status_GenesisEndMarker_$memory, $a_0)}(var $rsc := $ResourceValue($1_chain_status_GenesisEndMarker_$memory, $a_0); + ($IsValid'$1_chain_status_GenesisEndMarker'($rsc)))); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:664:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_timestamp_CurrentTimeMicroseconds_$memory, $a_0)}(var $rsc := $ResourceValue($1_timestamp_CurrentTimeMicroseconds_$memory, $a_0); + ($IsValid'$1_timestamp_CurrentTimeMicroseconds'($rsc)))); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:664:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_stake_StakePool_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_StakePool_$memory, $a_0); + ($IsValid'$1_stake_StakePool'($rsc)))); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:664:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorConfig_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorConfig_$memory, $a_0); + ($IsValid'$1_stake_ValidatorConfig'($rsc)))); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:664:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorPerformance_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorPerformance_$memory, $a_0); + ($IsValid'$1_stake_ValidatorPerformance'($rsc)))); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:664:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorSet_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorSet_$memory, $a_0); + ($IsValid'$1_stake_ValidatorSet'($rsc)))); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:664:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_reconfiguration_Configuration_$memory, $a_0)}(var $rsc := $ResourceValue($1_reconfiguration_Configuration_$memory, $a_0); + ($IsValid'$1_reconfiguration_Configuration'($rsc)))); + + // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), forall $key: select staking_contract::Store.staking_contracts($rsc): And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), i), Index(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:664:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_staking_contract_Store_$memory, $a_0)}(var $rsc := $ResourceValue($1_staking_contract_Store_$memory, $a_0); + (($IsValid'$1_staking_contract_Store'($rsc) && (var $range_1 := $staking_contracts#$1_staking_contract_Store($rsc); (forall $key: int :: ContainsTable($range_1, $EncodeKey'address'($key)) ==> (((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), addr)))) && (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))))); (var $range_3 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))))); (forall $i_4: int, $i_5: int :: $InRange($range_2, $i_4) ==> $InRange($range_3, $i_5) ==> (var i := $i_4; + (var j := $i_5; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), i), ReadVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), j)) ==> $IsEqual'num'(i, j)))))))))))))))); + + // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:664:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); + (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; + (var j := $i_4; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); + + // assume Implies(chain_status::$is_operating(), exists(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:664:5+420 + // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.spec.move:4:9+93 + assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory, 1)); + + // assume Implies(exists(0x1), stake::validator_set_is_valid()) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:664:5+420 + // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:8:9+92 + assume ($ResourceExists($1_stake_ValidatorSet_$memory, 1) ==> $1_stake_validator_set_is_valid($1_stake_StakePool_$memory, $1_stake_ValidatorConfig_$memory, $1_stake_ValidatorPerformance_$memory, $1_stake_ValidatorSet_$memory)); + + // assume Implies(chain_status::$is_operating(), exists(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:664:5+420 + // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:12:9+96 + assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_stake_ValidatorSet_$memory, 1)); + + // assume Implies(chain_status::$is_operating(), Ge(timestamp::spec_now_microseconds(), reconfiguration::$last_reconfiguration_time())) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:664:5+420 + // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/reconfiguration.spec.move:8:9+137 + assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> ($1_timestamp_spec_now_microseconds($1_timestamp_CurrentTimeMicroseconds_$memory) >= $1_reconfiguration_$last_reconfiguration_time($1_reconfiguration_Configuration_$memory))); + + // trace_local[contract_addresses]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:664:5+1 + assume {:print "$track_local(57,9,0):", $t0} $t0 == $t0; + + // $t4 := vector::length
($t0) on_abort goto L9 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:665:19+35 + assume {:print "$at(2,31622,31657)"} true; + call $t4 := $1_vector_length'address'($t0); + if ($abort_flag) { + assume {:print "$at(2,31622,31657)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(57,9):", $t5} $t5 == $t5; + goto L9; + } + + // $t6 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:667:24+1 + assume {:print "$at(2,31683,31684)"} true; + $t6 := 0; + assume $IsValid'u64'($t6); + + // $t7 := !=($t4, $t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:667:21+2 + $t7 := !$IsEqual'u64'($t4, $t6); + + // if ($t7) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:667:9+72 + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:667:9+72 +L1: + + // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:667:9+72 + assume {:print "$at(2,31668,31740)"} true; + goto L2; + + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:667:51+28 +L0: + + // $t8 := 16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:667:51+28 + assume {:print "$at(2,31710,31738)"} true; + $t8 := 16; + assume $IsValid'u64'($t8); + + // $t9 := error::invalid_argument($t8) on_abort goto L9 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:667:27+53 + call $t9 := $1_error_invalid_argument($t8); + if ($abort_flag) { + assume {:print "$at(2,31686,31739)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(57,9):", $t5} $t5 == $t5; + goto L9; + } + + // trace_abort($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:667:9+72 + assume {:print "$at(2,31668,31740)"} true; + assume {:print "$track_abort(57,9):", $t9} $t9 == $t9; + + // $t5 := move($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:667:9+72 + $t5 := $t9; + + // goto L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:667:9+72 + goto L9; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:669:30+19 + assume {:print "$at(2,31772,31791)"} true; +L2: + + // trace_local[v#245]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:669:9+169 + assume {:print "$at(2,31751,31920)"} true; + assume {:print "$track_local(57,9,3):", $t0} $t0 == $t0; + + // $t10 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:261:17+1 + assume {:print "$at(18,9246,9247)"} true; + $t10 := 0; + assume $IsValid'u64'($t10); + + // trace_local[i#247]($t10) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:261:13+1 + assume {:print "$track_local(57,9,1):", $t10} $t10 == $t10; + + // $t11 := vector::length
($t0) on_abort goto L9 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:262:19+9 + assume {:print "$at(18,9267,9276)"} true; + call $t11 := $1_vector_length'address'($t0); + if ($abort_flag) { + assume {:print "$at(18,9267,9276)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(57,9):", $t5} $t5 == $t5; + goto L9; + } + + // trace_local[len#248]($t11) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:262:13+3 + assume {:print "$track_local(57,9,2):", $t11} $t11 == $t11; + + // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume {:print "$at(18,9293,9294)"} true; +L6: + + // $t1 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume {:print "$at(18,9293,9294)"} true; + havoc $t1; + + // assume WellFormed($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume $IsValid'u64'($t1); + + // $t12 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + havoc $t12; + + // assume WellFormed($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume $IsValid'bool'($t12); + + // $t13 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + havoc $t13; + + // assume WellFormed($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume $IsValid'address'($t13); + + // $t14 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + havoc $t14; + + // assume WellFormed($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume $IsValid'u64'($t14); + + // $t15 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + havoc $t15; + + // assume WellFormed($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume $IsValid'u64'($t15); + + // trace_local[i#247]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume {:print "$info(): enter loop, variable(s) i#247 havocked and reassigned"} true; + assume {:print "$track_local(57,9,1):", $t1} $t1 == $t1; + + // assume Not(AbortFlag()) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume !$abort_flag; + + // $t12 := <($t1, $t11) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:18+1 + call $t12 := $Lt($t1, $t11); + + // if ($t12) goto L4 else goto L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:9+78 + if ($t12) { goto L4; } else { goto L3; } + + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:9+78 +L4: + + // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:264:22+1 + assume {:print "$at(18,9325,9326)"} true; +L5: + + // $t13 := vector::borrow
($t0, $t1) on_abort goto L9 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:264:15+12 + assume {:print "$at(18,9318,9330)"} true; + call $t13 := $1_vector_borrow'address'($t0, $t1); + if ($abort_flag) { + assume {:print "$at(18,9318,9330)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(57,9):", $t5} $t5 == $t5; + goto L9; + } + + // vesting::distribute($t13) on_abort goto L9 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:671:13+28 + assume {:print "$at(2,31880,31908)"} true; + call $1_vesting_distribute($t13); + if ($abort_flag) { + assume {:print "$at(2,31880,31908)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(57,9):", $t5} $t5 == $t5; + goto L9; + } + + // $t14 := 1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:265:21+1 + assume {:print "$at(18,9353,9354)"} true; + $t14 := 1; + assume $IsValid'u64'($t14); + + // $t15 := +($t1, $t14) on_abort goto L9 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:265:19+1 + call $t15 := $AddU64($t1, $t14); + if ($abort_flag) { + assume {:print "$at(18,9351,9352)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(57,9):", $t5} $t5 == $t5; + goto L9; + } + + // trace_local[i#247]($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:265:13+1 + assume {:print "$track_local(57,9,1):", $t15} $t15 == $t15; + + // goto L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:265:13+9 + goto L7; + + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:672:11+1 + assume {:print "$at(2,31920,31921)"} true; +L3: + + // goto L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:672:11+1 + assume {:print "$at(2,31920,31921)"} true; + goto L8; + + // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:672:11+1 + // Loop invariant checking block for the loop started with header: L6 +L7: + + // stop() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:672:11+1 + assume {:print "$at(2,31920,31921)"} true; + assume false; + return; + + // label L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:673:5+1 + assume {:print "$at(2,31926,31927)"} true; +L8: + + // assert Not(false) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:673:5+1 + assume {:print "$at(2,31926,31927)"} true; + assert {:msg "assert_failed(2,31926,31927): function does not abort under this condition"} + !false; + + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:673:5+1 + return; + + // label L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:673:5+1 +L9: + + // abort($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:673:5+1 + assume {:print "$at(2,31926,31927)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun vesting::get_beneficiary [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:965:5+287 +procedure {:inline 1} $1_vesting_get_beneficiary(_$t0: $1_vesting_VestingContract, _$t1: int) returns ($ret0: int) +{ + // declare local variables + var $t2: int; + var $t3: Table int (int); + var $t4: bool; + var $t5: int; + var $t6: Table int (int); + var $t0: $1_vesting_VestingContract; + var $t1: int; + var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; + var $temp_0'address': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[contract]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:965:5+1 + assume {:print "$at(2,45284,45285)"} true; + assume {:print "$track_local(57,10,0):", $t0} $t0 == $t0; + + // trace_local[shareholder]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:965:5+1 + assume {:print "$track_local(57,10,1):", $t1} $t1 == $t1; + + // $t3 := get_field.beneficiaries($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:966:38+23 + assume {:print "$at(2,45402,45425)"} true; + $t3 := $beneficiaries#$1_vesting_VestingContract($t0); + + // $t4 := simple_map::contains_key($t3, $t1) on_abort goto L4 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:966:13+63 + call $t4 := $1_simple_map_contains_key'address_address'($t3, $t1); + if ($abort_flag) { + assume {:print "$at(2,45377,45440)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(57,10):", $t5} $t5 == $t5; + goto L4; + } + + // if ($t4) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:966:9+192 + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:967:34+8 + assume {:print "$at(2,45477,45485)"} true; +L1: + + // $t6 := get_field.beneficiaries($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:967:33+23 + assume {:print "$at(2,45476,45499)"} true; + $t6 := $beneficiaries#$1_vesting_VestingContract($t0); + + // $t2 := simple_map::borrow($t6, $t1) on_abort goto L4 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:967:14+57 + call $t2 := $1_simple_map_borrow'address_address'($t6, $t1); + if ($abort_flag) { + assume {:print "$at(2,45457,45514)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(57,10):", $t5} $t5 == $t5; + goto L4; + } + + // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:966:9+192 + assume {:print "$at(2,45373,45565)"} true; + goto L2; + + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:966:9+192 +L0: + + // $t2 := $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:966:9+192 + assume {:print "$at(2,45373,45565)"} true; + $t2 := $t1; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:966:9+192 +L2: + + // trace_return[0]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:966:9+192 + assume {:print "$at(2,45373,45565)"} true; + assume {:print "$track_return(57,10,0):", $t2} $t2 == $t2; + + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:971:5+1 + assume {:print "$at(2,45570,45571)"} true; +L3: + + // return $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:971:5+1 + assume {:print "$at(2,45570,45571)"} true; + $ret0 := $t2; + return; + + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:971:5+1 +L4: + + // abort($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:971:5+1 + assume {:print "$at(2,45570,45571)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun vesting::get_beneficiary [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:965:5+287 +procedure {:timeLimit 200} $1_vesting_get_beneficiary$verify(_$t0: $1_vesting_VestingContract, _$t1: int) returns ($ret0: int) +{ + // declare local variables + var $t2: int; + var $t3: Table int (int); + var $t4: bool; + var $t5: int; + var $t6: Table int (int); + var $t0: $1_vesting_VestingContract; + var $t1: int; + var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; + var $temp_0'address': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume And(WellFormed($t0), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t0)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t0)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t0)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t0)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t0)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t0)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:965:5+1 + assume {:print "$at(2,45284,45285)"} true; + assume ($IsValid'$1_vesting_VestingContract'($t0) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t0)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t0)), addr)))) && (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t0)))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t0)))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; + (var j := $i_3; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t0)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t0)), j)) ==> $IsEqual'num'(i, j)))))))))); + + // assume WellFormed($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:965:5+1 + assume $IsValid'address'($t1); + + // trace_local[contract]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:965:5+1 + assume {:print "$track_local(57,10,0):", $t0} $t0 == $t0; + + // trace_local[shareholder]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:965:5+1 + assume {:print "$track_local(57,10,1):", $t1} $t1 == $t1; + + // $t3 := get_field.beneficiaries($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:966:38+23 + assume {:print "$at(2,45402,45425)"} true; + $t3 := $beneficiaries#$1_vesting_VestingContract($t0); + + // $t4 := simple_map::contains_key($t3, $t1) on_abort goto L4 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:966:13+63 + call $t4 := $1_simple_map_contains_key'address_address'($t3, $t1); + if ($abort_flag) { + assume {:print "$at(2,45377,45440)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(57,10):", $t5} $t5 == $t5; + goto L4; + } + + // if ($t4) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:966:9+192 + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:967:34+8 + assume {:print "$at(2,45477,45485)"} true; +L1: + + // $t6 := get_field.beneficiaries($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:967:33+23 + assume {:print "$at(2,45476,45499)"} true; + $t6 := $beneficiaries#$1_vesting_VestingContract($t0); + + // $t2 := simple_map::borrow($t6, $t1) on_abort goto L4 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:967:14+57 + call $t2 := $1_simple_map_borrow'address_address'($t6, $t1); + if ($abort_flag) { + assume {:print "$at(2,45457,45514)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(57,10):", $t5} $t5 == $t5; + goto L4; + } + + // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:966:9+192 + assume {:print "$at(2,45373,45565)"} true; + goto L2; + + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:966:9+192 +L0: + + // $t2 := $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:966:9+192 + assume {:print "$at(2,45373,45565)"} true; + $t2 := $t1; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:966:9+192 +L2: + + // trace_return[0]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:966:9+192 + assume {:print "$at(2,45373,45565)"} true; + assume {:print "$track_return(57,10,0):", $t2} $t2 == $t2; + + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:971:5+1 + assume {:print "$at(2,45570,45571)"} true; +L3: + + // assert Not(false) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:366:9+16 + assume {:print "$at(3,15410,15426)"} true; + assert {:msg "assert_failed(3,15410,15426): function does not abort under this condition"} + !false; + + // return $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:366:9+16 + $ret0 := $t2; + return; + + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:971:5+1 + assume {:print "$at(2,45570,45571)"} true; +L4: + + // assert false at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:365:5+112 + assume {:print "$at(3,15320,15432)"} true; + assert {:msg "assert_failed(3,15320,15432): abort not covered by any of the `aborts_if` clauses"} + false; + + // abort($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:365:5+112 + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun vesting::get_role_holder [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:893:5+456 +procedure {:inline 1} $1_vesting_get_role_holder(_$t0: int, _$t1: $1_string_String) returns ($ret0: int) +{ + // declare local variables + var $t2: Table int (int); + var $t3: Table int (int); + var $t4: bool; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: $1_vesting_VestingAccountManagement; + var $t9: Table int (int); + var $t10: bool; + var $t11: int; + var $t12: int; + var $t13: int; + var $t0: int; + var $t1: $1_string_String; + var $temp_0'$1_simple_map_SimpleMap'$1_string_String_address'': Table int (int); + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'address': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // assume Identical($t3, select vesting::VestingAccountManagement.roles(global($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:298:9+69 + assume {:print "$at(3,12239,12308)"} true; + assume ($t3 == $roles#$1_vesting_VestingAccountManagement($ResourceValue($1_vesting_VestingAccountManagement_$memory, $t0))); + + // trace_local[contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:893:5+1 + assume {:print "$at(2,41215,41216)"} true; + assume {:print "$track_local(57,11,0):", $t0} $t0 == $t0; + + // trace_local[role]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:893:5+1 + assume {:print "$track_local(57,11,1):", $t1} $t1 == $t1; + + // $t4 := exists($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:894:17+6 + assume {:print "$at(2,41344,41350)"} true; + $t4 := $ResourceExists($1_vesting_VestingAccountManagement_$memory, $t0); + + // if ($t4) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:894:9+108 + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:894:9+108 +L1: + + // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:894:9+108 + assume {:print "$at(2,41336,41444)"} true; + goto L2; + + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:894:86+29 +L0: + + // $t5 := 13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:894:86+29 + assume {:print "$at(2,41413,41442)"} true; + $t5 := 13; + assume $IsValid'u64'($t5); + + // $t6 := error::not_found($t5) on_abort goto L7 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:894:69+47 + call $t6 := $1_error_not_found($t5); + if ($abort_flag) { + assume {:print "$at(2,41396,41443)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(57,11):", $t7} $t7 == $t7; + goto L7; + } + + // trace_abort($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:894:9+108 + assume {:print "$at(2,41336,41444)"} true; + assume {:print "$track_abort(57,11):", $t6} $t6 == $t6; + + // $t7 := move($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:894:9+108 + $t7 := $t6; + + // goto L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:894:9+108 + goto L7; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:895:62+16 + assume {:print "$at(2,41507,41523)"} true; +L2: + + // $t8 := get_global($t0) on_abort goto L7 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:895:22+13 + assume {:print "$at(2,41467,41480)"} true; + if (!$ResourceExists($1_vesting_VestingAccountManagement_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t8 := $ResourceValue($1_vesting_VestingAccountManagement_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(2,41467,41480)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(57,11):", $t7} $t7 == $t7; + goto L7; + } + + // $t9 := get_field.roles($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:895:21+64 + $t9 := $roles#$1_vesting_VestingAccountManagement($t8); + + // trace_local[roles]($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:895:13+5 + assume {:print "$track_local(57,11,2):", $t9} $t9 == $t9; + + // $t10 := simple_map::contains_key($t9, $t1) on_abort goto L7 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:896:17+38 + assume {:print "$at(2,41548,41586)"} true; + call $t10 := $1_simple_map_contains_key'$1_string_String_address'($t9, $t1); + if ($abort_flag) { + assume {:print "$at(2,41548,41586)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(57,11):", $t7} $t7 == $t7; + goto L7; + } + + // if ($t10) goto L4 else goto L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:896:9+82 + if ($t10) { goto L4; } else { goto L3; } + + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:896:9+82 +L4: + + // goto L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:896:9+82 + assume {:print "$at(2,41540,41622)"} true; + goto L5; + + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:896:9+82 +L3: + + // $t11 := 14 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:896:74+15 + assume {:print "$at(2,41605,41620)"} true; + $t11 := 14; + assume $IsValid'u64'($t11); + + // $t12 := error::not_found($t11) on_abort goto L7 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:896:57+33 + call $t12 := $1_error_not_found($t11); + if ($abort_flag) { + assume {:print "$at(2,41588,41621)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(57,11):", $t7} $t7 == $t7; + goto L7; + } + + // trace_abort($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:896:9+82 + assume {:print "$at(2,41540,41622)"} true; + assume {:print "$track_abort(57,11):", $t12} $t12 == $t12; + + // $t7 := move($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:896:9+82 + $t7 := $t12; + + // goto L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:896:9+82 + goto L7; + + // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:897:29+5 + assume {:print "$at(2,41652,41657)"} true; +L5: + + // $t13 := simple_map::borrow($t9, $t1) on_abort goto L7 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:897:10+32 + assume {:print "$at(2,41633,41665)"} true; + call $t13 := $1_simple_map_borrow'$1_string_String_address'($t9, $t1); + if ($abort_flag) { + assume {:print "$at(2,41633,41665)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(57,11):", $t7} $t7 == $t7; + goto L7; + } + + // trace_return[0]($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:897:9+33 + assume {:print "$track_return(57,11,0):", $t13} $t13 == $t13; + + // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:898:5+1 + assume {:print "$at(2,41670,41671)"} true; +L6: + + // return $t13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:898:5+1 + assume {:print "$at(2,41670,41671)"} true; + $ret0 := $t13; + return; + + // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:898:5+1 +L7: + + // abort($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:898:5+1 + assume {:print "$at(2,41670,41671)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun vesting::get_role_holder [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:893:5+456 +procedure {:timeLimit 200} $1_vesting_get_role_holder$verify(_$t0: int, _$t1: $1_string_String) returns ($ret0: int) +{ + // declare local variables + var $t2: Table int (int); + var $t3: Table int (int); + var $t4: bool; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: $1_vesting_VestingAccountManagement; + var $t9: Table int (int); + var $t10: bool; + var $t11: int; + var $t12: int; + var $t13: int; + var $t0: int; + var $t1: $1_string_String; + var $temp_0'$1_simple_map_SimpleMap'$1_string_String_address'': Table int (int); + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'address': int; + var $1_vesting_VestingAccountManagement_$memory#87: $Memory $1_vesting_VestingAccountManagement; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:893:5+1 + assume {:print "$at(2,41215,41216)"} true; + assume $IsValid'address'($t0); + + // assume WellFormed($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:893:5+1 + assume $IsValid'$1_string_String'($t1); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:893:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingAccountManagement_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingAccountManagement_$memory, $a_0); + ($IsValid'$1_vesting_VestingAccountManagement'($rsc)))); + + // assume Identical($t3, select vesting::VestingAccountManagement.roles(global($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:298:9+69 + assume {:print "$at(3,12239,12308)"} true; + assume ($t3 == $roles#$1_vesting_VestingAccountManagement($ResourceValue($1_vesting_VestingAccountManagement_$memory, $t0))); + + // @87 := save_mem(vesting::VestingAccountManagement) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:893:5+1 + assume {:print "$at(2,41215,41216)"} true; + $1_vesting_VestingAccountManagement_$memory#87 := $1_vesting_VestingAccountManagement_$memory; + + // trace_local[contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:893:5+1 + assume {:print "$track_local(57,11,0):", $t0} $t0 == $t0; + + // trace_local[role]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:893:5+1 + assume {:print "$track_local(57,11,1):", $t1} $t1 == $t1; + + // $t4 := exists($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:894:17+6 + assume {:print "$at(2,41344,41350)"} true; + $t4 := $ResourceExists($1_vesting_VestingAccountManagement_$memory, $t0); + + // if ($t4) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:894:9+108 + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:894:9+108 +L1: + + // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:894:9+108 + assume {:print "$at(2,41336,41444)"} true; + goto L2; + + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:894:86+29 +L0: + + // $t5 := 13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:894:86+29 + assume {:print "$at(2,41413,41442)"} true; + $t5 := 13; + assume $IsValid'u64'($t5); + + // $t6 := error::not_found($t5) on_abort goto L7 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:894:69+47 + call $t6 := $1_error_not_found($t5); + if ($abort_flag) { + assume {:print "$at(2,41396,41443)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(57,11):", $t7} $t7 == $t7; + goto L7; + } + + // trace_abort($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:894:9+108 + assume {:print "$at(2,41336,41444)"} true; + assume {:print "$track_abort(57,11):", $t6} $t6 == $t6; + + // $t7 := move($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:894:9+108 + $t7 := $t6; + + // goto L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:894:9+108 + goto L7; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:895:62+16 + assume {:print "$at(2,41507,41523)"} true; +L2: + + // $t8 := get_global($t0) on_abort goto L7 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:895:22+13 + assume {:print "$at(2,41467,41480)"} true; + if (!$ResourceExists($1_vesting_VestingAccountManagement_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t8 := $ResourceValue($1_vesting_VestingAccountManagement_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(2,41467,41480)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(57,11):", $t7} $t7 == $t7; + goto L7; + } + + // $t9 := get_field.roles($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:895:21+64 + $t9 := $roles#$1_vesting_VestingAccountManagement($t8); + + // trace_local[roles]($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:895:13+5 + assume {:print "$track_local(57,11,2):", $t9} $t9 == $t9; + + // $t10 := simple_map::contains_key($t9, $t1) on_abort goto L7 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:896:17+38 + assume {:print "$at(2,41548,41586)"} true; + call $t10 := $1_simple_map_contains_key'$1_string_String_address'($t9, $t1); + if ($abort_flag) { + assume {:print "$at(2,41548,41586)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(57,11):", $t7} $t7 == $t7; + goto L7; + } + + // if ($t10) goto L4 else goto L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:896:9+82 + if ($t10) { goto L4; } else { goto L3; } + + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:896:9+82 +L4: + + // goto L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:896:9+82 + assume {:print "$at(2,41540,41622)"} true; + goto L5; + + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:896:9+82 +L3: + + // $t11 := 14 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:896:74+15 + assume {:print "$at(2,41605,41620)"} true; + $t11 := 14; + assume $IsValid'u64'($t11); + + // $t12 := error::not_found($t11) on_abort goto L7 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:896:57+33 + call $t12 := $1_error_not_found($t11); + if ($abort_flag) { + assume {:print "$at(2,41588,41621)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(57,11):", $t7} $t7 == $t7; + goto L7; + } + + // trace_abort($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:896:9+82 + assume {:print "$at(2,41540,41622)"} true; + assume {:print "$track_abort(57,11):", $t12} $t12 == $t12; + + // $t7 := move($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:896:9+82 + $t7 := $t12; + + // goto L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:896:9+82 + goto L7; + + // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:897:29+5 + assume {:print "$at(2,41652,41657)"} true; +L5: + + // $t13 := simple_map::borrow($t9, $t1) on_abort goto L7 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:897:10+32 + assume {:print "$at(2,41633,41665)"} true; + call $t13 := $1_simple_map_borrow'$1_string_String_address'($t9, $t1); + if ($abort_flag) { + assume {:print "$at(2,41633,41665)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(57,11):", $t7} $t7 == $t7; + goto L7; + } + + // trace_return[0]($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:897:9+33 + assume {:print "$track_return(57,11,0):", $t13} $t13 == $t13; + + // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:898:5+1 + assume {:print "$at(2,41670,41671)"} true; +L6: + + // assert Not(Not(exists[@87]($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:297:9+62 + assume {:print "$at(3,12168,12230)"} true; + assert {:msg "assert_failed(3,12168,12230): function does not abort under this condition"} + !!$ResourceExists($1_vesting_VestingAccountManagement_$memory#87, $t0); + + // assert Not(Not(simple_map::spec_contains_key[]($t3, $t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:299:9+53 + assume {:print "$at(3,12317,12370)"} true; + assert {:msg "assert_failed(3,12317,12370): function does not abort under this condition"} + !!$1_simple_map_spec_contains_key'$1_string_String_address'($t3, $t1); + + // return $t13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:299:9+53 + $ret0 := $t13; + return; + + // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:898:5+1 + assume {:print "$at(2,41670,41671)"} true; +L7: + + // assert Or(Not(exists[@87]($t0)), Not(simple_map::spec_contains_key[]($t3, $t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:296:5+289 + assume {:print "$at(3,12087,12376)"} true; + assert {:msg "assert_failed(3,12087,12376): abort not covered by any of the `aborts_if` clauses"} + (!$ResourceExists($1_vesting_VestingAccountManagement_$memory#87, $t0) || !$1_simple_map_spec_contains_key'$1_string_String_address'($t3, $t1)); + + // abort($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:296:5+289 + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun vesting::get_vesting_account_signer [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:903:5+315 +procedure {:timeLimit 200} $1_vesting_get_vesting_account_signer$verify(_$t0: $signer, _$t1: int) returns ($ret0: $signer) +{ + // declare local variables + var $t2: $Mutation ($1_vesting_VestingContract); + var $t3: $1_vesting_VestingContract; + var $t4: $Mutation ($1_vesting_VestingContract); + var $t5: int; + var $t6: $1_vesting_VestingContract; + var $t7: $1_vesting_VestingContract; + var $t8: $signer; + var $t0: $signer; + var $t1: int; + var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $1_vesting_VestingContract_$memory#74: $Memory $1_vesting_VestingContract; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:903:5+1 + assume {:print "$at(2,41923,41924)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($addr#$signer($t0)); + + // assume WellFormed($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:903:5+1 + assume $IsValid'address'($t1); + + // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:903:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); + (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; + (var j := $i_4; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); + + // assume Identical($t3, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:382:9+65 + assume {:print "$at(3,16064,16129)"} true; + assume ($t3 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); + + // @74 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:903:5+1 + assume {:print "$at(2,41923,41924)"} true; + $1_vesting_VestingContract_$memory#74 := $1_vesting_VestingContract_$memory; + + // trace_local[admin]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:903:5+1 + assume {:print "$track_local(57,12,0):", $t0} $t0 == $t0; + + // trace_local[contract_address]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:903:5+1 + assume {:print "$track_local(57,12,1):", $t1} $t1 == $t1; + + // $t4 := borrow_global($t1) on_abort goto L2 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:904:32+17 + assume {:print "$at(2,42070,42087)"} true; + if (!$ResourceExists($1_vesting_VestingContract_$memory, $t1)) { + call $ExecFailureAbort(); + } else { + $t4 := $Mutation($Global($t1), EmptyVec(), $ResourceValue($1_vesting_VestingContract_$memory, $t1)); + } + if ($abort_flag) { + assume {:print "$at(2,42070,42087)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(57,12):", $t5} $t5 == $t5; + goto L2; + } + + // trace_local[vesting_contract]($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:904:13+16 + $temp_0'$1_vesting_VestingContract' := $Dereference($t4); + assume {:print "$track_local(57,12,2):", $temp_0'$1_vesting_VestingContract'} $temp_0'$1_vesting_VestingContract' == $temp_0'$1_vesting_VestingContract'; + + // $t6 := read_ref($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:905:21+25 + assume {:print "$at(2,42144,42169)"} true; + $t6 := $Dereference($t4); + + // vesting::verify_admin($t0, $t6) on_abort goto L2 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:905:9+37 + call $1_vesting_verify_admin($t0, $t6); + if ($abort_flag) { + assume {:print "$at(2,42132,42169)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(57,12):", $t5} $t5 == $t5; + goto L2; + } + + // $t7 := read_ref($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:906:45+16 + assume {:print "$at(2,42215,42231)"} true; + $t7 := $Dereference($t4); + + // assert forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t4)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t4)), addr)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 + // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 + assume {:print "$at(59,538,673)"} true; + assert {:msg "assert_failed(59,538,673): data invariant does not hold"} + (forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t4))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t4))), addr)))); + + // assert forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t4)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t4)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t4)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t4)), j)), Eq(i, j)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 + // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 + assume {:print "$at(59,738,867)"} true; + assert {:msg "assert_failed(59,738,867): data invariant does not hold"} + (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t4))))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t4))))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; + (var j := $i_3; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t4))), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t4))), j)) ==> $IsEqual'num'(i, j)))))))); + + // $t8 := vesting::get_vesting_account_signer_internal($t7) on_abort goto L2 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:906:9+53 + assume {:print "$at(2,42179,42232)"} true; + call $t8 := $1_vesting_get_vesting_account_signer_internal($t7); + if ($abort_flag) { + assume {:print "$at(2,42179,42232)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(57,12):", $t5} $t5 == $t5; + goto L2; + } + + // trace_return[0]($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:906:9+53 + assume {:print "$track_return(57,12,0):", $t8} $t8 == $t8; + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:907:5+1 + assume {:print "$at(2,42237,42238)"} true; +L1: + + // assert Not(Not(exists[@74]($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:381:9+53 + assume {:print "$at(3,16002,16055)"} true; + assert {:msg "assert_failed(3,16002,16055): function does not abort under this condition"} + !!$ResourceExists($1_vesting_VestingContract_$memory#74, $t1); + + // assert Not(Neq
(signer::$address_of[]($t0), select vesting::VestingContract.admin($t3))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:383:9+62 + assume {:print "$at(3,16138,16200)"} true; + assert {:msg "assert_failed(3,16138,16200): function does not abort under this condition"} + !!$IsEqual'address'($1_signer_$address_of($t0), $admin#$1_vesting_VestingContract($t3)); + + // return $t8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:383:9+62 + $ret0 := $t8; + return; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:907:5+1 + assume {:print "$at(2,42237,42238)"} true; +L2: + + // assert Or(Not(exists[@74]($t1)), Neq
(signer::$address_of[]($t0), select vesting::VestingContract.admin($t3))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:302:5+127 + assume {:print "$at(3,12382,12509)"} true; + assert {:msg "assert_failed(3,12382,12509): abort not covered by any of the `aborts_if` clauses"} + (!$ResourceExists($1_vesting_VestingContract_$memory#74, $t1) || !$IsEqual'address'($1_signer_$address_of($t0), $admin#$1_vesting_VestingContract($t3))); + + // abort($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:302:5+127 + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun vesting::get_vesting_account_signer_internal [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:909:5+168 +procedure {:inline 1} $1_vesting_get_vesting_account_signer_internal(_$t0: $1_vesting_VestingContract) returns ($ret0: $signer) +{ + // declare local variables + var $t1: $1_account_SignerCapability; + var $t2: int; + var $t3: $signer; + var $t4: int; + var $t0: $1_vesting_VestingContract; + var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; + var $temp_0'signer': $signer; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[vesting_contract]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:909:5+1 + assume {:print "$at(2,42244,42245)"} true; + assume {:print "$track_local(57,13,0):", $t0} $t0 == $t0; + + // $t1 := get_field.signer_cap($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:910:48+28 + assume {:print "$at(2,42377,42405)"} true; + $t1 := $signer_cap#$1_vesting_VestingContract($t0); + + // assume Identical($t2, select account::SignerCapability.account($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:458:9+30 + assume {:print "$at(73,22226,22256)"} true; + assume ($t2 == $account#$1_account_SignerCapability($t1)); + + // $t3 := account::create_signer_with_capability($t1) on_abort goto L2 with $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:910:9+68 + assume {:print "$at(2,42338,42406)"} true; + call $t3 := $1_account_create_signer_with_capability($t1); + if ($abort_flag) { + assume {:print "$at(2,42338,42406)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(57,13):", $t4} $t4 == $t4; + goto L2; + } + + // trace_return[0]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:910:9+68 + assume {:print "$track_return(57,13,0):", $t3} $t3 == $t3; + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:911:5+1 + assume {:print "$at(2,42411,42412)"} true; +L1: + + // return $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:911:5+1 + assume {:print "$at(2,42411,42412)"} true; + $ret0 := $t3; + return; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:911:5+1 +L2: + + // abort($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:911:5+1 + assume {:print "$at(2,42411,42412)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun vesting::get_vesting_account_signer_internal [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:909:5+168 +procedure {:timeLimit 200} $1_vesting_get_vesting_account_signer_internal$verify(_$t0: $1_vesting_VestingContract) returns ($ret0: $signer) +{ + // declare local variables + var $t1: $1_account_SignerCapability; + var $t2: int; + var $t3: $signer; + var $t4: int; + var $t0: $1_vesting_VestingContract; + var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; + var $temp_0'signer': $signer; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume And(WellFormed($t0), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t0)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t0)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t0)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t0)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t0)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t0)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:909:5+1 + assume {:print "$at(2,42244,42245)"} true; + assume ($IsValid'$1_vesting_VestingContract'($t0) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t0)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t0)), addr)))) && (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t0)))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t0)))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; + (var j := $i_3; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t0)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t0)), j)) ==> $IsEqual'num'(i, j)))))))))); + + // trace_local[vesting_contract]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:909:5+1 + assume {:print "$track_local(57,13,0):", $t0} $t0 == $t0; + + // $t1 := get_field.signer_cap($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:910:48+28 + assume {:print "$at(2,42377,42405)"} true; + $t1 := $signer_cap#$1_vesting_VestingContract($t0); + + // assume Identical($t2, select account::SignerCapability.account($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:458:9+30 + assume {:print "$at(73,22226,22256)"} true; + assume ($t2 == $account#$1_account_SignerCapability($t1)); + + // $t3 := account::create_signer_with_capability($t1) on_abort goto L2 with $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:910:9+68 + assume {:print "$at(2,42338,42406)"} true; + call $t3 := $1_account_create_signer_with_capability($t1); + if ($abort_flag) { + assume {:print "$at(2,42338,42406)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(57,13):", $t4} $t4 == $t4; + goto L2; + } + + // trace_return[0]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:910:9+68 + assume {:print "$track_return(57,13,0):", $t3} $t3 == $t3; + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:911:5+1 + assume {:print "$at(2,42411,42412)"} true; +L1: + + // assert Not(false) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:307:9+16 + assume {:print "$at(3,12610,12626)"} true; + assert {:msg "assert_failed(3,12610,12626): function does not abort under this condition"} + !false; + + // return $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:307:9+16 + $ret0 := $t3; + return; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:911:5+1 + assume {:print "$at(2,42411,42412)"} true; +L2: + + // assert false at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:306:5+117 + assume {:print "$at(3,12515,12632)"} true; + assert {:msg "assert_failed(3,12515,12632): abort not covered by any of the `aborts_if` clauses"} + false; + + // abort($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:306:5+117 + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun vesting::operator_commission_percentage [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:302:5+275 +procedure {:timeLimit 200} $1_vesting_operator_commission_percentage$verify(_$t0: int) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: $1_vesting_VestingContract; + var $t3: $1_vesting_StakingInfo; + var $t4: int; + var $t0: int; + var $temp_0'address': int; + var $temp_0'u64': int; + var $1_vesting_VestingContract_$memory#53: $Memory $1_vesting_VestingContract; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:302:5+1 + assume {:print "$at(2,14085,14086)"} true; + assume $IsValid'address'($t0); + + // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:302:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); + (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; + (var j := $i_4; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); + + // @53 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:302:5+1 + $1_vesting_VestingContract_$memory#53 := $1_vesting_VestingContract_$memory; + + // trace_local[vesting_contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:302:5+1 + assume {:print "$track_local(57,15,0):", $t0} $t0 == $t0; + + // vesting::assert_vesting_contract_exists($t0) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:303:9+56 + assume {:print "$at(2,14202,14258)"} true; + call $1_vesting_assert_vesting_contract_exists($t0); + if ($abort_flag) { + assume {:print "$at(2,14202,14258)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(57,15):", $t1} $t1 == $t1; + goto L2; + } + + // $t2 := get_global($t0) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:304:9+13 + assume {:print "$at(2,14268,14281)"} true; + if (!$ResourceExists($1_vesting_VestingContract_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t2 := $ResourceValue($1_vesting_VestingContract_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(2,14268,14281)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(57,15):", $t1} $t1 == $t1; + goto L2; + } + + // $t3 := get_field.staking($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:304:9+64 + $t3 := $staking#$1_vesting_VestingContract($t2); + + // $t4 := get_field.commission_percentage($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:304:9+86 + $t4 := $commission_percentage#$1_vesting_StakingInfo($t3); + + // trace_return[0]($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:304:9+86 + assume {:print "$track_return(57,15,0):", $t4} $t4 == $t4; + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:305:5+1 + assume {:print "$at(2,14359,14360)"} true; +L1: + + // assert Not(Not(exists[@53]($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:28:9+61 + assume {:print "$at(3,970,1031)"} true; + assert {:msg "assert_failed(3,970,1031): function does not abort under this condition"} + !!$ResourceExists($1_vesting_VestingContract_$memory#53, $t0); + + // return $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:28:9+61 + $ret0 := $t4; + return; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:305:5+1 + assume {:print "$at(2,14359,14360)"} true; +L2: + + // assert Not(exists[@53]($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:27:5+153 + assume {:print "$at(3,884,1037)"} true; + assert {:msg "assert_failed(3,884,1037): abort not covered by any of the `aborts_if` clauses"} + !$ResourceExists($1_vesting_VestingContract_$memory#53, $t0); + + // abort($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:27:5+153 + $abort_code := $t1; + $abort_flag := true; + return; + +} + +// fun vesting::period_duration_secs [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:271:5+268 +procedure {:timeLimit 200} $1_vesting_period_duration_secs$verify(_$t0: int) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: $1_vesting_VestingContract; + var $t3: $1_vesting_VestingSchedule; + var $t4: int; + var $t0: int; + var $temp_0'address': int; + var $temp_0'u64': int; + var $1_vesting_VestingContract_$memory#56: $Memory $1_vesting_VestingContract; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:271:5+1 + assume {:print "$at(2,12272,12273)"} true; + assume $IsValid'address'($t0); + + // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:271:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); + (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; + (var j := $i_4; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); + + // @56 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:271:5+1 + $1_vesting_VestingContract_$memory#56 := $1_vesting_VestingContract_$memory; + + // trace_local[vesting_contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:271:5+1 + assume {:print "$track_local(57,16,0):", $t0} $t0 == $t0; + + // vesting::assert_vesting_contract_exists($t0) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:272:9+56 + assume {:print "$at(2,12379,12435)"} true; + call $1_vesting_assert_vesting_contract_exists($t0); + if ($abort_flag) { + assume {:print "$at(2,12379,12435)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(57,16):", $t1} $t1 == $t1; + goto L2; + } + + // $t2 := get_global($t0) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:273:9+13 + assume {:print "$at(2,12445,12458)"} true; + if (!$ResourceExists($1_vesting_VestingContract_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t2 := $ResourceValue($1_vesting_VestingContract_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(2,12445,12458)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(57,16):", $t1} $t1 == $t1; + goto L2; + } + + // $t3 := get_field.vesting_schedule($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:273:9+73 + $t3 := $vesting_schedule#$1_vesting_VestingContract($t2); + + // $t4 := get_field.period_duration($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:273:9+89 + $t4 := $period_duration#$1_vesting_VestingSchedule($t3); + + // trace_return[0]($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:273:9+89 + assume {:print "$track_return(57,16,0):", $t4} $t4 == $t4; + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:274:5+1 + assume {:print "$at(2,12539,12540)"} true; +L1: + + // assert Not(Not(exists[@56]($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:16:9+61 + assume {:print "$at(3,501,562)"} true; + assert {:msg "assert_failed(3,501,562): function does not abort under this condition"} + !!$ResourceExists($1_vesting_VestingContract_$memory#56, $t0); + + // return $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:16:9+61 + $ret0 := $t4; + return; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:274:5+1 + assume {:print "$at(2,12539,12540)"} true; +L2: + + // assert Not(exists[@56]($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:15:5+143 + assume {:print "$at(3,425,568)"} true; + assert {:msg "assert_failed(3,425,568): abort not covered by any of the `aborts_if` clauses"} + !$ResourceExists($1_vesting_VestingContract_$memory#56, $t0); + + // abort($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:15:5+143 + $abort_code := $t1; + $abort_flag := true; + return; + +} + +// fun vesting::remaining_grant [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:283:5+246 +procedure {:timeLimit 200} $1_vesting_remaining_grant$verify(_$t0: int) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: $1_vesting_VestingContract; + var $t3: int; + var $t0: int; + var $temp_0'address': int; + var $temp_0'u64': int; + var $1_vesting_VestingContract_$memory#55: $Memory $1_vesting_VestingContract; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:283:5+1 + assume {:print "$at(2,13028,13029)"} true; + assume $IsValid'address'($t0); + + // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:283:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); + (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; + (var j := $i_4; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); + + // @55 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:283:5+1 + $1_vesting_VestingContract_$memory#55 := $1_vesting_VestingContract_$memory; + + // trace_local[vesting_contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:283:5+1 + assume {:print "$track_local(57,17,0):", $t0} $t0 == $t0; + + // vesting::assert_vesting_contract_exists($t0) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:284:9+56 + assume {:print "$at(2,13130,13186)"} true; + call $1_vesting_assert_vesting_contract_exists($t0); + if ($abort_flag) { + assume {:print "$at(2,13130,13186)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(57,17):", $t1} $t1 == $t1; + goto L2; + } + + // $t2 := get_global($t0) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:285:9+13 + assume {:print "$at(2,13196,13209)"} true; + if (!$ResourceExists($1_vesting_VestingContract_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t2 := $ResourceValue($1_vesting_VestingContract_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(2,13196,13209)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(57,17):", $t1} $t1 == $t1; + goto L2; + } + + // $t3 := get_field.remaining_grant($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:285:9+72 + $t3 := $remaining_grant#$1_vesting_VestingContract($t2); + + // trace_return[0]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:285:9+72 + assume {:print "$track_return(57,17,0):", $t3} $t3 == $t3; + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:286:5+1 + assume {:print "$at(2,13273,13274)"} true; +L1: + + // assert Not(Not(exists[@55]($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:20:9+61 + assume {:print "$at(3,645,706)"} true; + assert {:msg "assert_failed(3,645,706): function does not abort under this condition"} + !!$ResourceExists($1_vesting_VestingContract_$memory#55, $t0); + + // return $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:20:9+61 + $ret0 := $t3; + return; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:286:5+1 + assume {:print "$at(2,13273,13274)"} true; +L2: + + // assert Not(exists[@55]($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:19:5+138 + assume {:print "$at(3,574,712)"} true; + assert {:msg "assert_failed(3,574,712): abort not covered by any of the `aborts_if` clauses"} + !$ResourceExists($1_vesting_VestingContract_$memory#55, $t0); + + // abort($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:19:5+138 + $abort_code := $t1; + $abort_flag := true; + return; + +} + +// fun vesting::reset_beneficiary [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:843:5+755 +procedure {:timeLimit 200} $1_vesting_reset_beneficiary$verify(_$t0: $signer, _$t1: int, _$t2: int) returns () +{ + // declare local variables + var $t3: bool; + var $t4: int; + var $t5: int; + var $t6: $Mutation (Table int (int)); + var $t7: $Mutation ($1_vesting_VestingContract); + var $t8: int; + var $t9: $1_vesting_VestingContract; + var $t10: Table int (int); + var $t11: $1_string_String; + var $t12: $Mutation ($1_vesting_VestingContract); + var $t13: int; + var $t14: int; + var $t15: int; + var $t16: bool; + var $t17: bool; + var $t18: Vec (int); + var $t19: $1_string_String; + var $t20: Table int (int); + var $t21: int; + var $t22: int; + var $t23: int; + var $t24: $Mutation (Table int (int)); + var $t25: Table int (int); + var $t26: bool; + var $t27: int; + var $t28: int; + var $t29: $1_vesting_VestingContract; + var $t0: $signer; + var $t1: int; + var $t2: int; + var $temp_0'$1_simple_map_SimpleMap'address_address'': Table int (int); + var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $1_vesting_VestingContract_$memory#102: $Memory $1_vesting_VestingContract; + var $1_vesting_VestingAccountManagement_$memory#103: $Memory $1_vesting_VestingAccountManagement; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:843:5+1 + assume {:print "$at(2,39177,39178)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($addr#$signer($t0)); + + // assume WellFormed($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:843:5+1 + assume $IsValid'address'($t1); + + // assume WellFormed($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:843:5+1 + assume $IsValid'address'($t2); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:843:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingAccountManagement_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingAccountManagement_$memory, $a_0); + ($IsValid'$1_vesting_VestingAccountManagement'($rsc)))); + + // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:843:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); + (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; + (var j := $i_4; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); + + // assume Identical($t8, signer::$address_of($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:263:9+39 + assume {:print "$at(3,10667,10706)"} true; + assume ($t8 == $1_signer_$address_of($t0)); + + // assume Identical($t9, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:264:9+65 + assume {:print "$at(3,10715,10780)"} true; + assume ($t9 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); + + // assume Identical($t10, select vesting::VestingAccountManagement.roles(global($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:267:9+69 + assume {:print "$at(3,11013,11082)"} true; + assume ($t10 == $roles#$1_vesting_VestingAccountManagement($ResourceValue($1_vesting_VestingAccountManagement_$memory, $t1))); + + // assume Identical($t11, string::spec_utf8([82, 79, 76, 69, 95, 66, 69, 78, 69, 70, 73, 67, 73, 65, 82, 89, 95, 82, 69, 83, 69, 84, 84, 69, 82])) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:268:9+61 + assume {:print "$at(3,11091,11152)"} true; + assume ($t11 == $1_string_spec_utf8(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(82, 79, 76, 69), MakeVec4(95, 66, 69, 78)), MakeVec4(69, 70, 73, 67)), MakeVec4(73, 65, 82, 89)), MakeVec4(95, 82, 69, 83)), MakeVec4(69, 84, 84, 69)), MakeVec1(82)))); + + // @103 := save_mem(vesting::VestingAccountManagement) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:843:5+1 + assume {:print "$at(2,39177,39178)"} true; + $1_vesting_VestingAccountManagement_$memory#103 := $1_vesting_VestingAccountManagement_$memory; + + // @102 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:843:5+1 + $1_vesting_VestingContract_$memory#102 := $1_vesting_VestingContract_$memory; + + // trace_local[account]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:843:5+1 + assume {:print "$track_local(57,18,0):", $t0} $t0 == $t0; + + // trace_local[contract_address]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:843:5+1 + assume {:print "$track_local(57,18,1):", $t1} $t1 == $t1; + + // trace_local[shareholder]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:843:5+1 + assume {:print "$track_local(57,18,2):", $t2} $t2 == $t2; + + // $t12 := borrow_global($t1) on_abort goto L10 with $t13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:848:32+17 + assume {:print "$at(2,39394,39411)"} true; + if (!$ResourceExists($1_vesting_VestingContract_$memory, $t1)) { + call $ExecFailureAbort(); + } else { + $t12 := $Mutation($Global($t1), EmptyVec(), $ResourceValue($1_vesting_VestingContract_$memory, $t1)); + } + if ($abort_flag) { + assume {:print "$at(2,39394,39411)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(57,18):", $t13} $t13 == $t13; + goto L10; + } + + // trace_local[vesting_contract]($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:848:13+16 + $temp_0'$1_vesting_VestingContract' := $Dereference($t12); + assume {:print "$track_local(57,18,7):", $temp_0'$1_vesting_VestingContract'} $temp_0'$1_vesting_VestingContract' == $temp_0'$1_vesting_VestingContract'; + + // $t14 := signer::address_of($t0) on_abort goto L10 with $t13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:849:20+27 + assume {:print "$at(2,39467,39494)"} true; + call $t14 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(2,39467,39494)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(57,18):", $t13} $t13 == $t13; + goto L10; + } + + // trace_local[addr]($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:849:13+4 + assume {:print "$track_local(57,18,5):", $t14} $t14 == $t14; + + // $t15 := get_field.admin($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:851:21+22 + assume {:print "$at(2,39533,39555)"} true; + $t15 := $admin#$1_vesting_VestingContract($Dereference($t12)); + + // $t16 := ==($t14, $t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:851:18+2 + $t16 := $IsEqual'address'($t14, $t15); + + // if ($t16) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:851:13+124 + if ($t16) { goto L1; } else { goto L0; } + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:851:13+124 +L1: + + // $t17 := true at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:851:13+124 + assume {:print "$at(2,39525,39649)"} true; + $t17 := true; + assume $IsValid'bool'($t17); + + // $t3 := $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:851:13+124 + $t3 := $t17; + + // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:851:13+124 + goto L2; + + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:852:17+4 + assume {:print "$at(2,39575,39579)"} true; +L0: + + // $t18 := [82, 79, 76, 69, 95, 66, 69, 78, 69, 70, 73, 67, 73, 65, 82, 89, 95, 82, 69, 83, 69, 84, 84, 69, 82] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:852:64+25 + assume {:print "$at(2,39622,39647)"} true; + $t18 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(82, 79, 76, 69), MakeVec4(95, 66, 69, 78)), MakeVec4(69, 70, 73, 67)), MakeVec4(73, 65, 82, 89)), MakeVec4(95, 82, 69, 83)), MakeVec4(69, 84, 84, 69)), MakeVec1(82)); + assume $IsValid'vec'u8''($t18); + + // $t19 := string::utf8($t18) on_abort goto L10 with $t13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:852:59+31 + call $t19 := $1_string_utf8($t18); + if ($abort_flag) { + assume {:print "$at(2,39617,39648)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(57,18):", $t13} $t13 == $t13; + goto L10; + } + + // assume Identical($t20, select vesting::VestingAccountManagement.roles(global($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:298:9+69 + assume {:print "$at(3,12239,12308)"} true; + assume ($t20 == $roles#$1_vesting_VestingAccountManagement($ResourceValue($1_vesting_VestingAccountManagement_$memory, $t1))); + + // $t21 := vesting::get_role_holder($t1, $t19) on_abort goto L10 with $t13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:852:25+66 + assume {:print "$at(2,39583,39649)"} true; + call $t21 := $1_vesting_get_role_holder($t1, $t19); + if ($abort_flag) { + assume {:print "$at(2,39583,39649)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(57,18):", $t13} $t13 == $t13; + goto L10; + } + + // $t3 := ==($t14, $t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:852:22+2 + $t3 := $IsEqual'address'($t14, $t21); + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:851:13+124 + assume {:print "$at(2,39525,39649)"} true; +L2: + + // if ($t3) goto L4 else goto L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:850:9+214 + assume {:print "$at(2,39504,39718)"} true; + if ($t3) { goto L4; } else { goto L3; } + + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:850:9+214 +L4: + + // goto L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:850:9+214 + assume {:print "$at(2,39504,39718)"} true; + goto L5; + + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:850:9+214 +L3: + + // assert forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t12)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t12)), addr)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 + // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 + assume {:print "$at(59,538,673)"} true; + assert {:msg "assert_failed(59,538,673): data invariant does not hold"} + (forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))), addr)))); + + // assert forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t12)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t12)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t12)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t12)), j)), Eq(i, j)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 + // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 + assume {:print "$at(59,738,867)"} true; + assert {:msg "assert_failed(59,738,867): data invariant does not hold"} + (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; + (var j := $i_3; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))), j)) ==> $IsEqual'num'(i, j)))))))); + + // destroy($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:850:9+214 + assume {:print "$at(2,39504,39718)"} true; + + // $t22 := 15 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:853:38+18 + assume {:print "$at(2,39688,39706)"} true; + $t22 := 15; + assume $IsValid'u64'($t22); + + // $t23 := error::permission_denied($t22) on_abort goto L10 with $t13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:853:13+44 + call $t23 := $1_error_permission_denied($t22); + if ($abort_flag) { + assume {:print "$at(2,39663,39707)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(57,18):", $t13} $t13 == $t13; + goto L10; + } + + // trace_abort($t23) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:850:9+214 + assume {:print "$at(2,39504,39718)"} true; + assume {:print "$track_abort(57,18):", $t23} $t23 == $t23; + + // $t13 := move($t23) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:850:9+214 + $t13 := $t23; + + // goto L10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:850:9+214 + goto L10; + + // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:856:34+16 + assume {:print "$at(2,39754,39770)"} true; +L5: + + // $t24 := borrow_field.beneficiaries($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:856:29+35 + assume {:print "$at(2,39749,39784)"} true; + $t24 := $ChildMutation($t12, 3, $beneficiaries#$1_vesting_VestingContract($Dereference($t12))); + + // trace_local[beneficiaries]($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:856:13+13 + $temp_0'$1_simple_map_SimpleMap'address_address'' := $Dereference($t24); + assume {:print "$track_local(57,18,6):", $temp_0'$1_simple_map_SimpleMap'address_address''} $temp_0'$1_simple_map_SimpleMap'address_address'' == $temp_0'$1_simple_map_SimpleMap'address_address''; + + // $t25 := read_ref($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:857:37+29 + assume {:print "$at(2,39822,39851)"} true; + $t25 := $Dereference($t24); + + // $t26 := simple_map::contains_key($t25, $t2) on_abort goto L10 with $t13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:857:13+53 + call $t26 := $1_simple_map_contains_key'address_address'($t25, $t2); + if ($abort_flag) { + assume {:print "$at(2,39798,39851)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(57,18):", $t13} $t13 == $t13; + goto L10; + } + + // if ($t26) goto L7 else goto L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:857:9+131 + if ($t26) { goto L7; } else { goto L6; } + + // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:858:32+13 + assume {:print "$at(2,39886,39899)"} true; +L7: + + // ($t27, $t28) := simple_map::remove($t24, $t2) on_abort goto L10 with $t13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:858:13+47 + assume {:print "$at(2,39867,39914)"} true; + call $t27,$t28,$t24 := $1_simple_map_remove'address_address'($t24, $t2); + if ($abort_flag) { + assume {:print "$at(2,39867,39914)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(57,18):", $t13} $t13 == $t13; + goto L10; + } + + // write_back[Reference($t12).beneficiaries (simple_map::SimpleMap)]($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:858:13+47 + $t12 := $UpdateMutation($t12, $Update'$1_vesting_VestingContract'_beneficiaries($Dereference($t12), $Dereference($t24))); + + // assert forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t12)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t12)), addr)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 + // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 + assume {:print "$at(59,538,673)"} true; + assert {:msg "assert_failed(59,538,673): data invariant does not hold"} + (forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))), addr)))); + + // assert forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t12)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t12)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t12)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t12)), j)), Eq(i, j)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 + // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 + assume {:print "$at(59,738,867)"} true; + assert {:msg "assert_failed(59,738,867): data invariant does not hold"} + (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; + (var j := $i_3; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))), j)) ==> $IsEqual'num'(i, j)))))))); + + // write_back[vesting::VestingContract@]($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:858:13+47 + assume {:print "$at(2,39867,39914)"} true; + $1_vesting_VestingContract_$memory := $ResourceUpdate($1_vesting_VestingContract_$memory, $GlobalLocationAddress($t12), + $Dereference($t12)); + + // destroy($t28) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:858:13+47 + + // destroy($t27) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:858:13+47 + + // goto L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:858:60+1 + goto L8; + + // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:857:9+131 + assume {:print "$at(2,39794,39925)"} true; +L6: + + // assert forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t12)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t12)), addr)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 + // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 + assume {:print "$at(59,538,673)"} true; + assert {:msg "assert_failed(59,538,673): data invariant does not hold"} + (forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))), addr)))); + + // assert forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t12)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t12)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t12)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t12)), j)), Eq(i, j)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 + // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 + assume {:print "$at(59,738,867)"} true; + assert {:msg "assert_failed(59,738,867): data invariant does not hold"} + (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; + (var j := $i_3; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))), j)) ==> $IsEqual'num'(i, j)))))))); + + // destroy($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:857:9+131 + assume {:print "$at(2,39794,39925)"} true; + + // label L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:859:10+1 + assume {:print "$at(2,39925,39926)"} true; +L8: + + // label L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:860:5+1 + assume {:print "$at(2,39931,39932)"} true; +L9: + + // assume Identical($t29, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:272:9+75 + assume {:print "$at(3,11354,11429)"} true; + assume ($t29 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); + + // assert Not(Not(exists[@102]($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:261:9+53 + assume {:print "$at(3,10604,10657)"} true; + assert {:msg "assert_failed(3,10604,10657): function does not abort under this condition"} + !!$ResourceExists($1_vesting_VestingContract_$memory#102, $t1); + + // assert Not(And(Neq
($t8, select vesting::VestingContract.admin($t9)), Not(string::spec_internal_check_utf8[]([82, 79, 76, 69, 95, 66, 69, 78, 69, 70, 73, 67, 73, 65, 82, 89, 95, 82, 69, 83, 69, 84, 84, 69, 82])))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:265:9+110 + assume {:print "$at(3,10789,10899)"} true; + assert {:msg "assert_failed(3,10789,10899): function does not abort under this condition"} + !(!$IsEqual'address'($t8, $admin#$1_vesting_VestingContract($t9)) && !$1_string_spec_internal_check_utf8(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(82, 79, 76, 69), MakeVec4(95, 66, 69, 78)), MakeVec4(69, 70, 73, 67)), MakeVec4(73, 65, 82, 89)), MakeVec4(95, 82, 69, 83)), MakeVec4(69, 84, 84, 69)), MakeVec1(82)))); + + // assert Not(And(Neq
($t8, select vesting::VestingContract.admin($t9)), Not(exists[@103]($t1)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:266:9+96 + assume {:print "$at(3,10908,11004)"} true; + assert {:msg "assert_failed(3,10908,11004): function does not abort under this condition"} + !(!$IsEqual'address'($t8, $admin#$1_vesting_VestingContract($t9)) && !$ResourceExists($1_vesting_VestingAccountManagement_$memory#103, $t1)); + + // assert Not(And(Neq
($t8, select vesting::VestingContract.admin($t9)), Not(simple_map::spec_contains_key[]($t10, $t11)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:269:9+88 + assume {:print "$at(3,11161,11249)"} true; + assert {:msg "assert_failed(3,11161,11249): function does not abort under this condition"} + !(!$IsEqual'address'($t8, $admin#$1_vesting_VestingContract($t9)) && !$1_simple_map_spec_contains_key'$1_string_String_address'($t10, $t11)); + + // assert Not(And(Neq
($t8, select vesting::VestingContract.admin($t9)), Neq
($t8, simple_map::spec_get[]($t10, $t11)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:270:9+86 + assume {:print "$at(3,11258,11344)"} true; + assert {:msg "assert_failed(3,11258,11344): function does not abort under this condition"} + !(!$IsEqual'address'($t8, $admin#$1_vesting_VestingContract($t9)) && !$IsEqual'address'($t8, $1_simple_map_spec_get'$1_string_String_address'($t10, $t11))); + + // assert Not(simple_map::spec_contains_key(select vesting::VestingContract.beneficiaries($t29), $t2)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:273:9+88 + assume {:print "$at(3,11438,11526)"} true; + assert {:msg "assert_failed(3,11438,11526): post-condition does not hold"} + !$1_simple_map_spec_contains_key'address_address'($beneficiaries#$1_vesting_VestingContract($t29), $t2); + + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:273:9+88 + return; + + // label L10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:860:5+1 + assume {:print "$at(2,39931,39932)"} true; +L10: + + // assert Or(Or(Or(Or(Not(exists[@102]($t1)), And(Neq
($t8, select vesting::VestingContract.admin($t9)), Not(string::spec_internal_check_utf8[]([82, 79, 76, 69, 95, 66, 69, 78, 69, 70, 73, 67, 73, 65, 82, 89, 95, 82, 69, 83, 69, 84, 84, 69, 82])))), And(Neq
($t8, select vesting::VestingContract.admin($t9)), Not(exists[@103]($t1)))), And(Neq
($t8, select vesting::VestingContract.admin($t9)), Not(simple_map::spec_contains_key[]($t10, $t11)))), And(Neq
($t8, select vesting::VestingContract.admin($t9)), Neq
($t8, simple_map::spec_get[]($t10, $t11)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:256:5+1060 + assume {:print "$at(3,10472,11532)"} true; + assert {:msg "assert_failed(3,10472,11532): abort not covered by any of the `aborts_if` clauses"} + ((((!$ResourceExists($1_vesting_VestingContract_$memory#102, $t1) || (!$IsEqual'address'($t8, $admin#$1_vesting_VestingContract($t9)) && !$1_string_spec_internal_check_utf8(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(82, 79, 76, 69), MakeVec4(95, 66, 69, 78)), MakeVec4(69, 70, 73, 67)), MakeVec4(73, 65, 82, 89)), MakeVec4(95, 82, 69, 83)), MakeVec4(69, 84, 84, 69)), MakeVec1(82))))) || (!$IsEqual'address'($t8, $admin#$1_vesting_VestingContract($t9)) && !$ResourceExists($1_vesting_VestingAccountManagement_$memory#103, $t1))) || (!$IsEqual'address'($t8, $admin#$1_vesting_VestingContract($t9)) && !$1_simple_map_spec_contains_key'$1_string_String_address'($t10, $t11))) || (!$IsEqual'address'($t8, $admin#$1_vesting_VestingContract($t9)) && !$IsEqual'address'($t8, $1_simple_map_spec_get'$1_string_String_address'($t10, $t11)))); + + // abort($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:256:5+1060 + $abort_code := $t13; + $abort_flag := true; + return; + +} + +// fun vesting::set_beneficiary [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:807:5+1396 +procedure {:timeLimit 200} $1_vesting_set_beneficiary$verify(_$t0: $signer, _$t1: int, _$t2: int, _$t3: int) returns () +{ + // declare local variables + var $t4: int; + var $t5: int; + var $t6: $Mutation (Table int (int)); + var $t7: $Mutation (int); + var $t8: int; + var $t9: $Mutation ($1_vesting_VestingContract); + var $t10: $1_vesting_VestingContract; + var $t11: int; + var $t12: $Mutation ($1_vesting_VestingContract); + var $t13: $1_vesting_VestingContract; + var $t14: $1_vesting_VestingContract; + var $t15: int; + var $t16: $Mutation (Table int (int)); + var $t17: Table int (int); + var $t18: bool; + var $t19: $Mutation (int); + var $t20: $Mutation ($1_event_EventHandle'$1_vesting_SetBeneficiaryEvent'); + var $t21: int; + var $t22: $1_vesting_SetBeneficiaryEvent; + var $t23: $1_vesting_VestingContract; + var $t0: $signer; + var $t1: int; + var $t2: int; + var $t3: int; + var $temp_0'$1_simple_map_SimpleMap'address_address'': Table int (int); + var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $1_account_Account_$memory#106: $Memory $1_account_Account; + var $1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory#107: $Memory $1_coin_CoinStore'$1_aptos_coin_AptosCoin'; + var $1_vesting_VestingContract_$memory#108: $Memory $1_vesting_VestingContract; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:807:5+1 + assume {:print "$at(2,37644,37645)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($addr#$signer($t0)); + + // assume WellFormed($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:807:5+1 + assume $IsValid'address'($t1); + + // assume WellFormed($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:807:5+1 + assume $IsValid'address'($t2); + + // assume WellFormed($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:807:5+1 + assume $IsValid'address'($t3); + + // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.rotation_capability_offer($rsc)))), 1), Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.signer_capability_offer($rsc)))), 1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:807:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_account_Account_$memory, $a_0)}(var $rsc := $ResourceValue($1_account_Account_$memory, $a_0); + (($IsValid'$1_account_Account'($rsc) && ((LenVec($vec#$1_option_Option'address'($for#$1_account_CapabilityOffer'$1_account_RotationCapability'($rotation_capability_offer#$1_account_Account($rsc)))) <= 1) && (LenVec($vec#$1_option_Option'address'($for#$1_account_CapabilityOffer'$1_account_SignerCapability'($signer_capability_offer#$1_account_Account($rsc)))) <= 1)))))); + + // assume forall $rsc: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: select option::Option.vec(select coin::CoinInfo.supply($rsc)): And(And(And(And(And(Iff(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($elem)), option::$is_none(select optional_aggregator::OptionalAggregator.integer($elem))), Iff(option::$is_some(select optional_aggregator::OptionalAggregator.integer($elem)), option::$is_none(select optional_aggregator::OptionalAggregator.aggregator($elem)))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.integer($elem)), Le(select optional_aggregator::Integer.value(option::$borrow(select optional_aggregator::OptionalAggregator.integer($elem))), select optional_aggregator::Integer.limit(option::$borrow(select optional_aggregator::OptionalAggregator.integer($elem)))))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($elem)), Le(aggregator::spec_aggregator_get_val(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($elem))), aggregator::spec_get_limit(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($elem)))))), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.aggregator($elem))), 1)), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.integer($elem))), 1)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:807:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'$1_aptos_coin_AptosCoin''($rsc) && ((LenVec($vec#$1_option_Option'$1_optional_aggregator_OptionalAggregator'($supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($rsc))) <= 1) && (var $range_1 := $vec#$1_option_Option'$1_optional_aggregator_OptionalAggregator'($supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($rsc)); (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)) <==> $1_option_$is_none'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)) ==> ($value#$1_optional_aggregator_Integer($1_option_$borrow'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) <= $limit#$1_optional_aggregator_Integer($1_option_$borrow'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)))))) && ($1_option_$is_some'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem))) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)))))) && (LenVec($vec#$1_option_Option'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem))) <= 1)) && (LenVec($vec#$1_option_Option'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) <= 1))))))))))); + + // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:807:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $a_0); + ($IsValid'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''($rsc)))); + + // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:807:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin''($rsc)))); + + // assume exists>(0x0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:807:5+1 + assume $ResourceExists($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, 0); + + // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:807:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin''($rsc)))); + + // assume exists>(0x0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:807:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, 0); + + // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:807:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); + (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; + (var j := $i_4; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); + + // assume Identical($t10, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:382:9+65 + assume {:print "$at(3,16064,16129)"} true; + assume ($t10 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); + + // @106 := save_mem(account::Account) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:807:5+1 + assume {:print "$at(2,37644,37645)"} true; + $1_account_Account_$memory#106 := $1_account_Account_$memory; + + // @107 := save_mem(coin::CoinStore) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:807:5+1 + $1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory#107 := $1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory; + + // @108 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:807:5+1 + $1_vesting_VestingContract_$memory#108 := $1_vesting_VestingContract_$memory; + + // trace_local[admin]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:807:5+1 + assume {:print "$track_local(57,20,0):", $t0} $t0 == $t0; + + // trace_local[contract_address]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:807:5+1 + assume {:print "$track_local(57,20,1):", $t1} $t1 == $t1; + + // trace_local[shareholder]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:807:5+1 + assume {:print "$track_local(57,20,2):", $t2} $t2 == $t2; + + // trace_local[new_beneficiary]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:807:5+1 + assume {:print "$track_local(57,20,3):", $t3} $t3 == $t3; + + // aptos_account::assert_account_is_registered_for_apt($t3) on_abort goto L4 with $t11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:815:9+53 + assume {:print "$at(2,38064,38117)"} true; + call $1_aptos_account_assert_account_is_registered_for_apt($t3); + if ($abort_flag) { + assume {:print "$at(2,38064,38117)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(57,20):", $t11} $t11 == $t11; + goto L4; + } + + // $t12 := borrow_global($t1) on_abort goto L4 with $t11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:817:32+17 + assume {:print "$at(2,38151,38168)"} true; + if (!$ResourceExists($1_vesting_VestingContract_$memory, $t1)) { + call $ExecFailureAbort(); + } else { + $t12 := $Mutation($Global($t1), EmptyVec(), $ResourceValue($1_vesting_VestingContract_$memory, $t1)); + } + if ($abort_flag) { + assume {:print "$at(2,38151,38168)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(57,20):", $t11} $t11 == $t11; + goto L4; + } + + // trace_local[vesting_contract]($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:817:13+16 + $temp_0'$1_vesting_VestingContract' := $Dereference($t12); + assume {:print "$track_local(57,20,9):", $temp_0'$1_vesting_VestingContract'} $temp_0'$1_vesting_VestingContract' == $temp_0'$1_vesting_VestingContract'; + + // $t13 := read_ref($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:818:21+25 + assume {:print "$at(2,38225,38250)"} true; + $t13 := $Dereference($t12); + + // vesting::verify_admin($t0, $t13) on_abort goto L4 with $t11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:818:9+37 + call $1_vesting_verify_admin($t0, $t13); + if ($abort_flag) { + assume {:print "$at(2,38213,38250)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(57,20):", $t11} $t11 == $t11; + goto L4; + } + + // $t14 := read_ref($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:820:46+31 + assume {:print "$at(2,38298,38329)"} true; + $t14 := $Dereference($t12); + + // $t15 := vesting::get_beneficiary($t14, $t2) on_abort goto L4 with $t11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:820:31+46 + call $t15 := $1_vesting_get_beneficiary($t14, $t2); + if ($abort_flag) { + assume {:print "$at(2,38283,38329)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(57,20):", $t11} $t11 == $t11; + goto L4; + } + + // trace_local[old_beneficiary]($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:820:13+15 + assume {:print "$track_local(57,20,8):", $t15} $t15 == $t15; + + // $t16 := borrow_field.beneficiaries($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:821:29+35 + assume {:print "$at(2,38359,38394)"} true; + $t16 := $ChildMutation($t12, 3, $beneficiaries#$1_vesting_VestingContract($Dereference($t12))); + + // trace_local[beneficiaries]($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:821:13+13 + $temp_0'$1_simple_map_SimpleMap'address_address'' := $Dereference($t16); + assume {:print "$track_local(57,20,6):", $temp_0'$1_simple_map_SimpleMap'address_address''} $temp_0'$1_simple_map_SimpleMap'address_address'' == $temp_0'$1_simple_map_SimpleMap'address_address''; + + // $t17 := read_ref($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:822:37+29 + assume {:print "$at(2,38432,38461)"} true; + $t17 := $Dereference($t16); + + // $t18 := simple_map::contains_key($t17, $t2) on_abort goto L4 with $t11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:822:13+53 + call $t18 := $1_simple_map_contains_key'address_address'($t17, $t2); + if ($abort_flag) { + assume {:print "$at(2,38408,38461)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(57,20):", $t11} $t11 == $t11; + goto L4; + } + + // if ($t18) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:822:9+288 + if ($t18) { goto L1; } else { goto L0; } + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:823:54+13 + assume {:print "$at(2,38518,38531)"} true; +L1: + + // $t19 := simple_map::borrow_mut($t16, $t2) on_abort goto L4 with $t11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:823:31+51 + assume {:print "$at(2,38495,38546)"} true; + call $t19,$t16 := $1_simple_map_borrow_mut'address_address'($t16, $t2); + if ($abort_flag) { + assume {:print "$at(2,38495,38546)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(57,20):", $t11} $t11 == $t11; + goto L4; + } + + // trace_local[beneficiary]($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:823:17+11 + $temp_0'address' := $Dereference($t19); + assume {:print "$track_local(57,20,7):", $temp_0'address'} $temp_0'address' == $temp_0'address'; + + // write_ref($t19, $t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:824:13+30 + assume {:print "$at(2,38560,38590)"} true; + $t19 := $UpdateMutation($t19, $t3); + + // write_back[Reference($t16)[]]($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:824:13+30 + $t16 := $UpdateMutation($t16, UpdateTable($Dereference($t16), ReadVec(p#$Mutation($t19), LenVec(p#$Mutation($t16))), $Dereference($t19))); + + // write_back[Reference($t12).beneficiaries (simple_map::SimpleMap)]($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:824:13+30 + $t12 := $UpdateMutation($t12, $Update'$1_vesting_VestingContract'_beneficiaries($Dereference($t12), $Dereference($t16))); + + // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:824:43+1 + goto L2; + + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:826:29+13 + assume {:print "$at(2,38637,38650)"} true; +L0: + + // simple_map::add($t16, $t2, $t3) on_abort goto L4 with $t11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:826:13+60 + assume {:print "$at(2,38621,38681)"} true; + call $t16 := $1_simple_map_add'address_address'($t16, $t2, $t3); + if ($abort_flag) { + assume {:print "$at(2,38621,38681)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(57,20):", $t11} $t11 == $t11; + goto L4; + } + + // write_back[Reference($t12).beneficiaries (simple_map::SimpleMap)]($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:826:13+60 + $t12 := $UpdateMutation($t12, $Update'$1_vesting_VestingContract'_beneficiaries($Dereference($t12), $Dereference($t16))); + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:830:18+16 + assume {:print "$at(2,38732,38748)"} true; +L2: + + // $t20 := borrow_field.set_beneficiary_events($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:830:13+44 + assume {:print "$at(2,38727,38771)"} true; + $t20 := $ChildMutation($t12, 12, $set_beneficiary_events#$1_vesting_VestingContract($Dereference($t12))); + + // $t21 := get_field.admin($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:832:24+22 + assume {:print "$at(2,38830,38852)"} true; + $t21 := $admin#$1_vesting_VestingContract($Dereference($t12)); + + // $t22 := pack vesting::SetBeneficiaryEvent($t21, $t1, $t2, $t15, $t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:831:13+237 + assume {:print "$at(2,38785,39022)"} true; + $t22 := $1_vesting_SetBeneficiaryEvent($t21, $t1, $t2, $t15, $t3); + + // opaque begin: event::emit_event($t20, $t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:829:9+330 + assume {:print "$at(2,38703,39033)"} true; + + // opaque end: event::emit_event($t20, $t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:829:9+330 + + // write_back[Reference($t12).set_beneficiary_events (event::EventHandle)]($t20) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:829:9+330 + $t12 := $UpdateMutation($t12, $Update'$1_vesting_VestingContract'_set_beneficiary_events($Dereference($t12), $Dereference($t20))); + + // assert forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t12)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t12)), addr)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 + // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 + assume {:print "$at(59,538,673)"} true; + assert {:msg "assert_failed(59,538,673): data invariant does not hold"} + (forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))), addr)))); + + // assert forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t12)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t12)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t12)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t12)), j)), Eq(i, j)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 + // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 + assume {:print "$at(59,738,867)"} true; + assert {:msg "assert_failed(59,738,867): data invariant does not hold"} + (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; + (var j := $i_3; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))), j)) ==> $IsEqual'num'(i, j)))))))); + + // write_back[vesting::VestingContract@]($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:829:9+330 + assume {:print "$at(2,38703,39033)"} true; + $1_vesting_VestingContract_$memory := $ResourceUpdate($1_vesting_VestingContract_$memory, $GlobalLocationAddress($t12), + $Dereference($t12)); + + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:839:5+1 + assume {:print "$at(2,39039,39040)"} true; +L3: + + // assume Identical($t23, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:252:9+70 + assume {:print "$at(3,10299,10369)"} true; + assume ($t23 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); + + // assert Not(Not(account::$exists_at[@106]($t3))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:249:9+47 + assume {:print "$at(3,10130,10177)"} true; + assert {:msg "assert_failed(3,10130,10177): function does not abort under this condition"} + !!$1_account_$exists_at($1_account_Account_$memory#106, $t3); + + // assert Not(Not(coin::$is_account_registered[@107]($t3))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:250:9+67 + assume {:print "$at(3,10186,10253)"} true; + assert {:msg "assert_failed(3,10186,10253): function does not abort under this condition"} + !!$1_coin_$is_account_registered'$1_aptos_coin_AptosCoin'($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory#107, $t3); + + // assert Not(Not(exists[@108]($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:381:9+53 + assume {:print "$at(3,16002,16055)"} true; + assert {:msg "assert_failed(3,16002,16055): function does not abort under this condition"} + !!$ResourceExists($1_vesting_VestingContract_$memory#108, $t1); + + // assert Not(Neq
(signer::$address_of[]($t0), select vesting::VestingContract.admin($t10))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:383:9+62 + assume {:print "$at(3,16138,16200)"} true; + assert {:msg "assert_failed(3,16138,16200): function does not abort under this condition"} + !!$IsEqual'address'($1_signer_$address_of($t0), $admin#$1_vesting_VestingContract($t10)); + + // assert simple_map::spec_contains_key(select vesting::VestingContract.beneficiaries($t23), $t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:253:9+82 + assume {:print "$at(3,10378,10460)"} true; + assert {:msg "assert_failed(3,10378,10460): post-condition does not hold"} + $1_simple_map_spec_contains_key'address_address'($beneficiaries#$1_vesting_VestingContract($t23), $t2); + + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:253:9+82 + return; + + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:839:5+1 + assume {:print "$at(2,39039,39040)"} true; +L4: + + // assert Or(Or(Or(Not(account::$exists_at[@106]($t3)), Not(coin::$is_account_registered[@107]($t3))), Not(exists[@108]($t1))), Neq
(signer::$address_of[]($t0), select vesting::VestingContract.admin($t10))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:243:5+497 + assume {:print "$at(3,9969,10466)"} true; + assert {:msg "assert_failed(3,9969,10466): abort not covered by any of the `aborts_if` clauses"} + (((!$1_account_$exists_at($1_account_Account_$memory#106, $t3) || !$1_coin_$is_account_registered'$1_aptos_coin_AptosCoin'($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory#107, $t3)) || !$ResourceExists($1_vesting_VestingContract_$memory#108, $t1)) || !$IsEqual'address'($1_signer_$address_of($t0), $admin#$1_vesting_VestingContract($t10))); + + // abort($t11) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:243:5+497 + $abort_code := $t11; + $abort_flag := true; + return; + +} + +// fun vesting::set_beneficiary_resetter [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:885:5+314 +procedure {:timeLimit 200} $1_vesting_set_beneficiary_resetter$verify(_$t0: $signer, _$t1: int, _$t2: int) returns () +{ + // declare local variables + var $t3: $1_vesting_VestingContract; + var $t4: Vec (int); + var $t5: $1_string_String; + var $t6: int; + var $t7: $1_vesting_VestingContract; + var $t0: $signer; + var $t1: int; + var $t2: int; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $1_vesting_VestingContract_$memory#101: $Memory $1_vesting_VestingContract; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:885:5+1 + assume {:print "$at(2,40895,40896)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($addr#$signer($t0)); + + // assume WellFormed($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:885:5+1 + assume $IsValid'address'($t1); + + // assume WellFormed($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:885:5+1 + assume $IsValid'address'($t2); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:885:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingAccountManagement_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingAccountManagement_$memory, $a_0); + ($IsValid'$1_vesting_VestingAccountManagement'($rsc)))); + + // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:885:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); + (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; + (var j := $i_4; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); + + // assume Identical($t3, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:373:9+65 + assume {:print "$at(3,15606,15671)"} true; + assume ($t3 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); + + // @101 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:885:5+1 + assume {:print "$at(2,40895,40896)"} true; + $1_vesting_VestingContract_$memory#101 := $1_vesting_VestingContract_$memory; + + // trace_local[admin]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:885:5+1 + assume {:print "$track_local(57,21,0):", $t0} $t0 == $t0; + + // trace_local[contract_address]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:885:5+1 + assume {:print "$track_local(57,21,1):", $t1} $t1 == $t1; + + // trace_local[beneficiary_resetter]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:885:5+1 + assume {:print "$track_local(57,21,2):", $t2} $t2 == $t2; + + // $t4 := [82, 79, 76, 69, 95, 66, 69, 78, 69, 70, 73, 67, 73, 65, 82, 89, 95, 82, 69, 83, 69, 84, 84, 69, 82] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:890:59+25 + assume {:print "$at(2,41153,41178)"} true; + $t4 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(82, 79, 76, 69), MakeVec4(95, 66, 69, 78)), MakeVec4(69, 70, 73, 67)), MakeVec4(73, 65, 82, 89)), MakeVec4(95, 82, 69, 83)), MakeVec4(69, 84, 84, 69)), MakeVec1(82)); + assume $IsValid'vec'u8''($t4); + + // $t5 := string::utf8($t4) on_abort goto L2 with $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:890:54+31 + call $t5 := $1_string_utf8($t4); + if ($abort_flag) { + assume {:print "$at(2,41148,41179)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(57,21):", $t6} $t6 == $t6; + goto L2; + } + + // assume Identical($t7, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:373:9+65 + assume {:print "$at(3,15606,15671)"} true; + assume ($t7 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); + + // vesting::set_management_role($t0, $t1, $t5, $t2) on_abort goto L2 with $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:890:9+99 + assume {:print "$at(2,41103,41202)"} true; + call $1_vesting_set_management_role($t0, $t1, $t5, $t2); + if ($abort_flag) { + assume {:print "$at(2,41103,41202)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(57,21):", $t6} $t6 == $t6; + goto L2; + } + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:891:5+1 + assume {:print "$at(2,41208,41209)"} true; +L1: + + // assert Not(Not(string::spec_internal_check_utf8[]([82, 79, 76, 69, 95, 66, 69, 78, 69, 70, 73, 67, 73, 65, 82, 89, 95, 82, 69, 83, 69, 84, 84, 69, 82]))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:292:9+76 + assume {:print "$at(3,11956,12032)"} true; + assert {:msg "assert_failed(3,11956,12032): function does not abort under this condition"} + !!$1_string_spec_internal_check_utf8(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(82, 79, 76, 69), MakeVec4(95, 66, 69, 78)), MakeVec4(69, 70, 73, 67)), MakeVec4(73, 65, 82, 89)), MakeVec4(95, 82, 69, 83)), MakeVec4(69, 84, 84, 69)), MakeVec1(82))); + + // assert Not(Not(exists[@101]($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:372:9+53 + assume {:print "$at(3,15544,15597)"} true; + assert {:msg "assert_failed(3,15544,15597): function does not abort under this condition"} + !!$ResourceExists($1_vesting_VestingContract_$memory#101, $t1); + + // assert Not(Neq
(signer::$address_of[]($t0), select vesting::VestingContract.admin($t3))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:375:9+62 + assume {:print "$at(3,15828,15890)"} true; + assert {:msg "assert_failed(3,15828,15890): function does not abort under this condition"} + !!$IsEqual'address'($1_signer_$address_of($t0), $admin#$1_vesting_VestingContract($t3)); + + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:375:9+62 + return; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:891:5+1 + assume {:print "$at(2,41208,41209)"} true; +L2: + + // abort($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:891:5+1 + assume {:print "$at(2,41208,41209)"} true; + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// fun vesting::set_management_role [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:862:5+951 +procedure {:inline 1} $1_vesting_set_management_role(_$t0: $signer, _$t1: int, _$t2: $1_string_String, _$t3: int) returns () +{ + // declare local variables + var $t4: $signer; + var $t5: $1_string_String; + var $t6: $Mutation (Table int (int)); + var $t7: $Mutation ($1_vesting_VestingContract); + var $t8: $1_vesting_VestingContract; + var $t9: $Mutation ($1_vesting_VestingContract); + var $t10: int; + var $t11: $1_vesting_VestingContract; + var $t12: bool; + var $t13: bool; + var $t14: $1_vesting_VestingContract; + var $t15: $signer; + var $t16: Table int (int); + var $t17: $1_vesting_VestingAccountManagement; + var $t18: $Mutation ($1_vesting_VestingAccountManagement); + var $t19: $Mutation (Table int (int)); + var $t20: Table int (int); + var $t21: bool; + var $t22: $Mutation (int); + var $t0: $signer; + var $t1: int; + var $t2: $1_string_String; + var $t3: int; + var $temp_0'$1_simple_map_SimpleMap'$1_string_String_address'': Table int (int); + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; + var $temp_0'address': int; + var $temp_0'signer': $signer; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + + // bytecode translation starts here + // assume Identical($t8, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:373:9+65 + assume {:print "$at(3,15606,15671)"} true; + assume ($t8 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); + + // trace_local[admin]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:862:5+1 + assume {:print "$at(2,39938,39939)"} true; + assume {:print "$track_local(57,22,0):", $t0} $t0 == $t0; + + // trace_local[contract_address]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:862:5+1 + assume {:print "$track_local(57,22,1):", $t1} $t1 == $t1; + + // trace_local[role]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:862:5+1 + assume {:print "$track_local(57,22,2):", $t2} $t2 == $t2; + + // trace_local[role_holder]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:862:5+1 + assume {:print "$track_local(57,22,3):", $t3} $t3 == $t3; + + // $t9 := borrow_global($t1) on_abort goto L7 with $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:868:32+17 + assume {:print "$at(2,40177,40194)"} true; + if (!$ResourceExists($1_vesting_VestingContract_$memory, $t1)) { + call $ExecFailureAbort(); + } else { + $t9 := $Mutation($Global($t1), EmptyVec(), $ResourceValue($1_vesting_VestingContract_$memory, $t1)); + } + if ($abort_flag) { + assume {:print "$at(2,40177,40194)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(57,22):", $t10} $t10 == $t10; + goto L7; + } + + // trace_local[vesting_contract]($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:868:13+16 + $temp_0'$1_vesting_VestingContract' := $Dereference($t9); + assume {:print "$track_local(57,22,7):", $temp_0'$1_vesting_VestingContract'} $temp_0'$1_vesting_VestingContract' == $temp_0'$1_vesting_VestingContract'; + + // $t11 := read_ref($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:869:21+25 + assume {:print "$at(2,40251,40276)"} true; + $t11 := $Dereference($t9); + + // vesting::verify_admin($t0, $t11) on_abort goto L7 with $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:869:9+37 + call $1_vesting_verify_admin($t0, $t11); + if ($abort_flag) { + assume {:print "$at(2,40239,40276)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(57,22):", $t10} $t10 == $t10; + goto L7; + } + + // $t12 := exists($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:871:14+6 + assume {:print "$at(2,40292,40298)"} true; + $t12 := $ResourceExists($1_vesting_VestingAccountManagement_$memory, $t1); + + // $t13 := !($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:871:13+1 + call $t13 := $Not($t12); + + // if ($t13) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:871:9+299 + if ($t13) { goto L1; } else { goto L0; } + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:872:72+16 + assume {:print "$at(2,40417,40433)"} true; +L1: + + // $t14 := read_ref($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:872:72+16 + assume {:print "$at(2,40417,40433)"} true; + $t14 := $Dereference($t9); + + // pack_ref_deep($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:872:72+16 + + // $t15 := vesting::get_vesting_account_signer_internal($t14) on_abort goto L7 with $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:872:36+53 + call $t15 := $1_vesting_get_vesting_account_signer_internal($t14); + if ($abort_flag) { + assume {:print "$at(2,40381,40434)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(57,22):", $t10} $t10 == $t10; + goto L7; + } + + // $t16 := simple_map::create() on_abort goto L7 with $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:874:24+37 + assume {:print "$at(2,40523,40560)"} true; + call $t16 := $1_simple_map_create'$1_string_String_address'(); + if ($abort_flag) { + assume {:print "$at(2,40523,40560)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(57,22):", $t10} $t10 == $t10; + goto L7; + } + + // $t17 := pack vesting::VestingAccountManagement($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:873:38+102 + assume {:print "$at(2,40473,40575)"} true; + $t17 := $1_vesting_VestingAccountManagement($t16); + + // move_to($t17, $t15) on_abort goto L7 with $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:873:13+7 + if ($ResourceExists($1_vesting_VestingAccountManagement_$memory, $addr#$signer($t15))) { + call $ExecFailureAbort(); + } else { + $1_vesting_VestingAccountManagement_$memory := $ResourceUpdate($1_vesting_VestingAccountManagement_$memory, $addr#$signer($t15), $t17); + } + if ($abort_flag) { + assume {:print "$at(2,40448,40455)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(57,22):", $t10} $t10 == $t10; + goto L7; + } + + // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:873:13+128 + goto L2; + + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:871:9+299 + assume {:print "$at(2,40287,40586)"} true; +L0: + + // pack_ref_deep($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:871:9+299 + assume {:print "$at(2,40287,40586)"} true; + + // destroy($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:871:9+299 + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:877:70+16 + assume {:print "$at(2,40657,40673)"} true; +L2: + + // $t18 := borrow_global($t1) on_abort goto L7 with $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:877:26+17 + assume {:print "$at(2,40613,40630)"} true; + if (!$ResourceExists($1_vesting_VestingAccountManagement_$memory, $t1)) { + call $ExecFailureAbort(); + } else { + $t18 := $Mutation($Global($t1), EmptyVec(), $ResourceValue($1_vesting_VestingAccountManagement_$memory, $t1)); + } + if ($abort_flag) { + assume {:print "$at(2,40613,40630)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(57,22):", $t10} $t10 == $t10; + goto L7; + } + + // $t19 := borrow_field.roles($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:877:21+72 + $t19 := $ChildMutation($t18, 0, $roles#$1_vesting_VestingAccountManagement($Dereference($t18))); + + // trace_local[roles]($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:877:13+5 + $temp_0'$1_simple_map_SimpleMap'$1_string_String_address'' := $Dereference($t19); + assume {:print "$track_local(57,22,6):", $temp_0'$1_simple_map_SimpleMap'$1_string_String_address''} $temp_0'$1_simple_map_SimpleMap'$1_string_String_address'' == $temp_0'$1_simple_map_SimpleMap'$1_string_String_address''; + + // $t20 := read_ref($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:878:37+14 + assume {:print "$at(2,40718,40732)"} true; + $t20 := $Dereference($t19); + + // $t21 := simple_map::contains_key($t20, $t2) on_abort goto L7 with $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:878:13+38 + call $t21 := $1_simple_map_contains_key'$1_string_String_address'($t20, $t2); + if ($abort_flag) { + assume {:print "$at(2,40694,40732)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(57,22):", $t10} $t10 == $t10; + goto L7; + } + + // if ($t21) goto L4 else goto L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:878:9+192 + if ($t21) { goto L4; } else { goto L3; } + + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:879:53+11 + assume {:print "$at(2,40788,40799)"} true; +L4: + + // $t22 := simple_map::borrow_mut($t19, $t2) on_abort goto L7 with $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:879:14+36 + assume {:print "$at(2,40749,40785)"} true; + call $t22,$t19 := $1_simple_map_borrow_mut'$1_string_String_address'($t19, $t2); + if ($abort_flag) { + assume {:print "$at(2,40749,40785)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(57,22):", $t10} $t10 == $t10; + goto L7; + } + + // write_ref($t22, $t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:879:13+51 + $t22 := $UpdateMutation($t22, $t3); + + // write_back[Reference($t19)[]]($t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:879:13+51 + $t19 := $UpdateMutation($t19, UpdateTable($Dereference($t19), ReadVec(p#$Mutation($t22), LenVec(p#$Mutation($t19))), $Dereference($t22))); + + // write_back[Reference($t18).roles (simple_map::SimpleMap)]($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:879:13+51 + $t18 := $UpdateMutation($t18, $Update'$1_vesting_VestingAccountManagement'_roles($Dereference($t18), $Dereference($t19))); + + // write_back[vesting::VestingAccountManagement@]($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:879:13+51 + $1_vesting_VestingAccountManagement_$memory := $ResourceUpdate($1_vesting_VestingAccountManagement_$memory, $GlobalLocationAddress($t18), + $Dereference($t18)); + + // goto L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:879:64+1 + goto L5; + + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:881:29+5 + assume {:print "$at(2,40846,40851)"} true; +L3: + + // simple_map::add($t19, $t2, $t3) on_abort goto L7 with $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:881:13+41 + assume {:print "$at(2,40830,40871)"} true; + call $t19 := $1_simple_map_add'$1_string_String_address'($t19, $t2, $t3); + if ($abort_flag) { + assume {:print "$at(2,40830,40871)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(57,22):", $t10} $t10 == $t10; + goto L7; + } + + // write_back[Reference($t18).roles (simple_map::SimpleMap)]($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:881:13+41 + $t18 := $UpdateMutation($t18, $Update'$1_vesting_VestingAccountManagement'_roles($Dereference($t18), $Dereference($t19))); + + // write_back[vesting::VestingAccountManagement@]($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:881:13+41 + $1_vesting_VestingAccountManagement_$memory := $ResourceUpdate($1_vesting_VestingAccountManagement_$memory, $GlobalLocationAddress($t18), + $Dereference($t18)); + + // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:882:10+1 + assume {:print "$at(2,40882,40883)"} true; +L5: + + // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:883:5+1 + assume {:print "$at(2,40888,40889)"} true; +L6: + + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:883:5+1 + assume {:print "$at(2,40888,40889)"} true; + return; + + // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:883:5+1 +L7: + + // abort($t10) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:883:5+1 + assume {:print "$at(2,40888,40889)"} true; + $abort_code := $t10; + $abort_flag := true; + return; + +} + +// fun vesting::set_management_role [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:862:5+951 +procedure {:timeLimit 200} $1_vesting_set_management_role$verify(_$t0: $signer, _$t1: int, _$t2: $1_string_String, _$t3: int) returns () +{ + // declare local variables + var $t4: $signer; + var $t5: $1_string_String; + var $t6: $Mutation (Table int (int)); + var $t7: $Mutation ($1_vesting_VestingContract); + var $t8: $1_vesting_VestingContract; + var $t9: $Mutation ($1_vesting_VestingContract); + var $t10: int; + var $t11: $1_vesting_VestingContract; + var $t12: bool; + var $t13: bool; + var $t14: $1_vesting_VestingContract; + var $t15: $signer; + var $t16: Table int (int); + var $t17: $1_vesting_VestingAccountManagement; + var $t18: $Mutation ($1_vesting_VestingAccountManagement); + var $t19: $Mutation (Table int (int)); + var $t20: Table int (int); + var $t21: bool; + var $t22: $Mutation (int); + var $t0: $signer; + var $t1: int; + var $t2: $1_string_String; + var $t3: int; + var $temp_0'$1_simple_map_SimpleMap'$1_string_String_address'': Table int (int); + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $1_vesting_VestingContract_$memory#85: $Memory $1_vesting_VestingContract; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:862:5+1 + assume {:print "$at(2,39938,39939)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($addr#$signer($t0)); + + // assume WellFormed($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:862:5+1 + assume $IsValid'address'($t1); + + // assume WellFormed($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:862:5+1 + assume $IsValid'$1_string_String'($t2); + + // assume WellFormed($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:862:5+1 + assume $IsValid'address'($t3); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:862:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingAccountManagement_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingAccountManagement_$memory, $a_0); + ($IsValid'$1_vesting_VestingAccountManagement'($rsc)))); + + // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:862:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); + (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; + (var j := $i_4; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); + + // assume Identical($t8, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:373:9+65 + assume {:print "$at(3,15606,15671)"} true; + assume ($t8 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); + + // @85 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:862:5+1 + assume {:print "$at(2,39938,39939)"} true; + $1_vesting_VestingContract_$memory#85 := $1_vesting_VestingContract_$memory; + + // trace_local[admin]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:862:5+1 + assume {:print "$track_local(57,22,0):", $t0} $t0 == $t0; + + // trace_local[contract_address]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:862:5+1 + assume {:print "$track_local(57,22,1):", $t1} $t1 == $t1; + + // trace_local[role]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:862:5+1 + assume {:print "$track_local(57,22,2):", $t2} $t2 == $t2; + + // trace_local[role_holder]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:862:5+1 + assume {:print "$track_local(57,22,3):", $t3} $t3 == $t3; + + // $t9 := borrow_global($t1) on_abort goto L7 with $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:868:32+17 + assume {:print "$at(2,40177,40194)"} true; + if (!$ResourceExists($1_vesting_VestingContract_$memory, $t1)) { + call $ExecFailureAbort(); + } else { + $t9 := $Mutation($Global($t1), EmptyVec(), $ResourceValue($1_vesting_VestingContract_$memory, $t1)); + } + if ($abort_flag) { + assume {:print "$at(2,40177,40194)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(57,22):", $t10} $t10 == $t10; + goto L7; + } + + // trace_local[vesting_contract]($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:868:13+16 + $temp_0'$1_vesting_VestingContract' := $Dereference($t9); + assume {:print "$track_local(57,22,7):", $temp_0'$1_vesting_VestingContract'} $temp_0'$1_vesting_VestingContract' == $temp_0'$1_vesting_VestingContract'; + + // $t11 := read_ref($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:869:21+25 + assume {:print "$at(2,40251,40276)"} true; + $t11 := $Dereference($t9); + + // vesting::verify_admin($t0, $t11) on_abort goto L7 with $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:869:9+37 + call $1_vesting_verify_admin($t0, $t11); + if ($abort_flag) { + assume {:print "$at(2,40239,40276)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(57,22):", $t10} $t10 == $t10; + goto L7; + } + + // $t12 := exists($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:871:14+6 + assume {:print "$at(2,40292,40298)"} true; + $t12 := $ResourceExists($1_vesting_VestingAccountManagement_$memory, $t1); + + // $t13 := !($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:871:13+1 + call $t13 := $Not($t12); + + // if ($t13) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:871:9+299 + if ($t13) { goto L1; } else { goto L0; } + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:872:72+16 + assume {:print "$at(2,40417,40433)"} true; +L1: + + // $t14 := read_ref($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:872:72+16 + assume {:print "$at(2,40417,40433)"} true; + $t14 := $Dereference($t9); + + // assert forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t9)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t9)), addr)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 + // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 + assume {:print "$at(59,538,673)"} true; + assert {:msg "assert_failed(59,538,673): data invariant does not hold"} + (forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t9))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t9))), addr)))); + + // assert forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t9)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t9)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t9)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t9)), j)), Eq(i, j)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 + // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 + assume {:print "$at(59,738,867)"} true; + assert {:msg "assert_failed(59,738,867): data invariant does not hold"} + (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t9))))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t9))))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; + (var j := $i_3; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t9))), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t9))), j)) ==> $IsEqual'num'(i, j)))))))); + + // $t15 := vesting::get_vesting_account_signer_internal($t14) on_abort goto L7 with $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:872:36+53 + assume {:print "$at(2,40381,40434)"} true; + call $t15 := $1_vesting_get_vesting_account_signer_internal($t14); + if ($abort_flag) { + assume {:print "$at(2,40381,40434)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(57,22):", $t10} $t10 == $t10; + goto L7; + } + + // $t16 := simple_map::create() on_abort goto L7 with $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:874:24+37 + assume {:print "$at(2,40523,40560)"} true; + call $t16 := $1_simple_map_create'$1_string_String_address'(); + if ($abort_flag) { + assume {:print "$at(2,40523,40560)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(57,22):", $t10} $t10 == $t10; + goto L7; + } + + // $t17 := pack vesting::VestingAccountManagement($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:873:38+102 + assume {:print "$at(2,40473,40575)"} true; + $t17 := $1_vesting_VestingAccountManagement($t16); + + // move_to($t17, $t15) on_abort goto L7 with $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:873:13+7 + if ($ResourceExists($1_vesting_VestingAccountManagement_$memory, $addr#$signer($t15))) { + call $ExecFailureAbort(); + } else { + $1_vesting_VestingAccountManagement_$memory := $ResourceUpdate($1_vesting_VestingAccountManagement_$memory, $addr#$signer($t15), $t17); + } + if ($abort_flag) { + assume {:print "$at(2,40448,40455)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(57,22):", $t10} $t10 == $t10; + goto L7; + } + + // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:873:13+128 + goto L2; + + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:871:9+299 + assume {:print "$at(2,40287,40586)"} true; +L0: + + // assert forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t9)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t9)), addr)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 + // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 + assume {:print "$at(59,538,673)"} true; + assert {:msg "assert_failed(59,538,673): data invariant does not hold"} + (forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t9))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t9))), addr)))); + + // assert forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t9)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t9)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t9)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t9)), j)), Eq(i, j)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 + // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 + assume {:print "$at(59,738,867)"} true; + assert {:msg "assert_failed(59,738,867): data invariant does not hold"} + (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t9))))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t9))))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; + (var j := $i_3; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t9))), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t9))), j)) ==> $IsEqual'num'(i, j)))))))); + + // destroy($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:871:9+299 + assume {:print "$at(2,40287,40586)"} true; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:877:70+16 + assume {:print "$at(2,40657,40673)"} true; +L2: + + // $t18 := borrow_global($t1) on_abort goto L7 with $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:877:26+17 + assume {:print "$at(2,40613,40630)"} true; + if (!$ResourceExists($1_vesting_VestingAccountManagement_$memory, $t1)) { + call $ExecFailureAbort(); + } else { + $t18 := $Mutation($Global($t1), EmptyVec(), $ResourceValue($1_vesting_VestingAccountManagement_$memory, $t1)); + } + if ($abort_flag) { + assume {:print "$at(2,40613,40630)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(57,22):", $t10} $t10 == $t10; + goto L7; + } + + // $t19 := borrow_field.roles($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:877:21+72 + $t19 := $ChildMutation($t18, 0, $roles#$1_vesting_VestingAccountManagement($Dereference($t18))); + + // trace_local[roles]($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:877:13+5 + $temp_0'$1_simple_map_SimpleMap'$1_string_String_address'' := $Dereference($t19); + assume {:print "$track_local(57,22,6):", $temp_0'$1_simple_map_SimpleMap'$1_string_String_address''} $temp_0'$1_simple_map_SimpleMap'$1_string_String_address'' == $temp_0'$1_simple_map_SimpleMap'$1_string_String_address''; + + // $t20 := read_ref($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:878:37+14 + assume {:print "$at(2,40718,40732)"} true; + $t20 := $Dereference($t19); + + // $t21 := simple_map::contains_key($t20, $t2) on_abort goto L7 with $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:878:13+38 + call $t21 := $1_simple_map_contains_key'$1_string_String_address'($t20, $t2); + if ($abort_flag) { + assume {:print "$at(2,40694,40732)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(57,22):", $t10} $t10 == $t10; + goto L7; + } + + // if ($t21) goto L4 else goto L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:878:9+192 + if ($t21) { goto L4; } else { goto L3; } + + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:879:53+11 + assume {:print "$at(2,40788,40799)"} true; +L4: + + // $t22 := simple_map::borrow_mut($t19, $t2) on_abort goto L7 with $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:879:14+36 + assume {:print "$at(2,40749,40785)"} true; + call $t22,$t19 := $1_simple_map_borrow_mut'$1_string_String_address'($t19, $t2); + if ($abort_flag) { + assume {:print "$at(2,40749,40785)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(57,22):", $t10} $t10 == $t10; + goto L7; + } + + // write_ref($t22, $t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:879:13+51 + $t22 := $UpdateMutation($t22, $t3); + + // write_back[Reference($t19)[]]($t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:879:13+51 + $t19 := $UpdateMutation($t19, UpdateTable($Dereference($t19), ReadVec(p#$Mutation($t22), LenVec(p#$Mutation($t19))), $Dereference($t22))); + + // write_back[Reference($t18).roles (simple_map::SimpleMap)]($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:879:13+51 + $t18 := $UpdateMutation($t18, $Update'$1_vesting_VestingAccountManagement'_roles($Dereference($t18), $Dereference($t19))); + + // write_back[vesting::VestingAccountManagement@]($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:879:13+51 + $1_vesting_VestingAccountManagement_$memory := $ResourceUpdate($1_vesting_VestingAccountManagement_$memory, $GlobalLocationAddress($t18), + $Dereference($t18)); + + // goto L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:879:64+1 + goto L5; + + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:881:29+5 + assume {:print "$at(2,40846,40851)"} true; +L3: + + // simple_map::add($t19, $t2, $t3) on_abort goto L7 with $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:881:13+41 + assume {:print "$at(2,40830,40871)"} true; + call $t19 := $1_simple_map_add'$1_string_String_address'($t19, $t2, $t3); + if ($abort_flag) { + assume {:print "$at(2,40830,40871)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(57,22):", $t10} $t10 == $t10; + goto L7; + } + + // write_back[Reference($t18).roles (simple_map::SimpleMap)]($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:881:13+41 + $t18 := $UpdateMutation($t18, $Update'$1_vesting_VestingAccountManagement'_roles($Dereference($t18), $Dereference($t19))); + + // write_back[vesting::VestingAccountManagement@]($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:881:13+41 + $1_vesting_VestingAccountManagement_$memory := $ResourceUpdate($1_vesting_VestingAccountManagement_$memory, $GlobalLocationAddress($t18), + $Dereference($t18)); + + // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:882:10+1 + assume {:print "$at(2,40882,40883)"} true; +L5: + + // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:883:5+1 + assume {:print "$at(2,40888,40889)"} true; +L6: + + // assert Not(Not(exists[@85]($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:372:9+53 + assume {:print "$at(3,15544,15597)"} true; + assert {:msg "assert_failed(3,15544,15597): function does not abort under this condition"} + !!$ResourceExists($1_vesting_VestingContract_$memory#85, $t1); + + // assert Not(Neq
(signer::$address_of[]($t0), select vesting::VestingContract.admin($t8))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:375:9+62 + assume {:print "$at(3,15828,15890)"} true; + assert {:msg "assert_failed(3,15828,15890): function does not abort under this condition"} + !!$IsEqual'address'($1_signer_$address_of($t0), $admin#$1_vesting_VestingContract($t8)); + + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:375:9+62 + return; + + // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:883:5+1 + assume {:print "$at(2,40888,40889)"} true; +L7: + + // abort($t10) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:883:5+1 + assume {:print "$at(2,40888,40889)"} true; + $abort_code := $t10; + $abort_flag := true; + return; + +} + +// fun vesting::terminate_vesting_contract [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:676:5+1102 +procedure {:timeLimit 200} $1_vesting_terminate_vesting_contract$verify(_$t0: $signer, _$t1: int) returns () +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: $Mutation ($1_vesting_VestingContract); + var $t6: $1_vesting_VestingContract; + var $t7: int; + var $t8: $Mutation ($1_vesting_VestingContract); + var $t9: $1_vesting_VestingContract; + var $t10: $1_vesting_StakingInfo; + var $t11: int; + var $t12: int; + var $t13: int; + var $t14: int; + var $t15: int; + var $t16: int; + var $t17: bool; + var $t18: int; + var $t19: int; + var $t20: int; + var $t21: $Mutation (int); + var $t22: int; + var $t23: $Mutation (int); + var $t24: $1_vesting_VestingContract; + var $t25: $Mutation ($1_event_EventHandle'$1_vesting_TerminateEvent'); + var $t26: int; + var $t27: $1_vesting_TerminateEvent; + var $t0: $signer; + var $t1: int; + var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:676:5+1 + assume {:print "$at(2,32023,32024)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($addr#$signer($t0)); + + // assume WellFormed($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:676:5+1 + assume $IsValid'address'($t1); + + // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.rotation_capability_offer($rsc)))), 1), Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.signer_capability_offer($rsc)))), 1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:676:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_account_Account_$memory, $a_0)}(var $rsc := $ResourceValue($1_account_Account_$memory, $a_0); + (($IsValid'$1_account_Account'($rsc) && ((LenVec($vec#$1_option_Option'address'($for#$1_account_CapabilityOffer'$1_account_RotationCapability'($rotation_capability_offer#$1_account_Account($rsc)))) <= 1) && (LenVec($vec#$1_option_Option'address'($for#$1_account_CapabilityOffer'$1_account_SignerCapability'($signer_capability_offer#$1_account_Account($rsc)))) <= 1)))))); + + // assume forall $rsc: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: select option::Option.vec(select coin::CoinInfo.supply($rsc)): And(And(And(And(And(Iff(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($elem)), option::$is_none(select optional_aggregator::OptionalAggregator.integer($elem))), Iff(option::$is_some(select optional_aggregator::OptionalAggregator.integer($elem)), option::$is_none(select optional_aggregator::OptionalAggregator.aggregator($elem)))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.integer($elem)), Le(select optional_aggregator::Integer.value(option::$borrow(select optional_aggregator::OptionalAggregator.integer($elem))), select optional_aggregator::Integer.limit(option::$borrow(select optional_aggregator::OptionalAggregator.integer($elem)))))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($elem)), Le(aggregator::spec_aggregator_get_val(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($elem))), aggregator::spec_get_limit(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($elem)))))), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.aggregator($elem))), 1)), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.integer($elem))), 1)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:676:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'$1_aptos_coin_AptosCoin''($rsc) && ((LenVec($vec#$1_option_Option'$1_optional_aggregator_OptionalAggregator'($supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($rsc))) <= 1) && (var $range_1 := $vec#$1_option_Option'$1_optional_aggregator_OptionalAggregator'($supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($rsc)); (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)) <==> $1_option_$is_none'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)) ==> ($value#$1_optional_aggregator_Integer($1_option_$borrow'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) <= $limit#$1_optional_aggregator_Integer($1_option_$borrow'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)))))) && ($1_option_$is_some'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem))) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)))))) && (LenVec($vec#$1_option_Option'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem))) <= 1)) && (LenVec($vec#$1_option_Option'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) <= 1))))))))))); + + // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:676:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $a_0); + ($IsValid'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''($rsc)))); + + // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:676:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin''($rsc)))); + + // assume exists>(0x0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:676:5+1 + assume $ResourceExists($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, 0); + + // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:676:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin''($rsc)))); + + // assume exists>(0x0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:676:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, 0); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:676:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_aptos_account_DirectTransferConfig_$memory, $a_0)}(var $rsc := $ResourceValue($1_aptos_account_DirectTransferConfig_$memory, $a_0); + ($IsValid'$1_aptos_account_DirectTransferConfig'($rsc)))); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:676:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_chain_status_GenesisEndMarker_$memory, $a_0)}(var $rsc := $ResourceValue($1_chain_status_GenesisEndMarker_$memory, $a_0); + ($IsValid'$1_chain_status_GenesisEndMarker'($rsc)))); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:676:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_timestamp_CurrentTimeMicroseconds_$memory, $a_0)}(var $rsc := $ResourceValue($1_timestamp_CurrentTimeMicroseconds_$memory, $a_0); + ($IsValid'$1_timestamp_CurrentTimeMicroseconds'($rsc)))); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:676:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_stake_StakePool_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_StakePool_$memory, $a_0); + ($IsValid'$1_stake_StakePool'($rsc)))); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:676:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorConfig_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorConfig_$memory, $a_0); + ($IsValid'$1_stake_ValidatorConfig'($rsc)))); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:676:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorPerformance_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorPerformance_$memory, $a_0); + ($IsValid'$1_stake_ValidatorPerformance'($rsc)))); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:676:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorSet_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorSet_$memory, $a_0); + ($IsValid'$1_stake_ValidatorSet'($rsc)))); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:676:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_reconfiguration_Configuration_$memory, $a_0)}(var $rsc := $ResourceValue($1_reconfiguration_Configuration_$memory, $a_0); + ($IsValid'$1_reconfiguration_Configuration'($rsc)))); + + // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), forall $key: select staking_contract::Store.staking_contracts($rsc): And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), i), Index(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:676:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_staking_contract_Store_$memory, $a_0)}(var $rsc := $ResourceValue($1_staking_contract_Store_$memory, $a_0); + (($IsValid'$1_staking_contract_Store'($rsc) && (var $range_1 := $staking_contracts#$1_staking_contract_Store($rsc); (forall $key: int :: ContainsTable($range_1, $EncodeKey'address'($key)) ==> (((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), addr)))) && (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))))); (var $range_3 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))))); (forall $i_4: int, $i_5: int :: $InRange($range_2, $i_4) ==> $InRange($range_3, $i_5) ==> (var i := $i_4; + (var j := $i_5; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), i), ReadVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), j)) ==> $IsEqual'num'(i, j)))))))))))))))); + + // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:676:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); + (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; + (var j := $i_4; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); + + // assume Implies(chain_status::$is_operating(), exists(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:676:5+1102 + // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.spec.move:4:9+93 + assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory, 1)); + + // assume Implies(exists(0x1), stake::validator_set_is_valid()) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:676:5+1102 + // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:8:9+92 + assume ($ResourceExists($1_stake_ValidatorSet_$memory, 1) ==> $1_stake_validator_set_is_valid($1_stake_StakePool_$memory, $1_stake_ValidatorConfig_$memory, $1_stake_ValidatorPerformance_$memory, $1_stake_ValidatorSet_$memory)); + + // assume Implies(chain_status::$is_operating(), exists(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:676:5+1102 + // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:12:9+96 + assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_stake_ValidatorSet_$memory, 1)); + + // assume Implies(chain_status::$is_operating(), Ge(timestamp::spec_now_microseconds(), reconfiguration::$last_reconfiguration_time())) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:676:5+1102 + // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/reconfiguration.spec.move:8:9+137 + assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> ($1_timestamp_spec_now_microseconds($1_timestamp_CurrentTimeMicroseconds_$memory) >= $1_reconfiguration_$last_reconfiguration_time($1_reconfiguration_Configuration_$memory))); + + // trace_local[admin]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:676:5+1 + assume {:print "$track_local(57,26,0):", $t0} $t0 == $t0; + + // trace_local[contract_address]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:676:5+1 + assume {:print "$track_local(57,26,1):", $t1} $t1 == $t1; + + // assume Identical($t6, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:389:9+65 + assume {:print "$at(3,16378,16443)"} true; + assume ($t6 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); + + // vesting::assert_active_vesting_contract($t1) on_abort goto L4 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:677:9+48 + assume {:print "$at(2,32145,32193)"} true; + call $1_vesting_assert_active_vesting_contract($t1); + if ($abort_flag) { + assume {:print "$at(2,32145,32193)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(57,26):", $t7} $t7 == $t7; + goto L4; + } + + // vesting::distribute($t1) on_abort goto L4 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:680:9+28 + assume {:print "$at(2,32315,32343)"} true; + call $1_vesting_distribute($t1); + if ($abort_flag) { + assume {:print "$at(2,32315,32343)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(57,26):", $t7} $t7 == $t7; + goto L4; + } + + // $t8 := borrow_global($t1) on_abort goto L4 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:682:32+17 + assume {:print "$at(2,32377,32394)"} true; + if (!$ResourceExists($1_vesting_VestingContract_$memory, $t1)) { + call $ExecFailureAbort(); + } else { + $t8 := $Mutation($Global($t1), EmptyVec(), $ResourceValue($1_vesting_VestingContract_$memory, $t1)); + } + if ($abort_flag) { + assume {:print "$at(2,32377,32394)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(57,26):", $t7} $t7 == $t7; + goto L4; + } + + // trace_local[vesting_contract]($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:682:13+16 + $temp_0'$1_vesting_VestingContract' := $Dereference($t8); + assume {:print "$track_local(57,26,5):", $temp_0'$1_vesting_VestingContract'} $temp_0'$1_vesting_VestingContract' == $temp_0'$1_vesting_VestingContract'; + + // $t9 := read_ref($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:683:21+25 + assume {:print "$at(2,32451,32476)"} true; + $t9 := $Dereference($t8); + + // vesting::verify_admin($t0, $t9) on_abort goto L4 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:683:9+37 + call $1_vesting_verify_admin($t0, $t9); + if ($abort_flag) { + assume {:print "$at(2,32439,32476)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(57,26):", $t7} $t7 == $t7; + goto L4; + } + + // $t10 := get_field.staking($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:684:75+24 + assume {:print "$at(2,32552,32576)"} true; + $t10 := $staking#$1_vesting_VestingContract($Dereference($t8)); + + // $t11 := get_field.pool_address($t10) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:684:75+37 + $t11 := $pool_address#$1_vesting_StakingInfo($t10); + + // ($t12, $t13, $t14, $t15) := stake::get_stake($t11) on_abort goto L4 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:684:58+55 + call $t12,$t13,$t14,$t15 := $1_stake_get_stake($t11); + if ($abort_flag) { + assume {:print "$at(2,32535,32590)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(57,26):", $t7} $t7 == $t7; + goto L4; + } + + // destroy($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:684:53+1 + + // trace_local[pending_active_stake]($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:684:31+20 + assume {:print "$track_local(57,26,4):", $t14} $t14 == $t14; + + // destroy($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:684:28+1 + + // trace_local[active_stake]($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:684:14+12 + assume {:print "$track_local(57,26,3):", $t12} $t12 == $t12; + + // $t16 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:685:41+1 + assume {:print "$at(2,32632,32633)"} true; + $t16 := 0; + assume $IsValid'u64'($t16); + + // $t17 := ==($t14, $t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:685:38+2 + $t17 := $IsEqual'u64'($t14, $t16); + + // if ($t17) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:685:9+78 + if ($t17) { goto L1; } else { goto L0; } + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:685:9+78 +L1: + + // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:685:9+78 + assume {:print "$at(2,32600,32678)"} true; + goto L2; + + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:685:9+78 +L0: + + // assert forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t8)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t8)), addr)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 + // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 + assume {:print "$at(59,538,673)"} true; + assert {:msg "assert_failed(59,538,673): data invariant does not hold"} + (forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t8))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t8))), addr)))); + + // assert forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t8)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t8)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t8)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t8)), j)), Eq(i, j)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 + // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 + assume {:print "$at(59,738,867)"} true; + assert {:msg "assert_failed(59,738,867): data invariant does not hold"} + (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t8))))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t8))))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; + (var j := $i_3; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t8))), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t8))), j)) ==> $IsEqual'num'(i, j)))))))); + + // destroy($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:685:9+78 + assume {:print "$at(2,32600,32678)"} true; + + // $t18 := 11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:685:65+20 + $t18 := 11; + assume $IsValid'u64'($t18); + + // $t19 := error::invalid_state($t18) on_abort goto L4 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:685:44+42 + call $t19 := $1_error_invalid_state($t18); + if ($abort_flag) { + assume {:print "$at(2,32635,32677)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(57,26):", $t7} $t7 == $t7; + goto L4; + } + + // trace_abort($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:685:9+78 + assume {:print "$at(2,32600,32678)"} true; + assume {:print "$track_abort(57,26):", $t19} $t19 == $t19; + + // $t7 := move($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:685:9+78 + $t7 := $t19; + + // goto L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:685:9+78 + goto L4; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:688:34+23 + assume {:print "$at(2,32760,32783)"} true; +L2: + + // $t20 := 2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:688:34+23 + assume {:print "$at(2,32760,32783)"} true; + $t20 := 2; + assume $IsValid'u64'($t20); + + // $t21 := borrow_field.state($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:688:9+22 + $t21 := $ChildMutation($t8, 0, $state#$1_vesting_VestingContract($Dereference($t8))); + + // write_ref($t21, $t20) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:688:9+48 + $t21 := $UpdateMutation($t21, $t20); + + // write_back[Reference($t8).state (u64)]($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:688:9+48 + $t8 := $UpdateMutation($t8, $Update'$1_vesting_VestingContract'_state($Dereference($t8), $Dereference($t21))); + + // $t22 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:689:44+1 + assume {:print "$at(2,32828,32829)"} true; + $t22 := 0; + assume $IsValid'u64'($t22); + + // $t23 := borrow_field.remaining_grant($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:689:9+32 + $t23 := $ChildMutation($t8, 7, $remaining_grant#$1_vesting_VestingContract($Dereference($t8))); + + // write_ref($t23, $t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:689:9+36 + $t23 := $UpdateMutation($t23, $t22); + + // write_back[Reference($t8).remaining_grant (u64)]($t23) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:689:9+36 + $t8 := $UpdateMutation($t8, $Update'$1_vesting_VestingContract'_remaining_grant($Dereference($t8), $Dereference($t23))); + + // $t24 := read_ref($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:690:21+32 + assume {:print "$at(2,32851,32883)"} true; + $t24 := $Dereference($t8); + + // vesting::unlock_stake($t24, $t12) on_abort goto L4 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:690:9+44 + call $1_vesting_unlock_stake($t24, $t12); + if ($abort_flag) { + assume {:print "$at(2,32839,32883)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(57,26):", $t7} $t7 == $t7; + goto L4; + } + + // $t25 := borrow_field.terminate_events($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:693:13+38 + assume {:print "$at(2,32918,32956)"} true; + $t25 := $ChildMutation($t8, 16, $terminate_events#$1_vesting_VestingContract($Dereference($t8))); + + // $t26 := get_field.admin($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:695:24+22 + assume {:print "$at(2,33010,33032)"} true; + $t26 := $admin#$1_vesting_VestingContract($Dereference($t8)); + + // $t27 := pack vesting::TerminateEvent($t26, $t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:694:13+137 + assume {:print "$at(2,32970,33107)"} true; + $t27 := $1_vesting_TerminateEvent($t26, $t1); + + // opaque begin: event::emit_event($t25, $t27) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:692:9+224 + assume {:print "$at(2,32894,33118)"} true; + + // opaque end: event::emit_event($t25, $t27) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:692:9+224 + + // write_back[Reference($t8).terminate_events (event::EventHandle)]($t25) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:692:9+224 + $t8 := $UpdateMutation($t8, $Update'$1_vesting_VestingContract'_terminate_events($Dereference($t8), $Dereference($t25))); + + // assert forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t8)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t8)), addr)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 + // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 + assume {:print "$at(59,538,673)"} true; + assert {:msg "assert_failed(59,538,673): data invariant does not hold"} + (forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t8))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t8))), addr)))); + + // assert forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t8)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t8)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t8)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t8)), j)), Eq(i, j)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 + // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 + assume {:print "$at(59,738,867)"} true; + assert {:msg "assert_failed(59,738,867): data invariant does not hold"} + (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t8))))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t8))))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; + (var j := $i_3; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t8))), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t8))), j)) ==> $IsEqual'num'(i, j)))))))); + + // write_back[vesting::VestingContract@]($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:692:9+224 + assume {:print "$at(2,32894,33118)"} true; + $1_vesting_VestingContract_$memory := $ResourceUpdate($1_vesting_VestingContract_$memory, $GlobalLocationAddress($t8), + $Dereference($t8)); + + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:699:5+1 + assume {:print "$at(2,33124,33125)"} true; +L3: + + // assert Not(false) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:699:5+1 + assume {:print "$at(2,33124,33125)"} true; + assert {:msg "assert_failed(2,33124,33125): function does not abort under this condition"} + !false; + + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:699:5+1 + return; + + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:699:5+1 +L4: + + // abort($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:699:5+1 + assume {:print "$at(2,33124,33125)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun vesting::total_accumulated_rewards [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:356:5+521 +procedure {:inline 1} $1_vesting_total_accumulated_rewards(_$t0: int) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: $1_vesting_VestingContract; + var $t3: $1_vesting_VestingContract; + var $t4: int; + var $t5: int; + var $t6: Table int ($1_staking_contract_StakingContract); + var $t7: $1_staking_contract_StakingContract; + var $t8: int; + var $t9: $1_stake_StakePool; + var $t10: int; + var $t11: int; + var $t12: int; + var $t13: int; + var $t14: int; + var $t15: $1_vesting_VestingContract; + var $t16: $1_vesting_VestingContract; + var $t17: int; + var $t18: $1_vesting_VestingContract; + var $t19: $1_vesting_StakingInfo; + var $t20: int; + var $t21: Table int ($1_staking_contract_StakingContract); + var $t22: $1_staking_contract_StakingContract; + var $t23: Table int ($1_staking_contract_StakingContract); + var $t24: int; + var $t25: $1_stake_StakePool; + var $t26: int; + var $t27: int; + var $t28: int; + var $t29: int; + var $t30: int; + var $t31: int; + var $t32: int; + var $t33: int; + var $t34: int; + var $t35: int; + var $t0: int; + var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; + var $temp_0'address': int; + var $temp_0'u64': int; + $t0 := _$t0; + + // bytecode translation starts here + // assume Identical($t3, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:60:9+73 + assume {:print "$at(3,2125,2198)"} true; + assume ($t3 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); + + // assume Identical($t4, $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:62:9+38 + assume {:print "$at(3,2208,2246)"} true; + assume ($t4 == $t0); + + // assume Identical($t5, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t3))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:63:9+49 + assume {:print "$at(3,2255,2304)"} true; + assume ($t5 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t3))); + + // assume Identical($t6, select staking_contract::Store.staking_contracts(global($t4))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:64:9+82 + assume {:print "$at(3,2313,2395)"} true; + assume ($t6 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t4))); + + // assume Identical($t7, simple_map::spec_get($t6, $t5)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:65:9+73 + assume {:print "$at(3,2404,2477)"} true; + assume ($t7 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($t6, $t5)); + + // assume Identical($t8, select staking_contract::StakingContract.pool_address($t7)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:70:9+49 + assume {:print "$at(3,2627,2676)"} true; + assume ($t8 == $pool_address#$1_staking_contract_StakingContract($t7)); + + // assume Identical($t9, global($t8)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:71:9+63 + assume {:print "$at(3,2685,2748)"} true; + assume ($t9 == $ResourceValue($1_stake_StakePool_$memory, $t8)); + + // assume Identical($t10, coin::$value(select stake::StakePool.active($t9))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:72:9+44 + assume {:print "$at(3,2757,2801)"} true; + assume ($t10 == $1_coin_$value'$1_aptos_coin_AptosCoin'($active#$1_stake_StakePool($t9))); + + // assume Identical($t11, coin::$value(select stake::StakePool.pending_active($t9))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:73:9+60 + assume {:print "$at(3,2810,2870)"} true; + assume ($t11 == $1_coin_$value'$1_aptos_coin_AptosCoin'($pending_active#$1_stake_StakePool($t9))); + + // assume Identical($t12, Add($t10, $t11)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:74:9+49 + assume {:print "$at(3,2879,2928)"} true; + assume ($t12 == ($t10 + $t11)); + + // assume Identical($t13, Sub($t12, select staking_contract::StakingContract.principal($t7))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:75:9+74 + assume {:print "$at(3,2937,3011)"} true; + assume ($t13 == ($t12 - $principal#$1_staking_contract_StakingContract($t7))); + + // assume Identical($t14, Div(Mul($t13, select staking_contract::StakingContract.commission_percentage($t7)), 100)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:76:9+91 + assume {:print "$at(3,3020,3111)"} true; + assume ($t14 == (($t13 * $commission_percentage#$1_staking_contract_StakingContract($t7)) div 100)); + + // assume Identical($t15, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:389:9+65 + assume {:print "$at(3,16378,16443)"} true; + assume ($t15 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); + + // assume And(Ge(select staking_contract::StakingContract.commission_percentage($t7), 0), Le(select staking_contract::StakingContract.commission_percentage($t7), 100)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:57:9+102 + assume {:print "$at(3,1905,2007)"} true; + assume (($commission_percentage#$1_staking_contract_StakingContract($t7) >= 0) && ($commission_percentage#$1_staking_contract_StakingContract($t7) <= 100)); + + // trace_local[vesting_contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:356:5+1 + assume {:print "$at(2,16826,16827)"} true; + assume {:print "$track_local(57,27,0):", $t0} $t0 == $t0; + + // assume Identical($t16, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:389:9+65 + assume {:print "$at(3,16378,16443)"} true; + assume ($t16 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); + + // vesting::assert_active_vesting_contract($t0) on_abort goto L2 with $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:357:9+56 + assume {:print "$at(2,16938,16994)"} true; + call $1_vesting_assert_active_vesting_contract($t0); + if ($abort_flag) { + assume {:print "$at(2,16938,16994)"} true; + $t17 := $abort_code; + assume {:print "$track_abort(57,27):", $t17} $t17 == $t17; + goto L2; + } + + // $t18 := get_global($t0) on_abort goto L2 with $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:359:32+13 + assume {:print "$at(2,17028,17041)"} true; + if (!$ResourceExists($1_vesting_VestingContract_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t18 := $ResourceValue($1_vesting_VestingContract_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(2,17028,17041)"} true; + $t17 := $abort_code; + assume {:print "$track_abort(57,27):", $t17} $t17 == $t17; + goto L2; + } + + // trace_local[vesting_contract]($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:359:13+16 + assume {:print "$track_local(57,27,2):", $t18} $t18 == $t18; + + // $t19 := get_field.staking($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:361:82+24 + assume {:print "$at(2,17224,17248)"} true; + $t19 := $staking#$1_vesting_VestingContract($t18); + + // $t20 := get_field.operator($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:361:82+33 + $t20 := $operator#$1_vesting_StakingInfo($t19); + + // assume Identical($t21, select staking_contract::Store.staking_contracts(global($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:25:9+64 + assume {:print "$at(134,958,1022)"} true; + assume ($t21 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t0))); + + // assume Identical($t22, simple_map::spec_get($t21, $t20)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:26:9+73 + assume {:print "$at(134,1031,1104)"} true; + assume ($t22 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($t21, $t20)); + + // assume Identical($t23, select staking_contract::Store.staking_contracts(global($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:259:9+64 + assume {:print "$at(134,11186,11250)"} true; + assume ($t23 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t0))); + + // assume Identical($t24, select staking_contract::StakingContract.pool_address($t22)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:299:9+49 + assume {:print "$at(134,12621,12670)"} true; + assume ($t24 == $pool_address#$1_staking_contract_StakingContract($t22)); + + // assume Identical($t25, global($t24)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:300:9+56 + assume {:print "$at(134,12679,12735)"} true; + assume ($t25 == $ResourceValue($1_stake_StakePool_$memory, $t24)); + + // assume Identical($t26, coin::$value(select stake::StakePool.active($t25))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:301:9+44 + assume {:print "$at(134,12744,12788)"} true; + assume ($t26 == $1_coin_$value'$1_aptos_coin_AptosCoin'($active#$1_stake_StakePool($t25))); + + // assume Identical($t27, coin::$value(select stake::StakePool.pending_active($t25))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:302:9+60 + assume {:print "$at(134,12797,12857)"} true; + assume ($t27 == $1_coin_$value'$1_aptos_coin_AptosCoin'($pending_active#$1_stake_StakePool($t25))); + + // assume Identical($t28, Add($t26, $t27)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:303:9+49 + assume {:print "$at(134,12866,12915)"} true; + assume ($t28 == ($t26 + $t27)); + + // assume Identical($t29, Sub($t28, select staking_contract::StakingContract.principal($t22))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:304:9+74 + assume {:print "$at(134,12924,12998)"} true; + assume ($t29 == ($t28 - $principal#$1_staking_contract_StakingContract($t22))); + + // ($t30, $t31, $t32) := staking_contract::staking_contract_amounts($t0, $t20) on_abort goto L2 with $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:361:13+103 + assume {:print "$at(2,17155,17258)"} true; + call $t30,$t31,$t32 := $1_staking_contract_staking_contract_amounts($t0, $t20); + if ($abort_flag) { + assume {:print "$at(2,17155,17258)"} true; + $t17 := $abort_code; + assume {:print "$track_abort(57,27):", $t17} $t17 == $t17; + goto L2; + } + + // trace_local[commission_amount]($t32) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:360:37+17 + assume {:print "$at(2,17122,17139)"} true; + assume {:print "$track_local(57,27,1):", $t32} $t32 == $t32; + + // destroy($t31) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:360:34+1 + + // $t33 := get_field.remaining_grant($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:362:30+32 + assume {:print "$at(2,17289,17321)"} true; + $t33 := $remaining_grant#$1_vesting_VestingContract($t18); + + // $t34 := -($t30, $t33) on_abort goto L2 with $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:362:28+1 + call $t34 := $Sub($t30, $t33); + if ($abort_flag) { + assume {:print "$at(2,17287,17288)"} true; + $t17 := $abort_code; + assume {:print "$track_abort(57,27):", $t17} $t17 == $t17; + goto L2; + } + + // $t35 := -($t34, $t32) on_abort goto L2 with $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:362:63+1 + call $t35 := $Sub($t34, $t32); + if ($abort_flag) { + assume {:print "$at(2,17322,17323)"} true; + $t17 := $abort_code; + assume {:print "$track_abort(57,27):", $t17} $t17 == $t17; + goto L2; + } + + // trace_return[0]($t35) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:362:9+73 + assume {:print "$track_return(57,27,0):", $t35} $t35 == $t35; + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:363:5+1 + assume {:print "$at(2,17346,17347)"} true; +L1: + + // return $t35 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:363:5+1 + assume {:print "$at(2,17346,17347)"} true; + $ret0 := $t35; + return; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:363:5+1 +L2: + + // abort($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:363:5+1 + assume {:print "$at(2,17346,17347)"} true; + $abort_code := $t17; + $abort_flag := true; + return; + +} + +// fun vesting::total_accumulated_rewards [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:356:5+521 +procedure {:timeLimit 200} $1_vesting_total_accumulated_rewards$verify(_$t0: int) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: $1_vesting_VestingContract; + var $t3: $1_vesting_VestingContract; + var $t4: int; + var $t5: int; + var $t6: Table int ($1_staking_contract_StakingContract); + var $t7: $1_staking_contract_StakingContract; + var $t8: int; + var $t9: $1_stake_StakePool; + var $t10: int; + var $t11: int; + var $t12: int; + var $t13: int; + var $t14: int; + var $t15: $1_vesting_VestingContract; + var $t16: $1_vesting_VestingContract; + var $t17: int; + var $t18: $1_vesting_VestingContract; + var $t19: $1_vesting_StakingInfo; + var $t20: int; + var $t21: Table int ($1_staking_contract_StakingContract); + var $t22: $1_staking_contract_StakingContract; + var $t23: Table int ($1_staking_contract_StakingContract); + var $t24: int; + var $t25: $1_stake_StakePool; + var $t26: int; + var $t27: int; + var $t28: int; + var $t29: int; + var $t30: int; + var $t31: int; + var $t32: int; + var $t33: int; + var $t34: int; + var $t35: int; + var $t0: int; + var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; + var $temp_0'address': int; + var $temp_0'u64': int; + var $1_staking_contract_Store_$memory#116: $Memory $1_staking_contract_Store; + var $1_stake_StakePool_$memory#117: $Memory $1_stake_StakePool; + var $1_vesting_VestingContract_$memory#118: $Memory $1_vesting_VestingContract; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:356:5+1 + assume {:print "$at(2,16826,16827)"} true; + assume $IsValid'address'($t0); + + // assume forall $rsc: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: select option::Option.vec(select coin::CoinInfo.supply($rsc)): And(And(And(And(And(Iff(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($elem)), option::$is_none(select optional_aggregator::OptionalAggregator.integer($elem))), Iff(option::$is_some(select optional_aggregator::OptionalAggregator.integer($elem)), option::$is_none(select optional_aggregator::OptionalAggregator.aggregator($elem)))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.integer($elem)), Le(select optional_aggregator::Integer.value(option::$borrow(select optional_aggregator::OptionalAggregator.integer($elem))), select optional_aggregator::Integer.limit(option::$borrow(select optional_aggregator::OptionalAggregator.integer($elem)))))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($elem)), Le(aggregator::spec_aggregator_get_val(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($elem))), aggregator::spec_get_limit(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($elem)))))), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.aggregator($elem))), 1)), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.integer($elem))), 1)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:356:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'$1_aptos_coin_AptosCoin''($rsc) && ((LenVec($vec#$1_option_Option'$1_optional_aggregator_OptionalAggregator'($supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($rsc))) <= 1) && (var $range_1 := $vec#$1_option_Option'$1_optional_aggregator_OptionalAggregator'($supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($rsc)); (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)) <==> $1_option_$is_none'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)) ==> ($value#$1_optional_aggregator_Integer($1_option_$borrow'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) <= $limit#$1_optional_aggregator_Integer($1_option_$borrow'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)))))) && ($1_option_$is_some'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem))) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)))))) && (LenVec($vec#$1_option_Option'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem))) <= 1)) && (LenVec($vec#$1_option_Option'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) <= 1))))))))))); + + // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:356:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin''($rsc)))); + + // assume exists>(0x0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:356:5+1 + assume $ResourceExists($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, 0); + + // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:356:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin''($rsc)))); + + // assume exists>(0x0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:356:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, 0); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:356:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_stake_StakePool_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_StakePool_$memory, $a_0); + ($IsValid'$1_stake_StakePool'($rsc)))); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:356:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorConfig_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorConfig_$memory, $a_0); + ($IsValid'$1_stake_ValidatorConfig'($rsc)))); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:356:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorPerformance_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorPerformance_$memory, $a_0); + ($IsValid'$1_stake_ValidatorPerformance'($rsc)))); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:356:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorSet_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorSet_$memory, $a_0); + ($IsValid'$1_stake_ValidatorSet'($rsc)))); + + // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), forall $key: select staking_contract::Store.staking_contracts($rsc): And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), i), Index(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:356:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_staking_contract_Store_$memory, $a_0)}(var $rsc := $ResourceValue($1_staking_contract_Store_$memory, $a_0); + (($IsValid'$1_staking_contract_Store'($rsc) && (var $range_1 := $staking_contracts#$1_staking_contract_Store($rsc); (forall $key: int :: ContainsTable($range_1, $EncodeKey'address'($key)) ==> (((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), addr)))) && (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))))); (var $range_3 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))))); (forall $i_4: int, $i_5: int :: $InRange($range_2, $i_4) ==> $InRange($range_3, $i_5) ==> (var i := $i_4; + (var j := $i_5; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), i), ReadVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), j)) ==> $IsEqual'num'(i, j)))))))))))))))); + + // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:356:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); + (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; + (var j := $i_4; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); + + // assume Implies(exists(0x1), stake::validator_set_is_valid()) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:356:5+521 + // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:8:9+92 + assume ($ResourceExists($1_stake_ValidatorSet_$memory, 1) ==> $1_stake_validator_set_is_valid($1_stake_StakePool_$memory, $1_stake_ValidatorConfig_$memory, $1_stake_ValidatorPerformance_$memory, $1_stake_ValidatorSet_$memory)); + + // assume Identical($t3, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:60:9+73 + assume {:print "$at(3,2125,2198)"} true; + assume ($t3 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); + + // assume Identical($t4, $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:62:9+38 + assume {:print "$at(3,2208,2246)"} true; + assume ($t4 == $t0); + + // assume Identical($t5, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t3))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:63:9+49 + assume {:print "$at(3,2255,2304)"} true; + assume ($t5 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t3))); + + // assume Identical($t6, select staking_contract::Store.staking_contracts(global($t4))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:64:9+82 + assume {:print "$at(3,2313,2395)"} true; + assume ($t6 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t4))); + + // assume Identical($t7, simple_map::spec_get($t6, $t5)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:65:9+73 + assume {:print "$at(3,2404,2477)"} true; + assume ($t7 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($t6, $t5)); + + // assume Identical($t8, select staking_contract::StakingContract.pool_address($t7)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:70:9+49 + assume {:print "$at(3,2627,2676)"} true; + assume ($t8 == $pool_address#$1_staking_contract_StakingContract($t7)); + + // assume Identical($t9, global($t8)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:71:9+63 + assume {:print "$at(3,2685,2748)"} true; + assume ($t9 == $ResourceValue($1_stake_StakePool_$memory, $t8)); + + // assume Identical($t10, coin::$value(select stake::StakePool.active($t9))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:72:9+44 + assume {:print "$at(3,2757,2801)"} true; + assume ($t10 == $1_coin_$value'$1_aptos_coin_AptosCoin'($active#$1_stake_StakePool($t9))); + + // assume Identical($t11, coin::$value(select stake::StakePool.pending_active($t9))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:73:9+60 + assume {:print "$at(3,2810,2870)"} true; + assume ($t11 == $1_coin_$value'$1_aptos_coin_AptosCoin'($pending_active#$1_stake_StakePool($t9))); + + // assume Identical($t12, Add($t10, $t11)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:74:9+49 + assume {:print "$at(3,2879,2928)"} true; + assume ($t12 == ($t10 + $t11)); + + // assume Identical($t13, Sub($t12, select staking_contract::StakingContract.principal($t7))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:75:9+74 + assume {:print "$at(3,2937,3011)"} true; + assume ($t13 == ($t12 - $principal#$1_staking_contract_StakingContract($t7))); + + // assume Identical($t14, Div(Mul($t13, select staking_contract::StakingContract.commission_percentage($t7)), 100)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:76:9+91 + assume {:print "$at(3,3020,3111)"} true; + assume ($t14 == (($t13 * $commission_percentage#$1_staking_contract_StakingContract($t7)) div 100)); + + // assume Identical($t15, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:389:9+65 + assume {:print "$at(3,16378,16443)"} true; + assume ($t15 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); + + // assume And(Ge(select staking_contract::StakingContract.commission_percentage($t7), 0), Le(select staking_contract::StakingContract.commission_percentage($t7), 100)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:57:9+102 + assume {:print "$at(3,1905,2007)"} true; + assume (($commission_percentage#$1_staking_contract_StakingContract($t7) >= 0) && ($commission_percentage#$1_staking_contract_StakingContract($t7) <= 100)); + + // @117 := save_mem(stake::StakePool) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:57:9+102 + $1_stake_StakePool_$memory#117 := $1_stake_StakePool_$memory; + + // @116 := save_mem(staking_contract::Store) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:57:9+102 + $1_staking_contract_Store_$memory#116 := $1_staking_contract_Store_$memory; + + // @118 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:57:9+102 + $1_vesting_VestingContract_$memory#118 := $1_vesting_VestingContract_$memory; + + // trace_local[vesting_contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:356:5+1 + assume {:print "$at(2,16826,16827)"} true; + assume {:print "$track_local(57,27,0):", $t0} $t0 == $t0; + + // assume Identical($t16, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:389:9+65 + assume {:print "$at(3,16378,16443)"} true; + assume ($t16 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); + + // vesting::assert_active_vesting_contract($t0) on_abort goto L2 with $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:357:9+56 + assume {:print "$at(2,16938,16994)"} true; + call $1_vesting_assert_active_vesting_contract($t0); + if ($abort_flag) { + assume {:print "$at(2,16938,16994)"} true; + $t17 := $abort_code; + assume {:print "$track_abort(57,27):", $t17} $t17 == $t17; + goto L2; + } + + // $t18 := get_global($t0) on_abort goto L2 with $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:359:32+13 + assume {:print "$at(2,17028,17041)"} true; + if (!$ResourceExists($1_vesting_VestingContract_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t18 := $ResourceValue($1_vesting_VestingContract_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(2,17028,17041)"} true; + $t17 := $abort_code; + assume {:print "$track_abort(57,27):", $t17} $t17 == $t17; + goto L2; + } + + // trace_local[vesting_contract]($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:359:13+16 + assume {:print "$track_local(57,27,2):", $t18} $t18 == $t18; + + // $t19 := get_field.staking($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:361:82+24 + assume {:print "$at(2,17224,17248)"} true; + $t19 := $staking#$1_vesting_VestingContract($t18); + + // $t20 := get_field.operator($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:361:82+33 + $t20 := $operator#$1_vesting_StakingInfo($t19); + + // assume Identical($t21, select staking_contract::Store.staking_contracts(global($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:25:9+64 + assume {:print "$at(134,958,1022)"} true; + assume ($t21 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t0))); + + // assume Identical($t22, simple_map::spec_get($t21, $t20)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:26:9+73 + assume {:print "$at(134,1031,1104)"} true; + assume ($t22 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($t21, $t20)); + + // assume Identical($t23, select staking_contract::Store.staking_contracts(global($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:259:9+64 + assume {:print "$at(134,11186,11250)"} true; + assume ($t23 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t0))); + + // assume Identical($t24, select staking_contract::StakingContract.pool_address($t22)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:299:9+49 + assume {:print "$at(134,12621,12670)"} true; + assume ($t24 == $pool_address#$1_staking_contract_StakingContract($t22)); + + // assume Identical($t25, global($t24)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:300:9+56 + assume {:print "$at(134,12679,12735)"} true; + assume ($t25 == $ResourceValue($1_stake_StakePool_$memory, $t24)); + + // assume Identical($t26, coin::$value(select stake::StakePool.active($t25))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:301:9+44 + assume {:print "$at(134,12744,12788)"} true; + assume ($t26 == $1_coin_$value'$1_aptos_coin_AptosCoin'($active#$1_stake_StakePool($t25))); + + // assume Identical($t27, coin::$value(select stake::StakePool.pending_active($t25))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:302:9+60 + assume {:print "$at(134,12797,12857)"} true; + assume ($t27 == $1_coin_$value'$1_aptos_coin_AptosCoin'($pending_active#$1_stake_StakePool($t25))); + + // assume Identical($t28, Add($t26, $t27)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:303:9+49 + assume {:print "$at(134,12866,12915)"} true; + assume ($t28 == ($t26 + $t27)); + + // assume Identical($t29, Sub($t28, select staking_contract::StakingContract.principal($t22))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:304:9+74 + assume {:print "$at(134,12924,12998)"} true; + assume ($t29 == ($t28 - $principal#$1_staking_contract_StakingContract($t22))); + + // ($t30, $t31, $t32) := staking_contract::staking_contract_amounts($t0, $t20) on_abort goto L2 with $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:361:13+103 + assume {:print "$at(2,17155,17258)"} true; + call $t30,$t31,$t32 := $1_staking_contract_staking_contract_amounts($t0, $t20); + if ($abort_flag) { + assume {:print "$at(2,17155,17258)"} true; + $t17 := $abort_code; + assume {:print "$track_abort(57,27):", $t17} $t17 == $t17; + goto L2; + } + + // trace_local[commission_amount]($t32) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:360:37+17 + assume {:print "$at(2,17122,17139)"} true; + assume {:print "$track_local(57,27,1):", $t32} $t32 == $t32; + + // destroy($t31) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:360:34+1 + + // $t33 := get_field.remaining_grant($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:362:30+32 + assume {:print "$at(2,17289,17321)"} true; + $t33 := $remaining_grant#$1_vesting_VestingContract($t18); + + // $t34 := -($t30, $t33) on_abort goto L2 with $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:362:28+1 + call $t34 := $Sub($t30, $t33); + if ($abort_flag) { + assume {:print "$at(2,17287,17288)"} true; + $t17 := $abort_code; + assume {:print "$track_abort(57,27):", $t17} $t17 == $t17; + goto L2; + } + + // $t35 := -($t34, $t32) on_abort goto L2 with $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:362:63+1 + call $t35 := $Sub($t34, $t32); + if ($abort_flag) { + assume {:print "$at(2,17322,17323)"} true; + $t17 := $abort_code; + assume {:print "$track_abort(57,27):", $t17} $t17 == $t17; + goto L2; + } + + // trace_return[0]($t35) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:362:9+73 + assume {:print "$track_return(57,27,0):", $t35} $t35 == $t35; + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:363:5+1 + assume {:print "$at(2,17346,17347)"} true; +L1: + + // assert Not(Not(exists[@116]($t4))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:67:9+51 + assume {:print "$at(3,2487,2538)"} true; + assert {:msg "assert_failed(3,2487,2538): function does not abort under this condition"} + !!$ResourceExists($1_staking_contract_Store_$memory#116, $t4); + + // assert Not(Not(simple_map::spec_contains_key[]($t6, $t5))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:68:9+70 + assume {:print "$at(3,2547,2617)"} true; + assert {:msg "assert_failed(3,2547,2617): function does not abort under this condition"} + !!$1_simple_map_spec_contains_key'address_$1_staking_contract_StakingContract'($t6, $t5); + + // assert Not(Not(exists[@117]($t8))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:77:9+50 + assume {:print "$at(3,3120,3170)"} true; + assert {:msg "assert_failed(3,3120,3170): function does not abort under this condition"} + !!$ResourceExists($1_stake_StakePool_$memory#117, $t8); + + // assert Not(Gt(Add($t10, $t11), 18446744073709551615)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:78:9+44 + assume {:print "$at(3,3179,3223)"} true; + assert {:msg "assert_failed(3,3179,3223): function does not abort under this condition"} + !(($t10 + $t11) > 18446744073709551615); + + // assert Not(Lt($t12, select staking_contract::StakingContract.principal($t7))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:79:9+58 + assume {:print "$at(3,3232,3290)"} true; + assert {:msg "assert_failed(3,3232,3290): function does not abort under this condition"} + !($t12 < $principal#$1_staking_contract_StakingContract($t7)); + + // assert Not(Gt(Mul($t13, select staking_contract::StakingContract.commission_percentage($t7)), 18446744073709551615)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:80:9+81 + assume {:print "$at(3,3299,3380)"} true; + assert {:msg "assert_failed(3,3299,3380): function does not abort under this condition"} + !(($t13 * $commission_percentage#$1_staking_contract_StakingContract($t7)) > 18446744073709551615); + + // assert Not(Gt(Add(select vesting::VestingContract.remaining_grant($t3), $t14), $t12)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:81:9+86 + assume {:print "$at(3,3389,3475)"} true; + assert {:msg "assert_failed(3,3389,3475): function does not abort under this condition"} + !(($remaining_grant#$1_vesting_VestingContract($t3) + $t14) > $t12); + + // assert Not(Lt($t12, select vesting::VestingContract.remaining_grant($t3))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:82:9+64 + assume {:print "$at(3,3484,3548)"} true; + assert {:msg "assert_failed(3,3484,3548): function does not abort under this condition"} + !($t12 < $remaining_grant#$1_vesting_VestingContract($t3)); + + // assert Not(Not(exists[@118]($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:388:9+53 + assume {:print "$at(3,16316,16369)"} true; + assert {:msg "assert_failed(3,16316,16369): function does not abort under this condition"} + !!$ResourceExists($1_vesting_VestingContract_$memory#118, $t0); + + // assert Not(Neq(select vesting::VestingContract.state($t15), 1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:390:9+56 + assume {:print "$at(3,16452,16508)"} true; + assert {:msg "assert_failed(3,16452,16508): function does not abort under this condition"} + !!$IsEqual'u64'($state#$1_vesting_VestingContract($t15), 1); + + // return $t35 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:390:9+56 + $ret0 := $t35; + return; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:363:5+1 + assume {:print "$at(2,17346,17347)"} true; +L2: + + // abort($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:363:5+1 + assume {:print "$at(2,17346,17347)"} true; + $abort_code := $t17; + $abort_flag := true; + return; + +} + +// fun vesting::update_operator [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:727:5+1149 +procedure {:timeLimit 200} $1_vesting_update_operator$verify(_$t0: $signer, _$t1: int, _$t2: int, _$t3: int) returns () +{ + // declare local variables + var $t4: $signer; + var $t5: $signer; + var $t6: int; + var $t7: $Mutation ($1_vesting_VestingContract); + var $t8: $1_vesting_VestingContract; + var $t9: $Mutation ($1_vesting_VestingContract); + var $t10: int; + var $t11: $1_vesting_VestingContract; + var $t12: $1_vesting_VestingContract; + var $t13: $signer; + var $t14: $1_vesting_StakingInfo; + var $t15: int; + var $t16: int; + var $t17: $1_staking_contract_Store; + var $t18: Table int ($1_staking_contract_StakingContract); + var $t19: Table int ($1_staking_contract_StakingContract); + var $t20: $Mutation ($1_vesting_StakingInfo); + var $t21: $Mutation (int); + var $t22: $Mutation ($1_vesting_StakingInfo); + var $t23: $Mutation (int); + var $t24: $Mutation ($1_event_EventHandle'$1_vesting_UpdateOperatorEvent'); + var $t25: int; + var $t26: $1_vesting_StakingInfo; + var $t27: int; + var $t28: $1_vesting_UpdateOperatorEvent; + var $t0: $signer; + var $t1: int; + var $t2: int; + var $t3: int; + var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $temp_0'u64': int; + var $1_vesting_VestingContract_$memory#133: $Memory $1_vesting_VestingContract; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:727:5+1 + assume {:print "$at(2,34297,34298)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($addr#$signer($t0)); + + // assume WellFormed($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:727:5+1 + assume $IsValid'address'($t1); + + // assume WellFormed($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:727:5+1 + assume $IsValid'address'($t2); + + // assume WellFormed($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:727:5+1 + assume $IsValid'u64'($t3); + + // assume forall $rsc: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: select option::Option.vec(select coin::CoinInfo.supply($rsc)): And(And(And(And(And(Iff(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($elem)), option::$is_none(select optional_aggregator::OptionalAggregator.integer($elem))), Iff(option::$is_some(select optional_aggregator::OptionalAggregator.integer($elem)), option::$is_none(select optional_aggregator::OptionalAggregator.aggregator($elem)))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.integer($elem)), Le(select optional_aggregator::Integer.value(option::$borrow(select optional_aggregator::OptionalAggregator.integer($elem))), select optional_aggregator::Integer.limit(option::$borrow(select optional_aggregator::OptionalAggregator.integer($elem)))))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($elem)), Le(aggregator::spec_aggregator_get_val(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($elem))), aggregator::spec_get_limit(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($elem)))))), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.aggregator($elem))), 1)), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.integer($elem))), 1)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:727:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'$1_aptos_coin_AptosCoin''($rsc) && ((LenVec($vec#$1_option_Option'$1_optional_aggregator_OptionalAggregator'($supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($rsc))) <= 1) && (var $range_1 := $vec#$1_option_Option'$1_optional_aggregator_OptionalAggregator'($supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($rsc)); (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)) <==> $1_option_$is_none'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)) ==> ($value#$1_optional_aggregator_Integer($1_option_$borrow'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) <= $limit#$1_optional_aggregator_Integer($1_option_$borrow'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)))))) && ($1_option_$is_some'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem))) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)))))) && (LenVec($vec#$1_option_Option'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem))) <= 1)) && (LenVec($vec#$1_option_Option'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) <= 1))))))))))); + + // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:727:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $a_0); + ($IsValid'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''($rsc)))); + + // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:727:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin''($rsc)))); + + // assume exists>(0x0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:727:5+1 + assume $ResourceExists($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, 0); + + // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:727:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin''($rsc)))); + + // assume exists>(0x0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:727:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, 0); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:727:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_chain_status_GenesisEndMarker_$memory, $a_0)}(var $rsc := $ResourceValue($1_chain_status_GenesisEndMarker_$memory, $a_0); + ($IsValid'$1_chain_status_GenesisEndMarker'($rsc)))); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:727:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_timestamp_CurrentTimeMicroseconds_$memory, $a_0)}(var $rsc := $ResourceValue($1_timestamp_CurrentTimeMicroseconds_$memory, $a_0); + ($IsValid'$1_timestamp_CurrentTimeMicroseconds'($rsc)))); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:727:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_stake_StakePool_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_StakePool_$memory, $a_0); + ($IsValid'$1_stake_StakePool'($rsc)))); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:727:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorConfig_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorConfig_$memory, $a_0); + ($IsValid'$1_stake_ValidatorConfig'($rsc)))); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:727:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorPerformance_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorPerformance_$memory, $a_0); + ($IsValid'$1_stake_ValidatorPerformance'($rsc)))); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:727:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorSet_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorSet_$memory, $a_0); + ($IsValid'$1_stake_ValidatorSet'($rsc)))); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:727:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_reconfiguration_Configuration_$memory, $a_0)}(var $rsc := $ResourceValue($1_reconfiguration_Configuration_$memory, $a_0); + ($IsValid'$1_reconfiguration_Configuration'($rsc)))); + + // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), forall $key: select staking_contract::Store.staking_contracts($rsc): And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), i), Index(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:727:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_staking_contract_Store_$memory, $a_0)}(var $rsc := $ResourceValue($1_staking_contract_Store_$memory, $a_0); + (($IsValid'$1_staking_contract_Store'($rsc) && (var $range_1 := $staking_contracts#$1_staking_contract_Store($rsc); (forall $key: int :: ContainsTable($range_1, $EncodeKey'address'($key)) ==> (((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), addr)))) && (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))))); (var $range_3 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))))); (forall $i_4: int, $i_5: int :: $InRange($range_2, $i_4) ==> $InRange($range_3, $i_5) ==> (var i := $i_4; + (var j := $i_5; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), i), ReadVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), j)) ==> $IsEqual'num'(i, j)))))))))))))))); + + // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:727:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); + (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; + (var j := $i_4; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); + + // assume Implies(chain_status::$is_operating(), exists(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:727:5+1149 + // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.spec.move:4:9+93 + assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory, 1)); + + // assume Implies(exists(0x1), stake::validator_set_is_valid()) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:727:5+1149 + // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:8:9+92 + assume ($ResourceExists($1_stake_ValidatorSet_$memory, 1) ==> $1_stake_validator_set_is_valid($1_stake_StakePool_$memory, $1_stake_ValidatorConfig_$memory, $1_stake_ValidatorPerformance_$memory, $1_stake_ValidatorSet_$memory)); + + // assume Implies(chain_status::$is_operating(), exists(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:727:5+1149 + // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:12:9+96 + assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_stake_ValidatorSet_$memory, 1)); + + // assume Implies(chain_status::$is_operating(), Ge(timestamp::spec_now_microseconds(), reconfiguration::$last_reconfiguration_time())) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:727:5+1149 + // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/reconfiguration.spec.move:8:9+137 + assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> ($1_timestamp_spec_now_microseconds($1_timestamp_CurrentTimeMicroseconds_$memory) >= $1_reconfiguration_$last_reconfiguration_time($1_reconfiguration_Configuration_$memory))); + + // assume Identical($t8, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:382:9+65 + assume {:print "$at(3,16064,16129)"} true; + assume ($t8 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); + + // @133 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:727:5+1 + assume {:print "$at(2,34297,34298)"} true; + $1_vesting_VestingContract_$memory#133 := $1_vesting_VestingContract_$memory; + + // trace_local[admin]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:727:5+1 + assume {:print "$track_local(57,31,0):", $t0} $t0 == $t0; + + // trace_local[contract_address]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:727:5+1 + assume {:print "$track_local(57,31,1):", $t1} $t1 == $t1; + + // trace_local[new_operator]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:727:5+1 + assume {:print "$track_local(57,31,2):", $t2} $t2 == $t2; + + // trace_local[commission_percentage]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:727:5+1 + assume {:print "$track_local(57,31,3):", $t3} $t3 == $t3; + + // $t9 := borrow_global($t1) on_abort goto L2 with $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:733:32+17 + assume {:print "$at(2,34521,34538)"} true; + if (!$ResourceExists($1_vesting_VestingContract_$memory, $t1)) { + call $ExecFailureAbort(); + } else { + $t9 := $Mutation($Global($t1), EmptyVec(), $ResourceValue($1_vesting_VestingContract_$memory, $t1)); + } + if ($abort_flag) { + assume {:print "$at(2,34521,34538)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(57,31):", $t10} $t10 == $t10; + goto L2; + } + + // trace_local[vesting_contract]($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:733:13+16 + $temp_0'$1_vesting_VestingContract' := $Dereference($t9); + assume {:print "$track_local(57,31,7):", $temp_0'$1_vesting_VestingContract'} $temp_0'$1_vesting_VestingContract' == $temp_0'$1_vesting_VestingContract'; + + // $t11 := read_ref($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:734:21+25 + assume {:print "$at(2,34595,34620)"} true; + $t11 := $Dereference($t9); + + // vesting::verify_admin($t0, $t11) on_abort goto L2 with $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:734:9+37 + call $1_vesting_verify_admin($t0, $t11); + if ($abort_flag) { + assume {:print "$at(2,34583,34620)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(57,31):", $t10} $t10 == $t10; + goto L2; + } + + // $t12 := read_ref($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:735:68+16 + assume {:print "$at(2,34689,34705)"} true; + $t12 := $Dereference($t9); + + // $t13 := vesting::get_vesting_account_signer_internal($t12) on_abort goto L2 with $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:735:32+53 + call $t13 := $1_vesting_get_vesting_account_signer_internal($t12); + if ($abort_flag) { + assume {:print "$at(2,34653,34706)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(57,31):", $t10} $t10 == $t10; + goto L2; + } + + // trace_local[contract_signer]($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:735:13+15 + assume {:print "$track_local(57,31,5):", $t13} $t13 == $t13; + + // $t14 := get_field.staking($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:736:28+24 + assume {:print "$at(2,34735,34759)"} true; + $t14 := $staking#$1_vesting_VestingContract($Dereference($t9)); + + // $t15 := get_field.operator($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:736:28+33 + $t15 := $operator#$1_vesting_StakingInfo($t14); + + // trace_local[old_operator]($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:736:13+12 + assume {:print "$track_local(57,31,6):", $t15} $t15 == $t15; + + // assume Identical($t16, signer::$address_of($t13)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:170:9+48 + assume {:print "$at(134,7475,7523)"} true; + assume ($t16 == $1_signer_$address_of($t13)); + + // assume Identical($t17, global($t16)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:172:9+42 + assume {:print "$at(134,7620,7662)"} true; + assume ($t17 == $ResourceValue($1_staking_contract_Store_$memory, $t16)); + + // assume Identical($t18, select staking_contract::Store.staking_contracts($t17)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:173:9+48 + assume {:print "$at(134,7671,7719)"} true; + assume ($t18 == $staking_contracts#$1_staking_contract_Store($t17)); + + // assume Identical($t19, select staking_contract::Store.staking_contracts(global($t16))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 + assume {:print "$at(134,11481,11545)"} true; + assume ($t19 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t16))); + + // staking_contract::switch_operator($t13, $t15, $t2, $t3) on_abort goto L2 with $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:737:9+101 + assume {:print "$at(2,34778,34879)"} true; + call $1_staking_contract_switch_operator($t13, $t15, $t2, $t3); + if ($abort_flag) { + assume {:print "$at(2,34778,34879)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(57,31):", $t10} $t10 == $t10; + goto L2; + } + + // $t20 := borrow_field.staking($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:738:9+24 + assume {:print "$at(2,34889,34913)"} true; + $t20 := $ChildMutation($t9, 6, $staking#$1_vesting_VestingContract($Dereference($t9))); + + // $t21 := borrow_field.operator($t20) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:738:9+33 + $t21 := $ChildMutation($t20, 1, $operator#$1_vesting_StakingInfo($Dereference($t20))); + + // write_ref($t21, $t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:738:9+48 + $t21 := $UpdateMutation($t21, $t2); + + // write_back[Reference($t20).operator (address)]($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:738:9+48 + $t20 := $UpdateMutation($t20, $Update'$1_vesting_StakingInfo'_operator($Dereference($t20), $Dereference($t21))); + + // write_back[Reference($t9).staking (vesting::StakingInfo)]($t20) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:738:9+48 + $t9 := $UpdateMutation($t9, $Update'$1_vesting_VestingContract'_staking($Dereference($t9), $Dereference($t20))); + + // $t22 := borrow_field.staking($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:739:9+24 + assume {:print "$at(2,34947,34971)"} true; + $t22 := $ChildMutation($t9, 6, $staking#$1_vesting_VestingContract($Dereference($t9))); + + // $t23 := borrow_field.commission_percentage($t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:739:9+46 + $t23 := $ChildMutation($t22, 3, $commission_percentage#$1_vesting_StakingInfo($Dereference($t22))); + + // write_ref($t23, $t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:739:9+70 + $t23 := $UpdateMutation($t23, $t3); + + // write_back[Reference($t22).commission_percentage (u64)]($t23) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:739:9+70 + $t22 := $UpdateMutation($t22, $Update'$1_vesting_StakingInfo'_commission_percentage($Dereference($t22), $Dereference($t23))); + + // write_back[Reference($t9).staking (vesting::StakingInfo)]($t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:739:9+70 + $t9 := $UpdateMutation($t9, $Update'$1_vesting_VestingContract'_staking($Dereference($t9), $Dereference($t22))); + + // $t24 := borrow_field.update_operator_events($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:742:13+44 + assume {:print "$at(2,35052,35096)"} true; + $t24 := $ChildMutation($t9, 9, $update_operator_events#$1_vesting_VestingContract($Dereference($t9))); + + // $t25 := get_field.admin($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:744:24+22 + assume {:print "$at(2,35155,35177)"} true; + $t25 := $admin#$1_vesting_VestingContract($Dereference($t9)); + + // $t26 := get_field.staking($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:746:39+24 + assume {:print "$at(2,35277,35301)"} true; + $t26 := $staking#$1_vesting_VestingContract($Dereference($t9)); + + // $t27 := get_field.pool_address($t26) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:746:39+37 + $t27 := $pool_address#$1_vesting_StakingInfo($t26); + + // $t28 := pack vesting::UpdateOperatorEvent($t25, $t1, $t27, $t15, $t2, $t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:743:13+318 + assume {:print "$at(2,35110,35428)"} true; + $t28 := $1_vesting_UpdateOperatorEvent($t25, $t1, $t27, $t15, $t2, $t3); + + // opaque begin: event::emit_event($t24, $t28) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:741:9+411 + assume {:print "$at(2,35028,35439)"} true; + + // opaque end: event::emit_event($t24, $t28) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:741:9+411 + + // write_back[Reference($t9).update_operator_events (event::EventHandle)]($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:741:9+411 + $t9 := $UpdateMutation($t9, $Update'$1_vesting_VestingContract'_update_operator_events($Dereference($t9), $Dereference($t24))); + + // assert forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t9)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t9)), addr)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 + // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 + assume {:print "$at(59,538,673)"} true; + assert {:msg "assert_failed(59,538,673): data invariant does not hold"} + (forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t9))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t9))), addr)))); + + // assert forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t9)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t9)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t9)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t9)), j)), Eq(i, j)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 + // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 + assume {:print "$at(59,738,867)"} true; + assert {:msg "assert_failed(59,738,867): data invariant does not hold"} + (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t9))))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t9))))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; + (var j := $i_3; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t9))), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t9))), j)) ==> $IsEqual'num'(i, j)))))))); + + // write_back[vesting::VestingContract@]($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:741:9+411 + assume {:print "$at(2,35028,35439)"} true; + $1_vesting_VestingContract_$memory := $ResourceUpdate($1_vesting_VestingContract_$memory, $GlobalLocationAddress($t9), + $Dereference($t9)); + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:752:5+1 + assume {:print "$at(2,35445,35446)"} true; +L1: + + // assert Not(Not(exists[@133]($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:381:9+53 + assume {:print "$at(3,16002,16055)"} true; + assert {:msg "assert_failed(3,16002,16055): function does not abort under this condition"} + !!$ResourceExists($1_vesting_VestingContract_$memory#133, $t1); + + // assert Not(Neq
(signer::$address_of[]($t0), select vesting::VestingContract.admin($t8))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:383:9+62 + assume {:print "$at(3,16138,16200)"} true; + assert {:msg "assert_failed(3,16138,16200): function does not abort under this condition"} + !!$IsEqual'address'($1_signer_$address_of($t0), $admin#$1_vesting_VestingContract($t8)); + + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:383:9+62 + return; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:752:5+1 + assume {:print "$at(2,35445,35446)"} true; +L2: + + // abort($t10) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:752:5+1 + assume {:print "$at(2,35445,35446)"} true; + $abort_code := $t10; + $abort_flag := true; + return; + +} + +// fun vesting::verify_admin [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:937:5+182 +procedure {:inline 1} $1_vesting_verify_admin(_$t0: $signer, _$t1: $1_vesting_VestingContract) returns () +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: bool; + var $t6: int; + var $t7: int; + var $t0: $signer; + var $t1: $1_vesting_VestingContract; + var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; + var $temp_0'signer': $signer; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[admin]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:937:5+1 + assume {:print "$at(2,43701,43702)"} true; + assume {:print "$track_local(57,34,0):", $t0} $t0 == $t0; + + // trace_local[vesting_contract]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:937:5+1 + assume {:print "$track_local(57,34,1):", $t1} $t1 == $t1; + + // $t2 := signer::address_of($t0) on_abort goto L4 with $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:17+25 + assume {:print "$at(2,43788,43813)"} true; + call $t2 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(2,43788,43813)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(57,34):", $t3} $t3 == $t3; + goto L4; + } + + // $t4 := get_field.admin($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:46+22 + $t4 := $admin#$1_vesting_VestingContract($t1); + + // $t5 := ==($t2, $t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:43+2 + $t5 := $IsEqual'address'($t2, $t4); + + // if ($t5) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:9+96 + if ($t5) { goto L1; } else { goto L0; } + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:9+96 +L1: + + // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:9+96 + assume {:print "$at(2,43780,43876)"} true; + goto L2; + + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:93+10 +L0: + + // $t6 := 7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:93+10 + assume {:print "$at(2,43864,43874)"} true; + $t6 := 7; + assume $IsValid'u64'($t6); + + // $t7 := error::unauthenticated($t6) on_abort goto L4 with $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:70+34 + call $t7 := $1_error_unauthenticated($t6); + if ($abort_flag) { + assume {:print "$at(2,43841,43875)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(57,34):", $t3} $t3 == $t3; + goto L4; + } + + // trace_abort($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:9+96 + assume {:print "$at(2,43780,43876)"} true; + assume {:print "$track_abort(57,34):", $t7} $t7 == $t7; + + // $t3 := move($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:9+96 + $t3 := $t7; + + // goto L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:9+96 + goto L4; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:105+1 +L2: + + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:939:5+1 + assume {:print "$at(2,43882,43883)"} true; +L3: + + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:939:5+1 + assume {:print "$at(2,43882,43883)"} true; + return; + + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:939:5+1 +L4: + + // abort($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:939:5+1 + assume {:print "$at(2,43882,43883)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun vesting::verify_admin [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:937:5+182 +procedure {:timeLimit 200} $1_vesting_verify_admin$verify(_$t0: $signer, _$t1: $1_vesting_VestingContract) returns () +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: bool; + var $t6: int; + var $t7: int; + var $t0: $signer; + var $t1: $1_vesting_VestingContract; + var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; + var $temp_0'signer': $signer; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:937:5+1 + assume {:print "$at(2,43701,43702)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($addr#$signer($t0)); + + // assume And(WellFormed($t1), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t1)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t1)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t1)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t1)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t1)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t1)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:937:5+1 + assume ($IsValid'$1_vesting_VestingContract'($t1) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t1)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t1)), addr)))) && (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t1)))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t1)))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; + (var j := $i_3; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t1)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t1)), j)) ==> $IsEqual'num'(i, j)))))))))); + + // trace_local[admin]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:937:5+1 + assume {:print "$track_local(57,34,0):", $t0} $t0 == $t0; + + // trace_local[vesting_contract]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:937:5+1 + assume {:print "$track_local(57,34,1):", $t1} $t1 == $t1; + + // $t2 := signer::address_of($t0) on_abort goto L4 with $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:17+25 + assume {:print "$at(2,43788,43813)"} true; + call $t2 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(2,43788,43813)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(57,34):", $t3} $t3 == $t3; + goto L4; + } + + // $t4 := get_field.admin($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:46+22 + $t4 := $admin#$1_vesting_VestingContract($t1); + + // $t5 := ==($t2, $t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:43+2 + $t5 := $IsEqual'address'($t2, $t4); + + // if ($t5) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:9+96 + if ($t5) { goto L1; } else { goto L0; } + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:9+96 +L1: + + // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:9+96 + assume {:print "$at(2,43780,43876)"} true; + goto L2; + + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:93+10 +L0: + + // $t6 := 7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:93+10 + assume {:print "$at(2,43864,43874)"} true; + $t6 := 7; + assume $IsValid'u64'($t6); + + // $t7 := error::unauthenticated($t6) on_abort goto L4 with $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:70+34 + call $t7 := $1_error_unauthenticated($t6); + if ($abort_flag) { + assume {:print "$at(2,43841,43875)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(57,34):", $t3} $t3 == $t3; + goto L4; + } + + // trace_abort($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:9+96 + assume {:print "$at(2,43780,43876)"} true; + assume {:print "$track_abort(57,34):", $t7} $t7 == $t7; + + // $t3 := move($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:9+96 + $t3 := $t7; + + // goto L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:9+96 + goto L4; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:105+1 +L2: + + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:939:5+1 + assume {:print "$at(2,43882,43883)"} true; +L3: + + // assert Not(Neq
(signer::$address_of[]($t0), select vesting::VestingContract.admin($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:344:9+62 + assume {:print "$at(3,14545,14607)"} true; + assert {:msg "assert_failed(3,14545,14607): function does not abort under this condition"} + !!$IsEqual'address'($1_signer_$address_of($t0), $admin#$1_vesting_VestingContract($t1)); + + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:344:9+62 + return; + + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:939:5+1 + assume {:print "$at(2,43882,43883)"} true; +L4: + + // assert Neq
(signer::$address_of[]($t0), select vesting::VestingContract.admin($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:343:5+148 + assume {:print "$at(3,14465,14613)"} true; + assert {:msg "assert_failed(3,14465,14613): abort not covered by any of the `aborts_if` clauses"} + !$IsEqual'address'($1_signer_$address_of($t0), $admin#$1_vesting_VestingContract($t1)); + + // abort($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:343:5+148 + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun vesting::vest [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:558:5+2656 +procedure {:inline 1} $1_vesting_vest(_$t0: int) returns () +{ + // declare local variables + var $t1: $1_fixed_point32_FixedPoint32; + var $t2: int; + var $t3: int; + var $t4: Vec ($1_fixed_point32_FixedPoint32); + var $t5: int; + var $t6: int; + var $t7: $Mutation ($1_vesting_VestingContract); + var $t8: $1_fixed_point32_FixedPoint32; + var $t9: $Mutation ($1_vesting_VestingSchedule); + var $t10: $1_vesting_VestingContract; + var $t11: int; + var $t12: int; + var $t13: Table int ($1_staking_contract_StakingContract); + var $t14: $1_staking_contract_StakingContract; + var $t15: int; + var $t16: $1_stake_StakePool; + var $t17: int; + var $t18: int; + var $t19: int; + var $t20: int; + var $t21: int; + var $t22: $1_vesting_VestingContract; + var $t23: int; + var $t24: $Mutation ($1_vesting_VestingContract); + var $t25: $1_vesting_VestingSchedule; + var $t26: int; + var $t27: int; + var $t28: bool; + var $t29: $Mutation ($1_vesting_VestingSchedule); + var $t30: int; + var $t31: int; + var $t32: int; + var $t33: int; + var $t34: int; + var $t35: int; + var $t36: int; + var $t37: int; + var $t38: bool; + var $t39: Vec ($1_fixed_point32_FixedPoint32); + var $t40: int; + var $t41: int; + var $t42: int; + var $t43: bool; + var $t44: int; + var $t45: int; + var $t46: int; + var $t47: $1_pool_u64_Pool; + var $t48: int; + var $t49: int; + var $t50: bool; + var $t51: int; + var $t52: int; + var $t53: int; + var $t54: int; + var $t55: $Mutation (int); + var $t56: $Mutation (int); + var $t57: $1_vesting_VestingContract; + var $t58: $Mutation ($1_event_EventHandle'$1_vesting_VestEvent'); + var $t59: int; + var $t60: $1_vesting_StakingInfo; + var $t61: int; + var $t62: $1_vesting_VestEvent; + var $t0: int; + var $temp_0'$1_fixed_point32_FixedPoint32': $1_fixed_point32_FixedPoint32; + var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; + var $temp_0'$1_vesting_VestingSchedule': $1_vesting_VestingSchedule; + var $temp_0'address': int; + var $temp_0'u64': int; + var $temp_0'vec'$1_fixed_point32_FixedPoint32'': Vec ($1_fixed_point32_FixedPoint32); + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:558:5+1 + assume {:print "$at(2,26481,26482)"} true; + assume {:print "$track_local(57,35,0):", $t0} $t0 == $t0; + + // assume Identical($t10, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:60:9+73 + assume {:print "$at(3,2125,2198)"} true; + assume ($t10 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); + + // assume Identical($t11, $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:62:9+38 + assume {:print "$at(3,2208,2246)"} true; + assume ($t11 == $t0); + + // assume Identical($t12, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t10))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:63:9+49 + assume {:print "$at(3,2255,2304)"} true; + assume ($t12 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t10))); + + // assume Identical($t13, select staking_contract::Store.staking_contracts(global($t11))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:64:9+82 + assume {:print "$at(3,2313,2395)"} true; + assume ($t13 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t11))); + + // assume Identical($t14, simple_map::spec_get($t13, $t12)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:65:9+73 + assume {:print "$at(3,2404,2477)"} true; + assume ($t14 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($t13, $t12)); + + // assume Identical($t15, select staking_contract::StakingContract.pool_address($t14)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:70:9+49 + assume {:print "$at(3,2627,2676)"} true; + assume ($t15 == $pool_address#$1_staking_contract_StakingContract($t14)); + + // assume Identical($t16, global($t15)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:71:9+63 + assume {:print "$at(3,2685,2748)"} true; + assume ($t16 == $ResourceValue($1_stake_StakePool_$memory, $t15)); + + // assume Identical($t17, coin::$value(select stake::StakePool.active($t16))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:72:9+44 + assume {:print "$at(3,2757,2801)"} true; + assume ($t17 == $1_coin_$value'$1_aptos_coin_AptosCoin'($active#$1_stake_StakePool($t16))); + + // assume Identical($t18, coin::$value(select stake::StakePool.pending_active($t16))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:73:9+60 + assume {:print "$at(3,2810,2870)"} true; + assume ($t18 == $1_coin_$value'$1_aptos_coin_AptosCoin'($pending_active#$1_stake_StakePool($t16))); + + // assume Identical($t19, Add($t17, $t18)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:74:9+49 + assume {:print "$at(3,2879,2928)"} true; + assume ($t19 == ($t17 + $t18)); + + // assume Identical($t20, Sub($t19, select staking_contract::StakingContract.principal($t14))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:75:9+74 + assume {:print "$at(3,2937,3011)"} true; + assume ($t20 == ($t19 - $principal#$1_staking_contract_StakingContract($t14))); + + // assume Identical($t21, Div(Mul($t20, select staking_contract::StakingContract.commission_percentage($t14)), 100)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:76:9+91 + assume {:print "$at(3,3020,3111)"} true; + assume ($t21 == (($t20 * $commission_percentage#$1_staking_contract_StakingContract($t14)) div 100)); + + // assume Identical($t22, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:389:9+65 + assume {:print "$at(3,16378,16443)"} true; + assume ($t22 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); + + // vesting::unlock_rewards($t0) on_abort goto L8 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:560:9+32 + assume {:print "$at(2,26610,26642)"} true; + call $1_vesting_unlock_rewards($t0); + if ($abort_flag) { + assume {:print "$at(2,26610,26642)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(57,35):", $t23} $t23 == $t23; + goto L8; + } + + // $t24 := borrow_global($t0) on_abort goto L8 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:564:32+17 + assume {:print "$at(2,26810,26827)"} true; + if (!$ResourceExists($1_vesting_VestingContract_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t24 := $Mutation($Global($t0), EmptyVec(), $ResourceValue($1_vesting_VestingContract_$memory, $t0)); + } + if ($abort_flag) { + assume {:print "$at(2,26810,26827)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(57,35):", $t23} $t23 == $t23; + goto L8; + } + + // trace_local[vesting_contract]($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:564:13+16 + $temp_0'$1_vesting_VestingContract' := $Dereference($t24); + assume {:print "$track_local(57,35,7):", $temp_0'$1_vesting_VestingContract'} $temp_0'$1_vesting_VestingContract' == $temp_0'$1_vesting_VestingContract'; + + // $t25 := get_field.vesting_schedule($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:566:13+33 + assume {:print "$at(2,26932,26965)"} true; + $t25 := $vesting_schedule#$1_vesting_VestingContract($Dereference($t24)); + + // $t26 := get_field.start_timestamp_secs($t25) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:566:13+54 + $t26 := $start_timestamp_secs#$1_vesting_VestingSchedule($t25); + + // $t27 := timestamp::now_seconds() on_abort goto L8 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:566:70+24 + call $t27 := $1_timestamp_now_seconds(); + if ($abort_flag) { + assume {:print "$at(2,26989,27013)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(57,35):", $t23} $t23 == $t23; + goto L8; + } + + // $t28 := >($t26, $t27) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:566:68+1 + call $t28 := $Gt($t26, $t27); + + // if ($t28) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:566:9+117 + if ($t28) { goto L1; } else { goto L0; } + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:567:13+6 + assume {:print "$at(2,27029,27035)"} true; +L1: + + // pack_ref_deep($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:567:13+6 + assume {:print "$at(2,27029,27035)"} true; + + // destroy($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:567:13+6 + + // goto L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:567:13+6 + goto L7; + + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:571:37+16 + assume {:print "$at(2,27200,27216)"} true; +L0: + + // $t29 := borrow_field.vesting_schedule($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:571:32+38 + assume {:print "$at(2,27195,27233)"} true; + $t29 := $ChildMutation($t24, 4, $vesting_schedule#$1_vesting_VestingContract($Dereference($t24))); + + // trace_local[vesting_schedule]($t29) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:571:13+16 + $temp_0'$1_vesting_VestingSchedule' := $Dereference($t29); + assume {:print "$track_local(57,35,9):", $temp_0'$1_vesting_VestingSchedule'} $temp_0'$1_vesting_VestingSchedule' == $temp_0'$1_vesting_VestingSchedule'; + + // $t30 := get_field.last_vested_period($t29) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:572:34+35 + assume {:print "$at(2,27268,27303)"} true; + $t30 := $last_vested_period#$1_vesting_VestingSchedule($Dereference($t29)); + + // $t31 := 1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:573:56+1 + assume {:print "$at(2,27360,27361)"} true; + $t31 := 1; + assume $IsValid'u64'($t31); + + // $t32 := +($t30, $t31) on_abort goto L8 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:573:54+1 + call $t32 := $AddU64($t30, $t31); + if ($abort_flag) { + assume {:print "$at(2,27358,27359)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(57,35):", $t23} $t23 == $t23; + goto L8; + } + + // trace_local[next_period_to_vest]($t32) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:573:13+19 + assume {:print "$track_local(57,35,3):", $t32} $t32 == $t32; + + // $t33 := timestamp::now_seconds() on_abort goto L8 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:575:14+24 + assume {:print "$at(2,27412,27436)"} true; + call $t33 := $1_timestamp_now_seconds(); + if ($abort_flag) { + assume {:print "$at(2,27412,27436)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(57,35):", $t23} $t23 == $t23; + goto L8; + } + + // $t34 := get_field.start_timestamp_secs($t29) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:575:41+37 + $t34 := $start_timestamp_secs#$1_vesting_VestingSchedule($Dereference($t29)); + + // $t35 := -($t33, $t34) on_abort goto L8 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:575:39+1 + call $t35 := $Sub($t33, $t34); + if ($abort_flag) { + assume {:print "$at(2,27437,27438)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(57,35):", $t23} $t23 == $t23; + goto L8; + } + + // $t36 := get_field.period_duration($t29) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:575:82+32 + $t36 := $period_duration#$1_vesting_VestingSchedule($Dereference($t29)); + + // $t37 := /($t35, $t36) on_abort goto L8 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:575:80+1 + call $t37 := $Div($t35, $t36); + if ($abort_flag) { + assume {:print "$at(2,27478,27479)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(57,35):", $t23} $t23 == $t23; + goto L8; + } + + // $t38 := <($t37, $t32) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:576:35+1 + assume {:print "$at(2,27548,27549)"} true; + call $t38 := $Lt($t37, $t32); + + // if ($t38) goto L3 else goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:576:9+79 + if ($t38) { goto L3; } else { goto L2; } + + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:577:13+6 + assume {:print "$at(2,27585,27591)"} true; +L3: + + // destroy($t29) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:577:13+6 + assume {:print "$at(2,27585,27591)"} true; + + // pack_ref_deep($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:577:13+6 + + // destroy($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:577:13+6 + + // goto L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:577:13+6 + goto L7; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:582:25+16 + assume {:print "$at(2,27767,27783)"} true; +L2: + + // $t39 := get_field.schedule($t29) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:582:24+26 + assume {:print "$at(2,27766,27792)"} true; + $t39 := $schedule#$1_vesting_VestingSchedule($Dereference($t29)); + + // trace_local[schedule]($t39) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:582:13+8 + assume {:print "$track_local(57,35,4):", $t39} $t39 == $t39; + + // $t40 := 1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:583:52+1 + assume {:print "$at(2,27845,27846)"} true; + $t40 := 1; + assume $IsValid'u64'($t40); + + // $t41 := -($t32, $t40) on_abort goto L8 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:583:50+1 + call $t41 := $Sub($t32, $t40); + if ($abort_flag) { + assume {:print "$at(2,27843,27844)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(57,35):", $t23} $t23 == $t23; + goto L8; + } + + // trace_local[schedule_index]($t41) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:583:13+14 + assume {:print "$track_local(57,35,5):", $t41} $t41 == $t41; + + // $t42 := vector::length($t39) on_abort goto L8 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:584:53+24 + assume {:print "$at(2,27900,27924)"} true; + call $t42 := $1_vector_length'$1_fixed_point32_FixedPoint32'($t39); + if ($abort_flag) { + assume {:print "$at(2,27900,27924)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(57,35):", $t23} $t23 == $t23; + goto L8; + } + + // $t43 := <($t41, $t42) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:584:51+1 + call $t43 := $Lt($t41, $t42); + + // if ($t43) goto L5 else goto L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:584:32+281 + if ($t43) { goto L5; } else { goto L4; } + + // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:585:29+8 + assume {:print "$at(2,27956,27964)"} true; +L5: + + // $t1 := vector::borrow($t39, $t41) on_abort goto L8 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:585:14+40 + assume {:print "$at(2,27941,27981)"} true; + call $t1 := $1_vector_borrow'$1_fixed_point32_FixedPoint32'($t39, $t41); + if ($abort_flag) { + assume {:print "$at(2,27941,27981)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(57,35):", $t23} $t23 == $t23; + goto L8; + } + + // goto L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:584:32+281 + assume {:print "$at(2,27879,28160)"} true; + goto L6; + + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:588:29+8 + assume {:print "$at(2,28111,28119)"} true; +L4: + + // $t44 := vector::length($t39) on_abort goto L8 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:588:39+24 + assume {:print "$at(2,28121,28145)"} true; + call $t44 := $1_vector_length'$1_fixed_point32_FixedPoint32'($t39); + if ($abort_flag) { + assume {:print "$at(2,28121,28145)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(57,35):", $t23} $t23 == $t23; + goto L8; + } + + // $t45 := 1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:588:66+1 + $t45 := 1; + assume $IsValid'u64'($t45); + + // $t46 := -($t44, $t45) on_abort goto L8 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:588:64+1 + call $t46 := $Sub($t44, $t45); + if ($abort_flag) { + assume {:print "$at(2,28146,28147)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(57,35):", $t23} $t23 == $t23; + goto L8; + } + + // $t1 := vector::borrow($t39, $t46) on_abort goto L8 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:588:14+54 + call $t1 := $1_vector_borrow'$1_fixed_point32_FixedPoint32'($t39, $t46); + if ($abort_flag) { + assume {:print "$at(2,28096,28150)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(57,35):", $t23} $t23 == $t23; + goto L8; + } + + // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:584:32+281 + assume {:print "$at(2,27879,28160)"} true; +L6: + + // trace_local[vesting_fraction]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:584:13+16 + assume {:print "$at(2,27860,27876)"} true; + assume {:print "$track_local(57,35,8):", $t1} $t1 == $t1; + + // $t47 := get_field.grant_pool($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:590:49+28 + assume {:print "$at(2,28210,28238)"} true; + $t47 := $grant_pool#$1_vesting_VestingContract($Dereference($t24)); + + // $t48 := pool_u64::total_coins($t47) on_abort goto L8 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:590:27+51 + call $t48 := $1_pool_u64_total_coins($t47); + if ($abort_flag) { + assume {:print "$at(2,28188,28239)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(57,35):", $t23} $t23 == $t23; + goto L8; + } + + // $t49 := opaque begin: fixed_point32::multiply_u64($t48, $t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:591:29+58 + assume {:print "$at(2,28269,28327)"} true; + + // assume Identical($t50, Gt(fixed_point32::spec_multiply_u64($t48, $t1), 18446744073709551615)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:591:29+58 + assume ($t50 == ($1_fixed_point32_spec_multiply_u64($t48, $t1) > 18446744073709551615)); + + // if ($t50) goto L11 else goto L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:591:29+58 + if ($t50) { goto L11; } else { goto L9; } + + // label L10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:591:29+58 +L10: + + // assume And(Gt(fixed_point32::spec_multiply_u64($t48, $t1), 18446744073709551615), Eq(131075, $t23)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:591:29+58 + assume {:print "$at(2,28269,28327)"} true; + assume (($1_fixed_point32_spec_multiply_u64($t48, $t1) > 18446744073709551615) && $IsEqual'num'(131075, $t23)); + + // trace_abort($t23) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:591:29+58 + assume {:print "$at(2,28269,28327)"} true; + assume {:print "$track_abort(57,35):", $t23} $t23 == $t23; + + // goto L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:591:29+58 + goto L8; + + // label L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:591:29+58 +L9: + + // assume WellFormed($t49) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:591:29+58 + assume {:print "$at(2,28269,28327)"} true; + assume $IsValid'u64'($t49); + + // assume Eq($t49, fixed_point32::spec_multiply_u64($t48, $t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:591:29+58 + assume $IsEqual'u64'($t49, $1_fixed_point32_spec_multiply_u64($t48, $t1)); + + // $t49 := opaque end: fixed_point32::multiply_u64($t48, $t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:591:29+58 + + // $t51 := get_field.remaining_grant($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:593:44+32 + assume {:print "$at(2,28489,28521)"} true; + $t51 := $remaining_grant#$1_vesting_VestingContract($Dereference($t24)); + + // $t52 := math64::min($t49, $t51) on_abort goto L8 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:593:25+52 + call $t52 := $1_math64_min($t49, $t51); + if ($abort_flag) { + assume {:print "$at(2,28470,28522)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(57,35):", $t23} $t23 == $t23; + goto L8; + } + + // trace_local[vested_amount]($t52) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:593:9+13 + assume {:print "$track_local(57,35,6):", $t52} $t52 == $t52; + + // $t53 := get_field.remaining_grant($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:594:44+32 + assume {:print "$at(2,28567,28599)"} true; + $t53 := $remaining_grant#$1_vesting_VestingContract($Dereference($t24)); + + // $t54 := -($t53, $t52) on_abort goto L8 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:594:77+1 + call $t54 := $Sub($t53, $t52); + if ($abort_flag) { + assume {:print "$at(2,28600,28601)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(57,35):", $t23} $t23 == $t23; + goto L8; + } + + // $t55 := borrow_field.remaining_grant($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:594:9+32 + $t55 := $ChildMutation($t24, 7, $remaining_grant#$1_vesting_VestingContract($Dereference($t24))); + + // write_ref($t55, $t54) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:594:9+83 + $t55 := $UpdateMutation($t55, $t54); + + // write_back[Reference($t24).remaining_grant (u64)]($t55) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:594:9+83 + $t24 := $UpdateMutation($t24, $Update'$1_vesting_VestingContract'_remaining_grant($Dereference($t24), $Dereference($t55))); + + // $t56 := borrow_field.last_vested_period($t29) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:595:9+35 + assume {:print "$at(2,28625,28660)"} true; + $t56 := $ChildMutation($t29, 3, $last_vested_period#$1_vesting_VestingSchedule($Dereference($t29))); + + // write_ref($t56, $t32) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:595:9+57 + $t56 := $UpdateMutation($t56, $t32); + + // write_back[Reference($t29).last_vested_period (u64)]($t56) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:595:9+57 + $t29 := $UpdateMutation($t29, $Update'$1_vesting_VestingSchedule'_last_vested_period($Dereference($t29), $Dereference($t56))); + + // write_back[Reference($t24).vesting_schedule (vesting::VestingSchedule)]($t29) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:595:9+57 + $t24 := $UpdateMutation($t24, $Update'$1_vesting_VestingContract'_vesting_schedule($Dereference($t24), $Dereference($t29))); + + // $t57 := read_ref($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:596:21+33 + assume {:print "$at(2,28704,28737)"} true; + $t57 := $Dereference($t24); + + // vesting::unlock_stake($t57, $t52) on_abort goto L8 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:596:9+45 + call $1_vesting_unlock_stake($t57, $t52); + if ($abort_flag) { + assume {:print "$at(2,28692,28737)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(57,35):", $t23} $t23 == $t23; + goto L8; + } + + // $t58 := borrow_field.vest_events($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:599:13+33 + assume {:print "$at(2,28772,28805)"} true; + $t58 := $ChildMutation($t24, 14, $vest_events#$1_vesting_VestingContract($Dereference($t24))); + + // $t59 := get_field.admin($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:601:24+22 + assume {:print "$at(2,28854,28876)"} true; + $t59 := $admin#$1_vesting_VestingContract($Dereference($t24)); + + // $t60 := get_field.staking($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:603:39+24 + assume {:print "$at(2,28976,29000)"} true; + $t60 := $staking#$1_vesting_VestingContract($Dereference($t24)); + + // $t61 := get_field.pool_address($t60) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:603:39+37 + $t61 := $pool_address#$1_vesting_StakingInfo($t60); + + // $t62 := pack vesting::VestEvent($t59, $t0, $t61, $t32, $t52) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:600:13+300 + assume {:print "$at(2,28819,29119)"} true; + $t62 := $1_vesting_VestEvent($t59, $t0, $t61, $t32, $t52); + + // opaque begin: event::emit_event($t58, $t62) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:598:9+382 + assume {:print "$at(2,28748,29130)"} true; + + // opaque end: event::emit_event($t58, $t62) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:598:9+382 + + // write_back[Reference($t24).vest_events (event::EventHandle)]($t58) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:598:9+382 + $t24 := $UpdateMutation($t24, $Update'$1_vesting_VestingContract'_vest_events($Dereference($t24), $Dereference($t58))); + + // pack_ref_deep($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:598:9+382 + + // write_back[vesting::VestingContract@]($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:598:9+382 + $1_vesting_VestingContract_$memory := $ResourceUpdate($1_vesting_VestingContract_$memory, $GlobalLocationAddress($t24), + $Dereference($t24)); + + // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:608:5+1 + assume {:print "$at(2,29136,29137)"} true; +L7: + + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:608:5+1 + assume {:print "$at(2,29136,29137)"} true; + return; + + // label L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:608:5+1 +L8: + + // abort($t23) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:608:5+1 + assume {:print "$at(2,29136,29137)"} true; + $abort_code := $t23; + $abort_flag := true; + return; + + // label L11 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L11: + + // destroy($t24) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // destroy($t29) at :1:1+10 + + // goto L10 at :1:1+10 + goto L10; + +} + +// fun vesting::vest_many [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:611:5+408 +procedure {:timeLimit 200} $1_vesting_vest_many$verify(_$t0: Vec (int)) returns () +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: Vec (int); + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: bool; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: int; + var $t12: bool; + var $t13: int; + var $t14: int; + var $t15: int; + var $t0: Vec (int); + var $temp_0'u64': int; + var $temp_0'vec'address'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:611:5+1 + assume {:print "$at(2,29191,29192)"} true; + assume $IsValid'vec'address''($t0); + + // assume forall $rsc: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: select option::Option.vec(select coin::CoinInfo.supply($rsc)): And(And(And(And(And(Iff(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($elem)), option::$is_none(select optional_aggregator::OptionalAggregator.integer($elem))), Iff(option::$is_some(select optional_aggregator::OptionalAggregator.integer($elem)), option::$is_none(select optional_aggregator::OptionalAggregator.aggregator($elem)))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.integer($elem)), Le(select optional_aggregator::Integer.value(option::$borrow(select optional_aggregator::OptionalAggregator.integer($elem))), select optional_aggregator::Integer.limit(option::$borrow(select optional_aggregator::OptionalAggregator.integer($elem)))))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($elem)), Le(aggregator::spec_aggregator_get_val(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($elem))), aggregator::spec_get_limit(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($elem)))))), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.aggregator($elem))), 1)), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.integer($elem))), 1)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:611:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'$1_aptos_coin_AptosCoin''($rsc) && ((LenVec($vec#$1_option_Option'$1_optional_aggregator_OptionalAggregator'($supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($rsc))) <= 1) && (var $range_1 := $vec#$1_option_Option'$1_optional_aggregator_OptionalAggregator'($supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($rsc)); (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)) <==> $1_option_$is_none'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)) ==> ($value#$1_optional_aggregator_Integer($1_option_$borrow'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) <= $limit#$1_optional_aggregator_Integer($1_option_$borrow'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)))))) && ($1_option_$is_some'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem))) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)))))) && (LenVec($vec#$1_option_Option'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem))) <= 1)) && (LenVec($vec#$1_option_Option'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) <= 1))))))))))); + + // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:611:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $a_0); + ($IsValid'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''($rsc)))); + + // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:611:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin''($rsc)))); + + // assume exists>(0x0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:611:5+1 + assume $ResourceExists($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, 0); + + // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:611:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin''($rsc)))); + + // assume exists>(0x0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:611:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, 0); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:611:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_chain_status_GenesisEndMarker_$memory, $a_0)}(var $rsc := $ResourceValue($1_chain_status_GenesisEndMarker_$memory, $a_0); + ($IsValid'$1_chain_status_GenesisEndMarker'($rsc)))); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:611:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_timestamp_CurrentTimeMicroseconds_$memory, $a_0)}(var $rsc := $ResourceValue($1_timestamp_CurrentTimeMicroseconds_$memory, $a_0); + ($IsValid'$1_timestamp_CurrentTimeMicroseconds'($rsc)))); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:611:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_stake_StakePool_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_StakePool_$memory, $a_0); + ($IsValid'$1_stake_StakePool'($rsc)))); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:611:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorConfig_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorConfig_$memory, $a_0); + ($IsValid'$1_stake_ValidatorConfig'($rsc)))); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:611:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorPerformance_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorPerformance_$memory, $a_0); + ($IsValid'$1_stake_ValidatorPerformance'($rsc)))); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:611:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorSet_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorSet_$memory, $a_0); + ($IsValid'$1_stake_ValidatorSet'($rsc)))); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:611:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_reconfiguration_Configuration_$memory, $a_0)}(var $rsc := $ResourceValue($1_reconfiguration_Configuration_$memory, $a_0); + ($IsValid'$1_reconfiguration_Configuration'($rsc)))); + + // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), forall $key: select staking_contract::Store.staking_contracts($rsc): And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), i), Index(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:611:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_staking_contract_Store_$memory, $a_0)}(var $rsc := $ResourceValue($1_staking_contract_Store_$memory, $a_0); + (($IsValid'$1_staking_contract_Store'($rsc) && (var $range_1 := $staking_contracts#$1_staking_contract_Store($rsc); (forall $key: int :: ContainsTable($range_1, $EncodeKey'address'($key)) ==> (((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), addr)))) && (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))))); (var $range_3 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))))); (forall $i_4: int, $i_5: int :: $InRange($range_2, $i_4) ==> $InRange($range_3, $i_5) ==> (var i := $i_4; + (var j := $i_5; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), i), ReadVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), j)) ==> $IsEqual'num'(i, j)))))))))))))))); + + // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:611:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); + (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; + (var j := $i_4; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); + + // assume Implies(chain_status::$is_operating(), exists(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:611:5+408 + // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.spec.move:4:9+93 + assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory, 1)); + + // assume Implies(exists(0x1), stake::validator_set_is_valid()) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:611:5+408 + // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:8:9+92 + assume ($ResourceExists($1_stake_ValidatorSet_$memory, 1) ==> $1_stake_validator_set_is_valid($1_stake_StakePool_$memory, $1_stake_ValidatorConfig_$memory, $1_stake_ValidatorPerformance_$memory, $1_stake_ValidatorSet_$memory)); + + // assume Implies(chain_status::$is_operating(), exists(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:611:5+408 + // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:12:9+96 + assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_stake_ValidatorSet_$memory, 1)); + + // assume Implies(chain_status::$is_operating(), Ge(timestamp::spec_now_microseconds(), reconfiguration::$last_reconfiguration_time())) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:611:5+408 + // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/reconfiguration.spec.move:8:9+137 + assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> ($1_timestamp_spec_now_microseconds($1_timestamp_CurrentTimeMicroseconds_$memory) >= $1_reconfiguration_$last_reconfiguration_time($1_reconfiguration_Configuration_$memory))); + + // trace_local[contract_addresses]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:611:5+1 + assume {:print "$track_local(57,36,0):", $t0} $t0 == $t0; + + // $t4 := vector::length
($t0) on_abort goto L9 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:612:19+35 + assume {:print "$at(2,29300,29335)"} true; + call $t4 := $1_vector_length'address'($t0); + if ($abort_flag) { + assume {:print "$at(2,29300,29335)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(57,36):", $t5} $t5 == $t5; + goto L9; + } + + // $t6 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:614:24+1 + assume {:print "$at(2,29361,29362)"} true; + $t6 := 0; + assume $IsValid'u64'($t6); + + // $t7 := !=($t4, $t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:614:21+2 + $t7 := !$IsEqual'u64'($t4, $t6); + + // if ($t7) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:614:9+72 + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:614:9+72 +L1: + + // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:614:9+72 + assume {:print "$at(2,29346,29418)"} true; + goto L2; + + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:614:51+28 +L0: + + // $t8 := 16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:614:51+28 + assume {:print "$at(2,29388,29416)"} true; + $t8 := 16; + assume $IsValid'u64'($t8); + + // $t9 := error::invalid_argument($t8) on_abort goto L9 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:614:27+53 + call $t9 := $1_error_invalid_argument($t8); + if ($abort_flag) { + assume {:print "$at(2,29364,29417)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(57,36):", $t5} $t5 == $t5; + goto L9; + } + + // trace_abort($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:614:9+72 + assume {:print "$at(2,29346,29418)"} true; + assume {:print "$track_abort(57,36):", $t9} $t9 == $t9; + + // $t5 := move($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:614:9+72 + $t5 := $t9; + + // goto L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:614:9+72 + goto L9; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:616:30+19 + assume {:print "$at(2,29450,29469)"} true; +L2: + + // trace_local[v#262]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:616:9+163 + assume {:print "$at(2,29429,29592)"} true; + assume {:print "$track_local(57,36,3):", $t0} $t0 == $t0; + + // $t10 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:261:17+1 + assume {:print "$at(18,9246,9247)"} true; + $t10 := 0; + assume $IsValid'u64'($t10); + + // trace_local[i#264]($t10) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:261:13+1 + assume {:print "$track_local(57,36,1):", $t10} $t10 == $t10; + + // $t11 := vector::length
($t0) on_abort goto L9 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:262:19+9 + assume {:print "$at(18,9267,9276)"} true; + call $t11 := $1_vector_length'address'($t0); + if ($abort_flag) { + assume {:print "$at(18,9267,9276)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(57,36):", $t5} $t5 == $t5; + goto L9; + } + + // trace_local[len#265]($t11) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:262:13+3 + assume {:print "$track_local(57,36,2):", $t11} $t11 == $t11; + + // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume {:print "$at(18,9293,9294)"} true; +L6: + + // $t1 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume {:print "$at(18,9293,9294)"} true; + havoc $t1; + + // assume WellFormed($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume $IsValid'u64'($t1); + + // $t12 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + havoc $t12; + + // assume WellFormed($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume $IsValid'bool'($t12); + + // $t13 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + havoc $t13; + + // assume WellFormed($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume $IsValid'address'($t13); + + // $t14 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + havoc $t14; + + // assume WellFormed($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume $IsValid'u64'($t14); + + // $t15 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + havoc $t15; + + // assume WellFormed($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume $IsValid'u64'($t15); + + // trace_local[i#264]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume {:print "$info(): enter loop, variable(s) i#264 havocked and reassigned"} true; + assume {:print "$track_local(57,36,1):", $t1} $t1 == $t1; + + // assume Not(AbortFlag()) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume !$abort_flag; + + // $t12 := <($t1, $t11) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:18+1 + call $t12 := $Lt($t1, $t11); + + // if ($t12) goto L4 else goto L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:9+78 + if ($t12) { goto L4; } else { goto L3; } + + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:9+78 +L4: + + // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:264:22+1 + assume {:print "$at(18,9325,9326)"} true; +L5: + + // $t13 := vector::borrow
($t0, $t1) on_abort goto L9 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:264:15+12 + assume {:print "$at(18,9318,9330)"} true; + call $t13 := $1_vector_borrow'address'($t0, $t1); + if ($abort_flag) { + assume {:print "$at(18,9318,9330)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(57,36):", $t5} $t5 == $t5; + goto L9; + } + + // vesting::vest($t13) on_abort goto L9 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:618:13+22 + assume {:print "$at(2,29558,29580)"} true; + call $1_vesting_vest($t13); + if ($abort_flag) { + assume {:print "$at(2,29558,29580)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(57,36):", $t5} $t5 == $t5; + goto L9; + } + + // $t14 := 1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:265:21+1 + assume {:print "$at(18,9353,9354)"} true; + $t14 := 1; + assume $IsValid'u64'($t14); + + // $t15 := +($t1, $t14) on_abort goto L9 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:265:19+1 + call $t15 := $AddU64($t1, $t14); + if ($abort_flag) { + assume {:print "$at(18,9351,9352)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(57,36):", $t5} $t5 == $t5; + goto L9; + } + + // trace_local[i#264]($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:265:13+1 + assume {:print "$track_local(57,36,1):", $t15} $t15 == $t15; + + // goto L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:265:13+9 + goto L7; + + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:619:11+1 + assume {:print "$at(2,29592,29593)"} true; +L3: + + // goto L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:619:11+1 + assume {:print "$at(2,29592,29593)"} true; + goto L8; + + // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:619:11+1 + // Loop invariant checking block for the loop started with header: L6 +L7: + + // stop() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:619:11+1 + assume {:print "$at(2,29592,29593)"} true; + assume false; + return; + + // label L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:620:5+1 + assume {:print "$at(2,29598,29599)"} true; +L8: + + // assert Not(false) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:620:5+1 + assume {:print "$at(2,29598,29599)"} true; + assert {:msg "assert_failed(2,29598,29599): function does not abort under this condition"} + !false; + + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:620:5+1 + return; + + // label L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:620:5+1 +L9: + + // abort($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:620:5+1 + assume {:print "$at(2,29598,29599)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun vesting::vesting_contracts [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:309:5+258 +procedure {:timeLimit 200} $1_vesting_vesting_contracts$verify(_$t0: int) returns ($ret0: Vec (int)) +{ + // declare local variables + var $t1: Vec (int); + var $t2: bool; + var $t3: bool; + var $t4: int; + var $t5: $1_vesting_AdminStore; + var $t0: int; + var $temp_0'address': int; + var $temp_0'vec'address'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:309:5+1 + assume {:print "$at(2,14451,14452)"} true; + assume $IsValid'address'($t0); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:309:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_vesting_AdminStore_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_AdminStore_$memory, $a_0); + ($IsValid'$1_vesting_AdminStore'($rsc)))); + + // trace_local[admin]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:309:5+1 + assume {:print "$track_local(57,37,0):", $t0} $t0 == $t0; + + // $t2 := exists($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:310:14+6 + assume {:print "$at(2,14548,14554)"} true; + $t2 := $ResourceExists($1_vesting_AdminStore_$memory, $t0); + + // $t3 := !($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:310:13+1 + call $t3 := $Not($t2); + + // if ($t3) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:310:9+160 + if ($t3) { goto L1; } else { goto L0; } + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:311:13+24 + assume {:print "$at(2,14589,14613)"} true; +L1: + + // $t1 := vector::empty
() on_abort goto L4 with $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:311:13+24 + assume {:print "$at(2,14589,14613)"} true; + call $t1 := $1_vector_empty'address'(); + if ($abort_flag) { + assume {:print "$at(2,14589,14613)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(57,37):", $t4} $t4 == $t4; + goto L4; + } + + // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:310:9+160 + assume {:print "$at(2,14543,14703)"} true; + goto L2; + + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:313:39+5 + assume {:print "$at(2,14669,14674)"} true; +L0: + + // $t5 := get_global($t0) on_abort goto L4 with $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:313:13+13 + assume {:print "$at(2,14643,14656)"} true; + if (!$ResourceExists($1_vesting_AdminStore_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t5 := $ResourceValue($1_vesting_AdminStore_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(2,14643,14656)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(57,37):", $t4} $t4 == $t4; + goto L4; + } + + // $t1 := get_field.vesting_contracts($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:313:13+50 + $t1 := $vesting_contracts#$1_vesting_AdminStore($t5); + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:310:9+160 + assume {:print "$at(2,14543,14703)"} true; +L2: + + // trace_return[0]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:310:9+160 + assume {:print "$at(2,14543,14703)"} true; + assume {:print "$track_return(57,37,0):", $t1} $t1 == $t1; + + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:315:5+1 + assume {:print "$at(2,14708,14709)"} true; +L3: + + // assert Not(false) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:32:9+16 + assume {:print "$at(3,1109,1125)"} true; + assert {:msg "assert_failed(3,1109,1125): function does not abort under this condition"} + !false; + + // return $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:32:9+16 + $ret0 := $t1; + return; + + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:315:5+1 + assume {:print "$at(2,14708,14709)"} true; +L4: + + // assert false at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:31:5+88 + assume {:print "$at(3,1043,1131)"} true; + assert {:msg "assert_failed(3,1043,1131): abort not covered by any of the `aborts_if` clauses"} + false; + + // abort($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:31:5+88 + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun vesting::vesting_start_secs [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:261:5+271 +procedure {:timeLimit 200} $1_vesting_vesting_start_secs$verify(_$t0: int) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: $1_vesting_VestingContract; + var $t3: $1_vesting_VestingSchedule; + var $t4: int; + var $t0: int; + var $temp_0'address': int; + var $temp_0'u64': int; + var $1_vesting_VestingContract_$memory#54: $Memory $1_vesting_VestingContract; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:261:5+1 + assume {:print "$at(2,11707,11708)"} true; + assume $IsValid'address'($t0); + + // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:261:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); + (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; + (var j := $i_4; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); + + // @54 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:261:5+1 + $1_vesting_VestingContract_$memory#54 := $1_vesting_VestingContract_$memory; + + // trace_local[vesting_contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:261:5+1 + assume {:print "$track_local(57,39,0):", $t0} $t0 == $t0; + + // vesting::assert_vesting_contract_exists($t0) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:262:9+56 + assume {:print "$at(2,11812,11868)"} true; + call $1_vesting_assert_vesting_contract_exists($t0); + if ($abort_flag) { + assume {:print "$at(2,11812,11868)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(57,39):", $t1} $t1 == $t1; + goto L2; + } + + // $t2 := get_global($t0) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:263:9+13 + assume {:print "$at(2,11878,11891)"} true; + if (!$ResourceExists($1_vesting_VestingContract_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t2 := $ResourceValue($1_vesting_VestingContract_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(2,11878,11891)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(57,39):", $t1} $t1 == $t1; + goto L2; + } + + // $t3 := get_field.vesting_schedule($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:263:9+73 + $t3 := $vesting_schedule#$1_vesting_VestingContract($t2); + + // $t4 := get_field.start_timestamp_secs($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:263:9+94 + $t4 := $start_timestamp_secs#$1_vesting_VestingSchedule($t3); + + // trace_return[0]($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:263:9+94 + assume {:print "$track_return(57,39,0):", $t4} $t4 == $t4; + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:264:5+1 + assume {:print "$at(2,11977,11978)"} true; +L1: + + // assert Not(Not(exists[@54]($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:12:9+61 + assume {:print "$at(3,352,413)"} true; + assert {:msg "assert_failed(3,352,413): function does not abort under this condition"} + !!$ResourceExists($1_vesting_VestingContract_$memory#54, $t0); + + // return $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:12:9+61 + $ret0 := $t4; + return; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:264:5+1 + assume {:print "$at(2,11977,11978)"} true; +L2: + + // assert Not(exists[@54]($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:11:5+141 + assume {:print "$at(3,278,419)"} true; + assert {:msg "assert_failed(3,278,419): abort not covered by any of the `aborts_if` clauses"} + !$ResourceExists($1_vesting_VestingContract_$memory#54, $t0); + + // abort($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:11:5+141 + $abort_code := $t1; + $abort_flag := true; + return; + +} + +// fun vesting::withdraw_stake [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:956:5+587 +procedure {:inline 1} $1_vesting_withdraw_stake(_$t0: $1_vesting_VestingContract, _$t1: int) returns ($ret0: $1_coin_Coin'$1_aptos_coin_AptosCoin') +{ + // declare local variables + var $t2: $signer; + var $t3: int; + var $t4: $1_vesting_StakingInfo; + var $t5: int; + var $t6: Table int ($1_staking_contract_StakingContract); + var $t7: int; + var $t8: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t9: int; + var $t10: $signer; + var $t11: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t12: int; + var $t13: $1_coin_CoinStore'$1_aptos_coin_AptosCoin'; + var $t14: int; + var $t15: int; + var $t16: $1_coin_CoinStore'$1_aptos_coin_AptosCoin'; + var $t17: int; + var $t18: $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $t0: $1_vesting_VestingContract; + var $t1: int; + var $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin'': $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; + var $temp_0'address': int; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[vesting_contract]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:956:5+1 + assume {:print "$at(2,44691,44692)"} true; + assume {:print "$track_local(57,41,0):", $t0} $t0 == $t0; + + // trace_local[contract_address]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:956:5+1 + assume {:print "$track_local(57,41,1):", $t1} $t1 == $t1; + + // $t4 := get_field.staking($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:959:56+24 + assume {:print "$at(2,45009,45033)"} true; + $t4 := $staking#$1_vesting_VestingContract($t0); + + // $t5 := get_field.operator($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:959:56+33 + $t5 := $operator#$1_vesting_StakingInfo($t4); + + // assume Identical($t6, select staking_contract::Store.staking_contracts(global($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 + assume {:print "$at(134,11481,11545)"} true; + assume ($t6 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t1))); + + // staking_contract::distribute($t1, $t5) on_abort goto L2 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:959:9+81 + assume {:print "$at(2,44962,45043)"} true; + call $1_staking_contract_distribute($t1, $t5); + if ($abort_flag) { + assume {:print "$at(2,44962,45043)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(57,41):", $t7} $t7 == $t7; + goto L2; + } + + // assume Identical($t8, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + assume {:print "$at(95,1664,1763)"} true; + assume ($t8 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + + // $t9 := coin::balance($t1) on_abort goto L2 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:960:31+42 + assume {:print "$at(2,45075,45117)"} true; + call $t9 := $1_coin_balance'$1_aptos_coin_AptosCoin'($t1); + if ($abort_flag) { + assume {:print "$at(2,45075,45117)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(57,41):", $t7} $t7 == $t7; + goto L2; + } + + // trace_local[withdrawn_coins]($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:960:13+15 + assume {:print "$track_local(57,41,3):", $t9} $t9 == $t9; + + // $t10 := vesting::get_vesting_account_signer_internal($t0) on_abort goto L2 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:961:32+53 + assume {:print "$at(2,45150,45203)"} true; + call $t10 := $1_vesting_get_vesting_account_signer_internal($t0); + if ($abort_flag) { + assume {:print "$at(2,45150,45203)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(57,41):", $t7} $t7 == $t7; + goto L2; + } + + // assume Identical($t11, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + assume {:print "$at(95,1664,1763)"} true; + assume ($t11 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + + // assume Identical($t12, signer::$address_of($t10)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:384:9+47 + assume {:print "$at(95,16622,16669)"} true; + assume ($t12 == $1_signer_$address_of($t10)); + + // assume Identical($t13, global>($t12)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:385:9+59 + assume {:print "$at(95,16678,16737)"} true; + assume ($t13 == $ResourceValue($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $t12)); + + // assume Identical($t14, select coin::Coin.value(select coin::CoinStore.coin($t13))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:386:9+36 + assume {:print "$at(95,16746,16782)"} true; + assume ($t14 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($coin#$1_coin_CoinStore'$1_aptos_coin_AptosCoin'($t13))); + + // assume Identical($t15, signer::$address_of($t10)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:394:9+47 + assume {:print "$at(95,17076,17123)"} true; + assume ($t15 == $1_signer_$address_of($t10)); + + // assume Identical($t16, global>($t15)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:395:9+59 + assume {:print "$at(95,17132,17191)"} true; + assume ($t16 == $ResourceValue($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $t15)); + + // assume Identical($t17, select coin::Coin.value(select coin::CoinStore.coin($t16))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:396:9+36 + assume {:print "$at(95,17200,17236)"} true; + assume ($t17 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($coin#$1_coin_CoinStore'$1_aptos_coin_AptosCoin'($t16))); + + // $t18 := coin::withdraw($t10, $t9) on_abort goto L2 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:962:9+59 + assume {:print "$at(2,45213,45272)"} true; + call $t18 := $1_coin_withdraw'$1_aptos_coin_AptosCoin'($t10, $t9); + if ($abort_flag) { + assume {:print "$at(2,45213,45272)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(57,41):", $t7} $t7 == $t7; + goto L2; + } + + // trace_return[0]($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:962:9+59 + assume {:print "$track_return(57,41,0):", $t18} $t18 == $t18; + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:963:5+1 + assume {:print "$at(2,45277,45278)"} true; +L1: + + // return $t18 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:963:5+1 + assume {:print "$at(2,45277,45278)"} true; + $ret0 := $t18; + return; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:963:5+1 +L2: + + // abort($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:963:5+1 + assume {:print "$at(2,45277,45278)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun vesting::withdraw_stake [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:956:5+587 +procedure {:timeLimit 200} $1_vesting_withdraw_stake$verify(_$t0: $1_vesting_VestingContract, _$t1: int) returns ($ret0: $1_coin_Coin'$1_aptos_coin_AptosCoin') +{ + // declare local variables + var $t2: $signer; + var $t3: int; + var $t4: $1_vesting_StakingInfo; + var $t5: int; + var $t6: Table int ($1_staking_contract_StakingContract); + var $t7: int; + var $t8: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t9: int; + var $t10: $signer; + var $t11: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t12: int; + var $t13: $1_coin_CoinStore'$1_aptos_coin_AptosCoin'; + var $t14: int; + var $t15: int; + var $t16: $1_coin_CoinStore'$1_aptos_coin_AptosCoin'; + var $t17: int; + var $t18: $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $t0: $1_vesting_VestingContract; + var $t1: int; + var $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin'': $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; + var $temp_0'address': int; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume And(WellFormed($t0), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t0)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t0)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t0)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t0)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t0)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t0)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:956:5+1 + assume {:print "$at(2,44691,44692)"} true; + assume ($IsValid'$1_vesting_VestingContract'($t0) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t0)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t0)), addr)))) && (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t0)))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t0)))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; + (var j := $i_3; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t0)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t0)), j)) ==> $IsEqual'num'(i, j)))))))))); + + // assume WellFormed($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:956:5+1 + assume $IsValid'address'($t1); + + // assume forall $rsc: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: select option::Option.vec(select coin::CoinInfo.supply($rsc)): And(And(And(And(And(Iff(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($elem)), option::$is_none(select optional_aggregator::OptionalAggregator.integer($elem))), Iff(option::$is_some(select optional_aggregator::OptionalAggregator.integer($elem)), option::$is_none(select optional_aggregator::OptionalAggregator.aggregator($elem)))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.integer($elem)), Le(select optional_aggregator::Integer.value(option::$borrow(select optional_aggregator::OptionalAggregator.integer($elem))), select optional_aggregator::Integer.limit(option::$borrow(select optional_aggregator::OptionalAggregator.integer($elem)))))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($elem)), Le(aggregator::spec_aggregator_get_val(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($elem))), aggregator::spec_get_limit(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($elem)))))), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.aggregator($elem))), 1)), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.integer($elem))), 1)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:956:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'$1_aptos_coin_AptosCoin''($rsc) && ((LenVec($vec#$1_option_Option'$1_optional_aggregator_OptionalAggregator'($supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($rsc))) <= 1) && (var $range_1 := $vec#$1_option_Option'$1_optional_aggregator_OptionalAggregator'($supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($rsc)); (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)) <==> $1_option_$is_none'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)) ==> ($value#$1_optional_aggregator_Integer($1_option_$borrow'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) <= $limit#$1_optional_aggregator_Integer($1_option_$borrow'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)))))) && ($1_option_$is_some'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem))) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)))))) && (LenVec($vec#$1_option_Option'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem))) <= 1)) && (LenVec($vec#$1_option_Option'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) <= 1))))))))))); + + // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:956:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $a_0); + ($IsValid'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''($rsc)))); + + // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:956:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin''($rsc)))); + + // assume exists>(0x0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:956:5+1 + assume $ResourceExists($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, 0); + + // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:956:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin''($rsc)))); + + // assume exists>(0x0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:956:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, 0); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:956:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_chain_status_GenesisEndMarker_$memory, $a_0)}(var $rsc := $ResourceValue($1_chain_status_GenesisEndMarker_$memory, $a_0); + ($IsValid'$1_chain_status_GenesisEndMarker'($rsc)))); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:956:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_timestamp_CurrentTimeMicroseconds_$memory, $a_0)}(var $rsc := $ResourceValue($1_timestamp_CurrentTimeMicroseconds_$memory, $a_0); + ($IsValid'$1_timestamp_CurrentTimeMicroseconds'($rsc)))); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:956:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_stake_StakePool_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_StakePool_$memory, $a_0); + ($IsValid'$1_stake_StakePool'($rsc)))); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:956:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorConfig_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorConfig_$memory, $a_0); + ($IsValid'$1_stake_ValidatorConfig'($rsc)))); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:956:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorPerformance_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorPerformance_$memory, $a_0); + ($IsValid'$1_stake_ValidatorPerformance'($rsc)))); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:956:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorSet_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorSet_$memory, $a_0); + ($IsValid'$1_stake_ValidatorSet'($rsc)))); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:956:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_reconfiguration_Configuration_$memory, $a_0)}(var $rsc := $ResourceValue($1_reconfiguration_Configuration_$memory, $a_0); + ($IsValid'$1_reconfiguration_Configuration'($rsc)))); + + // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), forall $key: select staking_contract::Store.staking_contracts($rsc): And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), i), Index(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:956:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_staking_contract_Store_$memory, $a_0)}(var $rsc := $ResourceValue($1_staking_contract_Store_$memory, $a_0); + (($IsValid'$1_staking_contract_Store'($rsc) && (var $range_1 := $staking_contracts#$1_staking_contract_Store($rsc); (forall $key: int :: ContainsTable($range_1, $EncodeKey'address'($key)) ==> (((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), addr)))) && (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))))); (var $range_3 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))))); (forall $i_4: int, $i_5: int :: $InRange($range_2, $i_4) ==> $InRange($range_3, $i_5) ==> (var i := $i_4; + (var j := $i_5; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), i), ReadVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), j)) ==> $IsEqual'num'(i, j)))))))))))))))); + + // assume Implies(chain_status::$is_operating(), exists(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:956:5+587 + // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.spec.move:4:9+93 + assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory, 1)); + + // assume Implies(exists(0x1), stake::validator_set_is_valid()) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:956:5+587 + // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:8:9+92 + assume ($ResourceExists($1_stake_ValidatorSet_$memory, 1) ==> $1_stake_validator_set_is_valid($1_stake_StakePool_$memory, $1_stake_ValidatorConfig_$memory, $1_stake_ValidatorPerformance_$memory, $1_stake_ValidatorSet_$memory)); + + // assume Implies(chain_status::$is_operating(), exists(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:956:5+587 + // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:12:9+96 + assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_stake_ValidatorSet_$memory, 1)); + + // assume Implies(chain_status::$is_operating(), Ge(timestamp::spec_now_microseconds(), reconfiguration::$last_reconfiguration_time())) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:956:5+587 + // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/reconfiguration.spec.move:8:9+137 + assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> ($1_timestamp_spec_now_microseconds($1_timestamp_CurrentTimeMicroseconds_$memory) >= $1_reconfiguration_$last_reconfiguration_time($1_reconfiguration_Configuration_$memory))); + + // trace_local[vesting_contract]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:956:5+1 + assume {:print "$track_local(57,41,0):", $t0} $t0 == $t0; + + // trace_local[contract_address]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:956:5+1 + assume {:print "$track_local(57,41,1):", $t1} $t1 == $t1; + + // $t4 := get_field.staking($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:959:56+24 + assume {:print "$at(2,45009,45033)"} true; + $t4 := $staking#$1_vesting_VestingContract($t0); + + // $t5 := get_field.operator($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:959:56+33 + $t5 := $operator#$1_vesting_StakingInfo($t4); + + // assume Identical($t6, select staking_contract::Store.staking_contracts(global($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 + assume {:print "$at(134,11481,11545)"} true; + assume ($t6 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t1))); + + // staking_contract::distribute($t1, $t5) on_abort goto L2 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:959:9+81 + assume {:print "$at(2,44962,45043)"} true; + call $1_staking_contract_distribute($t1, $t5); + if ($abort_flag) { + assume {:print "$at(2,44962,45043)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(57,41):", $t7} $t7 == $t7; + goto L2; + } + + // assume Identical($t8, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + assume {:print "$at(95,1664,1763)"} true; + assume ($t8 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + + // $t9 := coin::balance($t1) on_abort goto L2 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:960:31+42 + assume {:print "$at(2,45075,45117)"} true; + call $t9 := $1_coin_balance'$1_aptos_coin_AptosCoin'($t1); + if ($abort_flag) { + assume {:print "$at(2,45075,45117)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(57,41):", $t7} $t7 == $t7; + goto L2; + } + + // trace_local[withdrawn_coins]($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:960:13+15 + assume {:print "$track_local(57,41,3):", $t9} $t9 == $t9; + + // $t10 := vesting::get_vesting_account_signer_internal($t0) on_abort goto L2 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:961:32+53 + assume {:print "$at(2,45150,45203)"} true; + call $t10 := $1_vesting_get_vesting_account_signer_internal($t0); + if ($abort_flag) { + assume {:print "$at(2,45150,45203)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(57,41):", $t7} $t7 == $t7; + goto L2; + } + + // assume Identical($t11, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + assume {:print "$at(95,1664,1763)"} true; + assume ($t11 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + + // assume Identical($t12, signer::$address_of($t10)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:384:9+47 + assume {:print "$at(95,16622,16669)"} true; + assume ($t12 == $1_signer_$address_of($t10)); + + // assume Identical($t13, global>($t12)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:385:9+59 + assume {:print "$at(95,16678,16737)"} true; + assume ($t13 == $ResourceValue($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $t12)); + + // assume Identical($t14, select coin::Coin.value(select coin::CoinStore.coin($t13))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:386:9+36 + assume {:print "$at(95,16746,16782)"} true; + assume ($t14 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($coin#$1_coin_CoinStore'$1_aptos_coin_AptosCoin'($t13))); + + // assume Identical($t15, signer::$address_of($t10)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:394:9+47 + assume {:print "$at(95,17076,17123)"} true; + assume ($t15 == $1_signer_$address_of($t10)); + + // assume Identical($t16, global>($t15)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:395:9+59 + assume {:print "$at(95,17132,17191)"} true; + assume ($t16 == $ResourceValue($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $t15)); + + // assume Identical($t17, select coin::Coin.value(select coin::CoinStore.coin($t16))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:396:9+36 + assume {:print "$at(95,17200,17236)"} true; + assume ($t17 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($coin#$1_coin_CoinStore'$1_aptos_coin_AptosCoin'($t16))); + + // $t18 := coin::withdraw($t10, $t9) on_abort goto L2 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:962:9+59 + assume {:print "$at(2,45213,45272)"} true; + call $t18 := $1_coin_withdraw'$1_aptos_coin_AptosCoin'($t10, $t9); + if ($abort_flag) { + assume {:print "$at(2,45213,45272)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(57,41):", $t7} $t7 == $t7; + goto L2; + } + + // trace_return[0]($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:962:9+59 + assume {:print "$track_return(57,41,0):", $t18} $t18 == $t18; + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:963:5+1 + assume {:print "$at(2,45277,45278)"} true; +L1: + + // assert Not(false) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:963:5+1 + assume {:print "$at(2,45277,45278)"} true; + assert {:msg "assert_failed(2,45277,45278): function does not abort under this condition"} + !false; + + // return $t18 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:963:5+1 + $ret0 := $t18; + return; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:963:5+1 +L2: + + // abort($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:963:5+1 + assume {:print "$at(2,45277,45278)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} diff --git a/aptos-move/framework/aptos-framework/sources/vesting.spec.move b/aptos-move/framework/aptos-framework/sources/vesting.spec.move index ad205948f494e..dfb8699098aa0 100644 --- a/aptos-move/framework/aptos-framework/sources/vesting.spec.move +++ b/aptos-move/framework/aptos-framework/sources/vesting.spec.move @@ -45,8 +45,17 @@ spec aptos_framework::vesting { } spec total_accumulated_rewards(vesting_contract_address: address): u64 { - // TODO: Verification out of resources/timeout - pragma verify = false; + // A severe timeout will occur without using partial. + pragma aborts_if_is_partial; + + include TotalAccumulatedRewardsAbortsIf; + } + + spec schema TotalAccumulatedRewardsAbortsIf { + vesting_contract_address: address; + + requires staking_contract.commission_percentage >= 0 && staking_contract.commission_percentage <= 100; + include ActiveVestingContractAbortsIf{contract_address: vesting_contract_address}; let vesting_contract = global(vesting_contract_address); @@ -70,19 +79,48 @@ spec aptos_framework::vesting { aborts_if total_active_stake < staking_contract.principal; aborts_if accumulated_rewards * staking_contract.commission_percentage > MAX_U64; aborts_if (vesting_contract.remaining_grant + commission_amount) > total_active_stake; + aborts_if total_active_stake < vesting_contract.remaining_grant; } spec accumulated_rewards(vesting_contract_address: address, shareholder_or_beneficiary: address): u64 { - // TODO: Uses `total_accumulated_rewards` which is not verified. + // TODO: A severe timeout can not be resolved. pragma verify = false; + pragma aborts_if_is_partial; + + include TotalAccumulatedRewardsAbortsIf; + let vesting_contract = global(vesting_contract_address); + let operator = vesting_contract.staking.operator; + let staking_contracts = global(vesting_contract_address).staking_contracts; + let staking_contract = simple_map::spec_get(staking_contracts, operator); + let pool_address = staking_contract.pool_address; + let stake_pool = borrow_global(pool_address); + let active = coin::value(stake_pool.active); + let pending_active = coin::value(stake_pool.pending_active); + let total_active_stake = active + pending_active; + let accumulated_rewards = total_active_stake - staking_contract.principal; + let commission_amount = accumulated_rewards * staking_contract.commission_percentage / 100; + let total_accumulated_rewards = total_active_stake - vesting_contract.remaining_grant - commission_amount; + + let shareholder = spec_shareholder(vesting_contract_address, shareholder_or_beneficiary); + let pool = vesting_contract.grant_pool; + let shares = pool_u64::spec_shares(pool, shareholder); + aborts_if pool.total_coins > 0 && pool.total_shares > 0 + && (shares * total_accumulated_rewards) / pool.total_shares > MAX_U64; + + ensures result == pool_u64::spec_shares_to_amount_with_total_coins(pool, shares, total_accumulated_rewards); } spec shareholders(vesting_contract_address: address): vector
{ include ActiveVestingContractAbortsIf{contract_address: vesting_contract_address}; } + spec fun spec_shareholder(vesting_contract_address: address, shareholder_or_beneficiary: address): address; + spec shareholder(vesting_contract_address: address, shareholder_or_beneficiary: address): address { + pragma verify = true; + pragma opaque; include ActiveVestingContractAbortsIf{contract_address: vesting_contract_address}; + ensures [abstract] result == spec_shareholder(vesting_contract_address, shareholder_or_beneficiary); } spec create_vesting_schedule( @@ -99,41 +137,46 @@ spec aptos_framework::vesting { spec create_vesting_contract { // TODO: Data invariant does not hold. pragma verify = false; + pragma aborts_if_is_partial; } spec unlock_rewards(contract_address: address) { // TODO: Calls `unlock_stake` which is not verified. pragma verify = false; + pragma aborts_if_is_partial; + include TotalAccumulatedRewardsAbortsIf { vesting_contract_address: contract_address }; } spec unlock_rewards_many(contract_addresses: vector
) { // TODO: Calls `unlock_rewards` in loop. pragma verify = false; + pragma aborts_if_is_partial; } spec vest(contract_address: address) { // TODO: Calls `staking_contract::distribute` which is not verified. pragma verify = false; + pragma aborts_if_is_partial; } spec vest_many(contract_addresses: vector
) { // TODO: Calls `vest` in loop. - pragma verify = false; + pragma aborts_if_is_partial; } spec distribute(contract_address: address) { // TODO: Can't handle abort in loop. - pragma verify = false; + pragma aborts_if_is_partial; } spec distribute_many(contract_addresses: vector
) { // TODO: Calls `distribute` in loop. - pragma verify = false; + pragma aborts_if_is_partial; } spec terminate_vesting_contract(admin: &signer, contract_address: address) { // TODO: Calls `staking_contract::distribute` which is not verified. - pragma verify = false; + pragma aborts_if_is_partial; } spec admin_withdraw(admin: &signer, contract_address: address) { @@ -181,17 +224,20 @@ spec aptos_framework::vesting { admin: &signer, contract_address: address, ) { - // TODO: Unable to handle abort from `stake::assert_stake_pool_exists`. - pragma aborts_if_is_partial; aborts_if !exists(contract_address); - let vesting_contract1 = global(contract_address); - aborts_if signer::address_of(admin) != vesting_contract1.admin; + let vesting_contract = global(contract_address); + aborts_if signer::address_of(admin) != vesting_contract.admin; + + let operator = vesting_contract.staking.operator; + let staker = vesting_contract.signer_cap.account; - let operator = vesting_contract1.staking.operator; - let staker = vesting_contract1.signer_cap.account; + include staking_contract::ContractExistsAbortsIf {staker, operator}; + include staking_contract::IncreaseLockupWithCapAbortsIf {staker, operator}; - include staking_contract::ContractExistsAbortsIf; - include staking_contract::IncreaseLockupWithCapAbortsIf; + let store = global(staker); + let staking_contract = simple_map::spec_get(store.staking_contracts, operator); + let pool_address = staking_contract.owner_cap.pool_address; + aborts_if !exists(vesting_contract.staking.pool_address); } spec set_beneficiary( @@ -211,12 +257,20 @@ spec aptos_framework::vesting { account: &signer, contract_address: address, shareholder: address, - ) { - // TODO: The abort of functions on either side of a logical operator can not be handled. - pragma aborts_if_is_partial; + ) { aborts_if !exists(contract_address); - let post vesting_contract = global(contract_address); - ensures !simple_map::spec_contains_key(vesting_contract.beneficiaries,shareholder); + + let addr = signer::address_of(account); + let vesting_contract = global(contract_address); + aborts_if addr != vesting_contract.admin && !std::string::spec_internal_check_utf8(ROLE_BENEFICIARY_RESETTER); + aborts_if addr != vesting_contract.admin && !exists(contract_address); + let roles = global(contract_address).roles; + let role = std::string::spec_utf8(ROLE_BENEFICIARY_RESETTER); + aborts_if addr != vesting_contract.admin && !simple_map::spec_contains_key(roles, role); + aborts_if addr != vesting_contract.admin && addr != simple_map::spec_get(roles, role); + + let post post_vesting_contract = global(contract_address); + ensures !simple_map::spec_contains_key(post_vesting_contract.beneficiaries,shareholder); } spec set_management_role( @@ -259,18 +313,14 @@ spec aptos_framework::vesting { admin: &signer, contract_creation_seed: vector, ): (signer, SignerCapability) { - // TODO: disabled due to timeout - pragma verify=false; - // TODO: Could not verify `coin::register` because can't get the `account_signer`. - pragma aborts_if_is_partial; let admin_addr = signer::address_of(admin); let admin_store = global(admin_addr); let seed = bcs::to_bytes(admin_addr); let nonce = bcs::to_bytes(admin_store.nonce); - let first = concat(seed,nonce); - let second = concat(first,VESTING_POOL_SALT); - let end = concat(second,contract_creation_seed); + let first = concat(seed, nonce); + let second = concat(first, VESTING_POOL_SALT); + let end = concat(second, contract_creation_seed); let resource_addr = account::spec_create_resource_address(admin_addr, end); aborts_if !exists(admin_addr); @@ -278,6 +328,16 @@ spec aptos_framework::vesting { aborts_if admin_store.nonce + 1 > MAX_U64; let ea = account::exists_at(resource_addr); include if (ea) account::CreateResourceAccountAbortsIf else account::CreateAccountAbortsIf {addr: resource_addr}; + + let acc = global(resource_addr); + let post post_acc = global(resource_addr); + aborts_if !exists>(resource_addr) && !aptos_std::type_info::spec_is_struct(); + aborts_if !exists>(resource_addr) && ea && acc.guid_creation_num + 2 > MAX_U64; + aborts_if !exists>(resource_addr) && ea && acc.guid_creation_num + 2 >= account::MAX_GUID_CREATION_NUM; + ensures exists(resource_addr) && post_acc.authentication_key == account::ZERO_AUTH_KEY && + exists>(resource_addr); + ensures signer::address_of(result_1) == resource_addr; + ensures result_2.account == resource_addr; } spec verify_admin(admin: &signer, vesting_contract: &VestingContract) { @@ -294,12 +354,12 @@ spec aptos_framework::vesting { spec unlock_stake(vesting_contract: &VestingContract, amount: u64) { // TODO: Calls `staking_contract::unlock_stake` which is not verified. - pragma verify = false; + pragma aborts_if_is_partial; } spec withdraw_stake(vesting_contract: &VestingContract, contract_address: address): Coin { // TODO: Calls `staking_contract::distribute` which is not verified. - pragma verify = false; + pragma aborts_if_is_partial; } spec get_beneficiary(contract: &VestingContract, shareholder: address): address { From 3ad56ea6d9834f2c054323b7778ea1b8d7ad30b0 Mon Sep 17 00:00:00 2001 From: chan-bing Date: Sun, 25 Jun 2023 18:43:12 +0800 Subject: [PATCH 02/13] new vesting --- .../framework/aptos-framework/boogie.bpl | 6804 ++++++++++++----- .../aptos-framework/sources/vesting.spec.move | 145 +- 2 files changed, 5073 insertions(+), 1876 deletions(-) diff --git a/aptos-move/framework/aptos-framework/boogie.bpl b/aptos-move/framework/aptos-framework/boogie.bpl index 116c0906cbf21..dcc52f8b7635a 100644 --- a/aptos-move/framework/aptos-framework/boogie.bpl +++ b/aptos-move/framework/aptos-framework/boogie.bpl @@ -25618,7 +25618,7 @@ function {:inline} $IsEqual'$1_vesting_VestingSchedule'(s1: $1_vesting_VestingSc && $IsEqual'u64'($last_vested_period#$1_vesting_VestingSchedule(s1), $last_vested_period#$1_vesting_VestingSchedule(s2))} // fun vesting::operator [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:321:5+244 -procedure {:timeLimit 200} $1_vesting_operator$verify(_$t0: int) returns ($ret0: int) +procedure {:timeLimit 1000} $1_vesting_operator$verify(_$t0: int) returns ($ret0: int) { // declare local variables var $t1: int; @@ -25713,7 +25713,7 @@ L2: } // fun vesting::voter [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:331:5+238 -procedure {:timeLimit 200} $1_vesting_voter$verify(_$t0: int) returns ($ret0: int) +procedure {:timeLimit 1000} $1_vesting_voter$verify(_$t0: int) returns ($ret0: int) { // declare local variables var $t1: int; @@ -25808,7 +25808,7 @@ L2: } // fun vesting::shareholder [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:396:5+811 -procedure {:timeLimit 200} $1_vesting_shareholder$verify(_$t0: int, _$t1: int) returns ($ret0: int) +procedure {:timeLimit 1000} $1_vesting_shareholder$verify(_$t0: int, _$t1: int) returns ($ret0: int) { // declare local variables var $t2: Vec (int); @@ -25868,8 +25868,8 @@ procedure {:timeLimit 200} $1_vesting_shareholder$verify(_$t0: int, _$t1: int) r (var j := $i_4; (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); - // assume Identical($t11, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:389:9+65 - assume {:print "$at(3,16378,16443)"} true; + // assume Identical($t11, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:518:9+65 + assume {:print "$at(3,23036,23101)"} true; assume ($t11 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); // @105 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:396:5+1 @@ -25882,8 +25882,8 @@ procedure {:timeLimit 200} $1_vesting_shareholder$verify(_$t0: int, _$t1: int) r // trace_local[shareholder_or_beneficiary]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:396:5+1 assume {:print "$track_local(57,23,1):", $t1} $t1 == $t1; - // assume Identical($t12, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:389:9+65 - assume {:print "$at(3,16378,16443)"} true; + // assume Identical($t12, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:518:9+65 + assume {:print "$at(3,23036,23101)"} true; assume ($t12 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); // vesting::assert_active_vesting_contract($t0) on_abort goto L13 with $t13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:397:9+56 @@ -25896,8 +25896,8 @@ procedure {:timeLimit 200} $1_vesting_shareholder$verify(_$t0: int, _$t1: int) r goto L13; } - // assume Identical($t14, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:389:9+65 - assume {:print "$at(3,16378,16443)"} true; + // assume Identical($t14, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:518:9+65 + assume {:print "$at(3,23036,23101)"} true; assume ($t14 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); // $t15 := vesting::shareholders($t0) on_abort goto L13 with $t13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:399:29+38 @@ -26248,17 +26248,17 @@ L11: assume {:print "$at(2,20027,20028)"} true; L12: - // assert Not(Not(exists[@105]($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:388:9+53 - assume {:print "$at(3,16316,16369)"} true; - assert {:msg "assert_failed(3,16316,16369): function does not abort under this condition"} + // assert Not(Not(exists[@105]($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:517:9+53 + assume {:print "$at(3,22974,23027)"} true; + assert {:msg "assert_failed(3,22974,23027): function does not abort under this condition"} !!$ResourceExists($1_vesting_VestingContract_$memory#105, $t0); - // assert Not(Neq(select vesting::VestingContract.state($t11), 1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:390:9+56 - assume {:print "$at(3,16452,16508)"} true; - assert {:msg "assert_failed(3,16452,16508): function does not abort under this condition"} + // assert Not(Neq(select vesting::VestingContract.state($t11), 1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:519:9+56 + assume {:print "$at(3,23110,23166)"} true; + assert {:msg "assert_failed(3,23110,23166): function does not abort under this condition"} !!$IsEqual'u64'($state#$1_vesting_VestingContract($t11), 1); - // return $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:390:9+56 + // return $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:519:9+56 $ret0 := $t17; return; @@ -26266,12 +26266,12 @@ L12: assume {:print "$at(2,20027,20028)"} true; L13: - // assert Or(Not(exists[@105]($t0)), Neq(select vesting::VestingContract.state($t11), 1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:119:5+375 - assume {:print "$at(3,5566,5941)"} true; - assert {:msg "assert_failed(3,5566,5941): abort not covered by any of the `aborts_if` clauses"} + // assert Or(Not(exists[@105]($t0)), Neq(select vesting::VestingContract.state($t11), 1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:117:5+375 + assume {:print "$at(3,5462,5837)"} true; + assert {:msg "assert_failed(3,5462,5837): abort not covered by any of the `aborts_if` clauses"} (!$ResourceExists($1_vesting_VestingContract_$memory#105, $t0) || !$IsEqual'u64'($state#$1_vesting_VestingContract($t11), 1)); - // abort($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:119:5+375 + // abort($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:117:5+375 $abort_code := $t13; $abort_flag := true; return; @@ -26294,16 +26294,16 @@ procedure {:inline 1} $1_vesting_shareholders(_$t0: int) returns ($ret0: Vec (in $t0 := _$t0; // bytecode translation starts here - // assume Identical($t1, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:389:9+65 - assume {:print "$at(3,16378,16443)"} true; + // assume Identical($t1, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:518:9+65 + assume {:print "$at(3,23036,23101)"} true; assume ($t1 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); // trace_local[vesting_contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:383:5+1 assume {:print "$at(2,18423,18424)"} true; assume {:print "$track_local(57,24,0):", $t0} $t0 == $t0; - // assume Identical($t2, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:389:9+65 - assume {:print "$at(3,16378,16443)"} true; + // assume Identical($t2, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:518:9+65 + assume {:print "$at(3,23036,23101)"} true; assume ($t2 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); // vesting::assert_active_vesting_contract($t0) on_abort goto L2 with $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:384:9+56 @@ -26367,7 +26367,7 @@ L2: } // fun vesting::shareholders [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:383:5+325 -procedure {:timeLimit 200} $1_vesting_shareholders$verify(_$t0: int) returns ($ret0: Vec (int)) +procedure {:timeLimit 1000} $1_vesting_shareholders$verify(_$t0: int) returns ($ret0: Vec (int)) { // declare local variables var $t1: $1_vesting_VestingContract; @@ -26396,8 +26396,8 @@ procedure {:timeLimit 200} $1_vesting_shareholders$verify(_$t0: int) returns ($r (var j := $i_4; (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); - // assume Identical($t1, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:389:9+65 - assume {:print "$at(3,16378,16443)"} true; + // assume Identical($t1, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:518:9+65 + assume {:print "$at(3,23036,23101)"} true; assume ($t1 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); // @75 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:383:5+1 @@ -26407,8 +26407,8 @@ procedure {:timeLimit 200} $1_vesting_shareholders$verify(_$t0: int) returns ($r // trace_local[vesting_contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:383:5+1 assume {:print "$track_local(57,24,0):", $t0} $t0 == $t0; - // assume Identical($t2, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:389:9+65 - assume {:print "$at(3,16378,16443)"} true; + // assume Identical($t2, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:518:9+65 + assume {:print "$at(3,23036,23101)"} true; assume ($t2 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); // vesting::assert_active_vesting_contract($t0) on_abort goto L2 with $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:384:9+56 @@ -26455,17 +26455,17 @@ procedure {:timeLimit 200} $1_vesting_shareholders$verify(_$t0: int) returns ($r assume {:print "$at(2,18747,18748)"} true; L1: - // assert Not(Not(exists[@75]($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:388:9+53 - assume {:print "$at(3,16316,16369)"} true; - assert {:msg "assert_failed(3,16316,16369): function does not abort under this condition"} + // assert Not(Not(exists[@75]($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:517:9+53 + assume {:print "$at(3,22974,23027)"} true; + assert {:msg "assert_failed(3,22974,23027): function does not abort under this condition"} !!$ResourceExists($1_vesting_VestingContract_$memory#75, $t0); - // assert Not(Neq(select vesting::VestingContract.state($t1), 1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:390:9+56 - assume {:print "$at(3,16452,16508)"} true; - assert {:msg "assert_failed(3,16452,16508): function does not abort under this condition"} + // assert Not(Neq(select vesting::VestingContract.state($t1), 1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:519:9+56 + assume {:print "$at(3,23110,23166)"} true; + assert {:msg "assert_failed(3,23110,23166): function does not abort under this condition"} !!$IsEqual'u64'($state#$1_vesting_VestingContract($t1), 1); - // return $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:390:9+56 + // return $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:519:9+56 $ret0 := $t6; return; @@ -26473,12 +26473,12 @@ L1: assume {:print "$at(2,18747,18748)"} true; L2: - // assert Or(Not(exists[@75]($t0)), Neq(select vesting::VestingContract.state($t1), 1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:113:5+185 - assume {:print "$at(3,5262,5447)"} true; - assert {:msg "assert_failed(3,5262,5447): abort not covered by any of the `aborts_if` clauses"} + // assert Or(Not(exists[@75]($t0)), Neq(select vesting::VestingContract.state($t1), 1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:111:5+185 + assume {:print "$at(3,5158,5343)"} true; + assert {:msg "assert_failed(3,5158,5343): abort not covered by any of the `aborts_if` clauses"} (!$ResourceExists($1_vesting_VestingContract_$memory#75, $t0) || !$IsEqual'u64'($state#$1_vesting_VestingContract($t1), 1)); - // abort($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:113:5+185 + // abort($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:111:5+185 $abort_code := $t3; $abort_flag := true; return; @@ -26504,45 +26504,79 @@ procedure {:inline 1} $1_vesting_distribute(_$t0: int) returns () var $t13: Vec (int); var $t14: $Mutation ($1_vesting_VestingContract); var $t15: $1_vesting_VestingContract; - var $t16: int; - var $t17: $Mutation ($1_vesting_VestingContract); - var $t18: $1_vesting_VestingContract; - var $t19: $1_coin_Coin'$1_aptos_coin_AptosCoin'; - var $t20: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t16: $1_vesting_VestingContract; + var $t17: int; + var $t18: $1_staking_contract_Store; + var $t19: $1_staking_contract_StakingContract; + var $t20: Table int ($1_staking_contract_StakingContract); var $t21: int; - var $t22: int; - var $t23: bool; - var $t24: $1_coin_Coin'$1_aptos_coin_AptosCoin'; - var $t25: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; - var $t26: $1_pool_u64_Pool; - var $t27: Vec (int); - var $t28: int; - var $t29: int; - var $t30: bool; + var $t22: $1_stake_StakePool; + var $t23: int; + var $t24: int; + var $t25: int; + var $t26: int; + var $t27: $1_stake_StakePool; + var $t28: $1_stake_ValidatorSet; + var $t29: bool; + var $t30: int; var $t31: int; var $t32: int; - var $t33: int; - var $t34: $1_coin_Coin'$1_aptos_coin_AptosCoin'; - var $t35: $1_vesting_VestingContract; - var $t36: int; + var $t33: $1_vesting_VestingContract; + var $t34: int; + var $t35: $Mutation ($1_vesting_VestingContract); + var $t36: $1_vesting_VestingContract; var $t37: int; - var $t38: int; - var $t39: $Mutation ($1_coin_Coin'$1_aptos_coin_AptosCoin'); - var $t40: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; - var $t41: $1_account_Account; - var $t42: $1_coin_Coin'$1_aptos_coin_AptosCoin'; - var $t43: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t38: $1_staking_contract_Store; + var $t39: $1_staking_contract_StakingContract; + var $t40: Table int ($1_staking_contract_StakingContract); + var $t41: int; + var $t42: $1_stake_StakePool; + var $t43: int; var $t44: int; var $t45: int; - var $t46: bool; - var $t47: int; - var $t48: $1_coin_Coin'$1_aptos_coin_AptosCoin'; - var $t49: $1_account_Account; - var $t50: $1_coin_Coin'$1_aptos_coin_AptosCoin'; - var $t51: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; - var $t52: $Mutation ($1_event_EventHandle'$1_vesting_DistributeEvent'); - var $t53: int; - var $t54: $1_vesting_DistributeEvent; + var $t46: int; + var $t47: $1_stake_StakePool; + var $t48: $1_stake_ValidatorSet; + var $t49: bool; + var $t50: int; + var $t51: int; + var $t52: int; + var $t53: $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $t54: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t55: int; + var $t56: int; + var $t57: bool; + var $t58: $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $t59: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t60: $1_pool_u64_Pool; + var $t61: Vec (int); + var $t62: int; + var $t63: int; + var $t64: bool; + var $t65: int; + var $t66: int; + var $t67: int; + var $t68: $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $t69: $1_vesting_VestingContract; + var $t70: int; + var $t71: int; + var $t72: int; + var $t73: $Mutation ($1_coin_Coin'$1_aptos_coin_AptosCoin'); + var $t74: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t75: $1_account_Account; + var $t76: $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $t77: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t78: int; + var $t79: int; + var $t80: bool; + var $t81: int; + var $t82: $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $t83: $1_account_Account; + var $t84: $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $t85: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t86: $Mutation ($1_event_EventHandle'$1_vesting_DistributeEvent'); + var $t87: int; + var $t88: $1_vesting_DistributeEvent; var $t0: int; var $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin'': $1_coin_Coin'$1_aptos_coin_AptosCoin'; var $temp_0'$1_pool_u64_Pool': $1_pool_u64_Pool; @@ -26553,113 +26587,250 @@ procedure {:inline 1} $1_vesting_distribute(_$t0: int) returns () $t0 := _$t0; // bytecode translation starts here + // assume Identical($t15, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:213:9+65 + assume {:print "$at(3,9717,9782)"} true; + assume ($t15 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); + + // assume Identical($t16, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:518:9+65 + assume {:print "$at(3,23036,23101)"} true; + assume ($t16 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); + + // assume Identical($t17, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t15))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:455:9+49 + assume {:print "$at(3,19684,19733)"} true; + assume ($t17 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t15))); + + // assume Identical($t18, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:459:9+62 + assume {:print "$at(3,19898,19960)"} true; + assume ($t18 == $ResourceValue($1_staking_contract_Store_$memory, $t0)); + + // assume Identical($t19, simple_map::spec_get(select staking_contract::Store.staking_contracts($t18), $t17)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:460:9+79 + assume {:print "$at(3,19969,20048)"} true; + assume ($t19 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($t18), $t17)); + + // assume Identical($t20, select staking_contract::Store.staking_contracts(global($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 + assume {:print "$at(134,11481,11545)"} true; + assume ($t20 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t0))); + + // assume Identical($t21, select staking_contract::StakingContract.pool_address($t19)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:470:9+49 + assume {:print "$at(3,20547,20596)"} true; + assume ($t21 == $pool_address#$1_staking_contract_StakingContract($t19)); + + // assume Identical($t22, global($t21)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:472:9+56 + assume {:print "$at(3,20664,20720)"} true; + assume ($t22 == $ResourceValue($1_stake_StakePool_$memory, $t21)); + + // assume Identical($t23, select coin::Coin.value(select stake::StakePool.inactive($t22))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:473:9+41 + assume {:print "$at(3,20729,20770)"} true; + assume ($t23 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t22))); + + // assume Identical($t24, select coin::Coin.value(select stake::StakePool.pending_inactive($t22))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:474:9+57 + assume {:print "$at(3,20779,20836)"} true; + assume ($t24 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t22))); + + // assume Identical($t25, Add($t23, $t24)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:478:9+63 + assume {:print "$at(3,20948,21011)"} true; + assume ($t25 == ($t23 + $t24)); + + // assume Identical($t26, select stake::OwnerCapability.pool_address(select staking_contract::StakingContract.owner_cap($t19))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:479:9+61 + assume {:print "$at(3,21020,21081)"} true; + assume ($t26 == $pool_address#$1_stake_OwnerCapability($owner_cap#$1_staking_contract_StakingContract($t19))); + + // assume Identical($t27, global($t26)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:481:9+60 + assume {:print "$at(3,21151,21211)"} true; + assume ($t27 == $ResourceValue($1_stake_StakePool_$memory, $t26)); + + // assume Identical($t28, global(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:483:9+66 + assume {:print "$at(3,21286,21352)"} true; + assume ($t28 == $ResourceValue($1_stake_ValidatorSet_$memory, 1)); + + // assume Identical($t29, And(And(Not(stake::spec_contains(select stake::ValidatorSet.pending_active($t28), $t26)), Not(stake::spec_contains(select stake::ValidatorSet.active_validators($t28), $t26))), Not(stake::spec_contains(select stake::ValidatorSet.pending_inactive($t28), $t26)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:484:9+260 + assume {:print "$at(3,21361,21621)"} true; + assume ($t29 == ((!$1_stake_spec_contains($pending_active#$1_stake_ValidatorSet($t28), $t26) && !$1_stake_spec_contains($active_validators#$1_stake_ValidatorSet($t28), $t26)) && !$1_stake_spec_contains($pending_inactive#$1_stake_ValidatorSet($t28), $t26))); + + // assume Identical($t30, select coin::Coin.value(select stake::StakePool.inactive($t27))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:487:9+45 + assume {:print "$at(3,21630,21675)"} true; + assume ($t30 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t27))); + + // assume Identical($t31, select coin::Coin.value(select stake::StakePool.pending_inactive($t27))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:488:9+61 + assume {:print "$at(3,21684,21745)"} true; + assume ($t31 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t27))); + + // assume Identical($t32, Add($t30, $t31)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:489:9+53 + assume {:print "$at(3,21754,21807)"} true; + assume ($t32 == ($t30 + $t31)); + // trace_local[contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:623:5+1 assume {:print "$at(2,29668,29669)"} true; assume {:print "$track_local(57,8,0):", $t0} $t0 == $t0; - // assume Identical($t15, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:389:9+65 - assume {:print "$at(3,16378,16443)"} true; - assume ($t15 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); + // assume Identical($t33, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:518:9+65 + assume {:print "$at(3,23036,23101)"} true; + assume ($t33 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); - // vesting::assert_active_vesting_contract($t0) on_abort goto L11 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:624:9+48 + // vesting::assert_active_vesting_contract($t0) on_abort goto L11 with $t34 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:624:9+48 assume {:print "$at(2,29758,29806)"} true; call $1_vesting_assert_active_vesting_contract($t0); if ($abort_flag) { assume {:print "$at(2,29758,29806)"} true; - $t16 := $abort_code; - assume {:print "$track_abort(57,8):", $t16} $t16 == $t16; + $t34 := $abort_code; + assume {:print "$track_abort(57,8):", $t34} $t34 == $t34; goto L11; } - // $t17 := borrow_global($t0) on_abort goto L11 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:626:32+17 + // $t35 := borrow_global($t0) on_abort goto L11 with $t34 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:626:32+17 assume {:print "$at(2,29840,29857)"} true; if (!$ResourceExists($1_vesting_VestingContract_$memory, $t0)) { call $ExecFailureAbort(); } else { - $t17 := $Mutation($Global($t0), EmptyVec(), $ResourceValue($1_vesting_VestingContract_$memory, $t0)); + $t35 := $Mutation($Global($t0), EmptyVec(), $ResourceValue($1_vesting_VestingContract_$memory, $t0)); } if ($abort_flag) { assume {:print "$at(2,29840,29857)"} true; - $t16 := $abort_code; - assume {:print "$track_abort(57,8):", $t16} $t16 == $t16; + $t34 := $abort_code; + assume {:print "$track_abort(57,8):", $t34} $t34 == $t34; goto L11; } - // trace_local[vesting_contract]($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:626:13+16 - $temp_0'$1_vesting_VestingContract' := $Dereference($t17); + // trace_local[vesting_contract]($t35) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:626:13+16 + $temp_0'$1_vesting_VestingContract' := $Dereference($t35); assume {:print "$track_local(57,8,14):", $temp_0'$1_vesting_VestingContract'} $temp_0'$1_vesting_VestingContract' == $temp_0'$1_vesting_VestingContract'; - // $t18 := read_ref($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:627:35+36 + // $t36 := read_ref($t35) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:627:35+36 assume {:print "$at(2,29928,29964)"} true; - $t18 := $Dereference($t17); + $t36 := $Dereference($t35); - // $t5 := vesting::withdraw_stake($t18, $t0) on_abort goto L11 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:627:21+50 - call $t5 := $1_vesting_withdraw_stake($t18, $t0); + // assume Identical($t37, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t36))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:455:9+49 + assume {:print "$at(3,19684,19733)"} true; + assume ($t37 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t36))); + + // assume Identical($t38, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:459:9+62 + assume {:print "$at(3,19898,19960)"} true; + assume ($t38 == $ResourceValue($1_staking_contract_Store_$memory, $t0)); + + // assume Identical($t39, simple_map::spec_get(select staking_contract::Store.staking_contracts($t38), $t37)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:460:9+79 + assume {:print "$at(3,19969,20048)"} true; + assume ($t39 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($t38), $t37)); + + // assume Identical($t40, select staking_contract::Store.staking_contracts(global($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 + assume {:print "$at(134,11481,11545)"} true; + assume ($t40 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t0))); + + // assume Identical($t41, select staking_contract::StakingContract.pool_address($t39)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:470:9+49 + assume {:print "$at(3,20547,20596)"} true; + assume ($t41 == $pool_address#$1_staking_contract_StakingContract($t39)); + + // assume Identical($t42, global($t41)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:472:9+56 + assume {:print "$at(3,20664,20720)"} true; + assume ($t42 == $ResourceValue($1_stake_StakePool_$memory, $t41)); + + // assume Identical($t43, select coin::Coin.value(select stake::StakePool.inactive($t42))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:473:9+41 + assume {:print "$at(3,20729,20770)"} true; + assume ($t43 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t42))); + + // assume Identical($t44, select coin::Coin.value(select stake::StakePool.pending_inactive($t42))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:474:9+57 + assume {:print "$at(3,20779,20836)"} true; + assume ($t44 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t42))); + + // assume Identical($t45, Add($t43, $t44)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:478:9+63 + assume {:print "$at(3,20948,21011)"} true; + assume ($t45 == ($t43 + $t44)); + + // assume Identical($t46, select stake::OwnerCapability.pool_address(select staking_contract::StakingContract.owner_cap($t39))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:479:9+61 + assume {:print "$at(3,21020,21081)"} true; + assume ($t46 == $pool_address#$1_stake_OwnerCapability($owner_cap#$1_staking_contract_StakingContract($t39))); + + // assume Identical($t47, global($t46)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:481:9+60 + assume {:print "$at(3,21151,21211)"} true; + assume ($t47 == $ResourceValue($1_stake_StakePool_$memory, $t46)); + + // assume Identical($t48, global(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:483:9+66 + assume {:print "$at(3,21286,21352)"} true; + assume ($t48 == $ResourceValue($1_stake_ValidatorSet_$memory, 1)); + + // assume Identical($t49, And(And(Not(stake::spec_contains(select stake::ValidatorSet.pending_active($t48), $t46)), Not(stake::spec_contains(select stake::ValidatorSet.active_validators($t48), $t46))), Not(stake::spec_contains(select stake::ValidatorSet.pending_inactive($t48), $t46)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:484:9+260 + assume {:print "$at(3,21361,21621)"} true; + assume ($t49 == ((!$1_stake_spec_contains($pending_active#$1_stake_ValidatorSet($t48), $t46) && !$1_stake_spec_contains($active_validators#$1_stake_ValidatorSet($t48), $t46)) && !$1_stake_spec_contains($pending_inactive#$1_stake_ValidatorSet($t48), $t46))); + + // assume Identical($t50, select coin::Coin.value(select stake::StakePool.inactive($t47))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:487:9+45 + assume {:print "$at(3,21630,21675)"} true; + assume ($t50 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t47))); + + // assume Identical($t51, select coin::Coin.value(select stake::StakePool.pending_inactive($t47))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:488:9+61 + assume {:print "$at(3,21684,21745)"} true; + assume ($t51 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t47))); + + // assume Identical($t52, Add($t50, $t51)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:489:9+53 + assume {:print "$at(3,21754,21807)"} true; + assume ($t52 == ($t50 + $t51)); + + // $t5 := vesting::withdraw_stake($t36, $t0) on_abort goto L11 with $t34 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:627:21+50 + assume {:print "$at(2,29914,29964)"} true; + call $t5 := $1_vesting_withdraw_stake($t36, $t0); if ($abort_flag) { assume {:print "$at(2,29914,29964)"} true; - $t16 := $abort_code; - assume {:print "$track_abort(57,8):", $t16} $t16 == $t16; + $t34 := $abort_code; + assume {:print "$track_abort(57,8):", $t34} $t34 == $t34; goto L11; } // trace_local[coins]($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:627:13+5 assume {:print "$track_local(57,8,5):", $t5} $t5 == $t5; - // $t19 := copy($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:628:53+6 + // $t53 := copy($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:628:53+6 assume {:print "$at(2,30018,30024)"} true; - $t19 := $t5; + $t53 := $t5; - // assume Identical($t20, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + // assume Identical($t54, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 assume {:print "$at(95,1664,1763)"} true; - assume ($t20 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + assume ($t54 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); - // $t21 := coin::value($t19) on_abort goto L11 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:628:41+19 + // $t55 := coin::value($t53) on_abort goto L11 with $t34 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:628:41+19 assume {:print "$at(2,30006,30025)"} true; - call $t21 := $1_coin_value'$1_aptos_coin_AptosCoin'($t19); + call $t55 := $1_coin_value'$1_aptos_coin_AptosCoin'($t53); if ($abort_flag) { assume {:print "$at(2,30006,30025)"} true; - $t16 := $abort_code; - assume {:print "$track_abort(57,8):", $t16} $t16 == $t16; + $t34 := $abort_code; + assume {:print "$track_abort(57,8):", $t34} $t34 == $t34; goto L11; } - // trace_local[total_distribution_amount]($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:628:13+25 - assume {:print "$track_local(57,8,12):", $t21} $t21 == $t21; + // trace_local[total_distribution_amount]($t55) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:628:13+25 + assume {:print "$track_local(57,8,12):", $t55} $t55 == $t55; - // $t22 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:629:42+1 + // $t56 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:629:42+1 assume {:print "$at(2,30068,30069)"} true; - $t22 := 0; - assume $IsValid'u64'($t22); + $t56 := 0; + assume $IsValid'u64'($t56); - // $t23 := ==($t21, $t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:629:39+2 - $t23 := $IsEqual'u64'($t21, $t22); + // $t57 := ==($t55, $t56) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:629:39+2 + $t57 := $IsEqual'u64'($t55, $t56); - // if ($t23) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:629:9+105 - if ($t23) { goto L1; } else { goto L0; } + // if ($t57) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:629:9+105 + if ($t57) { goto L1; } else { goto L0; } // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:630:13+25 assume {:print "$at(2,30085,30110)"} true; L1: - // pack_ref_deep($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:630:13+25 + // pack_ref_deep($t35) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:630:13+25 assume {:print "$at(2,30085,30110)"} true; - // destroy($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:630:13+25 + // destroy($t35) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:630:13+25 - // $t24 := move($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:630:32+5 - $t24 := $t5; + // $t58 := move($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:630:32+5 + $t58 := $t5; - // assume Identical($t25, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + // assume Identical($t59, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 assume {:print "$at(95,1664,1763)"} true; - assume ($t25 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + assume ($t59 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); - // coin::destroy_zero($t24) on_abort goto L11 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:630:13+25 + // coin::destroy_zero($t58) on_abort goto L11 with $t34 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:630:13+25 assume {:print "$at(2,30085,30110)"} true; - call $1_coin_destroy_zero'$1_aptos_coin_AptosCoin'($t24); + call $1_coin_destroy_zero'$1_aptos_coin_AptosCoin'($t58); if ($abort_flag) { assume {:print "$at(2,30085,30110)"} true; - $t16 := $abort_code; - assume {:print "$track_abort(57,8):", $t16} $t16 == $t16; + $t34 := $abort_code; + assume {:print "$track_abort(57,8):", $t34} $t34 == $t34; goto L11; } @@ -26671,47 +26842,47 @@ L1: assume {:print "$at(2,30242,30258)"} true; L0: - // $t26 := get_field.grant_pool($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:635:26+28 + // $t60 := get_field.grant_pool($t35) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:635:26+28 assume {:print "$at(2,30241,30269)"} true; - $t26 := $grant_pool#$1_vesting_VestingContract($Dereference($t17)); + $t60 := $grant_pool#$1_vesting_VestingContract($Dereference($t35)); - // trace_local[grant_pool]($t26) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:635:13+10 - assume {:print "$track_local(57,8,6):", $t26} $t26 == $t26; + // trace_local[grant_pool]($t60) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:635:13+10 + assume {:print "$track_local(57,8,6):", $t60} $t60 == $t60; - // $t27 := pool_u64::shareholders($t26) on_abort goto L11 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:636:29+34 + // $t61 := pool_u64::shareholders($t60) on_abort goto L11 with $t34 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:636:29+34 assume {:print "$at(2,30299,30333)"} true; - call $t27 := $1_pool_u64_shareholders($t26); + call $t61 := $1_pool_u64_shareholders($t60); if ($abort_flag) { assume {:print "$at(2,30299,30333)"} true; - $t16 := $abort_code; - assume {:print "$track_abort(57,8):", $t16} $t16 == $t16; + $t34 := $abort_code; + assume {:print "$track_abort(57,8):", $t34} $t34 == $t34; goto L11; } - // trace_local[v#235]($t27) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:637:9+519 + // trace_local[v#235]($t61) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:637:9+519 assume {:print "$at(2,30343,30862)"} true; - assume {:print "$track_local(57,8,13):", $t27} $t27 == $t27; + assume {:print "$track_local(57,8,13):", $t61} $t61 == $t61; - // $t28 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:261:17+1 + // $t62 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:261:17+1 assume {:print "$at(18,9246,9247)"} true; - $t28 := 0; - assume $IsValid'u64'($t28); + $t62 := 0; + assume $IsValid'u64'($t62); - // trace_local[i#237]($t28) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:261:13+1 - assume {:print "$track_local(57,8,7):", $t28} $t28 == $t28; + // trace_local[i#237]($t62) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:261:13+1 + assume {:print "$track_local(57,8,7):", $t62} $t62 == $t62; - // $t29 := vector::length
($t27) on_abort goto L11 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:262:19+9 + // $t63 := vector::length
($t61) on_abort goto L11 with $t34 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:262:19+9 assume {:print "$at(18,9267,9276)"} true; - call $t29 := $1_vector_length'address'($t27); + call $t63 := $1_vector_length'address'($t61); if ($abort_flag) { assume {:print "$at(18,9267,9276)"} true; - $t16 := $abort_code; - assume {:print "$track_abort(57,8):", $t16} $t16 == $t16; + $t34 := $abort_code; + assume {:print "$track_abort(57,8):", $t34} $t34 == $t34; goto L11; } - // trace_local[len#238]($t29) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:262:13+3 - assume {:print "$track_local(57,8,8):", $t29} $t29 == $t29; + // trace_local[len#238]($t63) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:262:13+3 + assume {:print "$track_local(57,8,8):", $t63} $t63 == $t63; // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 assume {:print "$at(18,9293,9294)"} true; @@ -26730,67 +26901,67 @@ L5: // assume WellFormed($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 assume $IsValid'u64'($t7); - // $t30 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - havoc $t30; + // $t64 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + havoc $t64; - // assume WellFormed($t30) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume $IsValid'bool'($t30); + // assume WellFormed($t64) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume $IsValid'bool'($t64); - // $t31 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - havoc $t31; + // $t65 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + havoc $t65; - // assume WellFormed($t31) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume $IsValid'address'($t31); + // assume WellFormed($t65) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume $IsValid'address'($t65); - // $t32 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - havoc $t32; + // $t66 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + havoc $t66; - // assume WellFormed($t32) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume $IsValid'u64'($t32); + // assume WellFormed($t66) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume $IsValid'u64'($t66); - // $t33 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - havoc $t33; + // $t67 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + havoc $t67; - // assume WellFormed($t33) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume $IsValid'u64'($t33); + // assume WellFormed($t67) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume $IsValid'u64'($t67); - // $t34 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - havoc $t34; + // $t68 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + havoc $t68; - // assume WellFormed($t34) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume $IsValid'$1_coin_Coin'$1_aptos_coin_AptosCoin''($t34); + // assume WellFormed($t68) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume $IsValid'$1_coin_Coin'$1_aptos_coin_AptosCoin''($t68); - // $t35 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - havoc $t35; + // $t69 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + havoc $t69; - // assume And(WellFormed($t35), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t35)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t35)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t35)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t35)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t35)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t35)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume ($IsValid'$1_vesting_VestingContract'($t35) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t35)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t35)), addr)))) && (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t35)))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t35)))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; + // assume And(WellFormed($t69), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t69)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t69)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t69)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t69)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t69)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t69)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume ($IsValid'$1_vesting_VestingContract'($t69) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t69)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t69)), addr)))) && (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t69)))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t69)))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; (var j := $i_3; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t35)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t35)), j)) ==> $IsEqual'num'(i, j)))))))))); + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t69)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t69)), j)) ==> $IsEqual'num'(i, j)))))))))); - // $t36 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - havoc $t36; + // $t70 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + havoc $t70; - // assume WellFormed($t36) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume $IsValid'address'($t36); + // assume WellFormed($t70) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume $IsValid'address'($t70); - // $t37 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - havoc $t37; + // $t71 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + havoc $t71; - // assume WellFormed($t37) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume $IsValid'u64'($t37); + // assume WellFormed($t71) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume $IsValid'u64'($t71); - // $t38 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - havoc $t38; + // $t72 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + havoc $t72; - // assume WellFormed($t38) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume $IsValid'u64'($t38); + // assume WellFormed($t72) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume $IsValid'u64'($t72); - // $t39 := havoc[mut_all]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - havoc $t39; + // $t73 := havoc[mut_all]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + havoc $t73; - // assume WellFormed($t39) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume $IsValid'$1_coin_Coin'$1_aptos_coin_AptosCoin''($Dereference($t39)); + // assume WellFormed($t73) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume $IsValid'$1_coin_Coin'$1_aptos_coin_AptosCoin''($Dereference($t73)); // trace_local[coins]($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 assume {:print "$info(): enter loop, variable(s) coins, i#237 havocked and reassigned"} true; @@ -26802,11 +26973,11 @@ L5: // assume Not(AbortFlag()) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 assume !$abort_flag; - // $t30 := <($t7, $t29) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:18+1 - call $t30 := $Lt($t7, $t29); + // $t64 := <($t7, $t63) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:18+1 + call $t64 := $Lt($t7, $t63); - // if ($t30) goto L3 else goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:9+78 - if ($t30) { goto L3; } else { goto L2; } + // if ($t64) goto L3 else goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:9+78 + if ($t64) { goto L3; } else { goto L2; } // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:9+78 L3: @@ -26815,116 +26986,116 @@ L3: assume {:print "$at(18,9325,9326)"} true; L4: - // $t31 := vector::borrow
($t27, $t7) on_abort goto L11 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:264:15+12 + // $t65 := vector::borrow
($t61, $t7) on_abort goto L11 with $t34 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:264:15+12 assume {:print "$at(18,9318,9330)"} true; - call $t31 := $1_vector_borrow'address'($t27, $t7); + call $t65 := $1_vector_borrow'address'($t61, $t7); if ($abort_flag) { assume {:print "$at(18,9318,9330)"} true; - $t16 := $abort_code; - assume {:print "$track_abort(57,8):", $t16} $t16 == $t16; + $t34 := $abort_code; + assume {:print "$track_abort(57,8):", $t34} $t34 == $t34; goto L11; } - // trace_local[shareholder#240]($t31) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:638:17+11 + // trace_local[shareholder#240]($t65) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:638:17+11 assume {:print "$at(2,30410,30421)"} true; - assume {:print "$track_local(57,8,10):", $t31} $t31 == $t31; + assume {:print "$track_local(57,8,10):", $t65} $t65 == $t65; - // $t32 := pool_u64::shares($t26, $t31) on_abort goto L11 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:639:26+41 + // $t66 := pool_u64::shares($t60, $t65) on_abort goto L11 with $t34 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:639:26+41 assume {:print "$at(2,30463,30504)"} true; - call $t32 := $1_pool_u64_shares($t26, $t31); + call $t66 := $1_pool_u64_shares($t60, $t65); if ($abort_flag) { assume {:print "$at(2,30463,30504)"} true; - $t16 := $abort_code; - assume {:print "$track_abort(57,8):", $t16} $t16 == $t16; + $t34 := $abort_code; + assume {:print "$track_abort(57,8):", $t34} $t34 == $t34; goto L11; } - // trace_local[shares#241]($t32) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:639:17+6 - assume {:print "$track_local(57,8,11):", $t32} $t32 == $t32; + // trace_local[shares#241]($t66) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:639:17+6 + assume {:print "$track_local(57,8,11):", $t66} $t66 == $t66; - // $t33 := pool_u64::shares_to_amount_with_total_coins($t26, $t32, $t21) on_abort goto L11 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:640:26+90 + // $t67 := pool_u64::shares_to_amount_with_total_coins($t60, $t66, $t55) on_abort goto L11 with $t34 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:640:26+90 assume {:print "$at(2,30531,30621)"} true; - call $t33 := $1_pool_u64_shares_to_amount_with_total_coins($t26, $t32, $t21); + call $t67 := $1_pool_u64_shares_to_amount_with_total_coins($t60, $t66, $t55); if ($abort_flag) { assume {:print "$at(2,30531,30621)"} true; - $t16 := $abort_code; - assume {:print "$track_abort(57,8):", $t16} $t16 == $t16; + $t34 := $abort_code; + assume {:print "$track_abort(57,8):", $t34} $t34 == $t34; goto L11; } - // trace_local[amount#242]($t33) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:640:17+6 - assume {:print "$track_local(57,8,4):", $t33} $t33 == $t33; + // trace_local[amount#242]($t67) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:640:17+6 + assume {:print "$track_local(57,8,4):", $t67} $t67 == $t67; - // $t39 := borrow_local($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:641:48+10 + // $t73 := borrow_local($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:641:48+10 assume {:print "$at(2,30670,30680)"} true; - $t39 := $Mutation($Local(5), EmptyVec(), $t5); + $t73 := $Mutation($Local(5), EmptyVec(), $t5); - // assume Identical($t40, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + // assume Identical($t74, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 assume {:print "$at(95,1664,1763)"} true; - assume ($t40 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + assume ($t74 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); - // $t34 := coin::extract($t39, $t33) on_abort goto L11 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:641:34+33 + // $t68 := coin::extract($t73, $t67) on_abort goto L11 with $t34 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:641:34+33 assume {:print "$at(2,30656,30689)"} true; - call $t34,$t39 := $1_coin_extract'$1_aptos_coin_AptosCoin'($t39, $t33); + call $t68,$t73 := $1_coin_extract'$1_aptos_coin_AptosCoin'($t73, $t67); if ($abort_flag) { assume {:print "$at(2,30656,30689)"} true; - $t16 := $abort_code; - assume {:print "$track_abort(57,8):", $t16} $t16 == $t16; + $t34 := $abort_code; + assume {:print "$track_abort(57,8):", $t34} $t34 == $t34; goto L11; } - // write_back[LocalRoot($t5)@]($t39) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:641:34+33 - $t5 := $Dereference($t39); + // write_back[LocalRoot($t5)@]($t73) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:641:34+33 + $t5 := $Dereference($t73); // trace_local[coins]($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:641:34+33 assume {:print "$track_local(57,8,5):", $t5} $t5 == $t5; - // trace_local[share_of_coins#243]($t34) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:641:17+14 - assume {:print "$track_local(57,8,9):", $t34} $t34 == $t34; + // trace_local[share_of_coins#243]($t68) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:641:17+14 + assume {:print "$track_local(57,8,9):", $t68} $t68 == $t68; - // $t35 := read_ref($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:642:52+31 + // $t69 := read_ref($t35) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:642:52+31 assume {:print "$at(2,30742,30773)"} true; - $t35 := $Dereference($t17); + $t69 := $Dereference($t35); - // $t36 := vesting::get_beneficiary($t35, $t31) on_abort goto L11 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:642:37+46 - call $t36 := $1_vesting_get_beneficiary($t35, $t31); + // $t70 := vesting::get_beneficiary($t69, $t65) on_abort goto L11 with $t34 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:642:37+46 + call $t70 := $1_vesting_get_beneficiary($t69, $t65); if ($abort_flag) { assume {:print "$at(2,30727,30773)"} true; - $t16 := $abort_code; - assume {:print "$track_abort(57,8):", $t16} $t16 == $t16; + $t34 := $abort_code; + assume {:print "$track_abort(57,8):", $t34} $t34 == $t34; goto L11; } - // assume Identical($t41, global($t36)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.spec.move:200:9+39 + // assume Identical($t75, global($t70)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.spec.move:200:9+39 assume {:print "$at(81,9368,9407)"} true; - assume ($t41 == $ResourceValue($1_account_Account_$memory, $t36)); + assume ($t75 == $ResourceValue($1_account_Account_$memory, $t70)); - // aptos_account::deposit_coins($t36, $t34) on_abort goto L11 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:643:13+63 + // aptos_account::deposit_coins($t70, $t68) on_abort goto L11 with $t34 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:643:13+63 assume {:print "$at(2,30787,30850)"} true; - call $1_aptos_account_deposit_coins'$1_aptos_coin_AptosCoin'($t36, $t34); + call $1_aptos_account_deposit_coins'$1_aptos_coin_AptosCoin'($t70, $t68); if ($abort_flag) { assume {:print "$at(2,30787,30850)"} true; - $t16 := $abort_code; - assume {:print "$track_abort(57,8):", $t16} $t16 == $t16; + $t34 := $abort_code; + assume {:print "$track_abort(57,8):", $t34} $t34 == $t34; goto L11; } - // $t37 := 1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:265:21+1 + // $t71 := 1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:265:21+1 assume {:print "$at(18,9353,9354)"} true; - $t37 := 1; - assume $IsValid'u64'($t37); + $t71 := 1; + assume $IsValid'u64'($t71); - // $t38 := +($t7, $t37) on_abort goto L11 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:265:19+1 - call $t38 := $AddU64($t7, $t37); + // $t72 := +($t7, $t71) on_abort goto L11 with $t34 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:265:19+1 + call $t72 := $AddU64($t7, $t71); if ($abort_flag) { assume {:print "$at(18,9351,9352)"} true; - $t16 := $abort_code; - assume {:print "$track_abort(57,8):", $t16} $t16 == $t16; + $t34 := $abort_code; + assume {:print "$track_abort(57,8):", $t34} $t34 == $t34; goto L11; } - // trace_local[i#237]($t38) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:265:13+1 - assume {:print "$track_local(57,8,7):", $t38} $t38 == $t38; + // trace_local[i#237]($t72) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:265:13+1 + assume {:print "$track_local(57,8,7):", $t72} $t72 == $t72; // goto L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:265:13+9 goto L9; @@ -26933,56 +27104,56 @@ L4: assume {:print "$at(2,30970,31152)"} true; L2: - // $t42 := copy($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:647:25+6 + // $t76 := copy($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:647:25+6 assume {:print "$at(2,30986,30992)"} true; - $t42 := $t5; + $t76 := $t5; - // assume Identical($t43, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + // assume Identical($t77, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 assume {:print "$at(95,1664,1763)"} true; - assume ($t43 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + assume ($t77 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); - // $t44 := coin::value($t42) on_abort goto L11 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:647:13+19 + // $t78 := coin::value($t76) on_abort goto L11 with $t34 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:647:13+19 assume {:print "$at(2,30974,30993)"} true; - call $t44 := $1_coin_value'$1_aptos_coin_AptosCoin'($t42); + call $t78 := $1_coin_value'$1_aptos_coin_AptosCoin'($t76); if ($abort_flag) { assume {:print "$at(2,30974,30993)"} true; - $t16 := $abort_code; - assume {:print "$track_abort(57,8):", $t16} $t16 == $t16; + $t34 := $abort_code; + assume {:print "$track_abort(57,8):", $t34} $t34 == $t34; goto L11; } - // $t45 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:647:35+1 - $t45 := 0; - assume $IsValid'u64'($t45); + // $t79 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:647:35+1 + $t79 := 0; + assume $IsValid'u64'($t79); - // $t46 := >($t44, $t45) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:647:33+1 - call $t46 := $Gt($t44, $t45); + // $t80 := >($t78, $t79) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:647:33+1 + call $t80 := $Gt($t78, $t79); - // if ($t46) goto L7 else goto L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:647:9+182 - if ($t46) { goto L7; } else { goto L6; } + // if ($t80) goto L7 else goto L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:647:9+182 + if ($t80) { goto L7; } else { goto L6; } // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:648:42+16 assume {:print "$at(2,31042,31058)"} true; L7: - // $t47 := get_field.withdrawal_address($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:648:42+35 + // $t81 := get_field.withdrawal_address($t35) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:648:42+35 assume {:print "$at(2,31042,31077)"} true; - $t47 := $withdrawal_address#$1_vesting_VestingContract($Dereference($t17)); + $t81 := $withdrawal_address#$1_vesting_VestingContract($Dereference($t35)); - // $t48 := move($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:648:79+5 - $t48 := $t5; + // $t82 := move($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:648:79+5 + $t82 := $t5; - // assume Identical($t49, global($t47)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.spec.move:200:9+39 + // assume Identical($t83, global($t81)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.spec.move:200:9+39 assume {:print "$at(81,9368,9407)"} true; - assume ($t49 == $ResourceValue($1_account_Account_$memory, $t47)); + assume ($t83 == $ResourceValue($1_account_Account_$memory, $t81)); - // aptos_account::deposit_coins($t47, $t48) on_abort goto L11 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:648:13+72 + // aptos_account::deposit_coins($t81, $t82) on_abort goto L11 with $t34 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:648:13+72 assume {:print "$at(2,31013,31085)"} true; - call $1_aptos_account_deposit_coins'$1_aptos_coin_AptosCoin'($t47, $t48); + call $1_aptos_account_deposit_coins'$1_aptos_coin_AptosCoin'($t81, $t82); if ($abort_flag) { assume {:print "$at(2,31013,31085)"} true; - $t16 := $abort_code; - assume {:print "$track_abort(57,8):", $t16} $t16 == $t16; + $t34 := $abort_code; + assume {:print "$track_abort(57,8):", $t34} $t34 == $t34; goto L11; } @@ -26993,21 +27164,21 @@ L7: assume {:print "$at(2,31135,31140)"} true; L6: - // $t50 := move($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:650:32+5 + // $t84 := move($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:650:32+5 assume {:print "$at(2,31135,31140)"} true; - $t50 := $t5; + $t84 := $t5; - // assume Identical($t51, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + // assume Identical($t85, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 assume {:print "$at(95,1664,1763)"} true; - assume ($t51 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + assume ($t85 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); - // coin::destroy_zero($t50) on_abort goto L11 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:650:13+25 + // coin::destroy_zero($t84) on_abort goto L11 with $t34 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:650:13+25 assume {:print "$at(2,31116,31141)"} true; - call $1_coin_destroy_zero'$1_aptos_coin_AptosCoin'($t50); + call $1_coin_destroy_zero'$1_aptos_coin_AptosCoin'($t84); if ($abort_flag) { assume {:print "$at(2,31116,31141)"} true; - $t16 := $abort_code; - assume {:print "$track_abort(57,8):", $t16} $t16 == $t16; + $t34 := $abort_code; + assume {:print "$track_abort(57,8):", $t34} $t34 == $t34; goto L11; } @@ -27015,31 +27186,31 @@ L6: assume {:print "$at(2,31192,31208)"} true; L8: - // $t52 := borrow_field.distribute_events($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:654:13+39 + // $t86 := borrow_field.distribute_events($t35) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:654:13+39 assume {:print "$at(2,31187,31226)"} true; - $t52 := $ChildMutation($t17, 15, $distribute_events#$1_vesting_VestingContract($Dereference($t17))); + $t86 := $ChildMutation($t35, 15, $distribute_events#$1_vesting_VestingContract($Dereference($t35))); - // $t53 := get_field.admin($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:656:24+22 + // $t87 := get_field.admin($t35) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:656:24+22 assume {:print "$at(2,31281,31303)"} true; - $t53 := $admin#$1_vesting_VestingContract($Dereference($t17)); + $t87 := $admin#$1_vesting_VestingContract($Dereference($t35)); - // $t54 := pack vesting::DistributeEvent($t53, $t0, $t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:655:13+189 + // $t88 := pack vesting::DistributeEvent($t87, $t0, $t55) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:655:13+189 assume {:print "$at(2,31240,31429)"} true; - $t54 := $1_vesting_DistributeEvent($t53, $t0, $t21); + $t88 := $1_vesting_DistributeEvent($t87, $t0, $t55); - // opaque begin: event::emit_event($t52, $t54) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:653:9+277 + // opaque begin: event::emit_event($t86, $t88) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:653:9+277 assume {:print "$at(2,31163,31440)"} true; - // opaque end: event::emit_event($t52, $t54) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:653:9+277 + // opaque end: event::emit_event($t86, $t88) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:653:9+277 - // write_back[Reference($t17).distribute_events (event::EventHandle)]($t52) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:653:9+277 - $t17 := $UpdateMutation($t17, $Update'$1_vesting_VestingContract'_distribute_events($Dereference($t17), $Dereference($t52))); + // write_back[Reference($t35).distribute_events (event::EventHandle)]($t86) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:653:9+277 + $t35 := $UpdateMutation($t35, $Update'$1_vesting_VestingContract'_distribute_events($Dereference($t35), $Dereference($t86))); - // pack_ref_deep($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:653:9+277 + // pack_ref_deep($t35) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:653:9+277 - // write_back[vesting::VestingContract@]($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:653:9+277 - $1_vesting_VestingContract_$memory := $ResourceUpdate($1_vesting_VestingContract_$memory, $GlobalLocationAddress($t17), - $Dereference($t17)); + // write_back[vesting::VestingContract@]($t35) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:653:9+277 + $1_vesting_VestingContract_$memory := $ResourceUpdate($1_vesting_VestingContract_$memory, $GlobalLocationAddress($t35), + $Dereference($t35)); // goto L10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:660:10+1 assume {:print "$at(2,31440,31441)"} true; @@ -27066,16 +27237,16 @@ L10: // label L11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:661:5+1 L11: - // abort($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:661:5+1 + // abort($t34) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:661:5+1 assume {:print "$at(2,31446,31447)"} true; - $abort_code := $t16; + $abort_code := $t34; $abort_flag := true; return; } // fun vesting::distribute [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:623:5+1779 -procedure {:timeLimit 200} $1_vesting_distribute$verify(_$t0: int) returns () +procedure {:timeLimit 1000} $1_vesting_distribute$verify(_$t0: int) returns () { // declare local variables var $t1: int; @@ -27093,45 +27264,79 @@ procedure {:timeLimit 200} $1_vesting_distribute$verify(_$t0: int) returns () var $t13: Vec (int); var $t14: $Mutation ($1_vesting_VestingContract); var $t15: $1_vesting_VestingContract; - var $t16: int; - var $t17: $Mutation ($1_vesting_VestingContract); - var $t18: $1_vesting_VestingContract; - var $t19: $1_coin_Coin'$1_aptos_coin_AptosCoin'; - var $t20: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t16: $1_vesting_VestingContract; + var $t17: int; + var $t18: $1_staking_contract_Store; + var $t19: $1_staking_contract_StakingContract; + var $t20: Table int ($1_staking_contract_StakingContract); var $t21: int; - var $t22: int; - var $t23: bool; - var $t24: $1_coin_Coin'$1_aptos_coin_AptosCoin'; - var $t25: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; - var $t26: $1_pool_u64_Pool; - var $t27: Vec (int); - var $t28: int; - var $t29: int; - var $t30: bool; + var $t22: $1_stake_StakePool; + var $t23: int; + var $t24: int; + var $t25: int; + var $t26: int; + var $t27: $1_stake_StakePool; + var $t28: $1_stake_ValidatorSet; + var $t29: bool; + var $t30: int; var $t31: int; var $t32: int; - var $t33: int; - var $t34: $1_coin_Coin'$1_aptos_coin_AptosCoin'; - var $t35: $1_vesting_VestingContract; - var $t36: int; + var $t33: $1_vesting_VestingContract; + var $t34: int; + var $t35: $Mutation ($1_vesting_VestingContract); + var $t36: $1_vesting_VestingContract; var $t37: int; - var $t38: int; - var $t39: $Mutation ($1_coin_Coin'$1_aptos_coin_AptosCoin'); - var $t40: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; - var $t41: $1_account_Account; - var $t42: $1_coin_Coin'$1_aptos_coin_AptosCoin'; - var $t43: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t38: $1_staking_contract_Store; + var $t39: $1_staking_contract_StakingContract; + var $t40: Table int ($1_staking_contract_StakingContract); + var $t41: int; + var $t42: $1_stake_StakePool; + var $t43: int; var $t44: int; var $t45: int; - var $t46: bool; - var $t47: int; - var $t48: $1_coin_Coin'$1_aptos_coin_AptosCoin'; - var $t49: $1_account_Account; - var $t50: $1_coin_Coin'$1_aptos_coin_AptosCoin'; - var $t51: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; - var $t52: $Mutation ($1_event_EventHandle'$1_vesting_DistributeEvent'); - var $t53: int; - var $t54: $1_vesting_DistributeEvent; + var $t46: int; + var $t47: $1_stake_StakePool; + var $t48: $1_stake_ValidatorSet; + var $t49: bool; + var $t50: int; + var $t51: int; + var $t52: int; + var $t53: $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $t54: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t55: int; + var $t56: int; + var $t57: bool; + var $t58: $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $t59: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t60: $1_pool_u64_Pool; + var $t61: Vec (int); + var $t62: int; + var $t63: int; + var $t64: bool; + var $t65: int; + var $t66: int; + var $t67: int; + var $t68: $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $t69: $1_vesting_VestingContract; + var $t70: int; + var $t71: int; + var $t72: int; + var $t73: $Mutation ($1_coin_Coin'$1_aptos_coin_AptosCoin'); + var $t74: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t75: $1_account_Account; + var $t76: $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $t77: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t78: int; + var $t79: int; + var $t80: bool; + var $t81: int; + var $t82: $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $t83: $1_account_Account; + var $t84: $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $t85: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t86: $Mutation ($1_event_EventHandle'$1_vesting_DistributeEvent'); + var $t87: int; + var $t88: $1_vesting_DistributeEvent; var $t0: int; var $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin'': $1_coin_Coin'$1_aptos_coin_AptosCoin'; var $temp_0'$1_pool_u64_Pool': $1_pool_u64_Pool; @@ -27139,6 +27344,11 @@ procedure {:timeLimit 200} $1_vesting_distribute$verify(_$t0: int) returns () var $temp_0'address': int; var $temp_0'u64': int; var $temp_0'vec'address'': Vec (int); + var $1_vesting_VestingContract_$memory#159: $Memory $1_vesting_VestingContract; + var $1_staking_contract_Store_$memory#160: $Memory $1_staking_contract_Store; + var $1_stake_StakePool_$memory#161: $Memory $1_stake_StakePool; + var $1_stake_ValidatorSet_$memory#162: $Memory $1_stake_ValidatorSet; + var $1_timestamp_CurrentTimeMicroseconds_$memory#163: $Memory $1_timestamp_CurrentTimeMicroseconds; $t0 := _$t0; // verification entrypoint assumptions @@ -27236,124 +27446,277 @@ procedure {:timeLimit 200} $1_vesting_distribute$verify(_$t0: int) returns () // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/reconfiguration.spec.move:8:9+137 assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> ($1_timestamp_spec_now_microseconds($1_timestamp_CurrentTimeMicroseconds_$memory) >= $1_reconfiguration_$last_reconfiguration_time($1_reconfiguration_Configuration_$memory))); + // assume Identical($t15, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:213:9+65 + assume {:print "$at(3,9717,9782)"} true; + assume ($t15 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); + + // assume Identical($t16, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:518:9+65 + assume {:print "$at(3,23036,23101)"} true; + assume ($t16 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); + + // assume Identical($t17, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t15))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:455:9+49 + assume {:print "$at(3,19684,19733)"} true; + assume ($t17 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t15))); + + // assume Identical($t18, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:459:9+62 + assume {:print "$at(3,19898,19960)"} true; + assume ($t18 == $ResourceValue($1_staking_contract_Store_$memory, $t0)); + + // assume Identical($t19, simple_map::spec_get(select staking_contract::Store.staking_contracts($t18), $t17)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:460:9+79 + assume {:print "$at(3,19969,20048)"} true; + assume ($t19 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($t18), $t17)); + + // assume Identical($t20, select staking_contract::Store.staking_contracts(global($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 + assume {:print "$at(134,11481,11545)"} true; + assume ($t20 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t0))); + + // assume Identical($t21, select staking_contract::StakingContract.pool_address($t19)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:470:9+49 + assume {:print "$at(3,20547,20596)"} true; + assume ($t21 == $pool_address#$1_staking_contract_StakingContract($t19)); + + // assume Identical($t22, global($t21)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:472:9+56 + assume {:print "$at(3,20664,20720)"} true; + assume ($t22 == $ResourceValue($1_stake_StakePool_$memory, $t21)); + + // assume Identical($t23, select coin::Coin.value(select stake::StakePool.inactive($t22))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:473:9+41 + assume {:print "$at(3,20729,20770)"} true; + assume ($t23 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t22))); + + // assume Identical($t24, select coin::Coin.value(select stake::StakePool.pending_inactive($t22))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:474:9+57 + assume {:print "$at(3,20779,20836)"} true; + assume ($t24 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t22))); + + // assume Identical($t25, Add($t23, $t24)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:478:9+63 + assume {:print "$at(3,20948,21011)"} true; + assume ($t25 == ($t23 + $t24)); + + // assume Identical($t26, select stake::OwnerCapability.pool_address(select staking_contract::StakingContract.owner_cap($t19))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:479:9+61 + assume {:print "$at(3,21020,21081)"} true; + assume ($t26 == $pool_address#$1_stake_OwnerCapability($owner_cap#$1_staking_contract_StakingContract($t19))); + + // assume Identical($t27, global($t26)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:481:9+60 + assume {:print "$at(3,21151,21211)"} true; + assume ($t27 == $ResourceValue($1_stake_StakePool_$memory, $t26)); + + // assume Identical($t28, global(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:483:9+66 + assume {:print "$at(3,21286,21352)"} true; + assume ($t28 == $ResourceValue($1_stake_ValidatorSet_$memory, 1)); + + // assume Identical($t29, And(And(Not(stake::spec_contains(select stake::ValidatorSet.pending_active($t28), $t26)), Not(stake::spec_contains(select stake::ValidatorSet.active_validators($t28), $t26))), Not(stake::spec_contains(select stake::ValidatorSet.pending_inactive($t28), $t26)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:484:9+260 + assume {:print "$at(3,21361,21621)"} true; + assume ($t29 == ((!$1_stake_spec_contains($pending_active#$1_stake_ValidatorSet($t28), $t26) && !$1_stake_spec_contains($active_validators#$1_stake_ValidatorSet($t28), $t26)) && !$1_stake_spec_contains($pending_inactive#$1_stake_ValidatorSet($t28), $t26))); + + // assume Identical($t30, select coin::Coin.value(select stake::StakePool.inactive($t27))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:487:9+45 + assume {:print "$at(3,21630,21675)"} true; + assume ($t30 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t27))); + + // assume Identical($t31, select coin::Coin.value(select stake::StakePool.pending_inactive($t27))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:488:9+61 + assume {:print "$at(3,21684,21745)"} true; + assume ($t31 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t27))); + + // assume Identical($t32, Add($t30, $t31)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:489:9+53 + assume {:print "$at(3,21754,21807)"} true; + assume ($t32 == ($t30 + $t31)); + + // @163 := save_mem(timestamp::CurrentTimeMicroseconds) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:623:5+1 + assume {:print "$at(2,29668,29669)"} true; + $1_timestamp_CurrentTimeMicroseconds_$memory#163 := $1_timestamp_CurrentTimeMicroseconds_$memory; + + // @161 := save_mem(stake::StakePool) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:623:5+1 + $1_stake_StakePool_$memory#161 := $1_stake_StakePool_$memory; + + // @162 := save_mem(stake::ValidatorSet) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:623:5+1 + $1_stake_ValidatorSet_$memory#162 := $1_stake_ValidatorSet_$memory; + + // @160 := save_mem(staking_contract::Store) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:623:5+1 + $1_staking_contract_Store_$memory#160 := $1_staking_contract_Store_$memory; + + // @159 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:623:5+1 + $1_vesting_VestingContract_$memory#159 := $1_vesting_VestingContract_$memory; + // trace_local[contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:623:5+1 assume {:print "$track_local(57,8,0):", $t0} $t0 == $t0; - // assume Identical($t15, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:389:9+65 - assume {:print "$at(3,16378,16443)"} true; - assume ($t15 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); + // assume Identical($t33, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:518:9+65 + assume {:print "$at(3,23036,23101)"} true; + assume ($t33 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); - // vesting::assert_active_vesting_contract($t0) on_abort goto L11 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:624:9+48 + // vesting::assert_active_vesting_contract($t0) on_abort goto L11 with $t34 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:624:9+48 assume {:print "$at(2,29758,29806)"} true; call $1_vesting_assert_active_vesting_contract($t0); if ($abort_flag) { assume {:print "$at(2,29758,29806)"} true; - $t16 := $abort_code; - assume {:print "$track_abort(57,8):", $t16} $t16 == $t16; + $t34 := $abort_code; + assume {:print "$track_abort(57,8):", $t34} $t34 == $t34; goto L11; } - // $t17 := borrow_global($t0) on_abort goto L11 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:626:32+17 + // $t35 := borrow_global($t0) on_abort goto L11 with $t34 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:626:32+17 assume {:print "$at(2,29840,29857)"} true; if (!$ResourceExists($1_vesting_VestingContract_$memory, $t0)) { call $ExecFailureAbort(); } else { - $t17 := $Mutation($Global($t0), EmptyVec(), $ResourceValue($1_vesting_VestingContract_$memory, $t0)); + $t35 := $Mutation($Global($t0), EmptyVec(), $ResourceValue($1_vesting_VestingContract_$memory, $t0)); } if ($abort_flag) { assume {:print "$at(2,29840,29857)"} true; - $t16 := $abort_code; - assume {:print "$track_abort(57,8):", $t16} $t16 == $t16; + $t34 := $abort_code; + assume {:print "$track_abort(57,8):", $t34} $t34 == $t34; goto L11; } - // trace_local[vesting_contract]($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:626:13+16 - $temp_0'$1_vesting_VestingContract' := $Dereference($t17); + // trace_local[vesting_contract]($t35) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:626:13+16 + $temp_0'$1_vesting_VestingContract' := $Dereference($t35); assume {:print "$track_local(57,8,14):", $temp_0'$1_vesting_VestingContract'} $temp_0'$1_vesting_VestingContract' == $temp_0'$1_vesting_VestingContract'; - // $t18 := read_ref($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:627:35+36 + // $t36 := read_ref($t35) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:627:35+36 assume {:print "$at(2,29928,29964)"} true; - $t18 := $Dereference($t17); + $t36 := $Dereference($t35); + + // assume Identical($t37, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t36))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:455:9+49 + assume {:print "$at(3,19684,19733)"} true; + assume ($t37 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t36))); + + // assume Identical($t38, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:459:9+62 + assume {:print "$at(3,19898,19960)"} true; + assume ($t38 == $ResourceValue($1_staking_contract_Store_$memory, $t0)); + + // assume Identical($t39, simple_map::spec_get(select staking_contract::Store.staking_contracts($t38), $t37)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:460:9+79 + assume {:print "$at(3,19969,20048)"} true; + assume ($t39 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($t38), $t37)); + + // assume Identical($t40, select staking_contract::Store.staking_contracts(global($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 + assume {:print "$at(134,11481,11545)"} true; + assume ($t40 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t0))); + + // assume Identical($t41, select staking_contract::StakingContract.pool_address($t39)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:470:9+49 + assume {:print "$at(3,20547,20596)"} true; + assume ($t41 == $pool_address#$1_staking_contract_StakingContract($t39)); + + // assume Identical($t42, global($t41)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:472:9+56 + assume {:print "$at(3,20664,20720)"} true; + assume ($t42 == $ResourceValue($1_stake_StakePool_$memory, $t41)); + + // assume Identical($t43, select coin::Coin.value(select stake::StakePool.inactive($t42))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:473:9+41 + assume {:print "$at(3,20729,20770)"} true; + assume ($t43 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t42))); + + // assume Identical($t44, select coin::Coin.value(select stake::StakePool.pending_inactive($t42))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:474:9+57 + assume {:print "$at(3,20779,20836)"} true; + assume ($t44 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t42))); + + // assume Identical($t45, Add($t43, $t44)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:478:9+63 + assume {:print "$at(3,20948,21011)"} true; + assume ($t45 == ($t43 + $t44)); + + // assume Identical($t46, select stake::OwnerCapability.pool_address(select staking_contract::StakingContract.owner_cap($t39))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:479:9+61 + assume {:print "$at(3,21020,21081)"} true; + assume ($t46 == $pool_address#$1_stake_OwnerCapability($owner_cap#$1_staking_contract_StakingContract($t39))); + + // assume Identical($t47, global($t46)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:481:9+60 + assume {:print "$at(3,21151,21211)"} true; + assume ($t47 == $ResourceValue($1_stake_StakePool_$memory, $t46)); + + // assume Identical($t48, global(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:483:9+66 + assume {:print "$at(3,21286,21352)"} true; + assume ($t48 == $ResourceValue($1_stake_ValidatorSet_$memory, 1)); + + // assume Identical($t49, And(And(Not(stake::spec_contains(select stake::ValidatorSet.pending_active($t48), $t46)), Not(stake::spec_contains(select stake::ValidatorSet.active_validators($t48), $t46))), Not(stake::spec_contains(select stake::ValidatorSet.pending_inactive($t48), $t46)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:484:9+260 + assume {:print "$at(3,21361,21621)"} true; + assume ($t49 == ((!$1_stake_spec_contains($pending_active#$1_stake_ValidatorSet($t48), $t46) && !$1_stake_spec_contains($active_validators#$1_stake_ValidatorSet($t48), $t46)) && !$1_stake_spec_contains($pending_inactive#$1_stake_ValidatorSet($t48), $t46))); - // $t5 := vesting::withdraw_stake($t18, $t0) on_abort goto L11 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:627:21+50 - call $t5 := $1_vesting_withdraw_stake($t18, $t0); + // assume Identical($t50, select coin::Coin.value(select stake::StakePool.inactive($t47))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:487:9+45 + assume {:print "$at(3,21630,21675)"} true; + assume ($t50 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t47))); + + // assume Identical($t51, select coin::Coin.value(select stake::StakePool.pending_inactive($t47))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:488:9+61 + assume {:print "$at(3,21684,21745)"} true; + assume ($t51 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t47))); + + // assume Identical($t52, Add($t50, $t51)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:489:9+53 + assume {:print "$at(3,21754,21807)"} true; + assume ($t52 == ($t50 + $t51)); + + // $t5 := vesting::withdraw_stake($t36, $t0) on_abort goto L11 with $t34 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:627:21+50 + assume {:print "$at(2,29914,29964)"} true; + call $t5 := $1_vesting_withdraw_stake($t36, $t0); if ($abort_flag) { assume {:print "$at(2,29914,29964)"} true; - $t16 := $abort_code; - assume {:print "$track_abort(57,8):", $t16} $t16 == $t16; + $t34 := $abort_code; + assume {:print "$track_abort(57,8):", $t34} $t34 == $t34; goto L11; } // trace_local[coins]($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:627:13+5 assume {:print "$track_local(57,8,5):", $t5} $t5 == $t5; - // $t19 := copy($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:628:53+6 + // $t53 := copy($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:628:53+6 assume {:print "$at(2,30018,30024)"} true; - $t19 := $t5; + $t53 := $t5; - // assume Identical($t20, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + // assume Identical($t54, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 assume {:print "$at(95,1664,1763)"} true; - assume ($t20 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + assume ($t54 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); - // $t21 := coin::value($t19) on_abort goto L11 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:628:41+19 + // $t55 := coin::value($t53) on_abort goto L11 with $t34 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:628:41+19 assume {:print "$at(2,30006,30025)"} true; - call $t21 := $1_coin_value'$1_aptos_coin_AptosCoin'($t19); + call $t55 := $1_coin_value'$1_aptos_coin_AptosCoin'($t53); if ($abort_flag) { assume {:print "$at(2,30006,30025)"} true; - $t16 := $abort_code; - assume {:print "$track_abort(57,8):", $t16} $t16 == $t16; + $t34 := $abort_code; + assume {:print "$track_abort(57,8):", $t34} $t34 == $t34; goto L11; } - // trace_local[total_distribution_amount]($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:628:13+25 - assume {:print "$track_local(57,8,12):", $t21} $t21 == $t21; + // trace_local[total_distribution_amount]($t55) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:628:13+25 + assume {:print "$track_local(57,8,12):", $t55} $t55 == $t55; - // $t22 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:629:42+1 + // $t56 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:629:42+1 assume {:print "$at(2,30068,30069)"} true; - $t22 := 0; - assume $IsValid'u64'($t22); + $t56 := 0; + assume $IsValid'u64'($t56); - // $t23 := ==($t21, $t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:629:39+2 - $t23 := $IsEqual'u64'($t21, $t22); + // $t57 := ==($t55, $t56) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:629:39+2 + $t57 := $IsEqual'u64'($t55, $t56); - // if ($t23) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:629:9+105 - if ($t23) { goto L1; } else { goto L0; } + // if ($t57) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:629:9+105 + if ($t57) { goto L1; } else { goto L0; } // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:630:13+25 assume {:print "$at(2,30085,30110)"} true; L1: - // assert forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t17)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t17)), addr)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 + // assert forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t35)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t35)), addr)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 assume {:print "$at(59,538,673)"} true; assert {:msg "assert_failed(59,538,673): data invariant does not hold"} - (forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t17))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t17))), addr)))); + (forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t35))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t35))), addr)))); - // assert forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t17)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t17)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t17)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t17)), j)), Eq(i, j)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 + // assert forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t35)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t35)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t35)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t35)), j)), Eq(i, j)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 assume {:print "$at(59,738,867)"} true; assert {:msg "assert_failed(59,738,867): data invariant does not hold"} - (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t17))))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t17))))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; + (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t35))))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t35))))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; (var j := $i_3; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t17))), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t17))), j)) ==> $IsEqual'num'(i, j)))))))); + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t35))), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t35))), j)) ==> $IsEqual'num'(i, j)))))))); - // destroy($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:630:13+25 + // destroy($t35) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:630:13+25 assume {:print "$at(2,30085,30110)"} true; - // $t24 := move($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:630:32+5 - $t24 := $t5; + // $t58 := move($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:630:32+5 + $t58 := $t5; - // assume Identical($t25, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + // assume Identical($t59, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 assume {:print "$at(95,1664,1763)"} true; - assume ($t25 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + assume ($t59 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); - // coin::destroy_zero($t24) on_abort goto L11 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:630:13+25 + // coin::destroy_zero($t58) on_abort goto L11 with $t34 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:630:13+25 assume {:print "$at(2,30085,30110)"} true; - call $1_coin_destroy_zero'$1_aptos_coin_AptosCoin'($t24); + call $1_coin_destroy_zero'$1_aptos_coin_AptosCoin'($t58); if ($abort_flag) { assume {:print "$at(2,30085,30110)"} true; - $t16 := $abort_code; - assume {:print "$track_abort(57,8):", $t16} $t16 == $t16; + $t34 := $abort_code; + assume {:print "$track_abort(57,8):", $t34} $t34 == $t34; goto L11; } @@ -27365,47 +27728,47 @@ L1: assume {:print "$at(2,30242,30258)"} true; L0: - // $t26 := get_field.grant_pool($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:635:26+28 + // $t60 := get_field.grant_pool($t35) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:635:26+28 assume {:print "$at(2,30241,30269)"} true; - $t26 := $grant_pool#$1_vesting_VestingContract($Dereference($t17)); + $t60 := $grant_pool#$1_vesting_VestingContract($Dereference($t35)); - // trace_local[grant_pool]($t26) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:635:13+10 - assume {:print "$track_local(57,8,6):", $t26} $t26 == $t26; + // trace_local[grant_pool]($t60) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:635:13+10 + assume {:print "$track_local(57,8,6):", $t60} $t60 == $t60; - // $t27 := pool_u64::shareholders($t26) on_abort goto L11 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:636:29+34 + // $t61 := pool_u64::shareholders($t60) on_abort goto L11 with $t34 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:636:29+34 assume {:print "$at(2,30299,30333)"} true; - call $t27 := $1_pool_u64_shareholders($t26); + call $t61 := $1_pool_u64_shareholders($t60); if ($abort_flag) { assume {:print "$at(2,30299,30333)"} true; - $t16 := $abort_code; - assume {:print "$track_abort(57,8):", $t16} $t16 == $t16; + $t34 := $abort_code; + assume {:print "$track_abort(57,8):", $t34} $t34 == $t34; goto L11; } - // trace_local[v#235]($t27) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:637:9+519 + // trace_local[v#235]($t61) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:637:9+519 assume {:print "$at(2,30343,30862)"} true; - assume {:print "$track_local(57,8,13):", $t27} $t27 == $t27; + assume {:print "$track_local(57,8,13):", $t61} $t61 == $t61; - // $t28 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:261:17+1 + // $t62 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:261:17+1 assume {:print "$at(18,9246,9247)"} true; - $t28 := 0; - assume $IsValid'u64'($t28); + $t62 := 0; + assume $IsValid'u64'($t62); - // trace_local[i#237]($t28) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:261:13+1 - assume {:print "$track_local(57,8,7):", $t28} $t28 == $t28; + // trace_local[i#237]($t62) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:261:13+1 + assume {:print "$track_local(57,8,7):", $t62} $t62 == $t62; - // $t29 := vector::length
($t27) on_abort goto L11 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:262:19+9 + // $t63 := vector::length
($t61) on_abort goto L11 with $t34 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:262:19+9 assume {:print "$at(18,9267,9276)"} true; - call $t29 := $1_vector_length'address'($t27); + call $t63 := $1_vector_length'address'($t61); if ($abort_flag) { assume {:print "$at(18,9267,9276)"} true; - $t16 := $abort_code; - assume {:print "$track_abort(57,8):", $t16} $t16 == $t16; + $t34 := $abort_code; + assume {:print "$track_abort(57,8):", $t34} $t34 == $t34; goto L11; } - // trace_local[len#238]($t29) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:262:13+3 - assume {:print "$track_local(57,8,8):", $t29} $t29 == $t29; + // trace_local[len#238]($t63) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:262:13+3 + assume {:print "$track_local(57,8,8):", $t63} $t63 == $t63; // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 assume {:print "$at(18,9293,9294)"} true; @@ -27424,67 +27787,67 @@ L5: // assume WellFormed($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 assume $IsValid'u64'($t7); - // $t30 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - havoc $t30; + // $t64 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + havoc $t64; - // assume WellFormed($t30) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume $IsValid'bool'($t30); + // assume WellFormed($t64) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume $IsValid'bool'($t64); - // $t31 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - havoc $t31; + // $t65 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + havoc $t65; - // assume WellFormed($t31) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume $IsValid'address'($t31); + // assume WellFormed($t65) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume $IsValid'address'($t65); - // $t32 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - havoc $t32; + // $t66 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + havoc $t66; - // assume WellFormed($t32) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume $IsValid'u64'($t32); + // assume WellFormed($t66) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume $IsValid'u64'($t66); - // $t33 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - havoc $t33; + // $t67 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + havoc $t67; - // assume WellFormed($t33) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume $IsValid'u64'($t33); + // assume WellFormed($t67) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume $IsValid'u64'($t67); - // $t34 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - havoc $t34; + // $t68 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + havoc $t68; - // assume WellFormed($t34) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume $IsValid'$1_coin_Coin'$1_aptos_coin_AptosCoin''($t34); + // assume WellFormed($t68) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume $IsValid'$1_coin_Coin'$1_aptos_coin_AptosCoin''($t68); - // $t35 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - havoc $t35; + // $t69 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + havoc $t69; - // assume And(WellFormed($t35), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t35)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t35)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t35)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t35)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t35)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t35)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume ($IsValid'$1_vesting_VestingContract'($t35) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t35)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t35)), addr)))) && (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t35)))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t35)))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; + // assume And(WellFormed($t69), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t69)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t69)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t69)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t69)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t69)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t69)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume ($IsValid'$1_vesting_VestingContract'($t69) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t69)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t69)), addr)))) && (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t69)))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t69)))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; (var j := $i_3; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t35)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t35)), j)) ==> $IsEqual'num'(i, j)))))))))); + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t69)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t69)), j)) ==> $IsEqual'num'(i, j)))))))))); - // $t36 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - havoc $t36; + // $t70 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + havoc $t70; - // assume WellFormed($t36) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume $IsValid'address'($t36); + // assume WellFormed($t70) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume $IsValid'address'($t70); - // $t37 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - havoc $t37; + // $t71 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + havoc $t71; - // assume WellFormed($t37) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume $IsValid'u64'($t37); + // assume WellFormed($t71) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume $IsValid'u64'($t71); - // $t38 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - havoc $t38; + // $t72 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + havoc $t72; - // assume WellFormed($t38) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume $IsValid'u64'($t38); + // assume WellFormed($t72) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume $IsValid'u64'($t72); - // $t39 := havoc[mut_all]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - havoc $t39; + // $t73 := havoc[mut_all]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + havoc $t73; - // assume WellFormed($t39) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume $IsValid'$1_coin_Coin'$1_aptos_coin_AptosCoin''($Dereference($t39)); + // assume WellFormed($t73) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume $IsValid'$1_coin_Coin'$1_aptos_coin_AptosCoin''($Dereference($t73)); // trace_local[coins]($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 assume {:print "$info(): enter loop, variable(s) coins, i#237 havocked and reassigned"} true; @@ -27496,11 +27859,11 @@ L5: // assume Not(AbortFlag()) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 assume !$abort_flag; - // $t30 := <($t7, $t29) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:18+1 - call $t30 := $Lt($t7, $t29); + // $t64 := <($t7, $t63) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:18+1 + call $t64 := $Lt($t7, $t63); - // if ($t30) goto L3 else goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:9+78 - if ($t30) { goto L3; } else { goto L2; } + // if ($t64) goto L3 else goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:9+78 + if ($t64) { goto L3; } else { goto L2; } // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:9+78 L3: @@ -27509,116 +27872,116 @@ L3: assume {:print "$at(18,9325,9326)"} true; L4: - // $t31 := vector::borrow
($t27, $t7) on_abort goto L11 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:264:15+12 + // $t65 := vector::borrow
($t61, $t7) on_abort goto L11 with $t34 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:264:15+12 assume {:print "$at(18,9318,9330)"} true; - call $t31 := $1_vector_borrow'address'($t27, $t7); + call $t65 := $1_vector_borrow'address'($t61, $t7); if ($abort_flag) { assume {:print "$at(18,9318,9330)"} true; - $t16 := $abort_code; - assume {:print "$track_abort(57,8):", $t16} $t16 == $t16; + $t34 := $abort_code; + assume {:print "$track_abort(57,8):", $t34} $t34 == $t34; goto L11; } - // trace_local[shareholder#240]($t31) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:638:17+11 + // trace_local[shareholder#240]($t65) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:638:17+11 assume {:print "$at(2,30410,30421)"} true; - assume {:print "$track_local(57,8,10):", $t31} $t31 == $t31; + assume {:print "$track_local(57,8,10):", $t65} $t65 == $t65; - // $t32 := pool_u64::shares($t26, $t31) on_abort goto L11 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:639:26+41 + // $t66 := pool_u64::shares($t60, $t65) on_abort goto L11 with $t34 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:639:26+41 assume {:print "$at(2,30463,30504)"} true; - call $t32 := $1_pool_u64_shares($t26, $t31); + call $t66 := $1_pool_u64_shares($t60, $t65); if ($abort_flag) { assume {:print "$at(2,30463,30504)"} true; - $t16 := $abort_code; - assume {:print "$track_abort(57,8):", $t16} $t16 == $t16; + $t34 := $abort_code; + assume {:print "$track_abort(57,8):", $t34} $t34 == $t34; goto L11; } - // trace_local[shares#241]($t32) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:639:17+6 - assume {:print "$track_local(57,8,11):", $t32} $t32 == $t32; + // trace_local[shares#241]($t66) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:639:17+6 + assume {:print "$track_local(57,8,11):", $t66} $t66 == $t66; - // $t33 := pool_u64::shares_to_amount_with_total_coins($t26, $t32, $t21) on_abort goto L11 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:640:26+90 + // $t67 := pool_u64::shares_to_amount_with_total_coins($t60, $t66, $t55) on_abort goto L11 with $t34 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:640:26+90 assume {:print "$at(2,30531,30621)"} true; - call $t33 := $1_pool_u64_shares_to_amount_with_total_coins($t26, $t32, $t21); + call $t67 := $1_pool_u64_shares_to_amount_with_total_coins($t60, $t66, $t55); if ($abort_flag) { assume {:print "$at(2,30531,30621)"} true; - $t16 := $abort_code; - assume {:print "$track_abort(57,8):", $t16} $t16 == $t16; + $t34 := $abort_code; + assume {:print "$track_abort(57,8):", $t34} $t34 == $t34; goto L11; } - // trace_local[amount#242]($t33) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:640:17+6 - assume {:print "$track_local(57,8,4):", $t33} $t33 == $t33; + // trace_local[amount#242]($t67) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:640:17+6 + assume {:print "$track_local(57,8,4):", $t67} $t67 == $t67; - // $t39 := borrow_local($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:641:48+10 + // $t73 := borrow_local($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:641:48+10 assume {:print "$at(2,30670,30680)"} true; - $t39 := $Mutation($Local(5), EmptyVec(), $t5); + $t73 := $Mutation($Local(5), EmptyVec(), $t5); - // assume Identical($t40, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + // assume Identical($t74, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 assume {:print "$at(95,1664,1763)"} true; - assume ($t40 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + assume ($t74 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); - // $t34 := coin::extract($t39, $t33) on_abort goto L11 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:641:34+33 + // $t68 := coin::extract($t73, $t67) on_abort goto L11 with $t34 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:641:34+33 assume {:print "$at(2,30656,30689)"} true; - call $t34,$t39 := $1_coin_extract'$1_aptos_coin_AptosCoin'($t39, $t33); + call $t68,$t73 := $1_coin_extract'$1_aptos_coin_AptosCoin'($t73, $t67); if ($abort_flag) { assume {:print "$at(2,30656,30689)"} true; - $t16 := $abort_code; - assume {:print "$track_abort(57,8):", $t16} $t16 == $t16; + $t34 := $abort_code; + assume {:print "$track_abort(57,8):", $t34} $t34 == $t34; goto L11; } - // write_back[LocalRoot($t5)@]($t39) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:641:34+33 - $t5 := $Dereference($t39); + // write_back[LocalRoot($t5)@]($t73) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:641:34+33 + $t5 := $Dereference($t73); // trace_local[coins]($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:641:34+33 assume {:print "$track_local(57,8,5):", $t5} $t5 == $t5; - // trace_local[share_of_coins#243]($t34) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:641:17+14 - assume {:print "$track_local(57,8,9):", $t34} $t34 == $t34; + // trace_local[share_of_coins#243]($t68) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:641:17+14 + assume {:print "$track_local(57,8,9):", $t68} $t68 == $t68; - // $t35 := read_ref($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:642:52+31 + // $t69 := read_ref($t35) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:642:52+31 assume {:print "$at(2,30742,30773)"} true; - $t35 := $Dereference($t17); + $t69 := $Dereference($t35); - // $t36 := vesting::get_beneficiary($t35, $t31) on_abort goto L11 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:642:37+46 - call $t36 := $1_vesting_get_beneficiary($t35, $t31); + // $t70 := vesting::get_beneficiary($t69, $t65) on_abort goto L11 with $t34 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:642:37+46 + call $t70 := $1_vesting_get_beneficiary($t69, $t65); if ($abort_flag) { assume {:print "$at(2,30727,30773)"} true; - $t16 := $abort_code; - assume {:print "$track_abort(57,8):", $t16} $t16 == $t16; + $t34 := $abort_code; + assume {:print "$track_abort(57,8):", $t34} $t34 == $t34; goto L11; } - // assume Identical($t41, global($t36)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.spec.move:200:9+39 + // assume Identical($t75, global($t70)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.spec.move:200:9+39 assume {:print "$at(81,9368,9407)"} true; - assume ($t41 == $ResourceValue($1_account_Account_$memory, $t36)); + assume ($t75 == $ResourceValue($1_account_Account_$memory, $t70)); - // aptos_account::deposit_coins($t36, $t34) on_abort goto L11 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:643:13+63 + // aptos_account::deposit_coins($t70, $t68) on_abort goto L11 with $t34 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:643:13+63 assume {:print "$at(2,30787,30850)"} true; - call $1_aptos_account_deposit_coins'$1_aptos_coin_AptosCoin'($t36, $t34); + call $1_aptos_account_deposit_coins'$1_aptos_coin_AptosCoin'($t70, $t68); if ($abort_flag) { assume {:print "$at(2,30787,30850)"} true; - $t16 := $abort_code; - assume {:print "$track_abort(57,8):", $t16} $t16 == $t16; + $t34 := $abort_code; + assume {:print "$track_abort(57,8):", $t34} $t34 == $t34; goto L11; } - // $t37 := 1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:265:21+1 + // $t71 := 1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:265:21+1 assume {:print "$at(18,9353,9354)"} true; - $t37 := 1; - assume $IsValid'u64'($t37); + $t71 := 1; + assume $IsValid'u64'($t71); - // $t38 := +($t7, $t37) on_abort goto L11 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:265:19+1 - call $t38 := $AddU64($t7, $t37); + // $t72 := +($t7, $t71) on_abort goto L11 with $t34 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:265:19+1 + call $t72 := $AddU64($t7, $t71); if ($abort_flag) { assume {:print "$at(18,9351,9352)"} true; - $t16 := $abort_code; - assume {:print "$track_abort(57,8):", $t16} $t16 == $t16; + $t34 := $abort_code; + assume {:print "$track_abort(57,8):", $t34} $t34 == $t34; goto L11; } - // trace_local[i#237]($t38) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:265:13+1 - assume {:print "$track_local(57,8,7):", $t38} $t38 == $t38; + // trace_local[i#237]($t72) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:265:13+1 + assume {:print "$track_local(57,8,7):", $t72} $t72 == $t72; // goto L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:265:13+9 goto L9; @@ -27627,56 +27990,56 @@ L4: assume {:print "$at(2,30970,31152)"} true; L2: - // $t42 := copy($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:647:25+6 + // $t76 := copy($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:647:25+6 assume {:print "$at(2,30986,30992)"} true; - $t42 := $t5; + $t76 := $t5; - // assume Identical($t43, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + // assume Identical($t77, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 assume {:print "$at(95,1664,1763)"} true; - assume ($t43 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + assume ($t77 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); - // $t44 := coin::value($t42) on_abort goto L11 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:647:13+19 + // $t78 := coin::value($t76) on_abort goto L11 with $t34 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:647:13+19 assume {:print "$at(2,30974,30993)"} true; - call $t44 := $1_coin_value'$1_aptos_coin_AptosCoin'($t42); + call $t78 := $1_coin_value'$1_aptos_coin_AptosCoin'($t76); if ($abort_flag) { assume {:print "$at(2,30974,30993)"} true; - $t16 := $abort_code; - assume {:print "$track_abort(57,8):", $t16} $t16 == $t16; + $t34 := $abort_code; + assume {:print "$track_abort(57,8):", $t34} $t34 == $t34; goto L11; } - // $t45 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:647:35+1 - $t45 := 0; - assume $IsValid'u64'($t45); + // $t79 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:647:35+1 + $t79 := 0; + assume $IsValid'u64'($t79); - // $t46 := >($t44, $t45) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:647:33+1 - call $t46 := $Gt($t44, $t45); + // $t80 := >($t78, $t79) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:647:33+1 + call $t80 := $Gt($t78, $t79); - // if ($t46) goto L7 else goto L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:647:9+182 - if ($t46) { goto L7; } else { goto L6; } + // if ($t80) goto L7 else goto L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:647:9+182 + if ($t80) { goto L7; } else { goto L6; } // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:648:42+16 assume {:print "$at(2,31042,31058)"} true; L7: - // $t47 := get_field.withdrawal_address($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:648:42+35 + // $t81 := get_field.withdrawal_address($t35) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:648:42+35 assume {:print "$at(2,31042,31077)"} true; - $t47 := $withdrawal_address#$1_vesting_VestingContract($Dereference($t17)); + $t81 := $withdrawal_address#$1_vesting_VestingContract($Dereference($t35)); - // $t48 := move($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:648:79+5 - $t48 := $t5; + // $t82 := move($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:648:79+5 + $t82 := $t5; - // assume Identical($t49, global($t47)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.spec.move:200:9+39 + // assume Identical($t83, global($t81)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.spec.move:200:9+39 assume {:print "$at(81,9368,9407)"} true; - assume ($t49 == $ResourceValue($1_account_Account_$memory, $t47)); + assume ($t83 == $ResourceValue($1_account_Account_$memory, $t81)); - // aptos_account::deposit_coins($t47, $t48) on_abort goto L11 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:648:13+72 + // aptos_account::deposit_coins($t81, $t82) on_abort goto L11 with $t34 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:648:13+72 assume {:print "$at(2,31013,31085)"} true; - call $1_aptos_account_deposit_coins'$1_aptos_coin_AptosCoin'($t47, $t48); + call $1_aptos_account_deposit_coins'$1_aptos_coin_AptosCoin'($t81, $t82); if ($abort_flag) { assume {:print "$at(2,31013,31085)"} true; - $t16 := $abort_code; - assume {:print "$track_abort(57,8):", $t16} $t16 == $t16; + $t34 := $abort_code; + assume {:print "$track_abort(57,8):", $t34} $t34 == $t34; goto L11; } @@ -27687,21 +28050,21 @@ L7: assume {:print "$at(2,31135,31140)"} true; L6: - // $t50 := move($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:650:32+5 + // $t84 := move($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:650:32+5 assume {:print "$at(2,31135,31140)"} true; - $t50 := $t5; + $t84 := $t5; - // assume Identical($t51, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + // assume Identical($t85, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 assume {:print "$at(95,1664,1763)"} true; - assume ($t51 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + assume ($t85 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); - // coin::destroy_zero($t50) on_abort goto L11 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:650:13+25 + // coin::destroy_zero($t84) on_abort goto L11 with $t34 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:650:13+25 assume {:print "$at(2,31116,31141)"} true; - call $1_coin_destroy_zero'$1_aptos_coin_AptosCoin'($t50); + call $1_coin_destroy_zero'$1_aptos_coin_AptosCoin'($t84); if ($abort_flag) { assume {:print "$at(2,31116,31141)"} true; - $t16 := $abort_code; - assume {:print "$track_abort(57,8):", $t16} $t16 == $t16; + $t34 := $abort_code; + assume {:print "$track_abort(57,8):", $t34} $t34 == $t34; goto L11; } @@ -27709,44 +28072,44 @@ L6: assume {:print "$at(2,31192,31208)"} true; L8: - // $t52 := borrow_field.distribute_events($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:654:13+39 + // $t86 := borrow_field.distribute_events($t35) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:654:13+39 assume {:print "$at(2,31187,31226)"} true; - $t52 := $ChildMutation($t17, 15, $distribute_events#$1_vesting_VestingContract($Dereference($t17))); + $t86 := $ChildMutation($t35, 15, $distribute_events#$1_vesting_VestingContract($Dereference($t35))); - // $t53 := get_field.admin($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:656:24+22 + // $t87 := get_field.admin($t35) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:656:24+22 assume {:print "$at(2,31281,31303)"} true; - $t53 := $admin#$1_vesting_VestingContract($Dereference($t17)); + $t87 := $admin#$1_vesting_VestingContract($Dereference($t35)); - // $t54 := pack vesting::DistributeEvent($t53, $t0, $t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:655:13+189 + // $t88 := pack vesting::DistributeEvent($t87, $t0, $t55) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:655:13+189 assume {:print "$at(2,31240,31429)"} true; - $t54 := $1_vesting_DistributeEvent($t53, $t0, $t21); + $t88 := $1_vesting_DistributeEvent($t87, $t0, $t55); - // opaque begin: event::emit_event($t52, $t54) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:653:9+277 + // opaque begin: event::emit_event($t86, $t88) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:653:9+277 assume {:print "$at(2,31163,31440)"} true; - // opaque end: event::emit_event($t52, $t54) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:653:9+277 + // opaque end: event::emit_event($t86, $t88) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:653:9+277 - // write_back[Reference($t17).distribute_events (event::EventHandle)]($t52) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:653:9+277 - $t17 := $UpdateMutation($t17, $Update'$1_vesting_VestingContract'_distribute_events($Dereference($t17), $Dereference($t52))); + // write_back[Reference($t35).distribute_events (event::EventHandle)]($t86) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:653:9+277 + $t35 := $UpdateMutation($t35, $Update'$1_vesting_VestingContract'_distribute_events($Dereference($t35), $Dereference($t86))); - // assert forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t17)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t17)), addr)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 + // assert forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t35)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t35)), addr)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 assume {:print "$at(59,538,673)"} true; assert {:msg "assert_failed(59,538,673): data invariant does not hold"} - (forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t17))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t17))), addr)))); + (forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t35))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t35))), addr)))); - // assert forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t17)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t17)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t17)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t17)), j)), Eq(i, j)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 + // assert forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t35)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t35)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t35)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t35)), j)), Eq(i, j)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 assume {:print "$at(59,738,867)"} true; assert {:msg "assert_failed(59,738,867): data invariant does not hold"} - (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t17))))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t17))))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; + (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t35))))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t35))))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; (var j := $i_3; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t17))), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t17))), j)) ==> $IsEqual'num'(i, j)))))))); + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t35))), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t35))), j)) ==> $IsEqual'num'(i, j)))))))); - // write_back[vesting::VestingContract@]($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:653:9+277 + // write_back[vesting::VestingContract@]($t35) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:653:9+277 assume {:print "$at(2,31163,31440)"} true; - $1_vesting_VestingContract_$memory := $ResourceUpdate($1_vesting_VestingContract_$memory, $GlobalLocationAddress($t17), - $Dereference($t17)); + $1_vesting_VestingContract_$memory := $ResourceUpdate($1_vesting_VestingContract_$memory, $GlobalLocationAddress($t35), + $Dereference($t35)); // goto L10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:660:10+1 assume {:print "$at(2,31440,31441)"} true; @@ -27766,27 +28129,68 @@ L9: assume {:print "$at(2,31446,31447)"} true; L10: - // assert Not(false) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:661:5+1 - assume {:print "$at(2,31446,31447)"} true; - assert {:msg "assert_failed(2,31446,31447): function does not abort under this condition"} - !false; + // assert Not(Not(exists[@159]($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:517:9+53 + assume {:print "$at(3,22974,23027)"} true; + assert {:msg "assert_failed(3,22974,23027): function does not abort under this condition"} + !!$ResourceExists($1_vesting_VestingContract_$memory#159, $t0); - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:661:5+1 + // assert Not(Neq(select vesting::VestingContract.state($t16), 1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:519:9+56 + assume {:print "$at(3,23110,23166)"} true; + assert {:msg "assert_failed(3,23110,23166): function does not abort under this condition"} + !!$IsEqual'u64'($state#$1_vesting_VestingContract($t16), 1); + + // assert Not(Not(exists[@160]($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:267:9+33 + assume {:print "$at(134,11439,11472)"} true; + assert {:msg "assert_failed(134,11439,11472): function does not abort under this condition"} + !!$ResourceExists($1_staking_contract_Store_$memory#160, $t0); + + // assert Not(Not(simple_map::spec_contains_key[]($t20, $t17))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:269:9+70 + assume {:print "$at(134,11554,11624)"} true; + assert {:msg "assert_failed(134,11554,11624): function does not abort under this condition"} + !!$1_simple_map_spec_contains_key'address_$1_staking_contract_StakingContract'($t20, $t17); + + // assert Not(Not(exists[@161]($t21))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:471:9+50 + assume {:print "$at(3,20605,20655)"} true; + assert {:msg "assert_failed(3,20605,20655): function does not abort under this condition"} + !!$ResourceExists($1_stake_StakePool_$memory#161, $t21); + + // assert Not(Gt(Add($t23, $t24), 18446744073709551615)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:475:9+48 + assume {:print "$at(3,20845,20893)"} true; + assert {:msg "assert_failed(3,20845,20893): function does not abort under this condition"} + !(($t23 + $t24) > 18446744073709551615); + + // assert Not(Not(exists[@161]($t26))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:480:9+52 + assume {:print "$at(3,21090,21142)"} true; + assert {:msg "assert_failed(3,21090,21142): function does not abort under this condition"} + !!$ResourceExists($1_stake_StakePool_$memory#161, $t26); + + // assert Not(Not(exists[@162](0x1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:482:9+57 + assume {:print "$at(3,21220,21277)"} true; + assert {:msg "assert_failed(3,21220,21277): function does not abort under this condition"} + !!$ResourceExists($1_stake_ValidatorSet_$memory#162, 1); + + // assert Not(And(And($t29, Ge(timestamp::spec_now_seconds[@163](), select stake::StakePool.locked_until_secs($t27))), Gt(Add($t30, $t31), 18446744073709551615))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:490:9+150 + assume {:print "$at(3,21816,21966)"} true; + assert {:msg "assert_failed(3,21816,21966): function does not abort under this condition"} + !(($t29 && ($1_timestamp_spec_now_seconds($1_timestamp_CurrentTimeMicroseconds_$memory#163) >= $locked_until_secs#$1_stake_StakePool($t27))) && (($t30 + $t31) > 18446744073709551615)); + + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:490:9+150 return; // label L11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:661:5+1 + assume {:print "$at(2,31446,31447)"} true; L11: - // abort($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:661:5+1 + // abort($t34) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:661:5+1 assume {:print "$at(2,31446,31447)"} true; - $abort_code := $t16; + $abort_code := $t34; $abort_flag := true; return; } // fun vesting::reset_lockup [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+862 -procedure {:timeLimit 200} $1_vesting_reset_lockup$verify(_$t0: $signer, _$t1: int) returns () +procedure {:timeLimit 1000} $1_vesting_reset_lockup$verify(_$t0: $signer, _$t1: int) returns () { // declare local variables var $t2: $signer; @@ -27915,28 +28319,28 @@ procedure {:timeLimit 200} $1_vesting_reset_lockup$verify(_$t0: $signer, _$t1: i // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/reconfiguration.spec.move:8:9+137 assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> ($1_timestamp_spec_now_microseconds($1_timestamp_CurrentTimeMicroseconds_$memory) >= $1_reconfiguration_$last_reconfiguration_time($1_reconfiguration_Configuration_$memory))); - // assume Identical($t4, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:228:9+65 - assume {:print "$at(3,9240,9305)"} true; + // assume Identical($t4, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:295:9+65 + assume {:print "$at(3,12666,12731)"} true; assume ($t4 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); - // assume Identical($t5, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t4))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:231:9+49 - assume {:print "$at(3,9386,9435)"} true; + // assume Identical($t5, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t4))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:298:9+49 + assume {:print "$at(3,12812,12861)"} true; assume ($t5 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t4))); - // assume Identical($t6, select account::SignerCapability.account(select vesting::VestingContract.signer_cap($t4))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:232:9+49 - assume {:print "$at(3,9444,9493)"} true; + // assume Identical($t6, select account::SignerCapability.account(select vesting::VestingContract.signer_cap($t4))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:299:9+49 + assume {:print "$at(3,12870,12919)"} true; assume ($t6 == $account#$1_account_SignerCapability($signer_cap#$1_vesting_VestingContract($t4))); - // assume Identical($t7, global($t6)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:237:9+52 - assume {:print "$at(3,9665,9717)"} true; + // assume Identical($t7, global($t6)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:304:9+52 + assume {:print "$at(3,13091,13143)"} true; assume ($t7 == $ResourceValue($1_staking_contract_Store_$memory, $t6)); - // assume Identical($t8, simple_map::spec_get(select staking_contract::Store.staking_contracts($t7), $t5)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:238:9+79 - assume {:print "$at(3,9726,9805)"} true; + // assume Identical($t8, simple_map::spec_get(select staking_contract::Store.staking_contracts($t7), $t5)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:305:9+79 + assume {:print "$at(3,13152,13231)"} true; assume ($t8 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($t7), $t5)); - // assume Identical($t9, select stake::OwnerCapability.pool_address(select staking_contract::StakingContract.owner_cap($t8))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:239:9+59 - assume {:print "$at(3,9814,9873)"} true; + // assume Identical($t9, select stake::OwnerCapability.pool_address(select staking_contract::StakingContract.owner_cap($t8))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:306:9+59 + assume {:print "$at(3,13240,13299)"} true; assume ($t9 == $pool_address#$1_stake_OwnerCapability($owner_cap#$1_staking_contract_StakingContract($t8))); // assume Identical($t10, select staking_contract::Store.staking_contracts(global($t6))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 @@ -28164,14 +28568,14 @@ procedure {:timeLimit 200} $1_vesting_reset_lockup$verify(_$t0: $signer, _$t1: i assume {:print "$at(2,37637,37638)"} true; L1: - // assert Not(Not(exists[@122]($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:227:9+53 - assume {:print "$at(3,9178,9231)"} true; - assert {:msg "assert_failed(3,9178,9231): function does not abort under this condition"} + // assert Not(Not(exists[@122]($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:294:9+53 + assume {:print "$at(3,12604,12657)"} true; + assert {:msg "assert_failed(3,12604,12657): function does not abort under this condition"} !!$ResourceExists($1_vesting_VestingContract_$memory#122, $t1); - // assert Not(Neq
(signer::$address_of[]($t0), select vesting::VestingContract.admin($t4))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:229:9+62 - assume {:print "$at(3,9314,9376)"} true; - assert {:msg "assert_failed(3,9314,9376): function does not abort under this condition"} + // assert Not(Neq
(signer::$address_of[]($t0), select vesting::VestingContract.admin($t4))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:296:9+62 + assume {:print "$at(3,12740,12802)"} true; + assert {:msg "assert_failed(3,12740,12802): function does not abort under this condition"} !!$IsEqual'address'($1_signer_$address_of($t0), $admin#$1_vesting_VestingContract($t4)); // assert Not(Not(exists[@123]($t6))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:267:9+33 @@ -28209,24 +28613,24 @@ L1: assert {:msg "assert_failed(134,14369,14441): function does not abort under this condition"} !!$ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory#126, 1); - // assert Not(Not(exists[@124](select vesting::StakingInfo.pool_address(select vesting::VestingContract.staking($t4))))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:240:9+75 - assume {:print "$at(3,9882,9957)"} true; - assert {:msg "assert_failed(3,9882,9957): function does not abort under this condition"} + // assert Not(Not(exists[@124](select vesting::StakingInfo.pool_address(select vesting::VestingContract.staking($t4))))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:307:9+75 + assume {:print "$at(3,13308,13383)"} true; + assert {:msg "assert_failed(3,13308,13383): function does not abort under this condition"} !!$ResourceExists($1_stake_StakePool_$memory#124, $pool_address#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t4))); - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:240:9+75 + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:307:9+75 return; // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:805:5+1 assume {:print "$at(2,37637,37638)"} true; L2: - // assert Or(Or(Or(Or(Or(Or(Or(Or(Or(Not(exists[@122]($t1)), Neq
(signer::$address_of[]($t0), select vesting::VestingContract.admin($t4))), Not(exists[@123]($t6))), Not(simple_map::spec_contains_key[]($t10, $t5))), Not(stake::$stake_pool_exists[@124]($t13))), Not(exists[@125](0x1))), Gt(Add($t17, select staking_config::StakingConfig.recurring_lockup_duration_secs($t14)), 18446744073709551615)), Or(Gt($t16, $t18), Eq($t16, $t18))), Not(exists[@126](0x1))), Not(exists[@124](select vesting::StakingInfo.pool_address(select vesting::VestingContract.staking($t4))))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:223:5+879 - assume {:print "$at(3,9084,9963)"} true; - assert {:msg "assert_failed(3,9084,9963): abort not covered by any of the `aborts_if` clauses"} + // assert Or(Or(Or(Or(Or(Or(Or(Or(Or(Not(exists[@122]($t1)), Neq
(signer::$address_of[]($t0), select vesting::VestingContract.admin($t4))), Not(exists[@123]($t6))), Not(simple_map::spec_contains_key[]($t10, $t5))), Not(stake::$stake_pool_exists[@124]($t13))), Not(exists[@125](0x1))), Gt(Add($t17, select staking_config::StakingConfig.recurring_lockup_duration_secs($t14)), 18446744073709551615)), Or(Gt($t16, $t18), Eq($t16, $t18))), Not(exists[@126](0x1))), Not(exists[@124](select vesting::StakingInfo.pool_address(select vesting::VestingContract.staking($t4))))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:290:5+879 + assume {:print "$at(3,12510,13389)"} true; + assert {:msg "assert_failed(3,12510,13389): abort not covered by any of the `aborts_if` clauses"} (((((((((!$ResourceExists($1_vesting_VestingContract_$memory#122, $t1) || !$IsEqual'address'($1_signer_$address_of($t0), $admin#$1_vesting_VestingContract($t4))) || !$ResourceExists($1_staking_contract_Store_$memory#123, $t6)) || !$1_simple_map_spec_contains_key'address_$1_staking_contract_StakingContract'($t10, $t5)) || !$1_stake_$stake_pool_exists($1_stake_StakePool_$memory#124, $t13)) || !$ResourceExists($1_staking_config_StakingConfig_$memory#125, 1)) || (($t17 + $recurring_lockup_duration_secs#$1_staking_config_StakingConfig($t14)) > 18446744073709551615)) || (($t16 > $t18) || $IsEqual'u64'($t16, $t18))) || !$ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory#126, 1)) || !$ResourceExists($1_stake_StakePool_$memory#124, $pool_address#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t4)))); - // abort($t20) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:223:5+879 + // abort($t20) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:290:5+879 $abort_code := $t20; $abort_flag := true; return; @@ -28234,7 +28638,7 @@ L2: } // fun vesting::stake_pool_address [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:251:5+258 -procedure {:timeLimit 200} $1_vesting_stake_pool_address$verify(_$t0: int) returns ($ret0: int) +procedure {:timeLimit 1000} $1_vesting_stake_pool_address$verify(_$t0: int) returns ($ret0: int) { // declare local variables var $t1: int; @@ -28335,185 +28739,415 @@ procedure {:inline 1} $1_vesting_unlock_rewards(_$t0: int) returns () var $t1: int; var $t2: $1_vesting_VestingContract; var $t3: int; - var $t4: int; - var $t5: Table int ($1_staking_contract_StakingContract); - var $t6: $1_staking_contract_StakingContract; - var $t7: int; - var $t8: $1_stake_StakePool; + var $t4: Table int ($1_staking_contract_StakingContract); + var $t5: $1_staking_contract_StakingContract; + var $t6: int; + var $t7: $1_stake_StakePool; + var $t8: int; var $t9: int; var $t10: int; var $t11: int; var $t12: int; var $t13: int; var $t14: $1_vesting_VestingContract; - var $t15: $1_vesting_VestingContract; + var $t15: int; var $t16: int; - var $t17: int; - var $t18: Table int ($1_staking_contract_StakingContract); - var $t19: $1_staking_contract_StakingContract; - var $t20: int; - var $t21: $1_stake_StakePool; + var $t17: Table int ($1_staking_contract_StakingContract); + var $t18: $1_staking_contract_StakingContract; + var $t19: int; + var $t20: $1_stake_StakePool; + var $t21: int; var $t22: int; var $t23: int; var $t24: int; var $t25: int; - var $t26: int; - var $t27: $1_vesting_VestingContract; + var $t26: $1_vesting_VestingContract; + var $t27: int; var $t28: int; - var $t29: int; - var $t30: $1_vesting_VestingContract; + var $t29: $1_staking_contract_Store; + var $t30: $1_staking_contract_StakingContract; + var $t31: Table int ($1_staking_contract_StakingContract); + var $t32: int; + var $t33: $1_stake_StakePool; + var $t34: int; + var $t35: int; + var $t36: int; + var $t37: int; + var $t38: $1_stake_StakePool; + var $t39: $1_stake_ValidatorSet; + var $t40: bool; + var $t41: int; + var $t42: int; + var $t43: int; + var $t44: $1_vesting_VestingContract; + var $t45: int; + var $t46: int; + var $t47: Table int ($1_staking_contract_StakingContract); + var $t48: $1_staking_contract_StakingContract; + var $t49: int; + var $t50: $1_stake_StakePool; + var $t51: int; + var $t52: int; + var $t53: int; + var $t54: int; + var $t55: int; + var $t56: $1_vesting_VestingContract; + var $t57: int; + var $t58: int; + var $t59: $1_vesting_VestingContract; + var $t60: int; + var $t61: int; + var $t62: $1_staking_contract_Store; + var $t63: $1_staking_contract_StakingContract; + var $t64: Table int ($1_staking_contract_StakingContract); + var $t65: int; + var $t66: $1_stake_StakePool; + var $t67: int; + var $t68: int; + var $t69: int; + var $t70: int; + var $t71: $1_stake_StakePool; + var $t72: $1_stake_ValidatorSet; + var $t73: bool; + var $t74: int; + var $t75: int; + var $t76: int; var $t0: int; var $temp_0'address': int; var $temp_0'u64': int; $t0 := _$t0; // bytecode translation starts here - // assume Identical($t2, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:60:9+73 - assume {:print "$at(3,2125,2198)"} true; + // assume Identical($t2, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:161:9+65 + assume {:print "$at(3,7222,7287)"} true; assume ($t2 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); - // assume Identical($t3, $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:62:9+38 - assume {:print "$at(3,2208,2246)"} true; - assume ($t3 == $t0); + // assume Identical($t3, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t2))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:162:9+49 + assume {:print "$at(3,7296,7345)"} true; + assume ($t3 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t2))); - // assume Identical($t4, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t2))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:63:9+49 - assume {:print "$at(3,2255,2304)"} true; - assume ($t4 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t2))); + // assume Identical($t4, select staking_contract::Store.staking_contracts(global($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:163:9+92 + assume {:print "$at(3,7354,7446)"} true; + assume ($t4 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t0))); - // assume Identical($t5, select staking_contract::Store.staking_contracts(global($t3))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:64:9+82 - assume {:print "$at(3,2313,2395)"} true; - assume ($t5 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t3))); + // assume Identical($t5, simple_map::spec_get($t4, $t3)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:164:9+73 + assume {:print "$at(3,7455,7528)"} true; + assume ($t5 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($t4, $t3)); - // assume Identical($t6, simple_map::spec_get($t5, $t4)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:65:9+73 - assume {:print "$at(3,2404,2477)"} true; - assume ($t6 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($t5, $t4)); + // assume Identical($t6, select staking_contract::StakingContract.pool_address($t5)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:165:9+49 + assume {:print "$at(3,7537,7586)"} true; + assume ($t6 == $pool_address#$1_staking_contract_StakingContract($t5)); - // assume Identical($t7, select staking_contract::StakingContract.pool_address($t6)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:70:9+49 - assume {:print "$at(3,2627,2676)"} true; - assume ($t7 == $pool_address#$1_staking_contract_StakingContract($t6)); + // assume Identical($t7, global($t6)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:166:9+56 + assume {:print "$at(3,7595,7651)"} true; + assume ($t7 == $ResourceValue($1_stake_StakePool_$memory, $t6)); - // assume Identical($t8, global($t7)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:71:9+63 - assume {:print "$at(3,2685,2748)"} true; - assume ($t8 == $ResourceValue($1_stake_StakePool_$memory, $t7)); + // assume Identical($t8, coin::$value(select stake::StakePool.active($t7))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:167:9+44 + assume {:print "$at(3,7660,7704)"} true; + assume ($t8 == $1_coin_$value'$1_aptos_coin_AptosCoin'($active#$1_stake_StakePool($t7))); - // assume Identical($t9, coin::$value(select stake::StakePool.active($t8))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:72:9+44 - assume {:print "$at(3,2757,2801)"} true; - assume ($t9 == $1_coin_$value'$1_aptos_coin_AptosCoin'($active#$1_stake_StakePool($t8))); + // assume Identical($t9, coin::$value(select stake::StakePool.pending_active($t7))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:168:9+60 + assume {:print "$at(3,7713,7773)"} true; + assume ($t9 == $1_coin_$value'$1_aptos_coin_AptosCoin'($pending_active#$1_stake_StakePool($t7))); - // assume Identical($t10, coin::$value(select stake::StakePool.pending_active($t8))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:73:9+60 - assume {:print "$at(3,2810,2870)"} true; - assume ($t10 == $1_coin_$value'$1_aptos_coin_AptosCoin'($pending_active#$1_stake_StakePool($t8))); + // assume Identical($t10, Add($t8, $t9)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:169:9+49 + assume {:print "$at(3,7782,7831)"} true; + assume ($t10 == ($t8 + $t9)); - // assume Identical($t11, Add($t9, $t10)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:74:9+49 - assume {:print "$at(3,2879,2928)"} true; - assume ($t11 == ($t9 + $t10)); + // assume Identical($t11, Sub($t10, select staking_contract::StakingContract.principal($t5))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:170:9+74 + assume {:print "$at(3,7840,7914)"} true; + assume ($t11 == ($t10 - $principal#$1_staking_contract_StakingContract($t5))); - // assume Identical($t12, Sub($t11, select staking_contract::StakingContract.principal($t6))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:75:9+74 - assume {:print "$at(3,2937,3011)"} true; - assume ($t12 == ($t11 - $principal#$1_staking_contract_StakingContract($t6))); + // assume Identical($t12, Div(Mul($t11, select staking_contract::StakingContract.commission_percentage($t5)), 100)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:171:9+91 + assume {:print "$at(3,7923,8014)"} true; + assume ($t12 == (($t11 * $commission_percentage#$1_staking_contract_StakingContract($t5)) div 100)); - // assume Identical($t13, Div(Mul($t12, select staking_contract::StakingContract.commission_percentage($t6)), 100)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:76:9+91 - assume {:print "$at(3,3020,3111)"} true; - assume ($t13 == (($t12 * $commission_percentage#$1_staking_contract_StakingContract($t6)) div 100)); + // assume Identical($t13, Sub(Sub($t10, select vesting::VestingContract.remaining_grant($t2)), $t12)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:172:9+87 + assume {:print "$at(3,8023,8110)"} true; + assume ($t13 == (($t10 - $remaining_grant#$1_vesting_VestingContract($t2)) - $t12)); - // assume Identical($t14, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:389:9+65 - assume {:print "$at(3,16378,16443)"} true; + // assume Identical($t14, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:59:9+73 + assume {:print "$at(3,2072,2145)"} true; assume ($t14 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); - // assume And(Ge(select staking_contract::StakingContract.commission_percentage($t6), 0), Le(select staking_contract::StakingContract.commission_percentage($t6), 100)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:57:9+102 - assume {:print "$at(3,1905,2007)"} true; - assume (($commission_percentage#$1_staking_contract_StakingContract($t6) >= 0) && ($commission_percentage#$1_staking_contract_StakingContract($t6) <= 100)); + // assume Identical($t15, $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:61:9+38 + assume {:print "$at(3,2155,2193)"} true; + assume ($t15 == $t0); + + // assume Identical($t16, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t14))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:62:9+49 + assume {:print "$at(3,2202,2251)"} true; + assume ($t16 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t14))); + + // assume Identical($t17, select staking_contract::Store.staking_contracts(global($t15))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:63:9+82 + assume {:print "$at(3,2260,2342)"} true; + assume ($t17 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t15))); + + // assume Identical($t18, simple_map::spec_get($t17, $t16)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:64:9+73 + assume {:print "$at(3,2351,2424)"} true; + assume ($t18 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($t17, $t16)); + + // assume Identical($t19, select staking_contract::StakingContract.pool_address($t18)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:69:9+49 + assume {:print "$at(3,2574,2623)"} true; + assume ($t19 == $pool_address#$1_staking_contract_StakingContract($t18)); + + // assume Identical($t20, global($t19)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:70:9+56 + assume {:print "$at(3,2632,2688)"} true; + assume ($t20 == $ResourceValue($1_stake_StakePool_$memory, $t19)); + + // assume Identical($t21, coin::$value(select stake::StakePool.active($t20))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:71:9+44 + assume {:print "$at(3,2697,2741)"} true; + assume ($t21 == $1_coin_$value'$1_aptos_coin_AptosCoin'($active#$1_stake_StakePool($t20))); + + // assume Identical($t22, coin::$value(select stake::StakePool.pending_active($t20))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:72:9+60 + assume {:print "$at(3,2750,2810)"} true; + assume ($t22 == $1_coin_$value'$1_aptos_coin_AptosCoin'($pending_active#$1_stake_StakePool($t20))); + + // assume Identical($t23, Add($t21, $t22)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:73:9+49 + assume {:print "$at(3,2819,2868)"} true; + assume ($t23 == ($t21 + $t22)); + + // assume Identical($t24, Sub($t23, select staking_contract::StakingContract.principal($t18))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:74:9+74 + assume {:print "$at(3,2877,2951)"} true; + assume ($t24 == ($t23 - $principal#$1_staking_contract_StakingContract($t18))); + + // assume Identical($t25, Div(Mul($t24, select staking_contract::StakingContract.commission_percentage($t18)), 100)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:75:9+91 + assume {:print "$at(3,2960,3051)"} true; + assume ($t25 == (($t24 * $commission_percentage#$1_staking_contract_StakingContract($t18)) div 100)); + + // assume Identical($t26, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:518:9+65 + assume {:print "$at(3,23036,23101)"} true; + assume ($t26 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); + + // assume Identical($t27, select account::SignerCapability.account(select vesting::VestingContract.signer_cap($t26))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:434:9+46 + assume {:print "$at(3,18724,18770)"} true; + assume ($t27 == $account#$1_account_SignerCapability($signer_cap#$1_vesting_VestingContract($t26))); + + // assume Identical($t28, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t26))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:435:9+49 + assume {:print "$at(3,18779,18828)"} true; + assume ($t28 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t26))); + + // assume Identical($t29, global($t27)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:439:9+49 + assume {:print "$at(3,18996,19045)"} true; + assume ($t29 == $ResourceValue($1_staking_contract_Store_$memory, $t27)); + + // assume Identical($t30, simple_map::spec_get(select staking_contract::Store.staking_contracts($t29), $t28)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:440:9+79 + assume {:print "$at(3,19054,19133)"} true; + assume ($t30 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($t29), $t28)); + + // assume Identical($t31, select staking_contract::Store.staking_contracts(global($t27))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 + assume {:print "$at(134,11481,11545)"} true; + assume ($t31 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t27))); + + // assume Identical($t32, select staking_contract::StakingContract.pool_address($t30)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:470:9+49 + assume {:print "$at(3,20547,20596)"} true; + assume ($t32 == $pool_address#$1_staking_contract_StakingContract($t30)); + + // assume Identical($t33, global($t32)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:472:9+56 + assume {:print "$at(3,20664,20720)"} true; + assume ($t33 == $ResourceValue($1_stake_StakePool_$memory, $t32)); + + // assume Identical($t34, select coin::Coin.value(select stake::StakePool.inactive($t33))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:473:9+41 + assume {:print "$at(3,20729,20770)"} true; + assume ($t34 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t33))); + + // assume Identical($t35, select coin::Coin.value(select stake::StakePool.pending_inactive($t33))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:474:9+57 + assume {:print "$at(3,20779,20836)"} true; + assume ($t35 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t33))); + + // assume Identical($t36, Add($t34, $t35)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:478:9+63 + assume {:print "$at(3,20948,21011)"} true; + assume ($t36 == ($t34 + $t35)); + + // assume Identical($t37, select stake::OwnerCapability.pool_address(select staking_contract::StakingContract.owner_cap($t30))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:479:9+61 + assume {:print "$at(3,21020,21081)"} true; + assume ($t37 == $pool_address#$1_stake_OwnerCapability($owner_cap#$1_staking_contract_StakingContract($t30))); + + // assume Identical($t38, global($t37)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:481:9+60 + assume {:print "$at(3,21151,21211)"} true; + assume ($t38 == $ResourceValue($1_stake_StakePool_$memory, $t37)); + + // assume Identical($t39, global(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:483:9+66 + assume {:print "$at(3,21286,21352)"} true; + assume ($t39 == $ResourceValue($1_stake_ValidatorSet_$memory, 1)); + + // assume Identical($t40, And(And(Not(stake::spec_contains(select stake::ValidatorSet.pending_active($t39), $t37)), Not(stake::spec_contains(select stake::ValidatorSet.active_validators($t39), $t37))), Not(stake::spec_contains(select stake::ValidatorSet.pending_inactive($t39), $t37)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:484:9+260 + assume {:print "$at(3,21361,21621)"} true; + assume ($t40 == ((!$1_stake_spec_contains($pending_active#$1_stake_ValidatorSet($t39), $t37) && !$1_stake_spec_contains($active_validators#$1_stake_ValidatorSet($t39), $t37)) && !$1_stake_spec_contains($pending_inactive#$1_stake_ValidatorSet($t39), $t37))); + + // assume Identical($t41, select coin::Coin.value(select stake::StakePool.inactive($t38))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:487:9+45 + assume {:print "$at(3,21630,21675)"} true; + assume ($t41 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t38))); + + // assume Identical($t42, select coin::Coin.value(select stake::StakePool.pending_inactive($t38))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:488:9+61 + assume {:print "$at(3,21684,21745)"} true; + assume ($t42 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t38))); + + // assume Identical($t43, Add($t41, $t42)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:489:9+53 + assume {:print "$at(3,21754,21807)"} true; + assume ($t43 == ($t41 + $t42)); + + // assume And(Ge(select staking_contract::StakingContract.commission_percentage($t18), 0), Le(select staking_contract::StakingContract.commission_percentage($t18), 100)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:56:9+102 + assume {:print "$at(3,1852,1954)"} true; + assume (($commission_percentage#$1_staking_contract_StakingContract($t18) >= 0) && ($commission_percentage#$1_staking_contract_StakingContract($t18) <= 100)); // trace_local[contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:539:5+1 assume {:print "$at(2,25614,25615)"} true; assume {:print "$track_local(57,28,0):", $t0} $t0 == $t0; - // assume Identical($t15, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:60:9+73 - assume {:print "$at(3,2125,2198)"} true; - assume ($t15 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); + // assume Identical($t44, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:59:9+73 + assume {:print "$at(3,2072,2145)"} true; + assume ($t44 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); - // assume Identical($t16, $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:62:9+38 - assume {:print "$at(3,2208,2246)"} true; - assume ($t16 == $t0); + // assume Identical($t45, $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:61:9+38 + assume {:print "$at(3,2155,2193)"} true; + assume ($t45 == $t0); - // assume Identical($t17, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t15))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:63:9+49 - assume {:print "$at(3,2255,2304)"} true; - assume ($t17 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t15))); + // assume Identical($t46, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t44))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:62:9+49 + assume {:print "$at(3,2202,2251)"} true; + assume ($t46 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t44))); - // assume Identical($t18, select staking_contract::Store.staking_contracts(global($t16))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:64:9+82 - assume {:print "$at(3,2313,2395)"} true; - assume ($t18 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t16))); + // assume Identical($t47, select staking_contract::Store.staking_contracts(global($t45))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:63:9+82 + assume {:print "$at(3,2260,2342)"} true; + assume ($t47 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t45))); - // assume Identical($t19, simple_map::spec_get($t18, $t17)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:65:9+73 - assume {:print "$at(3,2404,2477)"} true; - assume ($t19 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($t18, $t17)); + // assume Identical($t48, simple_map::spec_get($t47, $t46)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:64:9+73 + assume {:print "$at(3,2351,2424)"} true; + assume ($t48 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($t47, $t46)); - // assume Identical($t20, select staking_contract::StakingContract.pool_address($t19)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:70:9+49 - assume {:print "$at(3,2627,2676)"} true; - assume ($t20 == $pool_address#$1_staking_contract_StakingContract($t19)); + // assume Identical($t49, select staking_contract::StakingContract.pool_address($t48)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:69:9+49 + assume {:print "$at(3,2574,2623)"} true; + assume ($t49 == $pool_address#$1_staking_contract_StakingContract($t48)); - // assume Identical($t21, global($t20)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:71:9+63 - assume {:print "$at(3,2685,2748)"} true; - assume ($t21 == $ResourceValue($1_stake_StakePool_$memory, $t20)); + // assume Identical($t50, global($t49)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:70:9+56 + assume {:print "$at(3,2632,2688)"} true; + assume ($t50 == $ResourceValue($1_stake_StakePool_$memory, $t49)); - // assume Identical($t22, coin::$value(select stake::StakePool.active($t21))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:72:9+44 - assume {:print "$at(3,2757,2801)"} true; - assume ($t22 == $1_coin_$value'$1_aptos_coin_AptosCoin'($active#$1_stake_StakePool($t21))); + // assume Identical($t51, coin::$value(select stake::StakePool.active($t50))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:71:9+44 + assume {:print "$at(3,2697,2741)"} true; + assume ($t51 == $1_coin_$value'$1_aptos_coin_AptosCoin'($active#$1_stake_StakePool($t50))); - // assume Identical($t23, coin::$value(select stake::StakePool.pending_active($t21))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:73:9+60 - assume {:print "$at(3,2810,2870)"} true; - assume ($t23 == $1_coin_$value'$1_aptos_coin_AptosCoin'($pending_active#$1_stake_StakePool($t21))); + // assume Identical($t52, coin::$value(select stake::StakePool.pending_active($t50))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:72:9+60 + assume {:print "$at(3,2750,2810)"} true; + assume ($t52 == $1_coin_$value'$1_aptos_coin_AptosCoin'($pending_active#$1_stake_StakePool($t50))); - // assume Identical($t24, Add($t22, $t23)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:74:9+49 - assume {:print "$at(3,2879,2928)"} true; - assume ($t24 == ($t22 + $t23)); + // assume Identical($t53, Add($t51, $t52)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:73:9+49 + assume {:print "$at(3,2819,2868)"} true; + assume ($t53 == ($t51 + $t52)); - // assume Identical($t25, Sub($t24, select staking_contract::StakingContract.principal($t19))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:75:9+74 - assume {:print "$at(3,2937,3011)"} true; - assume ($t25 == ($t24 - $principal#$1_staking_contract_StakingContract($t19))); + // assume Identical($t54, Sub($t53, select staking_contract::StakingContract.principal($t48))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:74:9+74 + assume {:print "$at(3,2877,2951)"} true; + assume ($t54 == ($t53 - $principal#$1_staking_contract_StakingContract($t48))); - // assume Identical($t26, Div(Mul($t25, select staking_contract::StakingContract.commission_percentage($t19)), 100)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:76:9+91 - assume {:print "$at(3,3020,3111)"} true; - assume ($t26 == (($t25 * $commission_percentage#$1_staking_contract_StakingContract($t19)) div 100)); + // assume Identical($t55, Div(Mul($t54, select staking_contract::StakingContract.commission_percentage($t48)), 100)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:75:9+91 + assume {:print "$at(3,2960,3051)"} true; + assume ($t55 == (($t54 * $commission_percentage#$1_staking_contract_StakingContract($t48)) div 100)); - // assume Identical($t27, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:389:9+65 - assume {:print "$at(3,16378,16443)"} true; - assume ($t27 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); + // assume Identical($t56, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:518:9+65 + assume {:print "$at(3,23036,23101)"} true; + assume ($t56 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); - // $t28 := vesting::total_accumulated_rewards($t0) on_abort goto L2 with $t29 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:540:35+43 + // $t57 := vesting::total_accumulated_rewards($t0) on_abort goto L2 with $t58 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:540:35+43 assume {:print "$at(2,25734,25777)"} true; - call $t28 := $1_vesting_total_accumulated_rewards($t0); + call $t57 := $1_vesting_total_accumulated_rewards($t0); if ($abort_flag) { assume {:print "$at(2,25734,25777)"} true; - $t29 := $abort_code; - assume {:print "$track_abort(57,28):", $t29} $t29 == $t29; + $t58 := $abort_code; + assume {:print "$track_abort(57,28):", $t58} $t58 == $t58; goto L2; } - // trace_local[accumulated_rewards]($t28) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:540:13+19 - assume {:print "$track_local(57,28,1):", $t28} $t28 == $t28; + // trace_local[accumulated_rewards]($t57) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:540:13+19 + assume {:print "$track_local(57,28,1):", $t57} $t57 == $t57; - // $t30 := get_global($t0) on_abort goto L2 with $t29 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:541:32+13 + // $t59 := get_global($t0) on_abort goto L2 with $t58 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:541:32+13 assume {:print "$at(2,25810,25823)"} true; if (!$ResourceExists($1_vesting_VestingContract_$memory, $t0)) { call $ExecFailureAbort(); } else { - $t30 := $ResourceValue($1_vesting_VestingContract_$memory, $t0); + $t59 := $ResourceValue($1_vesting_VestingContract_$memory, $t0); } if ($abort_flag) { assume {:print "$at(2,25810,25823)"} true; - $t29 := $abort_code; - assume {:print "$track_abort(57,28):", $t29} $t29 == $t29; + $t58 := $abort_code; + assume {:print "$track_abort(57,28):", $t58} $t58 == $t58; goto L2; } - // vesting::unlock_stake($t30, $t28) on_abort goto L2 with $t29 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:542:9+51 + // assume Identical($t60, select account::SignerCapability.account(select vesting::VestingContract.signer_cap($t59))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:434:9+46 + assume {:print "$at(3,18724,18770)"} true; + assume ($t60 == $account#$1_account_SignerCapability($signer_cap#$1_vesting_VestingContract($t59))); + + // assume Identical($t61, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t59))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:435:9+49 + assume {:print "$at(3,18779,18828)"} true; + assume ($t61 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t59))); + + // assume Identical($t62, global($t60)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:439:9+49 + assume {:print "$at(3,18996,19045)"} true; + assume ($t62 == $ResourceValue($1_staking_contract_Store_$memory, $t60)); + + // assume Identical($t63, simple_map::spec_get(select staking_contract::Store.staking_contracts($t62), $t61)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:440:9+79 + assume {:print "$at(3,19054,19133)"} true; + assume ($t63 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($t62), $t61)); + + // assume Identical($t64, select staking_contract::Store.staking_contracts(global($t60))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 + assume {:print "$at(134,11481,11545)"} true; + assume ($t64 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t60))); + + // assume Identical($t65, select staking_contract::StakingContract.pool_address($t63)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:470:9+49 + assume {:print "$at(3,20547,20596)"} true; + assume ($t65 == $pool_address#$1_staking_contract_StakingContract($t63)); + + // assume Identical($t66, global($t65)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:472:9+56 + assume {:print "$at(3,20664,20720)"} true; + assume ($t66 == $ResourceValue($1_stake_StakePool_$memory, $t65)); + + // assume Identical($t67, select coin::Coin.value(select stake::StakePool.inactive($t66))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:473:9+41 + assume {:print "$at(3,20729,20770)"} true; + assume ($t67 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t66))); + + // assume Identical($t68, select coin::Coin.value(select stake::StakePool.pending_inactive($t66))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:474:9+57 + assume {:print "$at(3,20779,20836)"} true; + assume ($t68 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t66))); + + // assume Identical($t69, Add($t67, $t68)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:478:9+63 + assume {:print "$at(3,20948,21011)"} true; + assume ($t69 == ($t67 + $t68)); + + // assume Identical($t70, select stake::OwnerCapability.pool_address(select staking_contract::StakingContract.owner_cap($t63))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:479:9+61 + assume {:print "$at(3,21020,21081)"} true; + assume ($t70 == $pool_address#$1_stake_OwnerCapability($owner_cap#$1_staking_contract_StakingContract($t63))); + + // assume Identical($t71, global($t70)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:481:9+60 + assume {:print "$at(3,21151,21211)"} true; + assume ($t71 == $ResourceValue($1_stake_StakePool_$memory, $t70)); + + // assume Identical($t72, global(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:483:9+66 + assume {:print "$at(3,21286,21352)"} true; + assume ($t72 == $ResourceValue($1_stake_ValidatorSet_$memory, 1)); + + // assume Identical($t73, And(And(Not(stake::spec_contains(select stake::ValidatorSet.pending_active($t72), $t70)), Not(stake::spec_contains(select stake::ValidatorSet.active_validators($t72), $t70))), Not(stake::spec_contains(select stake::ValidatorSet.pending_inactive($t72), $t70)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:484:9+260 + assume {:print "$at(3,21361,21621)"} true; + assume ($t73 == ((!$1_stake_spec_contains($pending_active#$1_stake_ValidatorSet($t72), $t70) && !$1_stake_spec_contains($active_validators#$1_stake_ValidatorSet($t72), $t70)) && !$1_stake_spec_contains($pending_inactive#$1_stake_ValidatorSet($t72), $t70))); + + // assume Identical($t74, select coin::Coin.value(select stake::StakePool.inactive($t71))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:487:9+45 + assume {:print "$at(3,21630,21675)"} true; + assume ($t74 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t71))); + + // assume Identical($t75, select coin::Coin.value(select stake::StakePool.pending_inactive($t71))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:488:9+61 + assume {:print "$at(3,21684,21745)"} true; + assume ($t75 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t71))); + + // assume Identical($t76, Add($t74, $t75)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:489:9+53 + assume {:print "$at(3,21754,21807)"} true; + assume ($t76 == ($t74 + $t75)); + + // vesting::unlock_stake($t59, $t57) on_abort goto L2 with $t58 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:542:9+51 assume {:print "$at(2,25868,25919)"} true; - call $1_vesting_unlock_stake($t30, $t28); + call $1_vesting_unlock_stake($t59, $t57); if ($abort_flag) { assume {:print "$at(2,25868,25919)"} true; - $t29 := $abort_code; - assume {:print "$track_abort(57,28):", $t29} $t29 == $t29; + $t58 := $abort_code; + assume {:print "$track_abort(57,28):", $t58} $t58 == $t58; goto L2; } @@ -28528,9 +29162,9 @@ L1: // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:543:5+1 L2: - // abort($t29) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:543:5+1 + // abort($t58) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:543:5+1 assume {:print "$at(2,25925,25926)"} true; - $abort_code := $t29; + $abort_code := $t58; $abort_flag := true; return; @@ -28541,10 +29175,27 @@ procedure {:inline 1} $1_vesting_unlock_stake(_$t0: $1_vesting_VestingContract, { // declare local variables var $t2: $signer; - var $t3: $signer; + var $t3: int; var $t4: int; - var $t5: $1_vesting_StakingInfo; - var $t6: int; + var $t5: $1_staking_contract_Store; + var $t6: $1_staking_contract_StakingContract; + var $t7: Table int ($1_staking_contract_StakingContract); + var $t8: int; + var $t9: $1_stake_StakePool; + var $t10: int; + var $t11: int; + var $t12: int; + var $t13: int; + var $t14: $1_stake_StakePool; + var $t15: $1_stake_ValidatorSet; + var $t16: bool; + var $t17: int; + var $t18: int; + var $t19: int; + var $t20: $signer; + var $t21: int; + var $t22: $1_vesting_StakingInfo; + var $t23: int; var $t0: $1_vesting_VestingContract; var $t1: int; var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; @@ -28553,6 +29204,74 @@ procedure {:inline 1} $1_vesting_unlock_stake(_$t0: $1_vesting_VestingContract, $t1 := _$t1; // bytecode translation starts here + // assume Identical($t3, select account::SignerCapability.account(select vesting::VestingContract.signer_cap($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:434:9+46 + assume {:print "$at(3,18724,18770)"} true; + assume ($t3 == $account#$1_account_SignerCapability($signer_cap#$1_vesting_VestingContract($t0))); + + // assume Identical($t4, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:435:9+49 + assume {:print "$at(3,18779,18828)"} true; + assume ($t4 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t0))); + + // assume Identical($t5, global($t3)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:439:9+49 + assume {:print "$at(3,18996,19045)"} true; + assume ($t5 == $ResourceValue($1_staking_contract_Store_$memory, $t3)); + + // assume Identical($t6, simple_map::spec_get(select staking_contract::Store.staking_contracts($t5), $t4)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:440:9+79 + assume {:print "$at(3,19054,19133)"} true; + assume ($t6 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($t5), $t4)); + + // assume Identical($t7, select staking_contract::Store.staking_contracts(global($t3))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 + assume {:print "$at(134,11481,11545)"} true; + assume ($t7 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t3))); + + // assume Identical($t8, select staking_contract::StakingContract.pool_address($t6)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:470:9+49 + assume {:print "$at(3,20547,20596)"} true; + assume ($t8 == $pool_address#$1_staking_contract_StakingContract($t6)); + + // assume Identical($t9, global($t8)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:472:9+56 + assume {:print "$at(3,20664,20720)"} true; + assume ($t9 == $ResourceValue($1_stake_StakePool_$memory, $t8)); + + // assume Identical($t10, select coin::Coin.value(select stake::StakePool.inactive($t9))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:473:9+41 + assume {:print "$at(3,20729,20770)"} true; + assume ($t10 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t9))); + + // assume Identical($t11, select coin::Coin.value(select stake::StakePool.pending_inactive($t9))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:474:9+57 + assume {:print "$at(3,20779,20836)"} true; + assume ($t11 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t9))); + + // assume Identical($t12, Add($t10, $t11)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:478:9+63 + assume {:print "$at(3,20948,21011)"} true; + assume ($t12 == ($t10 + $t11)); + + // assume Identical($t13, select stake::OwnerCapability.pool_address(select staking_contract::StakingContract.owner_cap($t6))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:479:9+61 + assume {:print "$at(3,21020,21081)"} true; + assume ($t13 == $pool_address#$1_stake_OwnerCapability($owner_cap#$1_staking_contract_StakingContract($t6))); + + // assume Identical($t14, global($t13)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:481:9+60 + assume {:print "$at(3,21151,21211)"} true; + assume ($t14 == $ResourceValue($1_stake_StakePool_$memory, $t13)); + + // assume Identical($t15, global(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:483:9+66 + assume {:print "$at(3,21286,21352)"} true; + assume ($t15 == $ResourceValue($1_stake_ValidatorSet_$memory, 1)); + + // assume Identical($t16, And(And(Not(stake::spec_contains(select stake::ValidatorSet.pending_active($t15), $t13)), Not(stake::spec_contains(select stake::ValidatorSet.active_validators($t15), $t13))), Not(stake::spec_contains(select stake::ValidatorSet.pending_inactive($t15), $t13)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:484:9+260 + assume {:print "$at(3,21361,21621)"} true; + assume ($t16 == ((!$1_stake_spec_contains($pending_active#$1_stake_ValidatorSet($t15), $t13) && !$1_stake_spec_contains($active_validators#$1_stake_ValidatorSet($t15), $t13)) && !$1_stake_spec_contains($pending_inactive#$1_stake_ValidatorSet($t15), $t13))); + + // assume Identical($t17, select coin::Coin.value(select stake::StakePool.inactive($t14))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:487:9+45 + assume {:print "$at(3,21630,21675)"} true; + assume ($t17 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t14))); + + // assume Identical($t18, select coin::Coin.value(select stake::StakePool.pending_inactive($t14))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:488:9+61 + assume {:print "$at(3,21684,21745)"} true; + assume ($t18 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t14))); + + // assume Identical($t19, Add($t17, $t18)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:489:9+53 + assume {:print "$at(3,21754,21807)"} true; + assume ($t19 == ($t17 + $t18)); + // trace_local[vesting_contract]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:951:5+1 assume {:print "$at(2,44426,44427)"} true; assume {:print "$track_local(57,30,0):", $t0} $t0 == $t0; @@ -28560,29 +29279,29 @@ procedure {:inline 1} $1_vesting_unlock_stake(_$t0: $1_vesting_VestingContract, // trace_local[amount]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:951:5+1 assume {:print "$track_local(57,30,1):", $t1} $t1 == $t1; - // $t3 := vesting::get_vesting_account_signer_internal($t0) on_abort goto L2 with $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:952:32+53 + // $t20 := vesting::get_vesting_account_signer_internal($t0) on_abort goto L2 with $t21 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:952:32+53 assume {:print "$at(2,44525,44578)"} true; - call $t3 := $1_vesting_get_vesting_account_signer_internal($t0); + call $t20 := $1_vesting_get_vesting_account_signer_internal($t0); if ($abort_flag) { assume {:print "$at(2,44525,44578)"} true; - $t4 := $abort_code; - assume {:print "$track_abort(57,30):", $t4} $t4 == $t4; + $t21 := $abort_code; + assume {:print "$track_abort(57,30):", $t21} $t21 == $t21; goto L2; } - // $t5 := get_field.staking($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:953:57+24 + // $t22 := get_field.staking($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:953:57+24 assume {:print "$at(2,44636,44660)"} true; - $t5 := $staking#$1_vesting_VestingContract($t0); + $t22 := $staking#$1_vesting_VestingContract($t0); - // $t6 := get_field.operator($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:953:57+33 - $t6 := $operator#$1_vesting_StakingInfo($t5); + // $t23 := get_field.operator($t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:953:57+33 + $t23 := $operator#$1_vesting_StakingInfo($t22); - // staking_contract::unlock_stake($t3, $t6, $t1) on_abort goto L2 with $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:953:9+90 - call $1_staking_contract_unlock_stake($t3, $t6, $t1); + // staking_contract::unlock_stake($t20, $t23, $t1) on_abort goto L2 with $t21 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:953:9+90 + call $1_staking_contract_unlock_stake($t20, $t23, $t1); if ($abort_flag) { assume {:print "$at(2,44588,44678)"} true; - $t4 := $abort_code; - assume {:print "$track_abort(57,30):", $t4} $t4 == $t4; + $t21 := $abort_code; + assume {:print "$track_abort(57,30):", $t21} $t21 == $t21; goto L2; } @@ -28597,27 +29316,48 @@ L1: // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:954:5+1 L2: - // abort($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:954:5+1 + // abort($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:954:5+1 assume {:print "$at(2,44684,44685)"} true; - $abort_code := $t4; + $abort_code := $t21; $abort_flag := true; return; } // fun vesting::unlock_stake [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:951:5+259 -procedure {:timeLimit 200} $1_vesting_unlock_stake$verify(_$t0: $1_vesting_VestingContract, _$t1: int) returns () +procedure {:timeLimit 1000} $1_vesting_unlock_stake$verify(_$t0: $1_vesting_VestingContract, _$t1: int) returns () { // declare local variables var $t2: $signer; - var $t3: $signer; + var $t3: int; var $t4: int; - var $t5: $1_vesting_StakingInfo; - var $t6: int; + var $t5: $1_staking_contract_Store; + var $t6: $1_staking_contract_StakingContract; + var $t7: Table int ($1_staking_contract_StakingContract); + var $t8: int; + var $t9: $1_stake_StakePool; + var $t10: int; + var $t11: int; + var $t12: int; + var $t13: int; + var $t14: $1_stake_StakePool; + var $t15: $1_stake_ValidatorSet; + var $t16: bool; + var $t17: int; + var $t18: int; + var $t19: int; + var $t20: $signer; + var $t21: int; + var $t22: $1_vesting_StakingInfo; + var $t23: int; var $t0: $1_vesting_VestingContract; var $t1: int; var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; var $temp_0'u64': int; + var $1_staking_contract_Store_$memory#146: $Memory $1_staking_contract_Store; + var $1_stake_StakePool_$memory#147: $Memory $1_stake_StakePool; + var $1_stake_ValidatorSet_$memory#148: $Memory $1_stake_ValidatorSet; + var $1_timestamp_CurrentTimeMicroseconds_$memory#149: $Memory $1_timestamp_CurrentTimeMicroseconds; $t0 := _$t0; $t1 := _$t1; @@ -28707,35 +29447,116 @@ procedure {:timeLimit 200} $1_vesting_unlock_stake$verify(_$t0: $1_vesting_Vesti // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/reconfiguration.spec.move:8:9+137 assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> ($1_timestamp_spec_now_microseconds($1_timestamp_CurrentTimeMicroseconds_$memory) >= $1_reconfiguration_$last_reconfiguration_time($1_reconfiguration_Configuration_$memory))); + // assume Identical($t3, select account::SignerCapability.account(select vesting::VestingContract.signer_cap($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:434:9+46 + assume {:print "$at(3,18724,18770)"} true; + assume ($t3 == $account#$1_account_SignerCapability($signer_cap#$1_vesting_VestingContract($t0))); + + // assume Identical($t4, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:435:9+49 + assume {:print "$at(3,18779,18828)"} true; + assume ($t4 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t0))); + + // assume Identical($t5, global($t3)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:439:9+49 + assume {:print "$at(3,18996,19045)"} true; + assume ($t5 == $ResourceValue($1_staking_contract_Store_$memory, $t3)); + + // assume Identical($t6, simple_map::spec_get(select staking_contract::Store.staking_contracts($t5), $t4)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:440:9+79 + assume {:print "$at(3,19054,19133)"} true; + assume ($t6 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($t5), $t4)); + + // assume Identical($t7, select staking_contract::Store.staking_contracts(global($t3))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 + assume {:print "$at(134,11481,11545)"} true; + assume ($t7 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t3))); + + // assume Identical($t8, select staking_contract::StakingContract.pool_address($t6)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:470:9+49 + assume {:print "$at(3,20547,20596)"} true; + assume ($t8 == $pool_address#$1_staking_contract_StakingContract($t6)); + + // assume Identical($t9, global($t8)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:472:9+56 + assume {:print "$at(3,20664,20720)"} true; + assume ($t9 == $ResourceValue($1_stake_StakePool_$memory, $t8)); + + // assume Identical($t10, select coin::Coin.value(select stake::StakePool.inactive($t9))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:473:9+41 + assume {:print "$at(3,20729,20770)"} true; + assume ($t10 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t9))); + + // assume Identical($t11, select coin::Coin.value(select stake::StakePool.pending_inactive($t9))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:474:9+57 + assume {:print "$at(3,20779,20836)"} true; + assume ($t11 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t9))); + + // assume Identical($t12, Add($t10, $t11)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:478:9+63 + assume {:print "$at(3,20948,21011)"} true; + assume ($t12 == ($t10 + $t11)); + + // assume Identical($t13, select stake::OwnerCapability.pool_address(select staking_contract::StakingContract.owner_cap($t6))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:479:9+61 + assume {:print "$at(3,21020,21081)"} true; + assume ($t13 == $pool_address#$1_stake_OwnerCapability($owner_cap#$1_staking_contract_StakingContract($t6))); + + // assume Identical($t14, global($t13)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:481:9+60 + assume {:print "$at(3,21151,21211)"} true; + assume ($t14 == $ResourceValue($1_stake_StakePool_$memory, $t13)); + + // assume Identical($t15, global(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:483:9+66 + assume {:print "$at(3,21286,21352)"} true; + assume ($t15 == $ResourceValue($1_stake_ValidatorSet_$memory, 1)); + + // assume Identical($t16, And(And(Not(stake::spec_contains(select stake::ValidatorSet.pending_active($t15), $t13)), Not(stake::spec_contains(select stake::ValidatorSet.active_validators($t15), $t13))), Not(stake::spec_contains(select stake::ValidatorSet.pending_inactive($t15), $t13)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:484:9+260 + assume {:print "$at(3,21361,21621)"} true; + assume ($t16 == ((!$1_stake_spec_contains($pending_active#$1_stake_ValidatorSet($t15), $t13) && !$1_stake_spec_contains($active_validators#$1_stake_ValidatorSet($t15), $t13)) && !$1_stake_spec_contains($pending_inactive#$1_stake_ValidatorSet($t15), $t13))); + + // assume Identical($t17, select coin::Coin.value(select stake::StakePool.inactive($t14))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:487:9+45 + assume {:print "$at(3,21630,21675)"} true; + assume ($t17 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t14))); + + // assume Identical($t18, select coin::Coin.value(select stake::StakePool.pending_inactive($t14))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:488:9+61 + assume {:print "$at(3,21684,21745)"} true; + assume ($t18 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t14))); + + // assume Identical($t19, Add($t17, $t18)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:489:9+53 + assume {:print "$at(3,21754,21807)"} true; + assume ($t19 == ($t17 + $t18)); + + // @149 := save_mem(timestamp::CurrentTimeMicroseconds) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:951:5+1 + assume {:print "$at(2,44426,44427)"} true; + $1_timestamp_CurrentTimeMicroseconds_$memory#149 := $1_timestamp_CurrentTimeMicroseconds_$memory; + + // @147 := save_mem(stake::StakePool) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:951:5+1 + $1_stake_StakePool_$memory#147 := $1_stake_StakePool_$memory; + + // @148 := save_mem(stake::ValidatorSet) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:951:5+1 + $1_stake_ValidatorSet_$memory#148 := $1_stake_ValidatorSet_$memory; + + // @146 := save_mem(staking_contract::Store) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:951:5+1 + $1_staking_contract_Store_$memory#146 := $1_staking_contract_Store_$memory; + // trace_local[vesting_contract]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:951:5+1 assume {:print "$track_local(57,30,0):", $t0} $t0 == $t0; // trace_local[amount]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:951:5+1 assume {:print "$track_local(57,30,1):", $t1} $t1 == $t1; - // $t3 := vesting::get_vesting_account_signer_internal($t0) on_abort goto L2 with $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:952:32+53 + // $t20 := vesting::get_vesting_account_signer_internal($t0) on_abort goto L2 with $t21 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:952:32+53 assume {:print "$at(2,44525,44578)"} true; - call $t3 := $1_vesting_get_vesting_account_signer_internal($t0); + call $t20 := $1_vesting_get_vesting_account_signer_internal($t0); if ($abort_flag) { assume {:print "$at(2,44525,44578)"} true; - $t4 := $abort_code; - assume {:print "$track_abort(57,30):", $t4} $t4 == $t4; + $t21 := $abort_code; + assume {:print "$track_abort(57,30):", $t21} $t21 == $t21; goto L2; } - // $t5 := get_field.staking($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:953:57+24 + // $t22 := get_field.staking($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:953:57+24 assume {:print "$at(2,44636,44660)"} true; - $t5 := $staking#$1_vesting_VestingContract($t0); + $t22 := $staking#$1_vesting_VestingContract($t0); - // $t6 := get_field.operator($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:953:57+33 - $t6 := $operator#$1_vesting_StakingInfo($t5); + // $t23 := get_field.operator($t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:953:57+33 + $t23 := $operator#$1_vesting_StakingInfo($t22); - // staking_contract::unlock_stake($t3, $t6, $t1) on_abort goto L2 with $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:953:9+90 - call $1_staking_contract_unlock_stake($t3, $t6, $t1); + // staking_contract::unlock_stake($t20, $t23, $t1) on_abort goto L2 with $t21 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:953:9+90 + call $1_staking_contract_unlock_stake($t20, $t23, $t1); if ($abort_flag) { assume {:print "$at(2,44588,44678)"} true; - $t4 := $abort_code; - assume {:print "$track_abort(57,30):", $t4} $t4 == $t4; + $t21 := $abort_code; + assume {:print "$track_abort(57,30):", $t21} $t21 == $t21; goto L2; } @@ -28743,27 +29564,58 @@ procedure {:timeLimit 200} $1_vesting_unlock_stake$verify(_$t0: $1_vesting_Vesti assume {:print "$at(2,44684,44685)"} true; L1: - // assert Not(false) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:954:5+1 - assume {:print "$at(2,44684,44685)"} true; - assert {:msg "assert_failed(2,44684,44685): function does not abort under this condition"} - !false; + // assert Not(And(Neq($t1, 0), Not(exists[@146]($t3)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:267:9+33 + assume {:print "$at(134,11439,11472)"} true; + assert {:msg "assert_failed(134,11439,11472): function does not abort under this condition"} + !(!$IsEqual'u64'($t1, 0) && !$ResourceExists($1_staking_contract_Store_$memory#146, $t3)); - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:954:5+1 + // assert Not(And(Neq($t1, 0), Not(simple_map::spec_contains_key[]($t7, $t4)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:269:9+70 + assume {:print "$at(134,11554,11624)"} true; + assert {:msg "assert_failed(134,11554,11624): function does not abort under this condition"} + !(!$IsEqual'u64'($t1, 0) && !$1_simple_map_spec_contains_key'address_$1_staking_contract_StakingContract'($t7, $t4)); + + // assert Not(And(Neq($t1, 0), Not(exists[@147]($t8)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:471:9+50 + assume {:print "$at(3,20605,20655)"} true; + assert {:msg "assert_failed(3,20605,20655): function does not abort under this condition"} + !(!$IsEqual'u64'($t1, 0) && !$ResourceExists($1_stake_StakePool_$memory#147, $t8)); + + // assert Not(And(Neq($t1, 0), Gt(Add($t10, $t11), 18446744073709551615))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:475:9+48 + assume {:print "$at(3,20845,20893)"} true; + assert {:msg "assert_failed(3,20845,20893): function does not abort under this condition"} + !(!$IsEqual'u64'($t1, 0) && (($t10 + $t11) > 18446744073709551615)); + + // assert Not(And(Neq($t1, 0), Not(exists[@147]($t13)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:480:9+52 + assume {:print "$at(3,21090,21142)"} true; + assert {:msg "assert_failed(3,21090,21142): function does not abort under this condition"} + !(!$IsEqual'u64'($t1, 0) && !$ResourceExists($1_stake_StakePool_$memory#147, $t13)); + + // assert Not(And(Neq($t1, 0), Not(exists[@148](0x1)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:482:9+57 + assume {:print "$at(3,21220,21277)"} true; + assert {:msg "assert_failed(3,21220,21277): function does not abort under this condition"} + !(!$IsEqual'u64'($t1, 0) && !$ResourceExists($1_stake_ValidatorSet_$memory#148, 1)); + + // assert Not(And(Neq($t1, 0), And(And($t16, Ge(timestamp::spec_now_seconds[@149](), select stake::StakePool.locked_until_secs($t14))), Gt(Add($t17, $t18), 18446744073709551615)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:490:9+150 + assume {:print "$at(3,21816,21966)"} true; + assert {:msg "assert_failed(3,21816,21966): function does not abort under this condition"} + !(!$IsEqual'u64'($t1, 0) && (($t16 && ($1_timestamp_spec_now_seconds($1_timestamp_CurrentTimeMicroseconds_$memory#149) >= $locked_until_secs#$1_stake_StakePool($t14))) && (($t17 + $t18) > 18446744073709551615))); + + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:490:9+150 return; // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:954:5+1 + assume {:print "$at(2,44684,44685)"} true; L2: - // abort($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:954:5+1 + // abort($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:954:5+1 assume {:print "$at(2,44684,44685)"} true; - $abort_code := $t4; + $abort_code := $t21; $abort_flag := true; return; } // fun vesting::update_voter [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:763:5+956 -procedure {:timeLimit 200} $1_vesting_update_voter$verify(_$t0: $signer, _$t1: int, _$t2: int) returns () +procedure {:timeLimit 1000} $1_vesting_update_voter$verify(_$t0: $signer, _$t1: int, _$t2: int) returns () { // declare local variables var $t3: $signer; @@ -28858,20 +29710,20 @@ procedure {:timeLimit 200} $1_vesting_update_voter$verify(_$t0: $signer, _$t1: i // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:8:9+92 assume ($ResourceExists($1_stake_ValidatorSet_$memory, 1) ==> $1_stake_validator_set_is_valid($1_stake_StakePool_$memory, $1_stake_ValidatorConfig_$memory, $1_stake_ValidatorPerformance_$memory, $1_stake_ValidatorSet_$memory)); - // assume Identical($t7, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:216:9+65 - assume {:print "$at(3,8837,8902)"} true; + // assume Identical($t7, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:283:9+65 + assume {:print "$at(3,12263,12328)"} true; assume ($t7 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); - // assume Identical($t8, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t7))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:217:9+49 - assume {:print "$at(3,8911,8960)"} true; + // assume Identical($t8, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t7))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:284:9+49 + assume {:print "$at(3,12337,12386)"} true; assume ($t8 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t7))); - // assume Identical($t9, select account::SignerCapability.account(select vesting::VestingContract.signer_cap($t7))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:218:9+49 - assume {:print "$at(3,8969,9018)"} true; + // assume Identical($t9, select account::SignerCapability.account(select vesting::VestingContract.signer_cap($t7))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:285:9+49 + assume {:print "$at(3,12395,12444)"} true; assume ($t9 == $account#$1_account_SignerCapability($signer_cap#$1_vesting_VestingContract($t7))); - // assume Identical($t10, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:382:9+65 - assume {:print "$at(3,16064,16129)"} true; + // assume Identical($t10, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:511:9+65 + assume {:print "$at(3,22722,22787)"} true; assume ($t10 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); // assume Identical($t11, global($t9)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:276:9+34 @@ -29069,14 +29921,14 @@ procedure {:timeLimit 200} $1_vesting_update_voter$verify(_$t0: $signer, _$t1: i assume {:print "$at(2,36769,36770)"} true; L1: - // assert Not(Not(exists[@113]($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:381:9+53 - assume {:print "$at(3,16002,16055)"} true; - assert {:msg "assert_failed(3,16002,16055): function does not abort under this condition"} + // assert Not(Not(exists[@113]($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:510:9+53 + assume {:print "$at(3,22660,22713)"} true; + assert {:msg "assert_failed(3,22660,22713): function does not abort under this condition"} !!$ResourceExists($1_vesting_VestingContract_$memory#113, $t1); - // assert Not(Neq
(signer::$address_of[]($t0), select vesting::VestingContract.admin($t10))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:383:9+62 - assume {:print "$at(3,16138,16200)"} true; - assert {:msg "assert_failed(3,16138,16200): function does not abort under this condition"} + // assert Not(Neq
(signer::$address_of[]($t0), select vesting::VestingContract.admin($t10))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:512:9+62 + assume {:print "$at(3,22796,22858)"} true; + assert {:msg "assert_failed(3,22796,22858): function does not abort under this condition"} !!$IsEqual'address'($1_signer_$address_of($t0), $admin#$1_vesting_VestingContract($t10)); // assert Not(Not(exists[@114]($t13))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:279:9+50 @@ -29106,12 +29958,12 @@ L1: assume {:print "$at(2,36769,36770)"} true; L2: - // assert Or(Or(Or(Or(Or(Not(exists[@113]($t1)), Neq
(signer::$address_of[]($t0), select vesting::VestingContract.admin($t10))), Not(exists[@114]($t13))), Not(exists[@114](select stake::OwnerCapability.pool_address(select staking_contract::StakingContract.owner_cap($t12))))), Not(exists[@115]($t9))), Not(simple_map::spec_contains_key[]($t14, $t8))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:209:5+401 - assume {:print "$at(3,8677,9078)"} true; - assert {:msg "assert_failed(3,8677,9078): abort not covered by any of the `aborts_if` clauses"} + // assert Or(Or(Or(Or(Or(Not(exists[@113]($t1)), Neq
(signer::$address_of[]($t0), select vesting::VestingContract.admin($t10))), Not(exists[@114]($t13))), Not(exists[@114](select stake::OwnerCapability.pool_address(select staking_contract::StakingContract.owner_cap($t12))))), Not(exists[@115]($t9))), Not(simple_map::spec_contains_key[]($t14, $t8))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:276:5+401 + assume {:print "$at(3,12103,12504)"} true; + assert {:msg "assert_failed(3,12103,12504): abort not covered by any of the `aborts_if` clauses"} (((((!$ResourceExists($1_vesting_VestingContract_$memory#113, $t1) || !$IsEqual'address'($1_signer_$address_of($t0), $admin#$1_vesting_VestingContract($t10))) || !$ResourceExists($1_stake_StakePool_$memory#114, $t13)) || !$ResourceExists($1_stake_StakePool_$memory#114, $pool_address#$1_stake_OwnerCapability($owner_cap#$1_staking_contract_StakingContract($t12)))) || !$ResourceExists($1_staking_contract_Store_$memory#115, $t9)) || !$1_simple_map_spec_contains_key'address_$1_staking_contract_StakingContract'($t14, $t8)); - // abort($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:209:5+401 + // abort($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:276:5+401 $abort_code := $t16; $abort_flag := true; return; @@ -29119,7 +29971,7 @@ L2: } // fun vesting::admin_withdraw [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:703:5+1003 -procedure {:timeLimit 200} $1_vesting_admin_withdraw$verify(_$t0: $signer, _$t1: int) returns () +procedure {:timeLimit 1000} $1_vesting_admin_withdraw$verify(_$t0: $signer, _$t1: int) returns () { // declare local variables var $t2: int; @@ -29128,27 +29980,59 @@ procedure {:timeLimit 200} $1_vesting_admin_withdraw$verify(_$t0: $signer, _$t1: var $t5: $Mutation ($1_vesting_VestingContract); var $t6: $1_vesting_VestingContract; var $t7: $1_vesting_VestingContract; - var $t8: $1_vesting_VestingContract; - var $t9: int; - var $t10: int; - var $t11: int; - var $t12: bool; - var $t13: int; + var $t8: int; + var $t9: $1_staking_contract_Store; + var $t10: $1_staking_contract_StakingContract; + var $t11: Table int ($1_staking_contract_StakingContract); + var $t12: int; + var $t13: $1_stake_StakePool; var $t14: int; - var $t15: $Mutation ($1_vesting_VestingContract); - var $t16: $1_vesting_VestingContract; - var $t17: $1_vesting_VestingContract; - var $t18: $1_coin_Coin'$1_aptos_coin_AptosCoin'; - var $t19: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; - var $t20: int; + var $t15: int; + var $t16: int; + var $t17: int; + var $t18: $1_stake_StakePool; + var $t19: $1_stake_ValidatorSet; + var $t20: bool; var $t21: int; - var $t22: bool; - var $t23: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; - var $t24: int; - var $t25: $1_account_Account; - var $t26: $Mutation ($1_event_EventHandle'$1_vesting_AdminWithdrawEvent'); + var $t22: int; + var $t23: int; + var $t24: $1_vesting_VestingContract; + var $t25: int; + var $t26: int; var $t27: int; - var $t28: $1_vesting_AdminWithdrawEvent; + var $t28: bool; + var $t29: int; + var $t30: int; + var $t31: $Mutation ($1_vesting_VestingContract); + var $t32: $1_vesting_VestingContract; + var $t33: $1_vesting_VestingContract; + var $t34: int; + var $t35: $1_staking_contract_Store; + var $t36: $1_staking_contract_StakingContract; + var $t37: Table int ($1_staking_contract_StakingContract); + var $t38: int; + var $t39: $1_stake_StakePool; + var $t40: int; + var $t41: int; + var $t42: int; + var $t43: int; + var $t44: $1_stake_StakePool; + var $t45: $1_stake_ValidatorSet; + var $t46: bool; + var $t47: int; + var $t48: int; + var $t49: int; + var $t50: $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $t51: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t52: int; + var $t53: int; + var $t54: bool; + var $t55: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t56: int; + var $t57: $1_account_Account; + var $t58: $Mutation ($1_event_EventHandle'$1_vesting_AdminWithdrawEvent'); + var $t59: int; + var $t60: $1_vesting_AdminWithdrawEvent; var $t0: $signer; var $t1: int; var $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin'': $1_coin_Coin'$1_aptos_coin_AptosCoin'; @@ -29156,7 +30040,11 @@ procedure {:timeLimit 200} $1_vesting_admin_withdraw$verify(_$t0: $signer, _$t1: var $temp_0'address': int; var $temp_0'signer': $signer; var $temp_0'u64': int; - var $1_vesting_VestingContract_$memory#134: $Memory $1_vesting_VestingContract; + var $1_vesting_VestingContract_$memory#154: $Memory $1_vesting_VestingContract; + var $1_staking_contract_Store_$memory#155: $Memory $1_staking_contract_Store; + var $1_stake_StakePool_$memory#156: $Memory $1_stake_StakePool; + var $1_stake_ValidatorSet_$memory#157: $Memory $1_stake_ValidatorSet; + var $1_timestamp_CurrentTimeMicroseconds_$memory#158: $Memory $1_timestamp_CurrentTimeMicroseconds; $t0 := _$t0; $t1 := _$t1; @@ -29258,17 +30146,93 @@ procedure {:timeLimit 200} $1_vesting_admin_withdraw$verify(_$t0: $signer, _$t1: // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/reconfiguration.spec.move:8:9+137 assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> ($1_timestamp_spec_now_microseconds($1_timestamp_CurrentTimeMicroseconds_$memory) >= $1_reconfiguration_$last_reconfiguration_time($1_reconfiguration_Configuration_$memory))); - // assume Identical($t6, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:186:9+65 - assume {:print "$at(3,8025,8090)"} true; + // assume Identical($t6, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:237:9+65 + assume {:print "$at(3,10631,10696)"} true; assume ($t6 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); - // assume Identical($t7, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:382:9+65 - assume {:print "$at(3,16064,16129)"} true; + // assume Identical($t7, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:511:9+65 + assume {:print "$at(3,22722,22787)"} true; assume ($t7 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); - // @134 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:703:5+1 + // assume Identical($t8, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t6))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:455:9+49 + assume {:print "$at(3,19684,19733)"} true; + assume ($t8 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t6))); + + // assume Identical($t9, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:459:9+62 + assume {:print "$at(3,19898,19960)"} true; + assume ($t9 == $ResourceValue($1_staking_contract_Store_$memory, $t1)); + + // assume Identical($t10, simple_map::spec_get(select staking_contract::Store.staking_contracts($t9), $t8)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:460:9+79 + assume {:print "$at(3,19969,20048)"} true; + assume ($t10 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($t9), $t8)); + + // assume Identical($t11, select staking_contract::Store.staking_contracts(global($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 + assume {:print "$at(134,11481,11545)"} true; + assume ($t11 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t1))); + + // assume Identical($t12, select staking_contract::StakingContract.pool_address($t10)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:470:9+49 + assume {:print "$at(3,20547,20596)"} true; + assume ($t12 == $pool_address#$1_staking_contract_StakingContract($t10)); + + // assume Identical($t13, global($t12)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:472:9+56 + assume {:print "$at(3,20664,20720)"} true; + assume ($t13 == $ResourceValue($1_stake_StakePool_$memory, $t12)); + + // assume Identical($t14, select coin::Coin.value(select stake::StakePool.inactive($t13))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:473:9+41 + assume {:print "$at(3,20729,20770)"} true; + assume ($t14 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t13))); + + // assume Identical($t15, select coin::Coin.value(select stake::StakePool.pending_inactive($t13))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:474:9+57 + assume {:print "$at(3,20779,20836)"} true; + assume ($t15 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t13))); + + // assume Identical($t16, Add($t14, $t15)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:478:9+63 + assume {:print "$at(3,20948,21011)"} true; + assume ($t16 == ($t14 + $t15)); + + // assume Identical($t17, select stake::OwnerCapability.pool_address(select staking_contract::StakingContract.owner_cap($t10))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:479:9+61 + assume {:print "$at(3,21020,21081)"} true; + assume ($t17 == $pool_address#$1_stake_OwnerCapability($owner_cap#$1_staking_contract_StakingContract($t10))); + + // assume Identical($t18, global($t17)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:481:9+60 + assume {:print "$at(3,21151,21211)"} true; + assume ($t18 == $ResourceValue($1_stake_StakePool_$memory, $t17)); + + // assume Identical($t19, global(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:483:9+66 + assume {:print "$at(3,21286,21352)"} true; + assume ($t19 == $ResourceValue($1_stake_ValidatorSet_$memory, 1)); + + // assume Identical($t20, And(And(Not(stake::spec_contains(select stake::ValidatorSet.pending_active($t19), $t17)), Not(stake::spec_contains(select stake::ValidatorSet.active_validators($t19), $t17))), Not(stake::spec_contains(select stake::ValidatorSet.pending_inactive($t19), $t17)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:484:9+260 + assume {:print "$at(3,21361,21621)"} true; + assume ($t20 == ((!$1_stake_spec_contains($pending_active#$1_stake_ValidatorSet($t19), $t17) && !$1_stake_spec_contains($active_validators#$1_stake_ValidatorSet($t19), $t17)) && !$1_stake_spec_contains($pending_inactive#$1_stake_ValidatorSet($t19), $t17))); + + // assume Identical($t21, select coin::Coin.value(select stake::StakePool.inactive($t18))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:487:9+45 + assume {:print "$at(3,21630,21675)"} true; + assume ($t21 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t18))); + + // assume Identical($t22, select coin::Coin.value(select stake::StakePool.pending_inactive($t18))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:488:9+61 + assume {:print "$at(3,21684,21745)"} true; + assume ($t22 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t18))); + + // assume Identical($t23, Add($t21, $t22)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:489:9+53 + assume {:print "$at(3,21754,21807)"} true; + assume ($t23 == ($t21 + $t22)); + + // @158 := save_mem(timestamp::CurrentTimeMicroseconds) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:703:5+1 assume {:print "$at(2,33288,33289)"} true; - $1_vesting_VestingContract_$memory#134 := $1_vesting_VestingContract_$memory; + $1_timestamp_CurrentTimeMicroseconds_$memory#158 := $1_timestamp_CurrentTimeMicroseconds_$memory; + + // @156 := save_mem(stake::StakePool) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:703:5+1 + $1_stake_StakePool_$memory#156 := $1_stake_StakePool_$memory; + + // @157 := save_mem(stake::ValidatorSet) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:703:5+1 + $1_stake_ValidatorSet_$memory#157 := $1_stake_ValidatorSet_$memory; + + // @155 := save_mem(staking_contract::Store) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:703:5+1 + $1_staking_contract_Store_$memory#155 := $1_staking_contract_Store_$memory; + + // @154 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:703:5+1 + $1_vesting_VestingContract_$memory#154 := $1_vesting_VestingContract_$memory; // trace_local[admin]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:703:5+1 assume {:print "$track_local(57,1,0):", $t0} $t0 == $t0; @@ -29276,33 +30240,33 @@ procedure {:timeLimit 200} $1_vesting_admin_withdraw$verify(_$t0: $signer, _$t1: // trace_local[contract_address]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:703:5+1 assume {:print "$track_local(57,1,1):", $t1} $t1 == $t1; - // $t8 := get_global($t1) on_abort goto L6 with $t9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:704:32+13 + // $t24 := get_global($t1) on_abort goto L6 with $t25 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:704:32+13 assume {:print "$at(2,33421,33434)"} true; if (!$ResourceExists($1_vesting_VestingContract_$memory, $t1)) { call $ExecFailureAbort(); } else { - $t8 := $ResourceValue($1_vesting_VestingContract_$memory, $t1); + $t24 := $ResourceValue($1_vesting_VestingContract_$memory, $t1); } if ($abort_flag) { assume {:print "$at(2,33421,33434)"} true; - $t9 := $abort_code; - assume {:print "$track_abort(57,1):", $t9} $t9 == $t9; + $t25 := $abort_code; + assume {:print "$track_abort(57,1):", $t25} $t25 == $t25; goto L6; } - // $t10 := get_field.state($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:705:17+22 + // $t26 := get_field.state($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:705:17+22 assume {:print "$at(2,33487,33509)"} true; - $t10 := $state#$1_vesting_VestingContract($t8); + $t26 := $state#$1_vesting_VestingContract($t24); - // $t11 := 2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:705:43+23 - $t11 := 2; - assume $IsValid'u64'($t11); + // $t27 := 2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:705:43+23 + $t27 := 2; + assume $IsValid'u64'($t27); - // $t12 := ==($t10, $t11) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:705:40+2 - $t12 := $IsEqual'u64'($t10, $t11); + // $t28 := ==($t26, $t27) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:705:40+2 + $t28 := $IsEqual'u64'($t26, $t27); - // if ($t12) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:705:9+112 - if ($t12) { goto L1; } else { goto L0; } + // if ($t28) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:705:9+112 + if ($t28) { goto L1; } else { goto L0; } // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:705:9+112 L1: @@ -29314,26 +30278,26 @@ L1: // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:705:9+112 L0: - // $t13 := 9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:705:89+30 + // $t29 := 9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:705:89+30 assume {:print "$at(2,33559,33589)"} true; - $t13 := 9; - assume $IsValid'u64'($t13); + $t29 := 9; + assume $IsValid'u64'($t29); - // $t14 := error::invalid_state($t13) on_abort goto L6 with $t9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:705:68+52 - call $t14 := $1_error_invalid_state($t13); + // $t30 := error::invalid_state($t29) on_abort goto L6 with $t25 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:705:68+52 + call $t30 := $1_error_invalid_state($t29); if ($abort_flag) { assume {:print "$at(2,33538,33590)"} true; - $t9 := $abort_code; - assume {:print "$track_abort(57,1):", $t9} $t9 == $t9; + $t25 := $abort_code; + assume {:print "$track_abort(57,1):", $t25} $t25 == $t25; goto L6; } - // trace_abort($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:705:9+112 + // trace_abort($t30) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:705:9+112 assume {:print "$at(2,33479,33591)"} true; - assume {:print "$track_abort(57,1):", $t14} $t14 == $t14; + assume {:print "$track_abort(57,1):", $t30} $t30 == $t30; - // $t9 := move($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:705:9+112 - $t9 := $t14; + // $t25 := move($t30) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:705:9+112 + $t25 := $t30; // goto L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:705:9+112 goto L6; @@ -29342,113 +30306,178 @@ L0: assume {:print "$at(2,33660,33676)"} true; L2: - // $t15 := borrow_global($t1) on_abort goto L6 with $t9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:707:32+17 + // $t31 := borrow_global($t1) on_abort goto L6 with $t25 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:707:32+17 assume {:print "$at(2,33625,33642)"} true; if (!$ResourceExists($1_vesting_VestingContract_$memory, $t1)) { call $ExecFailureAbort(); } else { - $t15 := $Mutation($Global($t1), EmptyVec(), $ResourceValue($1_vesting_VestingContract_$memory, $t1)); + $t31 := $Mutation($Global($t1), EmptyVec(), $ResourceValue($1_vesting_VestingContract_$memory, $t1)); } if ($abort_flag) { assume {:print "$at(2,33625,33642)"} true; - $t9 := $abort_code; - assume {:print "$track_abort(57,1):", $t9} $t9 == $t9; + $t25 := $abort_code; + assume {:print "$track_abort(57,1):", $t25} $t25 == $t25; goto L6; } - // trace_local[vesting_contract#1]($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:707:13+16 - $temp_0'$1_vesting_VestingContract' := $Dereference($t15); + // trace_local[vesting_contract#1]($t31) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:707:13+16 + $temp_0'$1_vesting_VestingContract' := $Dereference($t31); assume {:print "$track_local(57,1,5):", $temp_0'$1_vesting_VestingContract'} $temp_0'$1_vesting_VestingContract' == $temp_0'$1_vesting_VestingContract'; - // $t16 := read_ref($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:708:21+25 + // $t32 := read_ref($t31) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:708:21+25 assume {:print "$at(2,33699,33724)"} true; - $t16 := $Dereference($t15); + $t32 := $Dereference($t31); - // vesting::verify_admin($t0, $t16) on_abort goto L6 with $t9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:708:9+37 - call $1_vesting_verify_admin($t0, $t16); + // vesting::verify_admin($t0, $t32) on_abort goto L6 with $t25 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:708:9+37 + call $1_vesting_verify_admin($t0, $t32); if ($abort_flag) { assume {:print "$at(2,33687,33724)"} true; - $t9 := $abort_code; - assume {:print "$track_abort(57,1):", $t9} $t9 == $t9; + $t25 := $abort_code; + assume {:print "$track_abort(57,1):", $t25} $t25 == $t25; goto L6; } - // $t17 := read_ref($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:709:35+36 + // $t33 := read_ref($t31) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:709:35+36 assume {:print "$at(2,33760,33796)"} true; - $t17 := $Dereference($t15); + $t33 := $Dereference($t31); + + // assume Identical($t34, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t33))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:455:9+49 + assume {:print "$at(3,19684,19733)"} true; + assume ($t34 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t33))); + + // assume Identical($t35, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:459:9+62 + assume {:print "$at(3,19898,19960)"} true; + assume ($t35 == $ResourceValue($1_staking_contract_Store_$memory, $t1)); + + // assume Identical($t36, simple_map::spec_get(select staking_contract::Store.staking_contracts($t35), $t34)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:460:9+79 + assume {:print "$at(3,19969,20048)"} true; + assume ($t36 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($t35), $t34)); + + // assume Identical($t37, select staking_contract::Store.staking_contracts(global($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 + assume {:print "$at(134,11481,11545)"} true; + assume ($t37 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t1))); + + // assume Identical($t38, select staking_contract::StakingContract.pool_address($t36)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:470:9+49 + assume {:print "$at(3,20547,20596)"} true; + assume ($t38 == $pool_address#$1_staking_contract_StakingContract($t36)); + + // assume Identical($t39, global($t38)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:472:9+56 + assume {:print "$at(3,20664,20720)"} true; + assume ($t39 == $ResourceValue($1_stake_StakePool_$memory, $t38)); + + // assume Identical($t40, select coin::Coin.value(select stake::StakePool.inactive($t39))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:473:9+41 + assume {:print "$at(3,20729,20770)"} true; + assume ($t40 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t39))); + + // assume Identical($t41, select coin::Coin.value(select stake::StakePool.pending_inactive($t39))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:474:9+57 + assume {:print "$at(3,20779,20836)"} true; + assume ($t41 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t39))); + + // assume Identical($t42, Add($t40, $t41)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:478:9+63 + assume {:print "$at(3,20948,21011)"} true; + assume ($t42 == ($t40 + $t41)); + + // assume Identical($t43, select stake::OwnerCapability.pool_address(select staking_contract::StakingContract.owner_cap($t36))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:479:9+61 + assume {:print "$at(3,21020,21081)"} true; + assume ($t43 == $pool_address#$1_stake_OwnerCapability($owner_cap#$1_staking_contract_StakingContract($t36))); + + // assume Identical($t44, global($t43)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:481:9+60 + assume {:print "$at(3,21151,21211)"} true; + assume ($t44 == $ResourceValue($1_stake_StakePool_$memory, $t43)); + + // assume Identical($t45, global(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:483:9+66 + assume {:print "$at(3,21286,21352)"} true; + assume ($t45 == $ResourceValue($1_stake_ValidatorSet_$memory, 1)); - // $t18 := vesting::withdraw_stake($t17, $t1) on_abort goto L6 with $t9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:709:21+50 - call $t18 := $1_vesting_withdraw_stake($t17, $t1); + // assume Identical($t46, And(And(Not(stake::spec_contains(select stake::ValidatorSet.pending_active($t45), $t43)), Not(stake::spec_contains(select stake::ValidatorSet.active_validators($t45), $t43))), Not(stake::spec_contains(select stake::ValidatorSet.pending_inactive($t45), $t43)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:484:9+260 + assume {:print "$at(3,21361,21621)"} true; + assume ($t46 == ((!$1_stake_spec_contains($pending_active#$1_stake_ValidatorSet($t45), $t43) && !$1_stake_spec_contains($active_validators#$1_stake_ValidatorSet($t45), $t43)) && !$1_stake_spec_contains($pending_inactive#$1_stake_ValidatorSet($t45), $t43))); + + // assume Identical($t47, select coin::Coin.value(select stake::StakePool.inactive($t44))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:487:9+45 + assume {:print "$at(3,21630,21675)"} true; + assume ($t47 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t44))); + + // assume Identical($t48, select coin::Coin.value(select stake::StakePool.pending_inactive($t44))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:488:9+61 + assume {:print "$at(3,21684,21745)"} true; + assume ($t48 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t44))); + + // assume Identical($t49, Add($t47, $t48)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:489:9+53 + assume {:print "$at(3,21754,21807)"} true; + assume ($t49 == ($t47 + $t48)); + + // $t50 := vesting::withdraw_stake($t33, $t1) on_abort goto L6 with $t25 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:709:21+50 + assume {:print "$at(2,33746,33796)"} true; + call $t50 := $1_vesting_withdraw_stake($t33, $t1); if ($abort_flag) { assume {:print "$at(2,33746,33796)"} true; - $t9 := $abort_code; - assume {:print "$track_abort(57,1):", $t9} $t9 == $t9; + $t25 := $abort_code; + assume {:print "$track_abort(57,1):", $t25} $t25 == $t25; goto L6; } - // trace_local[coins]($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:709:13+5 - assume {:print "$track_local(57,1,4):", $t18} $t18 == $t18; + // trace_local[coins]($t50) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:709:13+5 + assume {:print "$track_local(57,1,4):", $t50} $t50 == $t50; - // assume Identical($t19, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + // assume Identical($t51, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 assume {:print "$at(95,1664,1763)"} true; - assume ($t19 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + assume ($t51 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); - // $t20 := coin::value($t18) on_abort goto L6 with $t9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:710:22+19 + // $t52 := coin::value($t50) on_abort goto L6 with $t25 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:710:22+19 assume {:print "$at(2,33819,33838)"} true; - call $t20 := $1_coin_value'$1_aptos_coin_AptosCoin'($t18); + call $t52 := $1_coin_value'$1_aptos_coin_AptosCoin'($t50); if ($abort_flag) { assume {:print "$at(2,33819,33838)"} true; - $t9 := $abort_code; - assume {:print "$track_abort(57,1):", $t9} $t9 == $t9; + $t25 := $abort_code; + assume {:print "$track_abort(57,1):", $t25} $t25 == $t25; goto L6; } - // trace_local[amount]($t20) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:710:13+6 - assume {:print "$track_local(57,1,3):", $t20} $t20 == $t20; + // trace_local[amount]($t52) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:710:13+6 + assume {:print "$track_local(57,1,3):", $t52} $t52 == $t52; - // $t21 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:711:23+1 + // $t53 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:711:23+1 assume {:print "$at(2,33862,33863)"} true; - $t21 := 0; - assume $IsValid'u64'($t21); + $t53 := 0; + assume $IsValid'u64'($t53); - // $t22 := ==($t20, $t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:711:20+2 - $t22 := $IsEqual'u64'($t20, $t21); + // $t54 := ==($t52, $t53) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:711:20+2 + $t54 := $IsEqual'u64'($t52, $t53); - // if ($t22) goto L4 else goto L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:711:9+86 - if ($t22) { goto L4; } else { goto L3; } + // if ($t54) goto L4 else goto L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:711:9+86 + if ($t54) { goto L4; } else { goto L3; } // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:712:13+25 assume {:print "$at(2,33879,33904)"} true; L4: - // assert forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t15)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t15)), addr)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 + // assert forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t31)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t31)), addr)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 assume {:print "$at(59,538,673)"} true; assert {:msg "assert_failed(59,538,673): data invariant does not hold"} - (forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t15))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t15))), addr)))); + (forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t31))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t31))), addr)))); - // assert forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t15)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t15)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t15)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t15)), j)), Eq(i, j)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 + // assert forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t31)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t31)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t31)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t31)), j)), Eq(i, j)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 assume {:print "$at(59,738,867)"} true; assert {:msg "assert_failed(59,738,867): data invariant does not hold"} - (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t15))))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t15))))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; + (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t31))))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t31))))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; (var j := $i_3; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t15))), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t15))), j)) ==> $IsEqual'num'(i, j)))))))); + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t31))), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t31))), j)) ==> $IsEqual'num'(i, j)))))))); - // destroy($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:712:13+25 + // destroy($t31) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:712:13+25 assume {:print "$at(2,33879,33904)"} true; - // assume Identical($t23, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + // assume Identical($t55, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 assume {:print "$at(95,1664,1763)"} true; - assume ($t23 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + assume ($t55 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); - // coin::destroy_zero($t18) on_abort goto L6 with $t9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:712:13+25 + // coin::destroy_zero($t50) on_abort goto L6 with $t25 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:712:13+25 assume {:print "$at(2,33879,33904)"} true; - call $1_coin_destroy_zero'$1_aptos_coin_AptosCoin'($t18); + call $1_coin_destroy_zero'$1_aptos_coin_AptosCoin'($t50); if ($abort_flag) { assume {:print "$at(2,33879,33904)"} true; - $t9 := $abort_code; - assume {:print "$track_abort(57,1):", $t9} $t9 == $t9; + $t25 := $abort_code; + assume {:print "$track_abort(57,1):", $t25} $t25 == $t25; goto L6; } @@ -29460,92 +30489,127 @@ L4: assume {:print "$at(2,33973,33989)"} true; L3: - // $t24 := get_field.withdrawal_address($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:715:38+35 + // $t56 := get_field.withdrawal_address($t31) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:715:38+35 assume {:print "$at(2,33973,34008)"} true; - $t24 := $withdrawal_address#$1_vesting_VestingContract($Dereference($t15)); + $t56 := $withdrawal_address#$1_vesting_VestingContract($Dereference($t31)); - // assume Identical($t25, global($t24)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.spec.move:200:9+39 + // assume Identical($t57, global($t56)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.spec.move:200:9+39 assume {:print "$at(81,9368,9407)"} true; - assume ($t25 == $ResourceValue($1_account_Account_$memory, $t24)); + assume ($t57 == $ResourceValue($1_account_Account_$memory, $t56)); - // aptos_account::deposit_coins($t24, $t18) on_abort goto L6 with $t9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:715:9+72 + // aptos_account::deposit_coins($t56, $t50) on_abort goto L6 with $t25 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:715:9+72 assume {:print "$at(2,33944,34016)"} true; - call $1_aptos_account_deposit_coins'$1_aptos_coin_AptosCoin'($t24, $t18); + call $1_aptos_account_deposit_coins'$1_aptos_coin_AptosCoin'($t56, $t50); if ($abort_flag) { assume {:print "$at(2,33944,34016)"} true; - $t9 := $abort_code; - assume {:print "$track_abort(57,1):", $t9} $t9 == $t9; + $t25 := $abort_code; + assume {:print "$track_abort(57,1):", $t25} $t25 == $t25; goto L6; } - // $t26 := borrow_field.admin_withdraw_events($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:718:13+43 + // $t58 := borrow_field.admin_withdraw_events($t31) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:718:13+43 assume {:print "$at(2,34051,34094)"} true; - $t26 := $ChildMutation($t15, 17, $admin_withdraw_events#$1_vesting_VestingContract($Dereference($t15))); + $t58 := $ChildMutation($t31, 17, $admin_withdraw_events#$1_vesting_VestingContract($Dereference($t31))); - // $t27 := get_field.admin($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:720:24+22 + // $t59 := get_field.admin($t31) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:720:24+22 assume {:print "$at(2,34152,34174)"} true; - $t27 := $admin#$1_vesting_VestingContract($Dereference($t15)); + $t59 := $admin#$1_vesting_VestingContract($Dereference($t31)); - // $t28 := pack vesting::AdminWithdrawEvent($t27, $t1, $t20) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:719:13+165 + // $t60 := pack vesting::AdminWithdrawEvent($t59, $t1, $t52) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:719:13+165 assume {:print "$at(2,34108,34273)"} true; - $t28 := $1_vesting_AdminWithdrawEvent($t27, $t1, $t20); + $t60 := $1_vesting_AdminWithdrawEvent($t59, $t1, $t52); - // opaque begin: event::emit_event($t26, $t28) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:717:9+257 + // opaque begin: event::emit_event($t58, $t60) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:717:9+257 assume {:print "$at(2,34027,34284)"} true; - // opaque end: event::emit_event($t26, $t28) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:717:9+257 + // opaque end: event::emit_event($t58, $t60) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:717:9+257 - // write_back[Reference($t15).admin_withdraw_events (event::EventHandle)]($t26) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:717:9+257 - $t15 := $UpdateMutation($t15, $Update'$1_vesting_VestingContract'_admin_withdraw_events($Dereference($t15), $Dereference($t26))); + // write_back[Reference($t31).admin_withdraw_events (event::EventHandle)]($t58) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:717:9+257 + $t31 := $UpdateMutation($t31, $Update'$1_vesting_VestingContract'_admin_withdraw_events($Dereference($t31), $Dereference($t58))); - // assert forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t15)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t15)), addr)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 + // assert forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t31)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t31)), addr)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 assume {:print "$at(59,538,673)"} true; assert {:msg "assert_failed(59,538,673): data invariant does not hold"} - (forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t15))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t15))), addr)))); + (forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t31))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t31))), addr)))); - // assert forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t15)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t15)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t15)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t15)), j)), Eq(i, j)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 + // assert forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t31)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t31)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t31)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t31)), j)), Eq(i, j)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 assume {:print "$at(59,738,867)"} true; assert {:msg "assert_failed(59,738,867): data invariant does not hold"} - (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t15))))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t15))))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; + (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t31))))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t31))))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; (var j := $i_3; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t15))), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t15))), j)) ==> $IsEqual'num'(i, j)))))))); + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t31))), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t31))), j)) ==> $IsEqual'num'(i, j)))))))); - // write_back[vesting::VestingContract@]($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:717:9+257 + // write_back[vesting::VestingContract@]($t31) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:717:9+257 assume {:print "$at(2,34027,34284)"} true; - $1_vesting_VestingContract_$memory := $ResourceUpdate($1_vesting_VestingContract_$memory, $GlobalLocationAddress($t15), - $Dereference($t15)); + $1_vesting_VestingContract_$memory := $ResourceUpdate($1_vesting_VestingContract_$memory, $GlobalLocationAddress($t31), + $Dereference($t31)); // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:725:5+1 assume {:print "$at(2,34290,34291)"} true; L5: - // assert Not(Not(exists[@134]($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:381:9+53 - assume {:print "$at(3,16002,16055)"} true; - assert {:msg "assert_failed(3,16002,16055): function does not abort under this condition"} - !!$ResourceExists($1_vesting_VestingContract_$memory#134, $t1); + // assert Not(Neq(select vesting::VestingContract.state($t6), 2)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:238:9+60 + assume {:print "$at(3,10705,10765)"} true; + assert {:msg "assert_failed(3,10705,10765): function does not abort under this condition"} + !!$IsEqual'u64'($state#$1_vesting_VestingContract($t6), 2); + + // assert Not(Not(exists[@154]($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:510:9+53 + assume {:print "$at(3,22660,22713)"} true; + assert {:msg "assert_failed(3,22660,22713): function does not abort under this condition"} + !!$ResourceExists($1_vesting_VestingContract_$memory#154, $t1); - // assert Not(Neq
(signer::$address_of[]($t0), select vesting::VestingContract.admin($t7))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:383:9+62 - assume {:print "$at(3,16138,16200)"} true; - assert {:msg "assert_failed(3,16138,16200): function does not abort under this condition"} + // assert Not(Neq
(signer::$address_of[]($t0), select vesting::VestingContract.admin($t7))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:512:9+62 + assume {:print "$at(3,22796,22858)"} true; + assert {:msg "assert_failed(3,22796,22858): function does not abort under this condition"} !!$IsEqual'address'($1_signer_$address_of($t0), $admin#$1_vesting_VestingContract($t7)); - // assert Not(Neq(select vesting::VestingContract.state($t6), 2)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:187:9+60 - assume {:print "$at(3,8099,8159)"} true; - assert {:msg "assert_failed(3,8099,8159): function does not abort under this condition"} - !!$IsEqual'u64'($state#$1_vesting_VestingContract($t6), 2); + // assert Not(Not(exists[@155]($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:267:9+33 + assume {:print "$at(134,11439,11472)"} true; + assert {:msg "assert_failed(134,11439,11472): function does not abort under this condition"} + !!$ResourceExists($1_staking_contract_Store_$memory#155, $t1); + + // assert Not(Not(simple_map::spec_contains_key[]($t11, $t8))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:269:9+70 + assume {:print "$at(134,11554,11624)"} true; + assert {:msg "assert_failed(134,11554,11624): function does not abort under this condition"} + !!$1_simple_map_spec_contains_key'address_$1_staking_contract_StakingContract'($t11, $t8); + + // assert Not(Not(exists[@156]($t12))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:471:9+50 + assume {:print "$at(3,20605,20655)"} true; + assert {:msg "assert_failed(3,20605,20655): function does not abort under this condition"} + !!$ResourceExists($1_stake_StakePool_$memory#156, $t12); + + // assert Not(Gt(Add($t14, $t15), 18446744073709551615)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:475:9+48 + assume {:print "$at(3,20845,20893)"} true; + assert {:msg "assert_failed(3,20845,20893): function does not abort under this condition"} + !(($t14 + $t15) > 18446744073709551615); - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:187:9+60 + // assert Not(Not(exists[@156]($t17))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:480:9+52 + assume {:print "$at(3,21090,21142)"} true; + assert {:msg "assert_failed(3,21090,21142): function does not abort under this condition"} + !!$ResourceExists($1_stake_StakePool_$memory#156, $t17); + + // assert Not(Not(exists[@157](0x1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:482:9+57 + assume {:print "$at(3,21220,21277)"} true; + assert {:msg "assert_failed(3,21220,21277): function does not abort under this condition"} + !!$ResourceExists($1_stake_ValidatorSet_$memory#157, 1); + + // assert Not(And(And($t20, Ge(timestamp::spec_now_seconds[@158](), select stake::StakePool.locked_until_secs($t18))), Gt(Add($t21, $t22), 18446744073709551615))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:490:9+150 + assume {:print "$at(3,21816,21966)"} true; + assert {:msg "assert_failed(3,21816,21966): function does not abort under this condition"} + !(($t20 && ($1_timestamp_spec_now_seconds($1_timestamp_CurrentTimeMicroseconds_$memory#158) >= $locked_until_secs#$1_stake_StakePool($t18))) && (($t21 + $t22) > 18446744073709551615)); + + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:490:9+150 return; // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:725:5+1 assume {:print "$at(2,34290,34291)"} true; L6: - // abort($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:725:5+1 + // abort($t25) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:725:5+1 assume {:print "$at(2,34290,34291)"} true; - $abort_code := $t9; + $abort_code := $t25; $abort_flag := true; return; @@ -29568,8 +30632,8 @@ procedure {:inline 1} $1_vesting_assert_active_vesting_contract(_$t0: int) retur $t0 := _$t0; // bytecode translation starts here - // assume Identical($t1, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:389:9+65 - assume {:print "$at(3,16378,16443)"} true; + // assume Identical($t1, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:518:9+65 + assume {:print "$at(3,23036,23101)"} true; assume ($t1 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); // trace_local[contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:945:5+1 @@ -29671,7 +30735,7 @@ L4: } // fun vesting::assert_active_vesting_contract [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:945:5+349 -procedure {:timeLimit 200} $1_vesting_assert_active_vesting_contract$verify(_$t0: int) returns () +procedure {:timeLimit 1000} $1_vesting_assert_active_vesting_contract$verify(_$t0: int) returns () { // declare local variables var $t1: $1_vesting_VestingContract; @@ -29701,8 +30765,8 @@ procedure {:timeLimit 200} $1_vesting_assert_active_vesting_contract$verify(_$t0 (var j := $i_4; (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); - // assume Identical($t1, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:389:9+65 - assume {:print "$at(3,16378,16443)"} true; + // assume Identical($t1, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:518:9+65 + assume {:print "$at(3,23036,23101)"} true; assume ($t1 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); // @61 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:945:5+1 @@ -29791,29 +30855,29 @@ L2: assume {:print "$at(2,44419,44420)"} true; L3: - // assert Not(Not(exists[@61]($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:388:9+53 - assume {:print "$at(3,16316,16369)"} true; - assert {:msg "assert_failed(3,16316,16369): function does not abort under this condition"} + // assert Not(Not(exists[@61]($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:517:9+53 + assume {:print "$at(3,22974,23027)"} true; + assert {:msg "assert_failed(3,22974,23027): function does not abort under this condition"} !!$ResourceExists($1_vesting_VestingContract_$memory#61, $t0); - // assert Not(Neq(select vesting::VestingContract.state($t1), 1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:390:9+56 - assume {:print "$at(3,16452,16508)"} true; - assert {:msg "assert_failed(3,16452,16508): function does not abort under this condition"} + // assert Not(Neq(select vesting::VestingContract.state($t1), 1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:519:9+56 + assume {:print "$at(3,23110,23166)"} true; + assert {:msg "assert_failed(3,23110,23166): function does not abort under this condition"} !!$IsEqual'u64'($state#$1_vesting_VestingContract($t1), 1); - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:390:9+56 + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:519:9+56 return; // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:949:5+1 assume {:print "$at(2,44419,44420)"} true; L4: - // assert Or(Not(exists[@61]($t0)), Neq(select vesting::VestingContract.state($t1), 1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:351:5+134 - assume {:print "$at(3,14757,14891)"} true; - assert {:msg "assert_failed(3,14757,14891): abort not covered by any of the `aborts_if` clauses"} + // assert Or(Not(exists[@61]($t0)), Neq(select vesting::VestingContract.state($t1), 1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:418:5+134 + assume {:print "$at(3,18183,18317)"} true; + assert {:msg "assert_failed(3,18183,18317): abort not covered by any of the `aborts_if` clauses"} (!$ResourceExists($1_vesting_VestingContract_$memory#61, $t0) || !$IsEqual'u64'($state#$1_vesting_VestingContract($t1), 1)); - // abort($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:351:5+134 + // abort($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:418:5+134 $abort_code := $t2; $abort_flag := true; return; @@ -29901,7 +30965,7 @@ L4: } // fun vesting::assert_vesting_contract_exists [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:941:5+176 -procedure {:timeLimit 200} $1_vesting_assert_vesting_contract_exists$verify(_$t0: int) returns () +procedure {:timeLimit 1000} $1_vesting_assert_vesting_contract_exists$verify(_$t0: int) returns () { // declare local variables var $t1: bool; @@ -29981,24 +31045,24 @@ L2: assume {:print "$at(2,44064,44065)"} true; L3: - // assert Not(Not(exists[@31]($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:348:9+53 - assume {:print "$at(3,14692,14745)"} true; - assert {:msg "assert_failed(3,14692,14745): function does not abort under this condition"} + // assert Not(Not(exists[@31]($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:415:9+53 + assume {:print "$at(3,18118,18171)"} true; + assert {:msg "assert_failed(3,18118,18171): function does not abort under this condition"} !!$ResourceExists($1_vesting_VestingContract_$memory#31, $t0); - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:348:9+53 + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:415:9+53 return; // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:943:5+1 assume {:print "$at(2,44064,44065)"} true; L4: - // assert Not(exists[@31]($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:347:5+132 - assume {:print "$at(3,14619,14751)"} true; - assert {:msg "assert_failed(3,14619,14751): abort not covered by any of the `aborts_if` clauses"} + // assert Not(exists[@31]($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:414:5+132 + assume {:print "$at(3,18045,18177)"} true; + assert {:msg "assert_failed(3,18045,18177): abort not covered by any of the `aborts_if` clauses"} !$ResourceExists($1_vesting_VestingContract_$memory#31, $t0); - // abort($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:347:5+132 + // abort($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:414:5+132 $abort_code := $t4; $abort_flag := true; return; @@ -30006,7 +31070,7 @@ L4: } // fun vesting::beneficiary [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:293:5+282 -procedure {:timeLimit 200} $1_vesting_beneficiary$verify(_$t0: int, _$t1: int) returns ($ret0: int) +procedure {:timeLimit 1000} $1_vesting_beneficiary$verify(_$t0: int, _$t1: int) returns ($ret0: int) { // declare local variables var $t2: int; @@ -30111,7 +31175,7 @@ L2: } // fun vesting::vesting_schedule [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:346:5+260 -procedure {:timeLimit 200} $1_vesting_vesting_schedule$verify(_$t0: int) returns ($ret0: $1_vesting_VestingSchedule) +procedure {:timeLimit 1000} $1_vesting_vesting_schedule$verify(_$t0: int) returns ($ret0: $1_vesting_VestingSchedule) { // declare local variables var $t1: int; @@ -30203,7 +31267,7 @@ L2: } // fun vesting::create_vesting_contract_account [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:915:5+1075 -procedure {:timeLimit 200} $1_vesting_create_vesting_contract_account$verify(_$t0: $signer, _$t1: Vec (int)) returns ($ret0: $signer, $ret1: $1_account_SignerCapability) +procedure {:timeLimit 1000} $1_vesting_create_vesting_contract_account$verify(_$t0: $signer, _$t1: Vec (int)) returns ($ret0: $signer, $ret1: $1_account_SignerCapability) { // declare local variables var $t2: int; @@ -30302,44 +31366,44 @@ procedure {:timeLimit 200} $1_vesting_create_vesting_contract_account$verify(_$t assume (forall $a_0: int :: {$ResourceValue($1_vesting_AdminStore_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_AdminStore_$memory, $a_0); ($IsValid'$1_vesting_AdminStore'($rsc)))); - // assume Identical($t7, signer::$address_of($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:316:9+43 - assume {:print "$at(3,12878,12921)"} true; + // assume Identical($t7, signer::$address_of($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:383:9+43 + assume {:print "$at(3,16304,16347)"} true; assume ($t7 == $1_signer_$address_of($t0)); - // assume Identical($t8, global($t7)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:317:9+49 - assume {:print "$at(3,12930,12979)"} true; + // assume Identical($t8, global($t7)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:384:9+49 + assume {:print "$at(3,16356,16405)"} true; assume ($t8 == $ResourceValue($1_vesting_AdminStore_$memory, $t7)); - // assume Identical($t9, bcs::$to_bytes
($t7)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:318:9+37 - assume {:print "$at(3,12988,13025)"} true; + // assume Identical($t9, bcs::$to_bytes
($t7)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:385:9+37 + assume {:print "$at(3,16414,16451)"} true; assume ($t9 == $1_bcs_$to_bytes'address'($t7)); - // assume Identical($t10, bcs::$to_bytes(select vesting::AdminStore.nonce($t8))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:319:9+45 - assume {:print "$at(3,13034,13079)"} true; + // assume Identical($t10, bcs::$to_bytes(select vesting::AdminStore.nonce($t8))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:386:9+45 + assume {:print "$at(3,16460,16505)"} true; assume ($t10 == $1_bcs_$to_bytes'u64'($nonce#$1_vesting_AdminStore($t8))); - // assume Identical($t11, ConcatVec($t9, $t10)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:321:9+32 - assume {:print "$at(3,13089,13121)"} true; + // assume Identical($t11, ConcatVec($t9, $t10)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:388:9+32 + assume {:print "$at(3,16515,16547)"} true; assume ($t11 == ConcatVec($t9, $t10)); - // assume Identical($t12, ConcatVec($t11, [97, 112, 116, 111, 115, 95, 102, 114, 97, 109, 101, 119, 111, 114, 107, 58, 58, 118, 101, 115, 116, 105, 110, 103])) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:322:9+46 - assume {:print "$at(3,13130,13176)"} true; + // assume Identical($t12, ConcatVec($t11, [97, 112, 116, 111, 115, 95, 102, 114, 97, 109, 101, 119, 111, 114, 107, 58, 58, 118, 101, 115, 116, 105, 110, 103])) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:389:9+46 + assume {:print "$at(3,16556,16602)"} true; assume ($t12 == ConcatVec($t11, ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(97, 112, 116, 111), MakeVec4(115, 95, 102, 114)), MakeVec4(97, 109, 101, 119)), MakeVec4(111, 114, 107, 58)), MakeVec4(58, 118, 101, 115)), MakeVec4(116, 105, 110, 103)))); - // assume Identical($t13, ConcatVec($t12, $t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:323:9+49 - assume {:print "$at(3,13185,13234)"} true; + // assume Identical($t13, ConcatVec($t12, $t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:390:9+49 + assume {:print "$at(3,16611,16660)"} true; assume ($t13 == ConcatVec($t12, $t1)); - // assume Identical($t14, account::spec_create_resource_address($t7, $t13)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:325:9+75 - assume {:print "$at(3,13244,13319)"} true; + // assume Identical($t14, account::spec_create_resource_address($t7, $t13)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:392:9+75 + assume {:print "$at(3,16670,16745)"} true; assume ($t14 == $1_account_spec_create_resource_address($t7, $t13)); - // assume Identical($t15, account::$exists_at($t14)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:329:9+43 - assume {:print "$at(3,13483,13526)"} true; + // assume Identical($t15, account::$exists_at($t14)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:396:9+43 + assume {:print "$at(3,16909,16952)"} true; assume ($t15 == $1_account_$exists_at($1_account_Account_$memory, $t14)); - // assume Identical($t16, global($t14)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:332:9+50 - assume {:print "$at(3,13658,13708)"} true; + // assume Identical($t16, global($t14)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:399:9+50 + assume {:print "$at(3,17084,17134)"} true; assume ($t16 == $ResourceValue($1_account_Account_$memory, $t14)); // assume Identical($t17, global($t14)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:464:9+45 @@ -30587,23 +31651,23 @@ procedure {:timeLimit 200} $1_vesting_create_vesting_contract_account$verify(_$t assume {:print "$at(2,43694,43695)"} true; L1: - // assume Identical($t43, global($t14)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:333:9+60 - assume {:print "$at(3,13717,13777)"} true; + // assume Identical($t43, global($t14)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:400:9+60 + assume {:print "$at(3,17143,17203)"} true; assume ($t43 == $ResourceValue($1_account_Account_$memory, $t14)); - // assert Not(Not(exists[@98]($t7))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:326:9+42 - assume {:print "$at(3,13328,13370)"} true; - assert {:msg "assert_failed(3,13328,13370): function does not abort under this condition"} + // assert Not(Not(exists[@98]($t7))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:393:9+42 + assume {:print "$at(3,16754,16796)"} true; + assert {:msg "assert_failed(3,16754,16796): function does not abort under this condition"} !!$ResourceExists($1_vesting_AdminStore_$memory#98, $t7); - // assert Not(Neq(Len([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), 32)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:327:9+44 - assume {:print "$at(3,13379,13423)"} true; - assert {:msg "assert_failed(3,13379,13423): function does not abort under this condition"} + // assert Not(Neq(Len([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), 32)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:394:9+44 + assume {:print "$at(3,16805,16849)"} true; + assert {:msg "assert_failed(3,16805,16849): function does not abort under this condition"} !!$IsEqual'num'(LenVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(0, 0, 0, 0), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0))), 32); - // assert Not(Gt(Add(select vesting::AdminStore.nonce($t8), 1), 18446744073709551615)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:328:9+42 - assume {:print "$at(3,13432,13474)"} true; - assert {:msg "assert_failed(3,13432,13474): function does not abort under this condition"} + // assert Not(Gt(Add(select vesting::AdminStore.nonce($t8), 1), 18446744073709551615)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:395:9+42 + assume {:print "$at(3,16858,16900)"} true; + assert {:msg "assert_failed(3,16858,16900): function does not abort under this condition"} !(($nonce#$1_vesting_AdminStore($t8) + 1) > 18446744073709551615); // assert Not(And($t15, Neq(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.signer_capability_offer($t17)))), 0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:465:9+60 @@ -30626,37 +31690,37 @@ L1: assert {:msg "assert_failed(73,1598,1630): function does not abort under this condition"} !(!$t15 && $ResourceExists($1_account_Account_$memory#99, $t14)); - // assert Not(And(Not(exists[@100]>($t14)), Not(type_info::spec_is_struct[]()))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:334:9+115 - assume {:print "$at(3,13786,13901)"} true; - assert {:msg "assert_failed(3,13786,13901): function does not abort under this condition"} + // assert Not(And(Not(exists[@100]>($t14)), Not(type_info::spec_is_struct[]()))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:401:9+115 + assume {:print "$at(3,17212,17327)"} true; + assert {:msg "assert_failed(3,17212,17327): function does not abort under this condition"} !(!$ResourceExists($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory#100, $t14) && !true); - // assert Not(And(And(Not(exists[@100]>($t14)), $t15), Gt(Add(select account::Account.guid_creation_num($t16), 2), 18446744073709551615))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:335:9+106 - assume {:print "$at(3,13910,14016)"} true; - assert {:msg "assert_failed(3,13910,14016): function does not abort under this condition"} + // assert Not(And(And(Not(exists[@100]>($t14)), $t15), Gt(Add(select account::Account.guid_creation_num($t16), 2), 18446744073709551615))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:402:9+106 + assume {:print "$at(3,17336,17442)"} true; + assert {:msg "assert_failed(3,17336,17442): function does not abort under this condition"} !((!$ResourceExists($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory#100, $t14) && $t15) && (($guid_creation_num#$1_account_Account($t16) + 2) > 18446744073709551615)); - // assert Not(And(And(Not(exists[@100]>($t14)), $t15), Ge(Add(select account::Account.guid_creation_num($t16), 2), 1125899906842624))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:336:9+130 - assume {:print "$at(3,14025,14155)"} true; - assert {:msg "assert_failed(3,14025,14155): function does not abort under this condition"} + // assert Not(And(And(Not(exists[@100]>($t14)), $t15), Ge(Add(select account::Account.guid_creation_num($t16), 2), 1125899906842624))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:403:9+130 + assume {:print "$at(3,17451,17581)"} true; + assert {:msg "assert_failed(3,17451,17581): function does not abort under this condition"} !((!$ResourceExists($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory#100, $t14) && $t15) && (($guid_creation_num#$1_account_Account($t16) + 2) >= 1125899906842624)); - // assert And(And(exists($t14), Eq>(select account::Account.authentication_key($t43), [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])), exists>($t14)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:337:9+175 - assume {:print "$at(3,14164,14339)"} true; - assert {:msg "assert_failed(3,14164,14339): post-condition does not hold"} + // assert And(And(exists($t14), Eq>(select account::Account.authentication_key($t43), [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])), exists>($t14)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:404:9+175 + assume {:print "$at(3,17590,17765)"} true; + assert {:msg "assert_failed(3,17590,17765): post-condition does not hold"} (($ResourceExists($1_account_Account_$memory, $t14) && $IsEqual'vec'u8''($authentication_key#$1_account_Account($t43), ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(0, 0, 0, 0), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)))) && $ResourceExists($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $t14)); - // assert Eq
(signer::$address_of($t38), $t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:339:9+54 - assume {:print "$at(3,14348,14402)"} true; - assert {:msg "assert_failed(3,14348,14402): post-condition does not hold"} + // assert Eq
(signer::$address_of($t38), $t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:406:9+54 + assume {:print "$at(3,17774,17828)"} true; + assert {:msg "assert_failed(3,17774,17828): post-condition does not hold"} $IsEqual'address'($1_signer_$address_of($t38), $t14); - // assert Eq
(select account::SignerCapability.account($t39), $t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:340:9+42 - assume {:print "$at(3,14411,14453)"} true; - assert {:msg "assert_failed(3,14411,14453): post-condition does not hold"} + // assert Eq
(select account::SignerCapability.account($t39), $t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:407:9+42 + assume {:print "$at(3,17837,17879)"} true; + assert {:msg "assert_failed(3,17837,17879): post-condition does not hold"} $IsEqual'address'($account#$1_account_SignerCapability($t39), $t14); - // return ($t38, $t39) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:340:9+42 + // return ($t38, $t39) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:407:9+42 $ret0 := $t38; $ret1 := $t39; return; @@ -30665,12 +31729,12 @@ L1: assume {:print "$at(2,43694,43695)"} true; L2: - // assert Or(Or(Or(Or(Or(Or(Or(Or(Or(Not(exists[@98]($t7)), Neq(Len([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), 32)), Gt(Add(select vesting::AdminStore.nonce($t8), 1), 18446744073709551615)), And($t15, Neq(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.signer_capability_offer($t17)))), 0))), And($t15, Neq(select account::Account.sequence_number($t17), 0))), And(Not($t15), Neq(Len($t18), 32))), And(Not($t15), exists[@99]($t14))), And(Not(exists[@100]>($t14)), Not(type_info::spec_is_struct[]()))), And(And(Not(exists[@100]>($t14)), $t15), Gt(Add(select account::Account.guid_creation_num($t16), 2), 18446744073709551615))), And(And(Not(exists[@100]>($t14)), $t15), Ge(Add(select account::Account.guid_creation_num($t16), 2), 1125899906842624))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:312:5+1731 - assume {:print "$at(3,12728,14459)"} true; - assert {:msg "assert_failed(3,12728,14459): abort not covered by any of the `aborts_if` clauses"} + // assert Or(Or(Or(Or(Or(Or(Or(Or(Or(Not(exists[@98]($t7)), Neq(Len([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), 32)), Gt(Add(select vesting::AdminStore.nonce($t8), 1), 18446744073709551615)), And($t15, Neq(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.signer_capability_offer($t17)))), 0))), And($t15, Neq(select account::Account.sequence_number($t17), 0))), And(Not($t15), Neq(Len($t18), 32))), And(Not($t15), exists[@99]($t14))), And(Not(exists[@100]>($t14)), Not(type_info::spec_is_struct[]()))), And(And(Not(exists[@100]>($t14)), $t15), Gt(Add(select account::Account.guid_creation_num($t16), 2), 18446744073709551615))), And(And(Not(exists[@100]>($t14)), $t15), Ge(Add(select account::Account.guid_creation_num($t16), 2), 1125899906842624))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:379:5+1731 + assume {:print "$at(3,16154,17885)"} true; + assert {:msg "assert_failed(3,16154,17885): abort not covered by any of the `aborts_if` clauses"} (((((((((!$ResourceExists($1_vesting_AdminStore_$memory#98, $t7) || !$IsEqual'num'(LenVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(0, 0, 0, 0), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0))), 32)) || (($nonce#$1_vesting_AdminStore($t8) + 1) > 18446744073709551615)) || ($t15 && !$IsEqual'num'(LenVec($vec#$1_option_Option'address'($for#$1_account_CapabilityOffer'$1_account_SignerCapability'($signer_capability_offer#$1_account_Account($t17)))), 0))) || ($t15 && !$IsEqual'u64'($sequence_number#$1_account_Account($t17), 0))) || (!$t15 && !$IsEqual'num'(LenVec($t18), 32))) || (!$t15 && $ResourceExists($1_account_Account_$memory#99, $t14))) || (!$ResourceExists($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory#100, $t14) && !true)) || ((!$ResourceExists($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory#100, $t14) && $t15) && (($guid_creation_num#$1_account_Account($t16) + 2) > 18446744073709551615))) || ((!$ResourceExists($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory#100, $t14) && $t15) && (($guid_creation_num#$1_account_Account($t16) + 2) >= 1125899906842624))); - // abort($t20) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:312:5+1731 + // abort($t20) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:379:5+1731 $abort_code := $t20; $abort_flag := true; return; @@ -30678,7 +31742,7 @@ L2: } // fun vesting::create_vesting_schedule [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:418:5+672 -procedure {:timeLimit 200} $1_vesting_create_vesting_schedule$verify(_$t0: Vec ($1_fixed_point32_FixedPoint32), _$t1: int, _$t2: int) returns ($ret0: $1_vesting_VestingSchedule) +procedure {:timeLimit 1000} $1_vesting_create_vesting_schedule$verify(_$t0: Vec ($1_fixed_point32_FixedPoint32), _$t1: int, _$t2: int) returns ($ret0: $1_vesting_VestingSchedule) { // declare local variables var $t3: int; @@ -30933,27 +31997,27 @@ L8: assume {:print "$at(2,20823,20824)"} true; L9: - // assert Not(Not(Gt(Len($t0), 0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:131:9+31 - assume {:print "$at(3,6115,6146)"} true; - assert {:msg "assert_failed(3,6115,6146): function does not abort under this condition"} + // assert Not(Not(Gt(Len($t0), 0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:129:9+31 + assume {:print "$at(3,6011,6042)"} true; + assert {:msg "assert_failed(3,6011,6042): function does not abort under this condition"} !!(LenVec($t0) > 0); - // assert Not(Not(Gt($t2, 0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:132:9+33 - assume {:print "$at(3,6155,6188)"} true; - assert {:msg "assert_failed(3,6155,6188): function does not abort under this condition"} + // assert Not(Not(Gt($t2, 0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:130:9+33 + assume {:print "$at(3,6051,6084)"} true; + assert {:msg "assert_failed(3,6051,6084): function does not abort under this condition"} !!($t2 > 0); - // assert Not(Not(exists[@45](0x1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:133:9+72 - assume {:print "$at(3,6197,6269)"} true; - assert {:msg "assert_failed(3,6197,6269): function does not abort under this condition"} + // assert Not(Not(exists[@45](0x1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:131:9+72 + assume {:print "$at(3,6093,6165)"} true; + assert {:msg "assert_failed(3,6093,6165): function does not abort under this condition"} !!$ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory#45, 1); - // assert Not(Not(Ge($t1, timestamp::$now_seconds[@45]()))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:134:9+62 - assume {:print "$at(3,6278,6340)"} true; - assert {:msg "assert_failed(3,6278,6340): function does not abort under this condition"} + // assert Not(Not(Ge($t1, timestamp::$now_seconds[@45]()))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:132:9+62 + assume {:print "$at(3,6174,6236)"} true; + assert {:msg "assert_failed(3,6174,6236): function does not abort under this condition"} !!($t1 >= $1_timestamp_$now_seconds($1_timestamp_CurrentTimeMicroseconds_$memory#45)); - // return $t18 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:134:9+62 + // return $t18 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:132:9+62 $ret0 := $t18; return; @@ -30961,12 +32025,12 @@ L9: assume {:print "$at(2,20823,20824)"} true; L10: - // assert Or(Or(Or(Not(Gt(Len($t0), 0)), Not(Gt($t2, 0))), Not(exists[@45](0x1))), Not(Ge($t1, timestamp::$now_seconds[@45]()))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:126:5+399 - assume {:print "$at(3,5947,6346)"} true; - assert {:msg "assert_failed(3,5947,6346): abort not covered by any of the `aborts_if` clauses"} + // assert Or(Or(Or(Not(Gt(Len($t0), 0)), Not(Gt($t2, 0))), Not(exists[@45](0x1))), Not(Ge($t1, timestamp::$now_seconds[@45]()))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:124:5+399 + assume {:print "$at(3,5843,6242)"} true; + assert {:msg "assert_failed(3,5843,6242): abort not covered by any of the `aborts_if` clauses"} (((!(LenVec($t0) > 0) || !($t2 > 0)) || !$ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory#45, 1)) || !($t1 >= $1_timestamp_$now_seconds($1_timestamp_CurrentTimeMicroseconds_$memory#45))); - // abort($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:126:5+399 + // abort($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:124:5+399 $abort_code := $t4; $abort_flag := true; return; @@ -30974,7 +32038,7 @@ L10: } // fun vesting::distribute_many [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:664:5+420 -procedure {:timeLimit 200} $1_vesting_distribute_many$verify(_$t0: Vec (int)) returns () +procedure {:timeLimit 1000} $1_vesting_distribute_many$verify(_$t0: Vec (int)) returns () { // declare local variables var $t1: int; @@ -30992,6 +32056,24 @@ procedure {:timeLimit 200} $1_vesting_distribute_many$verify(_$t0: Vec (int)) re var $t13: int; var $t14: int; var $t15: int; + var $t16: $1_vesting_VestingContract; + var $t17: $1_vesting_VestingContract; + var $t18: int; + var $t19: $1_staking_contract_Store; + var $t20: $1_staking_contract_StakingContract; + var $t21: Table int ($1_staking_contract_StakingContract); + var $t22: int; + var $t23: $1_stake_StakePool; + var $t24: int; + var $t25: int; + var $t26: int; + var $t27: int; + var $t28: $1_stake_StakePool; + var $t29: $1_stake_ValidatorSet; + var $t30: bool; + var $t31: int; + var $t32: int; + var $t33: int; var $t0: Vec (int); var $temp_0'u64': int; var $temp_0'vec'address'': Vec (int); @@ -31244,6 +32326,78 @@ L5: goto L9; } + // assume Identical($t16, global($t13)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:213:9+65 + assume {:print "$at(3,9717,9782)"} true; + assume ($t16 == $ResourceValue($1_vesting_VestingContract_$memory, $t13)); + + // assume Identical($t17, global($t13)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:518:9+65 + assume {:print "$at(3,23036,23101)"} true; + assume ($t17 == $ResourceValue($1_vesting_VestingContract_$memory, $t13)); + + // assume Identical($t18, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t16))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:455:9+49 + assume {:print "$at(3,19684,19733)"} true; + assume ($t18 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t16))); + + // assume Identical($t19, global($t13)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:459:9+62 + assume {:print "$at(3,19898,19960)"} true; + assume ($t19 == $ResourceValue($1_staking_contract_Store_$memory, $t13)); + + // assume Identical($t20, simple_map::spec_get(select staking_contract::Store.staking_contracts($t19), $t18)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:460:9+79 + assume {:print "$at(3,19969,20048)"} true; + assume ($t20 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($t19), $t18)); + + // assume Identical($t21, select staking_contract::Store.staking_contracts(global($t13))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 + assume {:print "$at(134,11481,11545)"} true; + assume ($t21 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t13))); + + // assume Identical($t22, select staking_contract::StakingContract.pool_address($t20)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:470:9+49 + assume {:print "$at(3,20547,20596)"} true; + assume ($t22 == $pool_address#$1_staking_contract_StakingContract($t20)); + + // assume Identical($t23, global($t22)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:472:9+56 + assume {:print "$at(3,20664,20720)"} true; + assume ($t23 == $ResourceValue($1_stake_StakePool_$memory, $t22)); + + // assume Identical($t24, select coin::Coin.value(select stake::StakePool.inactive($t23))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:473:9+41 + assume {:print "$at(3,20729,20770)"} true; + assume ($t24 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t23))); + + // assume Identical($t25, select coin::Coin.value(select stake::StakePool.pending_inactive($t23))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:474:9+57 + assume {:print "$at(3,20779,20836)"} true; + assume ($t25 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t23))); + + // assume Identical($t26, Add($t24, $t25)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:478:9+63 + assume {:print "$at(3,20948,21011)"} true; + assume ($t26 == ($t24 + $t25)); + + // assume Identical($t27, select stake::OwnerCapability.pool_address(select staking_contract::StakingContract.owner_cap($t20))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:479:9+61 + assume {:print "$at(3,21020,21081)"} true; + assume ($t27 == $pool_address#$1_stake_OwnerCapability($owner_cap#$1_staking_contract_StakingContract($t20))); + + // assume Identical($t28, global($t27)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:481:9+60 + assume {:print "$at(3,21151,21211)"} true; + assume ($t28 == $ResourceValue($1_stake_StakePool_$memory, $t27)); + + // assume Identical($t29, global(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:483:9+66 + assume {:print "$at(3,21286,21352)"} true; + assume ($t29 == $ResourceValue($1_stake_ValidatorSet_$memory, 1)); + + // assume Identical($t30, And(And(Not(stake::spec_contains(select stake::ValidatorSet.pending_active($t29), $t27)), Not(stake::spec_contains(select stake::ValidatorSet.active_validators($t29), $t27))), Not(stake::spec_contains(select stake::ValidatorSet.pending_inactive($t29), $t27)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:484:9+260 + assume {:print "$at(3,21361,21621)"} true; + assume ($t30 == ((!$1_stake_spec_contains($pending_active#$1_stake_ValidatorSet($t29), $t27) && !$1_stake_spec_contains($active_validators#$1_stake_ValidatorSet($t29), $t27)) && !$1_stake_spec_contains($pending_inactive#$1_stake_ValidatorSet($t29), $t27))); + + // assume Identical($t31, select coin::Coin.value(select stake::StakePool.inactive($t28))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:487:9+45 + assume {:print "$at(3,21630,21675)"} true; + assume ($t31 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t28))); + + // assume Identical($t32, select coin::Coin.value(select stake::StakePool.pending_inactive($t28))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:488:9+61 + assume {:print "$at(3,21684,21745)"} true; + assume ($t32 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t28))); + + // assume Identical($t33, Add($t31, $t32)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:489:9+53 + assume {:print "$at(3,21754,21807)"} true; + assume ($t33 == ($t31 + $t32)); + // vesting::distribute($t13) on_abort goto L9 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:671:13+28 assume {:print "$at(2,31880,31908)"} true; call $1_vesting_distribute($t13); @@ -31295,15 +32449,16 @@ L7: assume {:print "$at(2,31926,31927)"} true; L8: - // assert Not(false) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:673:5+1 - assume {:print "$at(2,31926,31927)"} true; - assert {:msg "assert_failed(2,31926,31927): function does not abort under this condition"} - !false; + // assert Not(Eq(Len
($t0), 0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:220:9+39 + assume {:print "$at(3,10004,10043)"} true; + assert {:msg "assert_failed(3,10004,10043): function does not abort under this condition"} + !$IsEqual'num'(LenVec($t0), 0); - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:673:5+1 + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:220:9+39 return; // label L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:673:5+1 + assume {:print "$at(2,31926,31927)"} true; L9: // abort($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:673:5+1 @@ -31410,7 +32565,7 @@ L4: } // fun vesting::get_beneficiary [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:965:5+287 -procedure {:timeLimit 200} $1_vesting_get_beneficiary$verify(_$t0: $1_vesting_VestingContract, _$t1: int) returns ($ret0: int) +procedure {:timeLimit 1000} $1_vesting_get_beneficiary$verify(_$t0: $1_vesting_VestingContract, _$t1: int) returns ($ret0: int) { // declare local variables var $t2: int; @@ -31499,12 +32654,12 @@ L2: assume {:print "$at(2,45570,45571)"} true; L3: - // assert Not(false) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:366:9+16 - assume {:print "$at(3,15410,15426)"} true; - assert {:msg "assert_failed(3,15410,15426): function does not abort under this condition"} + // assert Not(false) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:495:9+16 + assume {:print "$at(3,22068,22084)"} true; + assert {:msg "assert_failed(3,22068,22084): function does not abort under this condition"} !false; - // return $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:366:9+16 + // return $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:495:9+16 $ret0 := $t2; return; @@ -31512,12 +32667,12 @@ L3: assume {:print "$at(2,45570,45571)"} true; L4: - // assert false at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:365:5+112 - assume {:print "$at(3,15320,15432)"} true; - assert {:msg "assert_failed(3,15320,15432): abort not covered by any of the `aborts_if` clauses"} + // assert false at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:494:5+112 + assume {:print "$at(3,21978,22090)"} true; + assert {:msg "assert_failed(3,21978,22090): abort not covered by any of the `aborts_if` clauses"} false; - // abort($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:365:5+112 + // abort($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:494:5+112 $abort_code := $t5; $abort_flag := true; return; @@ -31549,8 +32704,8 @@ procedure {:inline 1} $1_vesting_get_role_holder(_$t0: int, _$t1: $1_string_Stri $t1 := _$t1; // bytecode translation starts here - // assume Identical($t3, select vesting::VestingAccountManagement.roles(global($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:298:9+69 - assume {:print "$at(3,12239,12308)"} true; + // assume Identical($t3, select vesting::VestingAccountManagement.roles(global($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:365:9+69 + assume {:print "$at(3,15665,15734)"} true; assume ($t3 == $roles#$1_vesting_VestingAccountManagement($ResourceValue($1_vesting_VestingAccountManagement_$memory, $t0))); // trace_local[contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:893:5+1 @@ -31710,7 +32865,7 @@ L7: } // fun vesting::get_role_holder [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:893:5+456 -procedure {:timeLimit 200} $1_vesting_get_role_holder$verify(_$t0: int, _$t1: $1_string_String) returns ($ret0: int) +procedure {:timeLimit 1000} $1_vesting_get_role_holder$verify(_$t0: int, _$t1: $1_string_String) returns ($ret0: int) { // declare local variables var $t2: Table int (int); @@ -31749,8 +32904,8 @@ procedure {:timeLimit 200} $1_vesting_get_role_holder$verify(_$t0: int, _$t1: $1 assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingAccountManagement_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingAccountManagement_$memory, $a_0); ($IsValid'$1_vesting_VestingAccountManagement'($rsc)))); - // assume Identical($t3, select vesting::VestingAccountManagement.roles(global($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:298:9+69 - assume {:print "$at(3,12239,12308)"} true; + // assume Identical($t3, select vesting::VestingAccountManagement.roles(global($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:365:9+69 + assume {:print "$at(3,15665,15734)"} true; assume ($t3 == $roles#$1_vesting_VestingAccountManagement($ResourceValue($1_vesting_VestingAccountManagement_$memory, $t0))); // @87 := save_mem(vesting::VestingAccountManagement) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:893:5+1 @@ -31896,17 +33051,17 @@ L5: assume {:print "$at(2,41670,41671)"} true; L6: - // assert Not(Not(exists[@87]($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:297:9+62 - assume {:print "$at(3,12168,12230)"} true; - assert {:msg "assert_failed(3,12168,12230): function does not abort under this condition"} + // assert Not(Not(exists[@87]($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:364:9+62 + assume {:print "$at(3,15594,15656)"} true; + assert {:msg "assert_failed(3,15594,15656): function does not abort under this condition"} !!$ResourceExists($1_vesting_VestingAccountManagement_$memory#87, $t0); - // assert Not(Not(simple_map::spec_contains_key[]($t3, $t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:299:9+53 - assume {:print "$at(3,12317,12370)"} true; - assert {:msg "assert_failed(3,12317,12370): function does not abort under this condition"} + // assert Not(Not(simple_map::spec_contains_key[]($t3, $t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:366:9+53 + assume {:print "$at(3,15743,15796)"} true; + assert {:msg "assert_failed(3,15743,15796): function does not abort under this condition"} !!$1_simple_map_spec_contains_key'$1_string_String_address'($t3, $t1); - // return $t13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:299:9+53 + // return $t13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:366:9+53 $ret0 := $t13; return; @@ -31914,12 +33069,12 @@ L6: assume {:print "$at(2,41670,41671)"} true; L7: - // assert Or(Not(exists[@87]($t0)), Not(simple_map::spec_contains_key[]($t3, $t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:296:5+289 - assume {:print "$at(3,12087,12376)"} true; - assert {:msg "assert_failed(3,12087,12376): abort not covered by any of the `aborts_if` clauses"} + // assert Or(Not(exists[@87]($t0)), Not(simple_map::spec_contains_key[]($t3, $t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:363:5+289 + assume {:print "$at(3,15513,15802)"} true; + assert {:msg "assert_failed(3,15513,15802): abort not covered by any of the `aborts_if` clauses"} (!$ResourceExists($1_vesting_VestingAccountManagement_$memory#87, $t0) || !$1_simple_map_spec_contains_key'$1_string_String_address'($t3, $t1)); - // abort($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:296:5+289 + // abort($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:363:5+289 $abort_code := $t7; $abort_flag := true; return; @@ -31927,7 +33082,7 @@ L7: } // fun vesting::get_vesting_account_signer [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:903:5+315 -procedure {:timeLimit 200} $1_vesting_get_vesting_account_signer$verify(_$t0: $signer, _$t1: int) returns ($ret0: $signer) +procedure {:timeLimit 1000} $1_vesting_get_vesting_account_signer$verify(_$t0: $signer, _$t1: int) returns ($ret0: $signer) { // declare local variables var $t2: $Mutation ($1_vesting_VestingContract); @@ -31963,8 +33118,8 @@ procedure {:timeLimit 200} $1_vesting_get_vesting_account_signer$verify(_$t0: $s (var j := $i_4; (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); - // assume Identical($t3, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:382:9+65 - assume {:print "$at(3,16064,16129)"} true; + // assume Identical($t3, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:511:9+65 + assume {:print "$at(3,22722,22787)"} true; assume ($t3 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); // @74 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:903:5+1 @@ -32043,17 +33198,17 @@ procedure {:timeLimit 200} $1_vesting_get_vesting_account_signer$verify(_$t0: $s assume {:print "$at(2,42237,42238)"} true; L1: - // assert Not(Not(exists[@74]($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:381:9+53 - assume {:print "$at(3,16002,16055)"} true; - assert {:msg "assert_failed(3,16002,16055): function does not abort under this condition"} + // assert Not(Not(exists[@74]($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:510:9+53 + assume {:print "$at(3,22660,22713)"} true; + assert {:msg "assert_failed(3,22660,22713): function does not abort under this condition"} !!$ResourceExists($1_vesting_VestingContract_$memory#74, $t1); - // assert Not(Neq
(signer::$address_of[]($t0), select vesting::VestingContract.admin($t3))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:383:9+62 - assume {:print "$at(3,16138,16200)"} true; - assert {:msg "assert_failed(3,16138,16200): function does not abort under this condition"} + // assert Not(Neq
(signer::$address_of[]($t0), select vesting::VestingContract.admin($t3))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:512:9+62 + assume {:print "$at(3,22796,22858)"} true; + assert {:msg "assert_failed(3,22796,22858): function does not abort under this condition"} !!$IsEqual'address'($1_signer_$address_of($t0), $admin#$1_vesting_VestingContract($t3)); - // return $t8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:383:9+62 + // return $t8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:512:9+62 $ret0 := $t8; return; @@ -32061,12 +33216,12 @@ L1: assume {:print "$at(2,42237,42238)"} true; L2: - // assert Or(Not(exists[@74]($t1)), Neq
(signer::$address_of[]($t0), select vesting::VestingContract.admin($t3))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:302:5+127 - assume {:print "$at(3,12382,12509)"} true; - assert {:msg "assert_failed(3,12382,12509): abort not covered by any of the `aborts_if` clauses"} + // assert Or(Not(exists[@74]($t1)), Neq
(signer::$address_of[]($t0), select vesting::VestingContract.admin($t3))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:369:5+127 + assume {:print "$at(3,15808,15935)"} true; + assert {:msg "assert_failed(3,15808,15935): abort not covered by any of the `aborts_if` clauses"} (!$ResourceExists($1_vesting_VestingContract_$memory#74, $t1) || !$IsEqual'address'($1_signer_$address_of($t0), $admin#$1_vesting_VestingContract($t3))); - // abort($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:302:5+127 + // abort($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:369:5+127 $abort_code := $t5; $abort_flag := true; return; @@ -32133,7 +33288,7 @@ L2: } // fun vesting::get_vesting_account_signer_internal [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:909:5+168 -procedure {:timeLimit 200} $1_vesting_get_vesting_account_signer_internal$verify(_$t0: $1_vesting_VestingContract) returns ($ret0: $signer) +procedure {:timeLimit 1000} $1_vesting_get_vesting_account_signer_internal$verify(_$t0: $1_vesting_VestingContract) returns ($ret0: $signer) { // declare local variables var $t1: $1_account_SignerCapability; @@ -32183,12 +33338,12 @@ procedure {:timeLimit 200} $1_vesting_get_vesting_account_signer_internal$verify assume {:print "$at(2,42411,42412)"} true; L1: - // assert Not(false) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:307:9+16 - assume {:print "$at(3,12610,12626)"} true; - assert {:msg "assert_failed(3,12610,12626): function does not abort under this condition"} + // assert Not(false) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:374:9+16 + assume {:print "$at(3,16036,16052)"} true; + assert {:msg "assert_failed(3,16036,16052): function does not abort under this condition"} !false; - // return $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:307:9+16 + // return $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:374:9+16 $ret0 := $t3; return; @@ -32196,12 +33351,12 @@ L1: assume {:print "$at(2,42411,42412)"} true; L2: - // assert false at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:306:5+117 - assume {:print "$at(3,12515,12632)"} true; - assert {:msg "assert_failed(3,12515,12632): abort not covered by any of the `aborts_if` clauses"} + // assert false at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:373:5+117 + assume {:print "$at(3,15941,16058)"} true; + assert {:msg "assert_failed(3,15941,16058): abort not covered by any of the `aborts_if` clauses"} false; - // abort($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:306:5+117 + // abort($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:373:5+117 $abort_code := $t4; $abort_flag := true; return; @@ -32209,7 +33364,7 @@ L2: } // fun vesting::operator_commission_percentage [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:302:5+275 -procedure {:timeLimit 200} $1_vesting_operator_commission_percentage$verify(_$t0: int) returns ($ret0: int) +procedure {:timeLimit 1000} $1_vesting_operator_commission_percentage$verify(_$t0: int) returns ($ret0: int) { // declare local variables var $t1: int; @@ -32305,7 +33460,7 @@ L2: } // fun vesting::period_duration_secs [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:271:5+268 -procedure {:timeLimit 200} $1_vesting_period_duration_secs$verify(_$t0: int) returns ($ret0: int) +procedure {:timeLimit 1000} $1_vesting_period_duration_secs$verify(_$t0: int) returns ($ret0: int) { // declare local variables var $t1: int; @@ -32401,7 +33556,7 @@ L2: } // fun vesting::remaining_grant [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:283:5+246 -procedure {:timeLimit 200} $1_vesting_remaining_grant$verify(_$t0: int) returns ($ret0: int) +procedure {:timeLimit 1000} $1_vesting_remaining_grant$verify(_$t0: int) returns ($ret0: int) { // declare local variables var $t1: int; @@ -32493,7 +33648,7 @@ L2: } // fun vesting::reset_beneficiary [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:843:5+755 -procedure {:timeLimit 200} $1_vesting_reset_beneficiary$verify(_$t0: $signer, _$t1: int, _$t2: int) returns () +procedure {:timeLimit 1000} $1_vesting_reset_beneficiary$verify(_$t0: $signer, _$t1: int, _$t2: int) returns () { // declare local variables var $t3: bool; @@ -32560,20 +33715,20 @@ procedure {:timeLimit 200} $1_vesting_reset_beneficiary$verify(_$t0: $signer, _$ (var j := $i_4; (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); - // assume Identical($t8, signer::$address_of($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:263:9+39 - assume {:print "$at(3,10667,10706)"} true; + // assume Identical($t8, signer::$address_of($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:330:9+39 + assume {:print "$at(3,14093,14132)"} true; assume ($t8 == $1_signer_$address_of($t0)); - // assume Identical($t9, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:264:9+65 - assume {:print "$at(3,10715,10780)"} true; + // assume Identical($t9, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:331:9+65 + assume {:print "$at(3,14141,14206)"} true; assume ($t9 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); - // assume Identical($t10, select vesting::VestingAccountManagement.roles(global($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:267:9+69 - assume {:print "$at(3,11013,11082)"} true; + // assume Identical($t10, select vesting::VestingAccountManagement.roles(global($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:334:9+69 + assume {:print "$at(3,14439,14508)"} true; assume ($t10 == $roles#$1_vesting_VestingAccountManagement($ResourceValue($1_vesting_VestingAccountManagement_$memory, $t1))); - // assume Identical($t11, string::spec_utf8([82, 79, 76, 69, 95, 66, 69, 78, 69, 70, 73, 67, 73, 65, 82, 89, 95, 82, 69, 83, 69, 84, 84, 69, 82])) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:268:9+61 - assume {:print "$at(3,11091,11152)"} true; + // assume Identical($t11, string::spec_utf8([82, 79, 76, 69, 95, 66, 69, 78, 69, 70, 73, 67, 73, 65, 82, 89, 95, 82, 69, 83, 69, 84, 84, 69, 82])) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:335:9+61 + assume {:print "$at(3,14517,14578)"} true; assume ($t11 == $1_string_spec_utf8(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(82, 79, 76, 69), MakeVec4(95, 66, 69, 78)), MakeVec4(69, 70, 73, 67)), MakeVec4(73, 65, 82, 89)), MakeVec4(95, 82, 69, 83)), MakeVec4(69, 84, 84, 69)), MakeVec1(82)))); // @103 := save_mem(vesting::VestingAccountManagement) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:843:5+1 @@ -32665,8 +33820,8 @@ L0: goto L10; } - // assume Identical($t20, select vesting::VestingAccountManagement.roles(global($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:298:9+69 - assume {:print "$at(3,12239,12308)"} true; + // assume Identical($t20, select vesting::VestingAccountManagement.roles(global($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:365:9+69 + assume {:print "$at(3,15665,15734)"} true; assume ($t20 == $roles#$1_vesting_VestingAccountManagement($ResourceValue($1_vesting_VestingAccountManagement_$memory, $t1))); // $t21 := vesting::get_role_holder($t1, $t19) on_abort goto L10 with $t13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:852:25+66 @@ -32841,53 +33996,53 @@ L8: assume {:print "$at(2,39931,39932)"} true; L9: - // assume Identical($t29, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:272:9+75 - assume {:print "$at(3,11354,11429)"} true; + // assume Identical($t29, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:339:9+75 + assume {:print "$at(3,14780,14855)"} true; assume ($t29 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); - // assert Not(Not(exists[@102]($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:261:9+53 - assume {:print "$at(3,10604,10657)"} true; - assert {:msg "assert_failed(3,10604,10657): function does not abort under this condition"} + // assert Not(Not(exists[@102]($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:328:9+53 + assume {:print "$at(3,14030,14083)"} true; + assert {:msg "assert_failed(3,14030,14083): function does not abort under this condition"} !!$ResourceExists($1_vesting_VestingContract_$memory#102, $t1); - // assert Not(And(Neq
($t8, select vesting::VestingContract.admin($t9)), Not(string::spec_internal_check_utf8[]([82, 79, 76, 69, 95, 66, 69, 78, 69, 70, 73, 67, 73, 65, 82, 89, 95, 82, 69, 83, 69, 84, 84, 69, 82])))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:265:9+110 - assume {:print "$at(3,10789,10899)"} true; - assert {:msg "assert_failed(3,10789,10899): function does not abort under this condition"} + // assert Not(And(Neq
($t8, select vesting::VestingContract.admin($t9)), Not(string::spec_internal_check_utf8[]([82, 79, 76, 69, 95, 66, 69, 78, 69, 70, 73, 67, 73, 65, 82, 89, 95, 82, 69, 83, 69, 84, 84, 69, 82])))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:332:9+110 + assume {:print "$at(3,14215,14325)"} true; + assert {:msg "assert_failed(3,14215,14325): function does not abort under this condition"} !(!$IsEqual'address'($t8, $admin#$1_vesting_VestingContract($t9)) && !$1_string_spec_internal_check_utf8(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(82, 79, 76, 69), MakeVec4(95, 66, 69, 78)), MakeVec4(69, 70, 73, 67)), MakeVec4(73, 65, 82, 89)), MakeVec4(95, 82, 69, 83)), MakeVec4(69, 84, 84, 69)), MakeVec1(82)))); - // assert Not(And(Neq
($t8, select vesting::VestingContract.admin($t9)), Not(exists[@103]($t1)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:266:9+96 - assume {:print "$at(3,10908,11004)"} true; - assert {:msg "assert_failed(3,10908,11004): function does not abort under this condition"} + // assert Not(And(Neq
($t8, select vesting::VestingContract.admin($t9)), Not(exists[@103]($t1)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:333:9+96 + assume {:print "$at(3,14334,14430)"} true; + assert {:msg "assert_failed(3,14334,14430): function does not abort under this condition"} !(!$IsEqual'address'($t8, $admin#$1_vesting_VestingContract($t9)) && !$ResourceExists($1_vesting_VestingAccountManagement_$memory#103, $t1)); - // assert Not(And(Neq
($t8, select vesting::VestingContract.admin($t9)), Not(simple_map::spec_contains_key[]($t10, $t11)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:269:9+88 - assume {:print "$at(3,11161,11249)"} true; - assert {:msg "assert_failed(3,11161,11249): function does not abort under this condition"} + // assert Not(And(Neq
($t8, select vesting::VestingContract.admin($t9)), Not(simple_map::spec_contains_key[]($t10, $t11)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:336:9+88 + assume {:print "$at(3,14587,14675)"} true; + assert {:msg "assert_failed(3,14587,14675): function does not abort under this condition"} !(!$IsEqual'address'($t8, $admin#$1_vesting_VestingContract($t9)) && !$1_simple_map_spec_contains_key'$1_string_String_address'($t10, $t11)); - // assert Not(And(Neq
($t8, select vesting::VestingContract.admin($t9)), Neq
($t8, simple_map::spec_get[]($t10, $t11)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:270:9+86 - assume {:print "$at(3,11258,11344)"} true; - assert {:msg "assert_failed(3,11258,11344): function does not abort under this condition"} + // assert Not(And(Neq
($t8, select vesting::VestingContract.admin($t9)), Neq
($t8, simple_map::spec_get[]($t10, $t11)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:337:9+86 + assume {:print "$at(3,14684,14770)"} true; + assert {:msg "assert_failed(3,14684,14770): function does not abort under this condition"} !(!$IsEqual'address'($t8, $admin#$1_vesting_VestingContract($t9)) && !$IsEqual'address'($t8, $1_simple_map_spec_get'$1_string_String_address'($t10, $t11))); - // assert Not(simple_map::spec_contains_key(select vesting::VestingContract.beneficiaries($t29), $t2)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:273:9+88 - assume {:print "$at(3,11438,11526)"} true; - assert {:msg "assert_failed(3,11438,11526): post-condition does not hold"} + // assert Not(simple_map::spec_contains_key(select vesting::VestingContract.beneficiaries($t29), $t2)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:340:9+88 + assume {:print "$at(3,14864,14952)"} true; + assert {:msg "assert_failed(3,14864,14952): post-condition does not hold"} !$1_simple_map_spec_contains_key'address_address'($beneficiaries#$1_vesting_VestingContract($t29), $t2); - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:273:9+88 + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:340:9+88 return; // label L10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:860:5+1 assume {:print "$at(2,39931,39932)"} true; L10: - // assert Or(Or(Or(Or(Not(exists[@102]($t1)), And(Neq
($t8, select vesting::VestingContract.admin($t9)), Not(string::spec_internal_check_utf8[]([82, 79, 76, 69, 95, 66, 69, 78, 69, 70, 73, 67, 73, 65, 82, 89, 95, 82, 69, 83, 69, 84, 84, 69, 82])))), And(Neq
($t8, select vesting::VestingContract.admin($t9)), Not(exists[@103]($t1)))), And(Neq
($t8, select vesting::VestingContract.admin($t9)), Not(simple_map::spec_contains_key[]($t10, $t11)))), And(Neq
($t8, select vesting::VestingContract.admin($t9)), Neq
($t8, simple_map::spec_get[]($t10, $t11)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:256:5+1060 - assume {:print "$at(3,10472,11532)"} true; - assert {:msg "assert_failed(3,10472,11532): abort not covered by any of the `aborts_if` clauses"} + // assert Or(Or(Or(Or(Not(exists[@102]($t1)), And(Neq
($t8, select vesting::VestingContract.admin($t9)), Not(string::spec_internal_check_utf8[]([82, 79, 76, 69, 95, 66, 69, 78, 69, 70, 73, 67, 73, 65, 82, 89, 95, 82, 69, 83, 69, 84, 84, 69, 82])))), And(Neq
($t8, select vesting::VestingContract.admin($t9)), Not(exists[@103]($t1)))), And(Neq
($t8, select vesting::VestingContract.admin($t9)), Not(simple_map::spec_contains_key[]($t10, $t11)))), And(Neq
($t8, select vesting::VestingContract.admin($t9)), Neq
($t8, simple_map::spec_get[]($t10, $t11)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:323:5+1060 + assume {:print "$at(3,13898,14958)"} true; + assert {:msg "assert_failed(3,13898,14958): abort not covered by any of the `aborts_if` clauses"} ((((!$ResourceExists($1_vesting_VestingContract_$memory#102, $t1) || (!$IsEqual'address'($t8, $admin#$1_vesting_VestingContract($t9)) && !$1_string_spec_internal_check_utf8(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(82, 79, 76, 69), MakeVec4(95, 66, 69, 78)), MakeVec4(69, 70, 73, 67)), MakeVec4(73, 65, 82, 89)), MakeVec4(95, 82, 69, 83)), MakeVec4(69, 84, 84, 69)), MakeVec1(82))))) || (!$IsEqual'address'($t8, $admin#$1_vesting_VestingContract($t9)) && !$ResourceExists($1_vesting_VestingAccountManagement_$memory#103, $t1))) || (!$IsEqual'address'($t8, $admin#$1_vesting_VestingContract($t9)) && !$1_simple_map_spec_contains_key'$1_string_String_address'($t10, $t11))) || (!$IsEqual'address'($t8, $admin#$1_vesting_VestingContract($t9)) && !$IsEqual'address'($t8, $1_simple_map_spec_get'$1_string_String_address'($t10, $t11)))); - // abort($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:256:5+1060 + // abort($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:323:5+1060 $abort_code := $t13; $abort_flag := true; return; @@ -32895,7 +34050,7 @@ L10: } // fun vesting::set_beneficiary [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:807:5+1396 -procedure {:timeLimit 200} $1_vesting_set_beneficiary$verify(_$t0: $signer, _$t1: int, _$t2: int, _$t3: int) returns () +procedure {:timeLimit 1000} $1_vesting_set_beneficiary$verify(_$t0: $signer, _$t1: int, _$t2: int, _$t3: int) returns () { // declare local variables var $t4: int; @@ -32984,8 +34139,8 @@ procedure {:timeLimit 200} $1_vesting_set_beneficiary$verify(_$t0: $signer, _$t1 (var j := $i_4; (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); - // assume Identical($t10, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:382:9+65 - assume {:print "$at(3,16064,16129)"} true; + // assume Identical($t10, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:511:9+65 + assume {:print "$at(3,22722,22787)"} true; assume ($t10 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); // @106 := save_mem(account::Account) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:807:5+1 @@ -33186,48 +34341,48 @@ L2: assume {:print "$at(2,39039,39040)"} true; L3: - // assume Identical($t23, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:252:9+70 - assume {:print "$at(3,10299,10369)"} true; + // assume Identical($t23, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:319:9+70 + assume {:print "$at(3,13725,13795)"} true; assume ($t23 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); - // assert Not(Not(account::$exists_at[@106]($t3))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:249:9+47 - assume {:print "$at(3,10130,10177)"} true; - assert {:msg "assert_failed(3,10130,10177): function does not abort under this condition"} + // assert Not(Not(account::$exists_at[@106]($t3))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:316:9+47 + assume {:print "$at(3,13556,13603)"} true; + assert {:msg "assert_failed(3,13556,13603): function does not abort under this condition"} !!$1_account_$exists_at($1_account_Account_$memory#106, $t3); - // assert Not(Not(coin::$is_account_registered[@107]($t3))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:250:9+67 - assume {:print "$at(3,10186,10253)"} true; - assert {:msg "assert_failed(3,10186,10253): function does not abort under this condition"} + // assert Not(Not(coin::$is_account_registered[@107]($t3))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:317:9+67 + assume {:print "$at(3,13612,13679)"} true; + assert {:msg "assert_failed(3,13612,13679): function does not abort under this condition"} !!$1_coin_$is_account_registered'$1_aptos_coin_AptosCoin'($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory#107, $t3); - // assert Not(Not(exists[@108]($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:381:9+53 - assume {:print "$at(3,16002,16055)"} true; - assert {:msg "assert_failed(3,16002,16055): function does not abort under this condition"} + // assert Not(Not(exists[@108]($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:510:9+53 + assume {:print "$at(3,22660,22713)"} true; + assert {:msg "assert_failed(3,22660,22713): function does not abort under this condition"} !!$ResourceExists($1_vesting_VestingContract_$memory#108, $t1); - // assert Not(Neq
(signer::$address_of[]($t0), select vesting::VestingContract.admin($t10))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:383:9+62 - assume {:print "$at(3,16138,16200)"} true; - assert {:msg "assert_failed(3,16138,16200): function does not abort under this condition"} + // assert Not(Neq
(signer::$address_of[]($t0), select vesting::VestingContract.admin($t10))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:512:9+62 + assume {:print "$at(3,22796,22858)"} true; + assert {:msg "assert_failed(3,22796,22858): function does not abort under this condition"} !!$IsEqual'address'($1_signer_$address_of($t0), $admin#$1_vesting_VestingContract($t10)); - // assert simple_map::spec_contains_key(select vesting::VestingContract.beneficiaries($t23), $t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:253:9+82 - assume {:print "$at(3,10378,10460)"} true; - assert {:msg "assert_failed(3,10378,10460): post-condition does not hold"} + // assert simple_map::spec_contains_key(select vesting::VestingContract.beneficiaries($t23), $t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:320:9+82 + assume {:print "$at(3,13804,13886)"} true; + assert {:msg "assert_failed(3,13804,13886): post-condition does not hold"} $1_simple_map_spec_contains_key'address_address'($beneficiaries#$1_vesting_VestingContract($t23), $t2); - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:253:9+82 + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:320:9+82 return; // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:839:5+1 assume {:print "$at(2,39039,39040)"} true; L4: - // assert Or(Or(Or(Not(account::$exists_at[@106]($t3)), Not(coin::$is_account_registered[@107]($t3))), Not(exists[@108]($t1))), Neq
(signer::$address_of[]($t0), select vesting::VestingContract.admin($t10))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:243:5+497 - assume {:print "$at(3,9969,10466)"} true; - assert {:msg "assert_failed(3,9969,10466): abort not covered by any of the `aborts_if` clauses"} + // assert Or(Or(Or(Not(account::$exists_at[@106]($t3)), Not(coin::$is_account_registered[@107]($t3))), Not(exists[@108]($t1))), Neq
(signer::$address_of[]($t0), select vesting::VestingContract.admin($t10))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:310:5+497 + assume {:print "$at(3,13395,13892)"} true; + assert {:msg "assert_failed(3,13395,13892): abort not covered by any of the `aborts_if` clauses"} (((!$1_account_$exists_at($1_account_Account_$memory#106, $t3) || !$1_coin_$is_account_registered'$1_aptos_coin_AptosCoin'($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory#107, $t3)) || !$ResourceExists($1_vesting_VestingContract_$memory#108, $t1)) || !$IsEqual'address'($1_signer_$address_of($t0), $admin#$1_vesting_VestingContract($t10))); - // abort($t11) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:243:5+497 + // abort($t11) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:310:5+497 $abort_code := $t11; $abort_flag := true; return; @@ -33235,7 +34390,7 @@ L4: } // fun vesting::set_beneficiary_resetter [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:885:5+314 -procedure {:timeLimit 200} $1_vesting_set_beneficiary_resetter$verify(_$t0: $signer, _$t1: int, _$t2: int) returns () +procedure {:timeLimit 1000} $1_vesting_set_beneficiary_resetter$verify(_$t0: $signer, _$t1: int, _$t2: int) returns () { // declare local variables var $t3: $1_vesting_VestingContract; @@ -33277,8 +34432,8 @@ procedure {:timeLimit 200} $1_vesting_set_beneficiary_resetter$verify(_$t0: $sig (var j := $i_4; (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); - // assume Identical($t3, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:373:9+65 - assume {:print "$at(3,15606,15671)"} true; + // assume Identical($t3, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:502:9+65 + assume {:print "$at(3,22264,22329)"} true; assume ($t3 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); // @101 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:885:5+1 @@ -33308,8 +34463,8 @@ procedure {:timeLimit 200} $1_vesting_set_beneficiary_resetter$verify(_$t0: $sig goto L2; } - // assume Identical($t7, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:373:9+65 - assume {:print "$at(3,15606,15671)"} true; + // assume Identical($t7, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:502:9+65 + assume {:print "$at(3,22264,22329)"} true; assume ($t7 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); // vesting::set_management_role($t0, $t1, $t5, $t2) on_abort goto L2 with $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:890:9+99 @@ -33326,22 +34481,22 @@ procedure {:timeLimit 200} $1_vesting_set_beneficiary_resetter$verify(_$t0: $sig assume {:print "$at(2,41208,41209)"} true; L1: - // assert Not(Not(string::spec_internal_check_utf8[]([82, 79, 76, 69, 95, 66, 69, 78, 69, 70, 73, 67, 73, 65, 82, 89, 95, 82, 69, 83, 69, 84, 84, 69, 82]))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:292:9+76 - assume {:print "$at(3,11956,12032)"} true; - assert {:msg "assert_failed(3,11956,12032): function does not abort under this condition"} + // assert Not(Not(string::spec_internal_check_utf8[]([82, 79, 76, 69, 95, 66, 69, 78, 69, 70, 73, 67, 73, 65, 82, 89, 95, 82, 69, 83, 69, 84, 84, 69, 82]))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:359:9+76 + assume {:print "$at(3,15382,15458)"} true; + assert {:msg "assert_failed(3,15382,15458): function does not abort under this condition"} !!$1_string_spec_internal_check_utf8(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(82, 79, 76, 69), MakeVec4(95, 66, 69, 78)), MakeVec4(69, 70, 73, 67)), MakeVec4(73, 65, 82, 89)), MakeVec4(95, 82, 69, 83)), MakeVec4(69, 84, 84, 69)), MakeVec1(82))); - // assert Not(Not(exists[@101]($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:372:9+53 - assume {:print "$at(3,15544,15597)"} true; - assert {:msg "assert_failed(3,15544,15597): function does not abort under this condition"} + // assert Not(Not(exists[@101]($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:501:9+53 + assume {:print "$at(3,22202,22255)"} true; + assert {:msg "assert_failed(3,22202,22255): function does not abort under this condition"} !!$ResourceExists($1_vesting_VestingContract_$memory#101, $t1); - // assert Not(Neq
(signer::$address_of[]($t0), select vesting::VestingContract.admin($t3))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:375:9+62 - assume {:print "$at(3,15828,15890)"} true; - assert {:msg "assert_failed(3,15828,15890): function does not abort under this condition"} + // assert Not(Neq
(signer::$address_of[]($t0), select vesting::VestingContract.admin($t3))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:504:9+62 + assume {:print "$at(3,22486,22548)"} true; + assert {:msg "assert_failed(3,22486,22548): function does not abort under this condition"} !!$IsEqual'address'($1_signer_$address_of($t0), $admin#$1_vesting_VestingContract($t3)); - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:375:9+62 + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:504:9+62 return; // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:891:5+1 @@ -33394,8 +34549,8 @@ procedure {:inline 1} $1_vesting_set_management_role(_$t0: $signer, _$t1: int, _ $t3 := _$t3; // bytecode translation starts here - // assume Identical($t8, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:373:9+65 - assume {:print "$at(3,15606,15671)"} true; + // assume Identical($t8, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:502:9+65 + assume {:print "$at(3,22264,22329)"} true; assume ($t8 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); // trace_local[admin]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:862:5+1 @@ -33626,7 +34781,7 @@ L7: } // fun vesting::set_management_role [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:862:5+951 -procedure {:timeLimit 200} $1_vesting_set_management_role$verify(_$t0: $signer, _$t1: int, _$t2: $1_string_String, _$t3: int) returns () +procedure {:timeLimit 1000} $1_vesting_set_management_role$verify(_$t0: $signer, _$t1: int, _$t2: $1_string_String, _$t3: int) returns () { // declare local variables var $t4: $signer; @@ -33690,8 +34845,8 @@ procedure {:timeLimit 200} $1_vesting_set_management_role$verify(_$t0: $signer, (var j := $i_4; (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); - // assume Identical($t8, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:373:9+65 - assume {:print "$at(3,15606,15671)"} true; + // assume Identical($t8, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:502:9+65 + assume {:print "$at(3,22264,22329)"} true; assume ($t8 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); // @85 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:862:5+1 @@ -33934,17 +35089,17 @@ L5: assume {:print "$at(2,40888,40889)"} true; L6: - // assert Not(Not(exists[@85]($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:372:9+53 - assume {:print "$at(3,15544,15597)"} true; - assert {:msg "assert_failed(3,15544,15597): function does not abort under this condition"} + // assert Not(Not(exists[@85]($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:501:9+53 + assume {:print "$at(3,22202,22255)"} true; + assert {:msg "assert_failed(3,22202,22255): function does not abort under this condition"} !!$ResourceExists($1_vesting_VestingContract_$memory#85, $t1); - // assert Not(Neq
(signer::$address_of[]($t0), select vesting::VestingContract.admin($t8))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:375:9+62 - assume {:print "$at(3,15828,15890)"} true; - assert {:msg "assert_failed(3,15828,15890): function does not abort under this condition"} + // assert Not(Neq
(signer::$address_of[]($t0), select vesting::VestingContract.admin($t8))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:504:9+62 + assume {:print "$at(3,22486,22548)"} true; + assert {:msg "assert_failed(3,22486,22548): function does not abort under this condition"} !!$IsEqual'address'($1_signer_$address_of($t0), $admin#$1_vesting_VestingContract($t8)); - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:375:9+62 + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:504:9+62 return; // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:883:5+1 @@ -33960,7 +35115,7 @@ L7: } // fun vesting::terminate_vesting_contract [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:676:5+1102 -procedure {:timeLimit 200} $1_vesting_terminate_vesting_contract$verify(_$t0: $signer, _$t1: int) returns () +procedure {:timeLimit 1000} $1_vesting_terminate_vesting_contract$verify(_$t0: $signer, _$t1: int) returns () { // declare local variables var $t2: int; @@ -33968,33 +35123,91 @@ procedure {:timeLimit 200} $1_vesting_terminate_vesting_contract$verify(_$t0: $s var $t4: int; var $t5: $Mutation ($1_vesting_VestingContract); var $t6: $1_vesting_VestingContract; - var $t7: int; - var $t8: $Mutation ($1_vesting_VestingContract); - var $t9: $1_vesting_VestingContract; - var $t10: $1_vesting_StakingInfo; - var $t11: int; + var $t7: $1_vesting_VestingContract; + var $t8: int; + var $t9: $1_staking_contract_Store; + var $t10: $1_staking_contract_StakingContract; + var $t11: Table int ($1_staking_contract_StakingContract); var $t12: int; - var $t13: int; + var $t13: $1_stake_StakePool; var $t14: int; var $t15: int; var $t16: int; - var $t17: bool; - var $t18: int; - var $t19: int; - var $t20: int; - var $t21: $Mutation (int); + var $t17: int; + var $t18: $1_stake_StakePool; + var $t19: $1_stake_ValidatorSet; + var $t20: bool; + var $t21: int; var $t22: int; - var $t23: $Mutation (int); + var $t23: int; var $t24: $1_vesting_VestingContract; - var $t25: $Mutation ($1_event_EventHandle'$1_vesting_TerminateEvent'); - var $t26: int; - var $t27: $1_vesting_TerminateEvent; + var $t25: int; + var $t26: $1_vesting_VestingContract; + var $t27: $1_vesting_VestingContract; + var $t28: int; + var $t29: $1_staking_contract_Store; + var $t30: $1_staking_contract_StakingContract; + var $t31: Table int ($1_staking_contract_StakingContract); + var $t32: int; + var $t33: $1_stake_StakePool; + var $t34: int; + var $t35: int; + var $t36: int; + var $t37: int; + var $t38: $1_stake_StakePool; + var $t39: $1_stake_ValidatorSet; + var $t40: bool; + var $t41: int; + var $t42: int; + var $t43: int; + var $t44: $Mutation ($1_vesting_VestingContract); + var $t45: $1_vesting_VestingContract; + var $t46: $1_vesting_StakingInfo; + var $t47: int; + var $t48: int; + var $t49: int; + var $t50: int; + var $t51: int; + var $t52: int; + var $t53: bool; + var $t54: int; + var $t55: int; + var $t56: int; + var $t57: $Mutation (int); + var $t58: int; + var $t59: $Mutation (int); + var $t60: $1_vesting_VestingContract; + var $t61: int; + var $t62: int; + var $t63: $1_staking_contract_Store; + var $t64: $1_staking_contract_StakingContract; + var $t65: Table int ($1_staking_contract_StakingContract); + var $t66: int; + var $t67: $1_stake_StakePool; + var $t68: int; + var $t69: int; + var $t70: int; + var $t71: int; + var $t72: $1_stake_StakePool; + var $t73: $1_stake_ValidatorSet; + var $t74: bool; + var $t75: int; + var $t76: int; + var $t77: int; + var $t78: $Mutation ($1_event_EventHandle'$1_vesting_TerminateEvent'); + var $t79: int; + var $t80: $1_vesting_TerminateEvent; var $t0: $signer; var $t1: int; var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; var $temp_0'address': int; var $temp_0'signer': $signer; var $temp_0'u64': int; + var $1_vesting_VestingContract_$memory#174: $Memory $1_vesting_VestingContract; + var $1_staking_contract_Store_$memory#175: $Memory $1_staking_contract_Store; + var $1_stake_StakePool_$memory#176: $Memory $1_stake_StakePool; + var $1_stake_ValidatorSet_$memory#177: $Memory $1_stake_ValidatorSet; + var $1_timestamp_CurrentTimeMicroseconds_$memory#178: $Memory $1_timestamp_CurrentTimeMicroseconds; $t0 := _$t0; $t1 := _$t1; @@ -34096,103 +35309,263 @@ procedure {:timeLimit 200} $1_vesting_terminate_vesting_contract$verify(_$t0: $s // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/reconfiguration.spec.move:8:9+137 assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> ($1_timestamp_spec_now_microseconds($1_timestamp_CurrentTimeMicroseconds_$memory) >= $1_reconfiguration_$last_reconfiguration_time($1_reconfiguration_Configuration_$memory))); - // trace_local[admin]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:676:5+1 - assume {:print "$track_local(57,26,0):", $t0} $t0 == $t0; + // assume Identical($t6, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:229:9+65 + assume {:print "$at(3,10320,10385)"} true; + assume ($t6 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); - // trace_local[contract_address]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:676:5+1 - assume {:print "$track_local(57,26,1):", $t1} $t1 == $t1; + // assume Identical($t7, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:518:9+65 + assume {:print "$at(3,23036,23101)"} true; + assume ($t7 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); - // assume Identical($t6, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:389:9+65 - assume {:print "$at(3,16378,16443)"} true; - assume ($t6 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); + // assume Identical($t8, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t6))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:455:9+49 + assume {:print "$at(3,19684,19733)"} true; + assume ($t8 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t6))); - // vesting::assert_active_vesting_contract($t1) on_abort goto L4 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:677:9+48 - assume {:print "$at(2,32145,32193)"} true; - call $1_vesting_assert_active_vesting_contract($t1); - if ($abort_flag) { - assume {:print "$at(2,32145,32193)"} true; - $t7 := $abort_code; - assume {:print "$track_abort(57,26):", $t7} $t7 == $t7; - goto L4; - } + // assume Identical($t9, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:459:9+62 + assume {:print "$at(3,19898,19960)"} true; + assume ($t9 == $ResourceValue($1_staking_contract_Store_$memory, $t1)); - // vesting::distribute($t1) on_abort goto L4 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:680:9+28 - assume {:print "$at(2,32315,32343)"} true; - call $1_vesting_distribute($t1); - if ($abort_flag) { - assume {:print "$at(2,32315,32343)"} true; - $t7 := $abort_code; - assume {:print "$track_abort(57,26):", $t7} $t7 == $t7; - goto L4; - } + // assume Identical($t10, simple_map::spec_get(select staking_contract::Store.staking_contracts($t9), $t8)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:460:9+79 + assume {:print "$at(3,19969,20048)"} true; + assume ($t10 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($t9), $t8)); - // $t8 := borrow_global($t1) on_abort goto L4 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:682:32+17 - assume {:print "$at(2,32377,32394)"} true; + // assume Identical($t11, select staking_contract::Store.staking_contracts(global($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 + assume {:print "$at(134,11481,11545)"} true; + assume ($t11 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t1))); + + // assume Identical($t12, select staking_contract::StakingContract.pool_address($t10)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:470:9+49 + assume {:print "$at(3,20547,20596)"} true; + assume ($t12 == $pool_address#$1_staking_contract_StakingContract($t10)); + + // assume Identical($t13, global($t12)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:472:9+56 + assume {:print "$at(3,20664,20720)"} true; + assume ($t13 == $ResourceValue($1_stake_StakePool_$memory, $t12)); + + // assume Identical($t14, select coin::Coin.value(select stake::StakePool.inactive($t13))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:473:9+41 + assume {:print "$at(3,20729,20770)"} true; + assume ($t14 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t13))); + + // assume Identical($t15, select coin::Coin.value(select stake::StakePool.pending_inactive($t13))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:474:9+57 + assume {:print "$at(3,20779,20836)"} true; + assume ($t15 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t13))); + + // assume Identical($t16, Add($t14, $t15)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:478:9+63 + assume {:print "$at(3,20948,21011)"} true; + assume ($t16 == ($t14 + $t15)); + + // assume Identical($t17, select stake::OwnerCapability.pool_address(select staking_contract::StakingContract.owner_cap($t10))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:479:9+61 + assume {:print "$at(3,21020,21081)"} true; + assume ($t17 == $pool_address#$1_stake_OwnerCapability($owner_cap#$1_staking_contract_StakingContract($t10))); + + // assume Identical($t18, global($t17)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:481:9+60 + assume {:print "$at(3,21151,21211)"} true; + assume ($t18 == $ResourceValue($1_stake_StakePool_$memory, $t17)); + + // assume Identical($t19, global(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:483:9+66 + assume {:print "$at(3,21286,21352)"} true; + assume ($t19 == $ResourceValue($1_stake_ValidatorSet_$memory, 1)); + + // assume Identical($t20, And(And(Not(stake::spec_contains(select stake::ValidatorSet.pending_active($t19), $t17)), Not(stake::spec_contains(select stake::ValidatorSet.active_validators($t19), $t17))), Not(stake::spec_contains(select stake::ValidatorSet.pending_inactive($t19), $t17)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:484:9+260 + assume {:print "$at(3,21361,21621)"} true; + assume ($t20 == ((!$1_stake_spec_contains($pending_active#$1_stake_ValidatorSet($t19), $t17) && !$1_stake_spec_contains($active_validators#$1_stake_ValidatorSet($t19), $t17)) && !$1_stake_spec_contains($pending_inactive#$1_stake_ValidatorSet($t19), $t17))); + + // assume Identical($t21, select coin::Coin.value(select stake::StakePool.inactive($t18))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:487:9+45 + assume {:print "$at(3,21630,21675)"} true; + assume ($t21 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t18))); + + // assume Identical($t22, select coin::Coin.value(select stake::StakePool.pending_inactive($t18))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:488:9+61 + assume {:print "$at(3,21684,21745)"} true; + assume ($t22 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t18))); + + // assume Identical($t23, Add($t21, $t22)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:489:9+53 + assume {:print "$at(3,21754,21807)"} true; + assume ($t23 == ($t21 + $t22)); + + // @178 := save_mem(timestamp::CurrentTimeMicroseconds) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:676:5+1 + assume {:print "$at(2,32023,32024)"} true; + $1_timestamp_CurrentTimeMicroseconds_$memory#178 := $1_timestamp_CurrentTimeMicroseconds_$memory; + + // @176 := save_mem(stake::StakePool) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:676:5+1 + $1_stake_StakePool_$memory#176 := $1_stake_StakePool_$memory; + + // @177 := save_mem(stake::ValidatorSet) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:676:5+1 + $1_stake_ValidatorSet_$memory#177 := $1_stake_ValidatorSet_$memory; + + // @175 := save_mem(staking_contract::Store) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:676:5+1 + $1_staking_contract_Store_$memory#175 := $1_staking_contract_Store_$memory; + + // @174 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:676:5+1 + $1_vesting_VestingContract_$memory#174 := $1_vesting_VestingContract_$memory; + + // trace_local[admin]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:676:5+1 + assume {:print "$track_local(57,26,0):", $t0} $t0 == $t0; + + // trace_local[contract_address]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:676:5+1 + assume {:print "$track_local(57,26,1):", $t1} $t1 == $t1; + + // assume Identical($t24, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:518:9+65 + assume {:print "$at(3,23036,23101)"} true; + assume ($t24 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); + + // vesting::assert_active_vesting_contract($t1) on_abort goto L4 with $t25 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:677:9+48 + assume {:print "$at(2,32145,32193)"} true; + call $1_vesting_assert_active_vesting_contract($t1); + if ($abort_flag) { + assume {:print "$at(2,32145,32193)"} true; + $t25 := $abort_code; + assume {:print "$track_abort(57,26):", $t25} $t25 == $t25; + goto L4; + } + + // assume Identical($t26, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:213:9+65 + assume {:print "$at(3,9717,9782)"} true; + assume ($t26 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); + + // assume Identical($t27, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:518:9+65 + assume {:print "$at(3,23036,23101)"} true; + assume ($t27 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); + + // assume Identical($t28, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t26))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:455:9+49 + assume {:print "$at(3,19684,19733)"} true; + assume ($t28 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t26))); + + // assume Identical($t29, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:459:9+62 + assume {:print "$at(3,19898,19960)"} true; + assume ($t29 == $ResourceValue($1_staking_contract_Store_$memory, $t1)); + + // assume Identical($t30, simple_map::spec_get(select staking_contract::Store.staking_contracts($t29), $t28)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:460:9+79 + assume {:print "$at(3,19969,20048)"} true; + assume ($t30 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($t29), $t28)); + + // assume Identical($t31, select staking_contract::Store.staking_contracts(global($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 + assume {:print "$at(134,11481,11545)"} true; + assume ($t31 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t1))); + + // assume Identical($t32, select staking_contract::StakingContract.pool_address($t30)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:470:9+49 + assume {:print "$at(3,20547,20596)"} true; + assume ($t32 == $pool_address#$1_staking_contract_StakingContract($t30)); + + // assume Identical($t33, global($t32)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:472:9+56 + assume {:print "$at(3,20664,20720)"} true; + assume ($t33 == $ResourceValue($1_stake_StakePool_$memory, $t32)); + + // assume Identical($t34, select coin::Coin.value(select stake::StakePool.inactive($t33))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:473:9+41 + assume {:print "$at(3,20729,20770)"} true; + assume ($t34 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t33))); + + // assume Identical($t35, select coin::Coin.value(select stake::StakePool.pending_inactive($t33))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:474:9+57 + assume {:print "$at(3,20779,20836)"} true; + assume ($t35 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t33))); + + // assume Identical($t36, Add($t34, $t35)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:478:9+63 + assume {:print "$at(3,20948,21011)"} true; + assume ($t36 == ($t34 + $t35)); + + // assume Identical($t37, select stake::OwnerCapability.pool_address(select staking_contract::StakingContract.owner_cap($t30))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:479:9+61 + assume {:print "$at(3,21020,21081)"} true; + assume ($t37 == $pool_address#$1_stake_OwnerCapability($owner_cap#$1_staking_contract_StakingContract($t30))); + + // assume Identical($t38, global($t37)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:481:9+60 + assume {:print "$at(3,21151,21211)"} true; + assume ($t38 == $ResourceValue($1_stake_StakePool_$memory, $t37)); + + // assume Identical($t39, global(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:483:9+66 + assume {:print "$at(3,21286,21352)"} true; + assume ($t39 == $ResourceValue($1_stake_ValidatorSet_$memory, 1)); + + // assume Identical($t40, And(And(Not(stake::spec_contains(select stake::ValidatorSet.pending_active($t39), $t37)), Not(stake::spec_contains(select stake::ValidatorSet.active_validators($t39), $t37))), Not(stake::spec_contains(select stake::ValidatorSet.pending_inactive($t39), $t37)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:484:9+260 + assume {:print "$at(3,21361,21621)"} true; + assume ($t40 == ((!$1_stake_spec_contains($pending_active#$1_stake_ValidatorSet($t39), $t37) && !$1_stake_spec_contains($active_validators#$1_stake_ValidatorSet($t39), $t37)) && !$1_stake_spec_contains($pending_inactive#$1_stake_ValidatorSet($t39), $t37))); + + // assume Identical($t41, select coin::Coin.value(select stake::StakePool.inactive($t38))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:487:9+45 + assume {:print "$at(3,21630,21675)"} true; + assume ($t41 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t38))); + + // assume Identical($t42, select coin::Coin.value(select stake::StakePool.pending_inactive($t38))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:488:9+61 + assume {:print "$at(3,21684,21745)"} true; + assume ($t42 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t38))); + + // assume Identical($t43, Add($t41, $t42)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:489:9+53 + assume {:print "$at(3,21754,21807)"} true; + assume ($t43 == ($t41 + $t42)); + + // vesting::distribute($t1) on_abort goto L4 with $t25 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:680:9+28 + assume {:print "$at(2,32315,32343)"} true; + call $1_vesting_distribute($t1); + if ($abort_flag) { + assume {:print "$at(2,32315,32343)"} true; + $t25 := $abort_code; + assume {:print "$track_abort(57,26):", $t25} $t25 == $t25; + goto L4; + } + + // $t44 := borrow_global($t1) on_abort goto L4 with $t25 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:682:32+17 + assume {:print "$at(2,32377,32394)"} true; if (!$ResourceExists($1_vesting_VestingContract_$memory, $t1)) { call $ExecFailureAbort(); } else { - $t8 := $Mutation($Global($t1), EmptyVec(), $ResourceValue($1_vesting_VestingContract_$memory, $t1)); + $t44 := $Mutation($Global($t1), EmptyVec(), $ResourceValue($1_vesting_VestingContract_$memory, $t1)); } if ($abort_flag) { assume {:print "$at(2,32377,32394)"} true; - $t7 := $abort_code; - assume {:print "$track_abort(57,26):", $t7} $t7 == $t7; + $t25 := $abort_code; + assume {:print "$track_abort(57,26):", $t25} $t25 == $t25; goto L4; } - // trace_local[vesting_contract]($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:682:13+16 - $temp_0'$1_vesting_VestingContract' := $Dereference($t8); + // trace_local[vesting_contract]($t44) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:682:13+16 + $temp_0'$1_vesting_VestingContract' := $Dereference($t44); assume {:print "$track_local(57,26,5):", $temp_0'$1_vesting_VestingContract'} $temp_0'$1_vesting_VestingContract' == $temp_0'$1_vesting_VestingContract'; - // $t9 := read_ref($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:683:21+25 + // $t45 := read_ref($t44) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:683:21+25 assume {:print "$at(2,32451,32476)"} true; - $t9 := $Dereference($t8); + $t45 := $Dereference($t44); - // vesting::verify_admin($t0, $t9) on_abort goto L4 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:683:9+37 - call $1_vesting_verify_admin($t0, $t9); + // vesting::verify_admin($t0, $t45) on_abort goto L4 with $t25 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:683:9+37 + call $1_vesting_verify_admin($t0, $t45); if ($abort_flag) { assume {:print "$at(2,32439,32476)"} true; - $t7 := $abort_code; - assume {:print "$track_abort(57,26):", $t7} $t7 == $t7; + $t25 := $abort_code; + assume {:print "$track_abort(57,26):", $t25} $t25 == $t25; goto L4; } - // $t10 := get_field.staking($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:684:75+24 + // $t46 := get_field.staking($t44) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:684:75+24 assume {:print "$at(2,32552,32576)"} true; - $t10 := $staking#$1_vesting_VestingContract($Dereference($t8)); + $t46 := $staking#$1_vesting_VestingContract($Dereference($t44)); - // $t11 := get_field.pool_address($t10) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:684:75+37 - $t11 := $pool_address#$1_vesting_StakingInfo($t10); + // $t47 := get_field.pool_address($t46) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:684:75+37 + $t47 := $pool_address#$1_vesting_StakingInfo($t46); - // ($t12, $t13, $t14, $t15) := stake::get_stake($t11) on_abort goto L4 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:684:58+55 - call $t12,$t13,$t14,$t15 := $1_stake_get_stake($t11); + // ($t48, $t49, $t50, $t51) := stake::get_stake($t47) on_abort goto L4 with $t25 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:684:58+55 + call $t48,$t49,$t50,$t51 := $1_stake_get_stake($t47); if ($abort_flag) { assume {:print "$at(2,32535,32590)"} true; - $t7 := $abort_code; - assume {:print "$track_abort(57,26):", $t7} $t7 == $t7; + $t25 := $abort_code; + assume {:print "$track_abort(57,26):", $t25} $t25 == $t25; goto L4; } - // destroy($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:684:53+1 + // destroy($t51) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:684:53+1 - // trace_local[pending_active_stake]($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:684:31+20 - assume {:print "$track_local(57,26,4):", $t14} $t14 == $t14; + // trace_local[pending_active_stake]($t50) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:684:31+20 + assume {:print "$track_local(57,26,4):", $t50} $t50 == $t50; - // destroy($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:684:28+1 + // destroy($t49) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:684:28+1 - // trace_local[active_stake]($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:684:14+12 - assume {:print "$track_local(57,26,3):", $t12} $t12 == $t12; + // trace_local[active_stake]($t48) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:684:14+12 + assume {:print "$track_local(57,26,3):", $t48} $t48 == $t48; - // $t16 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:685:41+1 + // $t52 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:685:41+1 assume {:print "$at(2,32632,32633)"} true; - $t16 := 0; - assume $IsValid'u64'($t16); + $t52 := 0; + assume $IsValid'u64'($t52); - // $t17 := ==($t14, $t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:685:38+2 - $t17 := $IsEqual'u64'($t14, $t16); + // $t53 := ==($t50, $t52) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:685:38+2 + $t53 := $IsEqual'u64'($t50, $t52); - // if ($t17) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:685:9+78 - if ($t17) { goto L1; } else { goto L0; } + // if ($t53) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:685:9+78 + if ($t53) { goto L1; } else { goto L0; } // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:685:9+78 L1: @@ -34204,42 +35577,42 @@ L1: // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:685:9+78 L0: - // assert forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t8)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t8)), addr)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 + // assert forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t44)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t44)), addr)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 assume {:print "$at(59,538,673)"} true; assert {:msg "assert_failed(59,538,673): data invariant does not hold"} - (forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t8))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t8))), addr)))); + (forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t44))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t44))), addr)))); - // assert forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t8)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t8)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t8)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t8)), j)), Eq(i, j)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 + // assert forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t44)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t44)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t44)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t44)), j)), Eq(i, j)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 assume {:print "$at(59,738,867)"} true; assert {:msg "assert_failed(59,738,867): data invariant does not hold"} - (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t8))))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t8))))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; + (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t44))))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t44))))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; (var j := $i_3; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t8))), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t8))), j)) ==> $IsEqual'num'(i, j)))))))); + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t44))), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t44))), j)) ==> $IsEqual'num'(i, j)))))))); - // destroy($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:685:9+78 + // destroy($t44) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:685:9+78 assume {:print "$at(2,32600,32678)"} true; - // $t18 := 11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:685:65+20 - $t18 := 11; - assume $IsValid'u64'($t18); + // $t54 := 11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:685:65+20 + $t54 := 11; + assume $IsValid'u64'($t54); - // $t19 := error::invalid_state($t18) on_abort goto L4 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:685:44+42 - call $t19 := $1_error_invalid_state($t18); + // $t55 := error::invalid_state($t54) on_abort goto L4 with $t25 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:685:44+42 + call $t55 := $1_error_invalid_state($t54); if ($abort_flag) { assume {:print "$at(2,32635,32677)"} true; - $t7 := $abort_code; - assume {:print "$track_abort(57,26):", $t7} $t7 == $t7; + $t25 := $abort_code; + assume {:print "$track_abort(57,26):", $t25} $t25 == $t25; goto L4; } - // trace_abort($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:685:9+78 + // trace_abort($t55) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:685:9+78 assume {:print "$at(2,32600,32678)"} true; - assume {:print "$track_abort(57,26):", $t19} $t19 == $t19; + assume {:print "$track_abort(57,26):", $t55} $t55 == $t55; - // $t7 := move($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:685:9+78 - $t7 := $t19; + // $t25 := move($t55) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:685:9+78 + $t25 := $t55; // goto L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:685:9+78 goto L4; @@ -34248,104 +35621,214 @@ L0: assume {:print "$at(2,32760,32783)"} true; L2: - // $t20 := 2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:688:34+23 + // $t56 := 2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:688:34+23 assume {:print "$at(2,32760,32783)"} true; - $t20 := 2; - assume $IsValid'u64'($t20); + $t56 := 2; + assume $IsValid'u64'($t56); - // $t21 := borrow_field.state($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:688:9+22 - $t21 := $ChildMutation($t8, 0, $state#$1_vesting_VestingContract($Dereference($t8))); + // $t57 := borrow_field.state($t44) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:688:9+22 + $t57 := $ChildMutation($t44, 0, $state#$1_vesting_VestingContract($Dereference($t44))); - // write_ref($t21, $t20) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:688:9+48 - $t21 := $UpdateMutation($t21, $t20); + // write_ref($t57, $t56) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:688:9+48 + $t57 := $UpdateMutation($t57, $t56); - // write_back[Reference($t8).state (u64)]($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:688:9+48 - $t8 := $UpdateMutation($t8, $Update'$1_vesting_VestingContract'_state($Dereference($t8), $Dereference($t21))); + // write_back[Reference($t44).state (u64)]($t57) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:688:9+48 + $t44 := $UpdateMutation($t44, $Update'$1_vesting_VestingContract'_state($Dereference($t44), $Dereference($t57))); - // $t22 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:689:44+1 + // $t58 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:689:44+1 assume {:print "$at(2,32828,32829)"} true; - $t22 := 0; - assume $IsValid'u64'($t22); + $t58 := 0; + assume $IsValid'u64'($t58); - // $t23 := borrow_field.remaining_grant($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:689:9+32 - $t23 := $ChildMutation($t8, 7, $remaining_grant#$1_vesting_VestingContract($Dereference($t8))); + // $t59 := borrow_field.remaining_grant($t44) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:689:9+32 + $t59 := $ChildMutation($t44, 7, $remaining_grant#$1_vesting_VestingContract($Dereference($t44))); - // write_ref($t23, $t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:689:9+36 - $t23 := $UpdateMutation($t23, $t22); + // write_ref($t59, $t58) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:689:9+36 + $t59 := $UpdateMutation($t59, $t58); - // write_back[Reference($t8).remaining_grant (u64)]($t23) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:689:9+36 - $t8 := $UpdateMutation($t8, $Update'$1_vesting_VestingContract'_remaining_grant($Dereference($t8), $Dereference($t23))); + // write_back[Reference($t44).remaining_grant (u64)]($t59) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:689:9+36 + $t44 := $UpdateMutation($t44, $Update'$1_vesting_VestingContract'_remaining_grant($Dereference($t44), $Dereference($t59))); - // $t24 := read_ref($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:690:21+32 + // $t60 := read_ref($t44) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:690:21+32 assume {:print "$at(2,32851,32883)"} true; - $t24 := $Dereference($t8); + $t60 := $Dereference($t44); + + // assume Identical($t61, select account::SignerCapability.account(select vesting::VestingContract.signer_cap($t60))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:434:9+46 + assume {:print "$at(3,18724,18770)"} true; + assume ($t61 == $account#$1_account_SignerCapability($signer_cap#$1_vesting_VestingContract($t60))); + + // assume Identical($t62, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t60))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:435:9+49 + assume {:print "$at(3,18779,18828)"} true; + assume ($t62 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t60))); + + // assume Identical($t63, global($t61)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:439:9+49 + assume {:print "$at(3,18996,19045)"} true; + assume ($t63 == $ResourceValue($1_staking_contract_Store_$memory, $t61)); + + // assume Identical($t64, simple_map::spec_get(select staking_contract::Store.staking_contracts($t63), $t62)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:440:9+79 + assume {:print "$at(3,19054,19133)"} true; + assume ($t64 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($t63), $t62)); + + // assume Identical($t65, select staking_contract::Store.staking_contracts(global($t61))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 + assume {:print "$at(134,11481,11545)"} true; + assume ($t65 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t61))); + + // assume Identical($t66, select staking_contract::StakingContract.pool_address($t64)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:470:9+49 + assume {:print "$at(3,20547,20596)"} true; + assume ($t66 == $pool_address#$1_staking_contract_StakingContract($t64)); + + // assume Identical($t67, global($t66)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:472:9+56 + assume {:print "$at(3,20664,20720)"} true; + assume ($t67 == $ResourceValue($1_stake_StakePool_$memory, $t66)); + + // assume Identical($t68, select coin::Coin.value(select stake::StakePool.inactive($t67))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:473:9+41 + assume {:print "$at(3,20729,20770)"} true; + assume ($t68 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t67))); - // vesting::unlock_stake($t24, $t12) on_abort goto L4 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:690:9+44 - call $1_vesting_unlock_stake($t24, $t12); + // assume Identical($t69, select coin::Coin.value(select stake::StakePool.pending_inactive($t67))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:474:9+57 + assume {:print "$at(3,20779,20836)"} true; + assume ($t69 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t67))); + + // assume Identical($t70, Add($t68, $t69)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:478:9+63 + assume {:print "$at(3,20948,21011)"} true; + assume ($t70 == ($t68 + $t69)); + + // assume Identical($t71, select stake::OwnerCapability.pool_address(select staking_contract::StakingContract.owner_cap($t64))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:479:9+61 + assume {:print "$at(3,21020,21081)"} true; + assume ($t71 == $pool_address#$1_stake_OwnerCapability($owner_cap#$1_staking_contract_StakingContract($t64))); + + // assume Identical($t72, global($t71)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:481:9+60 + assume {:print "$at(3,21151,21211)"} true; + assume ($t72 == $ResourceValue($1_stake_StakePool_$memory, $t71)); + + // assume Identical($t73, global(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:483:9+66 + assume {:print "$at(3,21286,21352)"} true; + assume ($t73 == $ResourceValue($1_stake_ValidatorSet_$memory, 1)); + + // assume Identical($t74, And(And(Not(stake::spec_contains(select stake::ValidatorSet.pending_active($t73), $t71)), Not(stake::spec_contains(select stake::ValidatorSet.active_validators($t73), $t71))), Not(stake::spec_contains(select stake::ValidatorSet.pending_inactive($t73), $t71)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:484:9+260 + assume {:print "$at(3,21361,21621)"} true; + assume ($t74 == ((!$1_stake_spec_contains($pending_active#$1_stake_ValidatorSet($t73), $t71) && !$1_stake_spec_contains($active_validators#$1_stake_ValidatorSet($t73), $t71)) && !$1_stake_spec_contains($pending_inactive#$1_stake_ValidatorSet($t73), $t71))); + + // assume Identical($t75, select coin::Coin.value(select stake::StakePool.inactive($t72))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:487:9+45 + assume {:print "$at(3,21630,21675)"} true; + assume ($t75 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t72))); + + // assume Identical($t76, select coin::Coin.value(select stake::StakePool.pending_inactive($t72))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:488:9+61 + assume {:print "$at(3,21684,21745)"} true; + assume ($t76 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t72))); + + // assume Identical($t77, Add($t75, $t76)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:489:9+53 + assume {:print "$at(3,21754,21807)"} true; + assume ($t77 == ($t75 + $t76)); + + // vesting::unlock_stake($t60, $t48) on_abort goto L4 with $t25 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:690:9+44 + assume {:print "$at(2,32839,32883)"} true; + call $1_vesting_unlock_stake($t60, $t48); if ($abort_flag) { assume {:print "$at(2,32839,32883)"} true; - $t7 := $abort_code; - assume {:print "$track_abort(57,26):", $t7} $t7 == $t7; + $t25 := $abort_code; + assume {:print "$track_abort(57,26):", $t25} $t25 == $t25; goto L4; } - // $t25 := borrow_field.terminate_events($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:693:13+38 + // $t78 := borrow_field.terminate_events($t44) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:693:13+38 assume {:print "$at(2,32918,32956)"} true; - $t25 := $ChildMutation($t8, 16, $terminate_events#$1_vesting_VestingContract($Dereference($t8))); + $t78 := $ChildMutation($t44, 16, $terminate_events#$1_vesting_VestingContract($Dereference($t44))); - // $t26 := get_field.admin($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:695:24+22 + // $t79 := get_field.admin($t44) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:695:24+22 assume {:print "$at(2,33010,33032)"} true; - $t26 := $admin#$1_vesting_VestingContract($Dereference($t8)); + $t79 := $admin#$1_vesting_VestingContract($Dereference($t44)); - // $t27 := pack vesting::TerminateEvent($t26, $t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:694:13+137 + // $t80 := pack vesting::TerminateEvent($t79, $t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:694:13+137 assume {:print "$at(2,32970,33107)"} true; - $t27 := $1_vesting_TerminateEvent($t26, $t1); + $t80 := $1_vesting_TerminateEvent($t79, $t1); - // opaque begin: event::emit_event($t25, $t27) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:692:9+224 + // opaque begin: event::emit_event($t78, $t80) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:692:9+224 assume {:print "$at(2,32894,33118)"} true; - // opaque end: event::emit_event($t25, $t27) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:692:9+224 + // opaque end: event::emit_event($t78, $t80) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:692:9+224 - // write_back[Reference($t8).terminate_events (event::EventHandle)]($t25) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:692:9+224 - $t8 := $UpdateMutation($t8, $Update'$1_vesting_VestingContract'_terminate_events($Dereference($t8), $Dereference($t25))); + // write_back[Reference($t44).terminate_events (event::EventHandle)]($t78) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:692:9+224 + $t44 := $UpdateMutation($t44, $Update'$1_vesting_VestingContract'_terminate_events($Dereference($t44), $Dereference($t78))); - // assert forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t8)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t8)), addr)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 + // assert forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t44)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t44)), addr)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 assume {:print "$at(59,538,673)"} true; assert {:msg "assert_failed(59,538,673): data invariant does not hold"} - (forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t8))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t8))), addr)))); + (forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t44))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t44))), addr)))); - // assert forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t8)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t8)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t8)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t8)), j)), Eq(i, j)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 + // assert forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t44)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t44)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t44)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t44)), j)), Eq(i, j)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 assume {:print "$at(59,738,867)"} true; assert {:msg "assert_failed(59,738,867): data invariant does not hold"} - (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t8))))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t8))))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; + (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t44))))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t44))))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; (var j := $i_3; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t8))), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t8))), j)) ==> $IsEqual'num'(i, j)))))))); + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t44))), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t44))), j)) ==> $IsEqual'num'(i, j)))))))); - // write_back[vesting::VestingContract@]($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:692:9+224 + // write_back[vesting::VestingContract@]($t44) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:692:9+224 assume {:print "$at(2,32894,33118)"} true; - $1_vesting_VestingContract_$memory := $ResourceUpdate($1_vesting_VestingContract_$memory, $GlobalLocationAddress($t8), - $Dereference($t8)); + $1_vesting_VestingContract_$memory := $ResourceUpdate($1_vesting_VestingContract_$memory, $GlobalLocationAddress($t44), + $Dereference($t44)); // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:699:5+1 assume {:print "$at(2,33124,33125)"} true; L3: - // assert Not(false) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:699:5+1 - assume {:print "$at(2,33124,33125)"} true; - assert {:msg "assert_failed(2,33124,33125): function does not abort under this condition"} - !false; + // assert Not(Not(exists[@174]($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:517:9+53 + assume {:print "$at(3,22974,23027)"} true; + assert {:msg "assert_failed(3,22974,23027): function does not abort under this condition"} + !!$ResourceExists($1_vesting_VestingContract_$memory#174, $t1); + + // assert Not(Neq(select vesting::VestingContract.state($t7), 1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:519:9+56 + assume {:print "$at(3,23110,23166)"} true; + assert {:msg "assert_failed(3,23110,23166): function does not abort under this condition"} + !!$IsEqual'u64'($state#$1_vesting_VestingContract($t7), 1); - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:699:5+1 + // assert Not(Not(exists[@175]($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:267:9+33 + assume {:print "$at(134,11439,11472)"} true; + assert {:msg "assert_failed(134,11439,11472): function does not abort under this condition"} + !!$ResourceExists($1_staking_contract_Store_$memory#175, $t1); + + // assert Not(Not(simple_map::spec_contains_key[]($t11, $t8))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:269:9+70 + assume {:print "$at(134,11554,11624)"} true; + assert {:msg "assert_failed(134,11554,11624): function does not abort under this condition"} + !!$1_simple_map_spec_contains_key'address_$1_staking_contract_StakingContract'($t11, $t8); + + // assert Not(Not(exists[@176]($t12))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:471:9+50 + assume {:print "$at(3,20605,20655)"} true; + assert {:msg "assert_failed(3,20605,20655): function does not abort under this condition"} + !!$ResourceExists($1_stake_StakePool_$memory#176, $t12); + + // assert Not(Gt(Add($t14, $t15), 18446744073709551615)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:475:9+48 + assume {:print "$at(3,20845,20893)"} true; + assert {:msg "assert_failed(3,20845,20893): function does not abort under this condition"} + !(($t14 + $t15) > 18446744073709551615); + + // assert Not(Not(exists[@176]($t17))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:480:9+52 + assume {:print "$at(3,21090,21142)"} true; + assert {:msg "assert_failed(3,21090,21142): function does not abort under this condition"} + !!$ResourceExists($1_stake_StakePool_$memory#176, $t17); + + // assert Not(Not(exists[@177](0x1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:482:9+57 + assume {:print "$at(3,21220,21277)"} true; + assert {:msg "assert_failed(3,21220,21277): function does not abort under this condition"} + !!$ResourceExists($1_stake_ValidatorSet_$memory#177, 1); + + // assert Not(And(And($t20, Ge(timestamp::spec_now_seconds[@178](), select stake::StakePool.locked_until_secs($t18))), Gt(Add($t21, $t22), 18446744073709551615))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:490:9+150 + assume {:print "$at(3,21816,21966)"} true; + assert {:msg "assert_failed(3,21816,21966): function does not abort under this condition"} + !(($t20 && ($1_timestamp_spec_now_seconds($1_timestamp_CurrentTimeMicroseconds_$memory#178) >= $locked_until_secs#$1_stake_StakePool($t18))) && (($t21 + $t22) > 18446744073709551615)); + + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:490:9+150 return; // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:699:5+1 + assume {:print "$at(2,33124,33125)"} true; L4: - // abort($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:699:5+1 + // abort($t25) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:699:5+1 assume {:print "$at(2,33124,33125)"} true; - $abort_code := $t7; + $abort_code := $t25; $abort_flag := true; return; @@ -34397,68 +35880,68 @@ procedure {:inline 1} $1_vesting_total_accumulated_rewards(_$t0: int) returns ($ $t0 := _$t0; // bytecode translation starts here - // assume Identical($t3, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:60:9+73 - assume {:print "$at(3,2125,2198)"} true; + // assume Identical($t3, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:59:9+73 + assume {:print "$at(3,2072,2145)"} true; assume ($t3 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); - // assume Identical($t4, $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:62:9+38 - assume {:print "$at(3,2208,2246)"} true; + // assume Identical($t4, $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:61:9+38 + assume {:print "$at(3,2155,2193)"} true; assume ($t4 == $t0); - // assume Identical($t5, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t3))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:63:9+49 - assume {:print "$at(3,2255,2304)"} true; + // assume Identical($t5, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t3))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:62:9+49 + assume {:print "$at(3,2202,2251)"} true; assume ($t5 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t3))); - // assume Identical($t6, select staking_contract::Store.staking_contracts(global($t4))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:64:9+82 - assume {:print "$at(3,2313,2395)"} true; + // assume Identical($t6, select staking_contract::Store.staking_contracts(global($t4))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:63:9+82 + assume {:print "$at(3,2260,2342)"} true; assume ($t6 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t4))); - // assume Identical($t7, simple_map::spec_get($t6, $t5)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:65:9+73 - assume {:print "$at(3,2404,2477)"} true; + // assume Identical($t7, simple_map::spec_get($t6, $t5)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:64:9+73 + assume {:print "$at(3,2351,2424)"} true; assume ($t7 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($t6, $t5)); - // assume Identical($t8, select staking_contract::StakingContract.pool_address($t7)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:70:9+49 - assume {:print "$at(3,2627,2676)"} true; + // assume Identical($t8, select staking_contract::StakingContract.pool_address($t7)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:69:9+49 + assume {:print "$at(3,2574,2623)"} true; assume ($t8 == $pool_address#$1_staking_contract_StakingContract($t7)); - // assume Identical($t9, global($t8)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:71:9+63 - assume {:print "$at(3,2685,2748)"} true; + // assume Identical($t9, global($t8)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:70:9+56 + assume {:print "$at(3,2632,2688)"} true; assume ($t9 == $ResourceValue($1_stake_StakePool_$memory, $t8)); - // assume Identical($t10, coin::$value(select stake::StakePool.active($t9))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:72:9+44 - assume {:print "$at(3,2757,2801)"} true; + // assume Identical($t10, coin::$value(select stake::StakePool.active($t9))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:71:9+44 + assume {:print "$at(3,2697,2741)"} true; assume ($t10 == $1_coin_$value'$1_aptos_coin_AptosCoin'($active#$1_stake_StakePool($t9))); - // assume Identical($t11, coin::$value(select stake::StakePool.pending_active($t9))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:73:9+60 - assume {:print "$at(3,2810,2870)"} true; + // assume Identical($t11, coin::$value(select stake::StakePool.pending_active($t9))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:72:9+60 + assume {:print "$at(3,2750,2810)"} true; assume ($t11 == $1_coin_$value'$1_aptos_coin_AptosCoin'($pending_active#$1_stake_StakePool($t9))); - // assume Identical($t12, Add($t10, $t11)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:74:9+49 - assume {:print "$at(3,2879,2928)"} true; + // assume Identical($t12, Add($t10, $t11)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:73:9+49 + assume {:print "$at(3,2819,2868)"} true; assume ($t12 == ($t10 + $t11)); - // assume Identical($t13, Sub($t12, select staking_contract::StakingContract.principal($t7))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:75:9+74 - assume {:print "$at(3,2937,3011)"} true; + // assume Identical($t13, Sub($t12, select staking_contract::StakingContract.principal($t7))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:74:9+74 + assume {:print "$at(3,2877,2951)"} true; assume ($t13 == ($t12 - $principal#$1_staking_contract_StakingContract($t7))); - // assume Identical($t14, Div(Mul($t13, select staking_contract::StakingContract.commission_percentage($t7)), 100)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:76:9+91 - assume {:print "$at(3,3020,3111)"} true; + // assume Identical($t14, Div(Mul($t13, select staking_contract::StakingContract.commission_percentage($t7)), 100)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:75:9+91 + assume {:print "$at(3,2960,3051)"} true; assume ($t14 == (($t13 * $commission_percentage#$1_staking_contract_StakingContract($t7)) div 100)); - // assume Identical($t15, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:389:9+65 - assume {:print "$at(3,16378,16443)"} true; + // assume Identical($t15, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:518:9+65 + assume {:print "$at(3,23036,23101)"} true; assume ($t15 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); - // assume And(Ge(select staking_contract::StakingContract.commission_percentage($t7), 0), Le(select staking_contract::StakingContract.commission_percentage($t7), 100)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:57:9+102 - assume {:print "$at(3,1905,2007)"} true; + // assume And(Ge(select staking_contract::StakingContract.commission_percentage($t7), 0), Le(select staking_contract::StakingContract.commission_percentage($t7), 100)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:56:9+102 + assume {:print "$at(3,1852,1954)"} true; assume (($commission_percentage#$1_staking_contract_StakingContract($t7) >= 0) && ($commission_percentage#$1_staking_contract_StakingContract($t7) <= 100)); // trace_local[vesting_contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:356:5+1 assume {:print "$at(2,16826,16827)"} true; assume {:print "$track_local(57,27,0):", $t0} $t0 == $t0; - // assume Identical($t16, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:389:9+65 - assume {:print "$at(3,16378,16443)"} true; + // assume Identical($t16, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:518:9+65 + assume {:print "$at(3,23036,23101)"} true; assume ($t16 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); // vesting::assert_active_vesting_contract($t0) on_abort goto L2 with $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:357:9+56 @@ -34593,7 +36076,7 @@ L2: } // fun vesting::total_accumulated_rewards [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:356:5+521 -procedure {:timeLimit 200} $1_vesting_total_accumulated_rewards$verify(_$t0: int) returns ($ret0: int) +procedure {:timeLimit 120} $1_vesting_total_accumulated_rewards$verify(_$t0: int) returns ($ret0: int) { // declare local variables var $t1: int; @@ -34699,77 +36182,77 @@ procedure {:timeLimit 200} $1_vesting_total_accumulated_rewards$verify(_$t0: int // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:8:9+92 assume ($ResourceExists($1_stake_ValidatorSet_$memory, 1) ==> $1_stake_validator_set_is_valid($1_stake_StakePool_$memory, $1_stake_ValidatorConfig_$memory, $1_stake_ValidatorPerformance_$memory, $1_stake_ValidatorSet_$memory)); - // assume Identical($t3, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:60:9+73 - assume {:print "$at(3,2125,2198)"} true; + // assume Identical($t3, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:59:9+73 + assume {:print "$at(3,2072,2145)"} true; assume ($t3 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); - // assume Identical($t4, $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:62:9+38 - assume {:print "$at(3,2208,2246)"} true; + // assume Identical($t4, $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:61:9+38 + assume {:print "$at(3,2155,2193)"} true; assume ($t4 == $t0); - // assume Identical($t5, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t3))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:63:9+49 - assume {:print "$at(3,2255,2304)"} true; + // assume Identical($t5, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t3))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:62:9+49 + assume {:print "$at(3,2202,2251)"} true; assume ($t5 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t3))); - // assume Identical($t6, select staking_contract::Store.staking_contracts(global($t4))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:64:9+82 - assume {:print "$at(3,2313,2395)"} true; + // assume Identical($t6, select staking_contract::Store.staking_contracts(global($t4))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:63:9+82 + assume {:print "$at(3,2260,2342)"} true; assume ($t6 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t4))); - // assume Identical($t7, simple_map::spec_get($t6, $t5)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:65:9+73 - assume {:print "$at(3,2404,2477)"} true; + // assume Identical($t7, simple_map::spec_get($t6, $t5)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:64:9+73 + assume {:print "$at(3,2351,2424)"} true; assume ($t7 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($t6, $t5)); - // assume Identical($t8, select staking_contract::StakingContract.pool_address($t7)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:70:9+49 - assume {:print "$at(3,2627,2676)"} true; + // assume Identical($t8, select staking_contract::StakingContract.pool_address($t7)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:69:9+49 + assume {:print "$at(3,2574,2623)"} true; assume ($t8 == $pool_address#$1_staking_contract_StakingContract($t7)); - // assume Identical($t9, global($t8)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:71:9+63 - assume {:print "$at(3,2685,2748)"} true; + // assume Identical($t9, global($t8)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:70:9+56 + assume {:print "$at(3,2632,2688)"} true; assume ($t9 == $ResourceValue($1_stake_StakePool_$memory, $t8)); - // assume Identical($t10, coin::$value(select stake::StakePool.active($t9))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:72:9+44 - assume {:print "$at(3,2757,2801)"} true; + // assume Identical($t10, coin::$value(select stake::StakePool.active($t9))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:71:9+44 + assume {:print "$at(3,2697,2741)"} true; assume ($t10 == $1_coin_$value'$1_aptos_coin_AptosCoin'($active#$1_stake_StakePool($t9))); - // assume Identical($t11, coin::$value(select stake::StakePool.pending_active($t9))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:73:9+60 - assume {:print "$at(3,2810,2870)"} true; + // assume Identical($t11, coin::$value(select stake::StakePool.pending_active($t9))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:72:9+60 + assume {:print "$at(3,2750,2810)"} true; assume ($t11 == $1_coin_$value'$1_aptos_coin_AptosCoin'($pending_active#$1_stake_StakePool($t9))); - // assume Identical($t12, Add($t10, $t11)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:74:9+49 - assume {:print "$at(3,2879,2928)"} true; + // assume Identical($t12, Add($t10, $t11)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:73:9+49 + assume {:print "$at(3,2819,2868)"} true; assume ($t12 == ($t10 + $t11)); - // assume Identical($t13, Sub($t12, select staking_contract::StakingContract.principal($t7))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:75:9+74 - assume {:print "$at(3,2937,3011)"} true; + // assume Identical($t13, Sub($t12, select staking_contract::StakingContract.principal($t7))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:74:9+74 + assume {:print "$at(3,2877,2951)"} true; assume ($t13 == ($t12 - $principal#$1_staking_contract_StakingContract($t7))); - // assume Identical($t14, Div(Mul($t13, select staking_contract::StakingContract.commission_percentage($t7)), 100)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:76:9+91 - assume {:print "$at(3,3020,3111)"} true; + // assume Identical($t14, Div(Mul($t13, select staking_contract::StakingContract.commission_percentage($t7)), 100)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:75:9+91 + assume {:print "$at(3,2960,3051)"} true; assume ($t14 == (($t13 * $commission_percentage#$1_staking_contract_StakingContract($t7)) div 100)); - // assume Identical($t15, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:389:9+65 - assume {:print "$at(3,16378,16443)"} true; + // assume Identical($t15, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:518:9+65 + assume {:print "$at(3,23036,23101)"} true; assume ($t15 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); - // assume And(Ge(select staking_contract::StakingContract.commission_percentage($t7), 0), Le(select staking_contract::StakingContract.commission_percentage($t7), 100)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:57:9+102 - assume {:print "$at(3,1905,2007)"} true; + // assume And(Ge(select staking_contract::StakingContract.commission_percentage($t7), 0), Le(select staking_contract::StakingContract.commission_percentage($t7), 100)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:56:9+102 + assume {:print "$at(3,1852,1954)"} true; assume (($commission_percentage#$1_staking_contract_StakingContract($t7) >= 0) && ($commission_percentage#$1_staking_contract_StakingContract($t7) <= 100)); - // @117 := save_mem(stake::StakePool) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:57:9+102 + // @117 := save_mem(stake::StakePool) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:56:9+102 $1_stake_StakePool_$memory#117 := $1_stake_StakePool_$memory; - // @116 := save_mem(staking_contract::Store) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:57:9+102 + // @116 := save_mem(staking_contract::Store) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:56:9+102 $1_staking_contract_Store_$memory#116 := $1_staking_contract_Store_$memory; - // @118 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:57:9+102 + // @118 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:56:9+102 $1_vesting_VestingContract_$memory#118 := $1_vesting_VestingContract_$memory; // trace_local[vesting_contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:356:5+1 assume {:print "$at(2,16826,16827)"} true; assume {:print "$track_local(57,27,0):", $t0} $t0 == $t0; - // assume Identical($t16, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:389:9+65 - assume {:print "$at(3,16378,16443)"} true; + // assume Identical($t16, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:518:9+65 + assume {:print "$at(3,23036,23101)"} true; assume ($t16 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); // vesting::assert_active_vesting_contract($t0) on_abort goto L2 with $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:357:9+56 @@ -34887,57 +36370,57 @@ procedure {:timeLimit 200} $1_vesting_total_accumulated_rewards$verify(_$t0: int assume {:print "$at(2,17346,17347)"} true; L1: - // assert Not(Not(exists[@116]($t4))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:67:9+51 - assume {:print "$at(3,2487,2538)"} true; - assert {:msg "assert_failed(3,2487,2538): function does not abort under this condition"} + // assert Not(Not(exists[@116]($t4))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:66:9+51 + assume {:print "$at(3,2434,2485)"} true; + assert {:msg "assert_failed(3,2434,2485): function does not abort under this condition"} !!$ResourceExists($1_staking_contract_Store_$memory#116, $t4); - // assert Not(Not(simple_map::spec_contains_key[]($t6, $t5))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:68:9+70 - assume {:print "$at(3,2547,2617)"} true; - assert {:msg "assert_failed(3,2547,2617): function does not abort under this condition"} + // assert Not(Not(simple_map::spec_contains_key[]($t6, $t5))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:67:9+70 + assume {:print "$at(3,2494,2564)"} true; + assert {:msg "assert_failed(3,2494,2564): function does not abort under this condition"} !!$1_simple_map_spec_contains_key'address_$1_staking_contract_StakingContract'($t6, $t5); - // assert Not(Not(exists[@117]($t8))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:77:9+50 - assume {:print "$at(3,3120,3170)"} true; - assert {:msg "assert_failed(3,3120,3170): function does not abort under this condition"} + // assert Not(Not(exists[@117]($t8))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:76:9+50 + assume {:print "$at(3,3060,3110)"} true; + assert {:msg "assert_failed(3,3060,3110): function does not abort under this condition"} !!$ResourceExists($1_stake_StakePool_$memory#117, $t8); - // assert Not(Gt(Add($t10, $t11), 18446744073709551615)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:78:9+44 - assume {:print "$at(3,3179,3223)"} true; - assert {:msg "assert_failed(3,3179,3223): function does not abort under this condition"} + // assert Not(Gt(Add($t10, $t11), 18446744073709551615)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:77:9+44 + assume {:print "$at(3,3119,3163)"} true; + assert {:msg "assert_failed(3,3119,3163): function does not abort under this condition"} !(($t10 + $t11) > 18446744073709551615); - // assert Not(Lt($t12, select staking_contract::StakingContract.principal($t7))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:79:9+58 - assume {:print "$at(3,3232,3290)"} true; - assert {:msg "assert_failed(3,3232,3290): function does not abort under this condition"} + // assert Not(Lt($t12, select staking_contract::StakingContract.principal($t7))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:78:9+58 + assume {:print "$at(3,3172,3230)"} true; + assert {:msg "assert_failed(3,3172,3230): function does not abort under this condition"} !($t12 < $principal#$1_staking_contract_StakingContract($t7)); - // assert Not(Gt(Mul($t13, select staking_contract::StakingContract.commission_percentage($t7)), 18446744073709551615)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:80:9+81 - assume {:print "$at(3,3299,3380)"} true; - assert {:msg "assert_failed(3,3299,3380): function does not abort under this condition"} + // assert Not(Gt(Mul($t13, select staking_contract::StakingContract.commission_percentage($t7)), 18446744073709551615)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:79:9+81 + assume {:print "$at(3,3239,3320)"} true; + assert {:msg "assert_failed(3,3239,3320): function does not abort under this condition"} !(($t13 * $commission_percentage#$1_staking_contract_StakingContract($t7)) > 18446744073709551615); - // assert Not(Gt(Add(select vesting::VestingContract.remaining_grant($t3), $t14), $t12)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:81:9+86 - assume {:print "$at(3,3389,3475)"} true; - assert {:msg "assert_failed(3,3389,3475): function does not abort under this condition"} + // assert Not(Gt(Add(select vesting::VestingContract.remaining_grant($t3), $t14), $t12)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:80:9+86 + assume {:print "$at(3,3329,3415)"} true; + assert {:msg "assert_failed(3,3329,3415): function does not abort under this condition"} !(($remaining_grant#$1_vesting_VestingContract($t3) + $t14) > $t12); - // assert Not(Lt($t12, select vesting::VestingContract.remaining_grant($t3))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:82:9+64 - assume {:print "$at(3,3484,3548)"} true; - assert {:msg "assert_failed(3,3484,3548): function does not abort under this condition"} + // assert Not(Lt($t12, select vesting::VestingContract.remaining_grant($t3))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:81:9+64 + assume {:print "$at(3,3424,3488)"} true; + assert {:msg "assert_failed(3,3424,3488): function does not abort under this condition"} !($t12 < $remaining_grant#$1_vesting_VestingContract($t3)); - // assert Not(Not(exists[@118]($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:388:9+53 - assume {:print "$at(3,16316,16369)"} true; - assert {:msg "assert_failed(3,16316,16369): function does not abort under this condition"} + // assert Not(Not(exists[@118]($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:517:9+53 + assume {:print "$at(3,22974,23027)"} true; + assert {:msg "assert_failed(3,22974,23027): function does not abort under this condition"} !!$ResourceExists($1_vesting_VestingContract_$memory#118, $t0); - // assert Not(Neq(select vesting::VestingContract.state($t15), 1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:390:9+56 - assume {:print "$at(3,16452,16508)"} true; - assert {:msg "assert_failed(3,16452,16508): function does not abort under this condition"} + // assert Not(Neq(select vesting::VestingContract.state($t15), 1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:519:9+56 + assume {:print "$at(3,23110,23166)"} true; + assert {:msg "assert_failed(3,23110,23166): function does not abort under this condition"} !!$IsEqual'u64'($state#$1_vesting_VestingContract($t15), 1); - // return $t35 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:390:9+56 + // return $t35 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:519:9+56 $ret0 := $t35; return; @@ -34945,16 +36428,575 @@ L1: assume {:print "$at(2,17346,17347)"} true; L2: - // abort($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:363:5+1 - assume {:print "$at(2,17346,17347)"} true; - $abort_code := $t17; + // assert Or(Or(Or(Or(Or(Or(Or(Or(Or(Not(exists[@116]($t4)), Not(simple_map::spec_contains_key[]($t6, $t5))), Not(exists[@117]($t8))), Gt(Add($t10, $t11), 18446744073709551615)), Lt($t12, select staking_contract::StakingContract.principal($t7))), Gt(Mul($t13, select staking_contract::StakingContract.commission_percentage($t7)), 18446744073709551615)), Gt(Add(select vesting::VestingContract.remaining_grant($t3), $t14), $t12)), Lt($t12, select vesting::VestingContract.remaining_grant($t3))), Not(exists[@118]($t0))), Neq(select vesting::VestingContract.state($t15), 1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:47:5+175 + assume {:print "$at(3,1573,1748)"} true; + assert {:msg "assert_failed(3,1573,1748): abort not covered by any of the `aborts_if` clauses"} + (((((((((!$ResourceExists($1_staking_contract_Store_$memory#116, $t4) || !$1_simple_map_spec_contains_key'address_$1_staking_contract_StakingContract'($t6, $t5)) || !$ResourceExists($1_stake_StakePool_$memory#117, $t8)) || (($t10 + $t11) > 18446744073709551615)) || ($t12 < $principal#$1_staking_contract_StakingContract($t7))) || (($t13 * $commission_percentage#$1_staking_contract_StakingContract($t7)) > 18446744073709551615)) || (($remaining_grant#$1_vesting_VestingContract($t3) + $t14) > $t12)) || ($t12 < $remaining_grant#$1_vesting_VestingContract($t3))) || !$ResourceExists($1_vesting_VestingContract_$memory#118, $t0)) || !$IsEqual'u64'($state#$1_vesting_VestingContract($t15), 1)); + + // abort($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:47:5+175 + $abort_code := $t17; + $abort_flag := true; + return; + +} + +// fun vesting::unlock_rewards_many [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:546:5+437 +procedure {:timeLimit 1000} $1_vesting_unlock_rewards_many$verify(_$t0: Vec (int)) returns () +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: Vec (int); + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: bool; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: int; + var $t12: bool; + var $t13: int; + var $t14: int; + var $t15: int; + var $t16: $1_vesting_VestingContract; + var $t17: int; + var $t18: Table int ($1_staking_contract_StakingContract); + var $t19: $1_staking_contract_StakingContract; + var $t20: int; + var $t21: $1_stake_StakePool; + var $t22: int; + var $t23: int; + var $t24: int; + var $t25: int; + var $t26: int; + var $t27: int; + var $t28: $1_vesting_VestingContract; + var $t29: int; + var $t30: int; + var $t31: Table int ($1_staking_contract_StakingContract); + var $t32: $1_staking_contract_StakingContract; + var $t33: int; + var $t34: $1_stake_StakePool; + var $t35: int; + var $t36: int; + var $t37: int; + var $t38: int; + var $t39: int; + var $t40: $1_vesting_VestingContract; + var $t41: int; + var $t42: int; + var $t43: $1_staking_contract_Store; + var $t44: $1_staking_contract_StakingContract; + var $t45: Table int ($1_staking_contract_StakingContract); + var $t46: int; + var $t47: $1_stake_StakePool; + var $t48: int; + var $t49: int; + var $t50: int; + var $t51: int; + var $t52: $1_stake_StakePool; + var $t53: $1_stake_ValidatorSet; + var $t54: bool; + var $t55: int; + var $t56: int; + var $t57: int; + var $t0: Vec (int); + var $temp_0'u64': int; + var $temp_0'vec'address'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:546:5+1 + assume {:print "$at(2,25990,25991)"} true; + assume $IsValid'vec'address''($t0); + + // assume forall $rsc: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: select option::Option.vec(select coin::CoinInfo.supply($rsc)): And(And(And(And(And(Iff(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($elem)), option::$is_none(select optional_aggregator::OptionalAggregator.integer($elem))), Iff(option::$is_some(select optional_aggregator::OptionalAggregator.integer($elem)), option::$is_none(select optional_aggregator::OptionalAggregator.aggregator($elem)))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.integer($elem)), Le(select optional_aggregator::Integer.value(option::$borrow(select optional_aggregator::OptionalAggregator.integer($elem))), select optional_aggregator::Integer.limit(option::$borrow(select optional_aggregator::OptionalAggregator.integer($elem)))))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($elem)), Le(aggregator::spec_aggregator_get_val(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($elem))), aggregator::spec_get_limit(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($elem)))))), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.aggregator($elem))), 1)), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.integer($elem))), 1)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:546:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'$1_aptos_coin_AptosCoin''($rsc) && ((LenVec($vec#$1_option_Option'$1_optional_aggregator_OptionalAggregator'($supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($rsc))) <= 1) && (var $range_1 := $vec#$1_option_Option'$1_optional_aggregator_OptionalAggregator'($supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($rsc)); (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)) <==> $1_option_$is_none'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)) ==> ($value#$1_optional_aggregator_Integer($1_option_$borrow'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) <= $limit#$1_optional_aggregator_Integer($1_option_$borrow'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)))))) && ($1_option_$is_some'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem))) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)))))) && (LenVec($vec#$1_option_Option'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem))) <= 1)) && (LenVec($vec#$1_option_Option'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) <= 1))))))))))); + + // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:546:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $a_0); + ($IsValid'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''($rsc)))); + + // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:546:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin''($rsc)))); + + // assume exists>(0x0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:546:5+1 + assume $ResourceExists($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, 0); + + // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:546:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin''($rsc)))); + + // assume exists>(0x0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:546:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, 0); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:546:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_chain_status_GenesisEndMarker_$memory, $a_0)}(var $rsc := $ResourceValue($1_chain_status_GenesisEndMarker_$memory, $a_0); + ($IsValid'$1_chain_status_GenesisEndMarker'($rsc)))); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:546:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_timestamp_CurrentTimeMicroseconds_$memory, $a_0)}(var $rsc := $ResourceValue($1_timestamp_CurrentTimeMicroseconds_$memory, $a_0); + ($IsValid'$1_timestamp_CurrentTimeMicroseconds'($rsc)))); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:546:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_stake_StakePool_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_StakePool_$memory, $a_0); + ($IsValid'$1_stake_StakePool'($rsc)))); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:546:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorConfig_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorConfig_$memory, $a_0); + ($IsValid'$1_stake_ValidatorConfig'($rsc)))); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:546:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorPerformance_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorPerformance_$memory, $a_0); + ($IsValid'$1_stake_ValidatorPerformance'($rsc)))); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:546:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorSet_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorSet_$memory, $a_0); + ($IsValid'$1_stake_ValidatorSet'($rsc)))); + + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:546:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_reconfiguration_Configuration_$memory, $a_0)}(var $rsc := $ResourceValue($1_reconfiguration_Configuration_$memory, $a_0); + ($IsValid'$1_reconfiguration_Configuration'($rsc)))); + + // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), forall $key: select staking_contract::Store.staking_contracts($rsc): And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), i), Index(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:546:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_staking_contract_Store_$memory, $a_0)}(var $rsc := $ResourceValue($1_staking_contract_Store_$memory, $a_0); + (($IsValid'$1_staking_contract_Store'($rsc) && (var $range_1 := $staking_contracts#$1_staking_contract_Store($rsc); (forall $key: int :: ContainsTable($range_1, $EncodeKey'address'($key)) ==> (((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), addr)))) && (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))))); (var $range_3 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))))); (forall $i_4: int, $i_5: int :: $InRange($range_2, $i_4) ==> $InRange($range_3, $i_5) ==> (var i := $i_4; + (var j := $i_5; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), i), ReadVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), j)) ==> $IsEqual'num'(i, j)))))))))))))))); + + // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:546:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); + (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; + (var j := $i_4; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); + + // assume Implies(chain_status::$is_operating(), exists(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:546:5+437 + // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.spec.move:4:9+93 + assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory, 1)); + + // assume Implies(exists(0x1), stake::validator_set_is_valid()) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:546:5+437 + // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:8:9+92 + assume ($ResourceExists($1_stake_ValidatorSet_$memory, 1) ==> $1_stake_validator_set_is_valid($1_stake_StakePool_$memory, $1_stake_ValidatorConfig_$memory, $1_stake_ValidatorPerformance_$memory, $1_stake_ValidatorSet_$memory)); + + // assume Implies(chain_status::$is_operating(), exists(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:546:5+437 + // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:12:9+96 + assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_stake_ValidatorSet_$memory, 1)); + + // assume Implies(chain_status::$is_operating(), Ge(timestamp::spec_now_microseconds(), reconfiguration::$last_reconfiguration_time())) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:546:5+437 + // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/reconfiguration.spec.move:8:9+137 + assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> ($1_timestamp_spec_now_microseconds($1_timestamp_CurrentTimeMicroseconds_$memory) >= $1_reconfiguration_$last_reconfiguration_time($1_reconfiguration_Configuration_$memory))); + + // assume forall i: Range(0, Len
($t0)): And(Ge(select staking_contract::StakingContract.commission_percentage(simple_map::spec_get(select staking_contract::Store.staking_contracts(global(Index($t0, i))), select vesting::StakingInfo.operator(select vesting::VestingContract.staking(global(Index($t0, i)))))), 0), Le(select staking_contract::StakingContract.commission_percentage(simple_map::spec_get(select staking_contract::Store.staking_contracts(global(Index($t0, i))), select vesting::StakingInfo.operator(select vesting::VestingContract.staking(global(Index($t0, i)))))), 100)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:203:9+440 + assume {:print "$at(3,9064,9504)"} true; + assume (var $range_0 := $Range(0, LenVec($t0)); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var i := $i_1; + ((($commission_percentage#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, ReadVec($t0, i))), $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($ResourceValue($1_vesting_VestingContract_$memory, ReadVec($t0, i)))))) >= 0) && ($commission_percentage#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, ReadVec($t0, i))), $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($ResourceValue($1_vesting_VestingContract_$memory, ReadVec($t0, i)))))) <= 100)))))); + + // trace_local[contract_addresses]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:546:5+1 + assume {:print "$at(2,25990,25991)"} true; + assume {:print "$track_local(57,29,0):", $t0} $t0 == $t0; + + // $t4 := vector::length
($t0) on_abort goto L9 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:547:19+35 + assume {:print "$at(2,26109,26144)"} true; + call $t4 := $1_vector_length'address'($t0); + if ($abort_flag) { + assume {:print "$at(2,26109,26144)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(57,29):", $t5} $t5 == $t5; + goto L9; + } + + // $t6 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:549:24+1 + assume {:print "$at(2,26170,26171)"} true; + $t6 := 0; + assume $IsValid'u64'($t6); + + // $t7 := !=($t4, $t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:549:21+2 + $t7 := !$IsEqual'u64'($t4, $t6); + + // if ($t7) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:549:9+72 + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:549:9+72 +L1: + + // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:549:9+72 + assume {:print "$at(2,26155,26227)"} true; + goto L2; + + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:549:51+28 +L0: + + // $t8 := 16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:549:51+28 + assume {:print "$at(2,26197,26225)"} true; + $t8 := 16; + assume $IsValid'u64'($t8); + + // $t9 := error::invalid_argument($t8) on_abort goto L9 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:549:27+53 + call $t9 := $1_error_invalid_argument($t8); + if ($abort_flag) { + assume {:print "$at(2,26173,26226)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(57,29):", $t5} $t5 == $t5; + goto L9; + } + + // trace_abort($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:549:9+72 + assume {:print "$at(2,26155,26227)"} true; + assume {:print "$track_abort(57,29):", $t9} $t9 == $t9; + + // $t5 := move($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:549:9+72 + $t5 := $t9; + + // goto L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:549:9+72 + goto L9; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:551:30+19 + assume {:print "$at(2,26259,26278)"} true; +L2: + + // trace_local[v#256]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:551:9+182 + assume {:print "$at(2,26238,26420)"} true; + assume {:print "$track_local(57,29,3):", $t0} $t0 == $t0; + + // $t10 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:261:17+1 + assume {:print "$at(18,9246,9247)"} true; + $t10 := 0; + assume $IsValid'u64'($t10); + + // trace_local[i#258]($t10) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:261:13+1 + assume {:print "$track_local(57,29,1):", $t10} $t10 == $t10; + + // $t11 := vector::length
($t0) on_abort goto L9 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:262:19+9 + assume {:print "$at(18,9267,9276)"} true; + call $t11 := $1_vector_length'address'($t0); + if ($abort_flag) { + assume {:print "$at(18,9267,9276)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(57,29):", $t5} $t5 == $t5; + goto L9; + } + + // trace_local[len#259]($t11) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:262:13+3 + assume {:print "$track_local(57,29,2):", $t11} $t11 == $t11; + + // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume {:print "$at(18,9293,9294)"} true; +L6: + + // $t1 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume {:print "$at(18,9293,9294)"} true; + havoc $t1; + + // assume WellFormed($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume $IsValid'u64'($t1); + + // $t12 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + havoc $t12; + + // assume WellFormed($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume $IsValid'bool'($t12); + + // $t13 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + havoc $t13; + + // assume WellFormed($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume $IsValid'address'($t13); + + // $t14 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + havoc $t14; + + // assume WellFormed($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume $IsValid'u64'($t14); + + // $t15 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + havoc $t15; + + // assume WellFormed($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume $IsValid'u64'($t15); + + // trace_local[i#258]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume {:print "$info(): enter loop, variable(s) i#258 havocked and reassigned"} true; + assume {:print "$track_local(57,29,1):", $t1} $t1 == $t1; + + // assume Not(AbortFlag()) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 + assume !$abort_flag; + + // $t12 := <($t1, $t11) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:18+1 + call $t12 := $Lt($t1, $t11); + + // if ($t12) goto L4 else goto L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:9+78 + if ($t12) { goto L4; } else { goto L3; } + + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:9+78 +L4: + + // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:264:22+1 + assume {:print "$at(18,9325,9326)"} true; +L5: + + // $t13 := vector::borrow
($t0, $t1) on_abort goto L9 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:264:15+12 + assume {:print "$at(18,9318,9330)"} true; + call $t13 := $1_vector_borrow'address'($t0, $t1); + if ($abort_flag) { + assume {:print "$at(18,9318,9330)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(57,29):", $t5} $t5 == $t5; + goto L9; + } + + // assume Identical($t16, global($t13)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:161:9+65 + assume {:print "$at(3,7222,7287)"} true; + assume ($t16 == $ResourceValue($1_vesting_VestingContract_$memory, $t13)); + + // assume Identical($t17, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t16))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:162:9+49 + assume {:print "$at(3,7296,7345)"} true; + assume ($t17 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t16))); + + // assume Identical($t18, select staking_contract::Store.staking_contracts(global($t13))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:163:9+92 + assume {:print "$at(3,7354,7446)"} true; + assume ($t18 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t13))); + + // assume Identical($t19, simple_map::spec_get($t18, $t17)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:164:9+73 + assume {:print "$at(3,7455,7528)"} true; + assume ($t19 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($t18, $t17)); + + // assume Identical($t20, select staking_contract::StakingContract.pool_address($t19)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:165:9+49 + assume {:print "$at(3,7537,7586)"} true; + assume ($t20 == $pool_address#$1_staking_contract_StakingContract($t19)); + + // assume Identical($t21, global($t20)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:166:9+56 + assume {:print "$at(3,7595,7651)"} true; + assume ($t21 == $ResourceValue($1_stake_StakePool_$memory, $t20)); + + // assume Identical($t22, coin::$value(select stake::StakePool.active($t21))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:167:9+44 + assume {:print "$at(3,7660,7704)"} true; + assume ($t22 == $1_coin_$value'$1_aptos_coin_AptosCoin'($active#$1_stake_StakePool($t21))); + + // assume Identical($t23, coin::$value(select stake::StakePool.pending_active($t21))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:168:9+60 + assume {:print "$at(3,7713,7773)"} true; + assume ($t23 == $1_coin_$value'$1_aptos_coin_AptosCoin'($pending_active#$1_stake_StakePool($t21))); + + // assume Identical($t24, Add($t22, $t23)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:169:9+49 + assume {:print "$at(3,7782,7831)"} true; + assume ($t24 == ($t22 + $t23)); + + // assume Identical($t25, Sub($t24, select staking_contract::StakingContract.principal($t19))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:170:9+74 + assume {:print "$at(3,7840,7914)"} true; + assume ($t25 == ($t24 - $principal#$1_staking_contract_StakingContract($t19))); + + // assume Identical($t26, Div(Mul($t25, select staking_contract::StakingContract.commission_percentage($t19)), 100)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:171:9+91 + assume {:print "$at(3,7923,8014)"} true; + assume ($t26 == (($t25 * $commission_percentage#$1_staking_contract_StakingContract($t19)) div 100)); + + // assume Identical($t27, Sub(Sub($t24, select vesting::VestingContract.remaining_grant($t16)), $t26)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:172:9+87 + assume {:print "$at(3,8023,8110)"} true; + assume ($t27 == (($t24 - $remaining_grant#$1_vesting_VestingContract($t16)) - $t26)); + + // assume Identical($t28, global($t13)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:59:9+73 + assume {:print "$at(3,2072,2145)"} true; + assume ($t28 == $ResourceValue($1_vesting_VestingContract_$memory, $t13)); + + // assume Identical($t29, $t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:61:9+38 + assume {:print "$at(3,2155,2193)"} true; + assume ($t29 == $t13); + + // assume Identical($t30, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t28))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:62:9+49 + assume {:print "$at(3,2202,2251)"} true; + assume ($t30 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t28))); + + // assume Identical($t31, select staking_contract::Store.staking_contracts(global($t29))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:63:9+82 + assume {:print "$at(3,2260,2342)"} true; + assume ($t31 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t29))); + + // assume Identical($t32, simple_map::spec_get($t31, $t30)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:64:9+73 + assume {:print "$at(3,2351,2424)"} true; + assume ($t32 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($t31, $t30)); + + // assume Identical($t33, select staking_contract::StakingContract.pool_address($t32)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:69:9+49 + assume {:print "$at(3,2574,2623)"} true; + assume ($t33 == $pool_address#$1_staking_contract_StakingContract($t32)); + + // assume Identical($t34, global($t33)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:70:9+56 + assume {:print "$at(3,2632,2688)"} true; + assume ($t34 == $ResourceValue($1_stake_StakePool_$memory, $t33)); + + // assume Identical($t35, coin::$value(select stake::StakePool.active($t34))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:71:9+44 + assume {:print "$at(3,2697,2741)"} true; + assume ($t35 == $1_coin_$value'$1_aptos_coin_AptosCoin'($active#$1_stake_StakePool($t34))); + + // assume Identical($t36, coin::$value(select stake::StakePool.pending_active($t34))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:72:9+60 + assume {:print "$at(3,2750,2810)"} true; + assume ($t36 == $1_coin_$value'$1_aptos_coin_AptosCoin'($pending_active#$1_stake_StakePool($t34))); + + // assume Identical($t37, Add($t35, $t36)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:73:9+49 + assume {:print "$at(3,2819,2868)"} true; + assume ($t37 == ($t35 + $t36)); + + // assume Identical($t38, Sub($t37, select staking_contract::StakingContract.principal($t32))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:74:9+74 + assume {:print "$at(3,2877,2951)"} true; + assume ($t38 == ($t37 - $principal#$1_staking_contract_StakingContract($t32))); + + // assume Identical($t39, Div(Mul($t38, select staking_contract::StakingContract.commission_percentage($t32)), 100)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:75:9+91 + assume {:print "$at(3,2960,3051)"} true; + assume ($t39 == (($t38 * $commission_percentage#$1_staking_contract_StakingContract($t32)) div 100)); + + // assume Identical($t40, global($t13)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:518:9+65 + assume {:print "$at(3,23036,23101)"} true; + assume ($t40 == $ResourceValue($1_vesting_VestingContract_$memory, $t13)); + + // assume Identical($t41, select account::SignerCapability.account(select vesting::VestingContract.signer_cap($t40))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:434:9+46 + assume {:print "$at(3,18724,18770)"} true; + assume ($t41 == $account#$1_account_SignerCapability($signer_cap#$1_vesting_VestingContract($t40))); + + // assume Identical($t42, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t40))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:435:9+49 + assume {:print "$at(3,18779,18828)"} true; + assume ($t42 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t40))); + + // assume Identical($t43, global($t41)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:439:9+49 + assume {:print "$at(3,18996,19045)"} true; + assume ($t43 == $ResourceValue($1_staking_contract_Store_$memory, $t41)); + + // assume Identical($t44, simple_map::spec_get(select staking_contract::Store.staking_contracts($t43), $t42)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:440:9+79 + assume {:print "$at(3,19054,19133)"} true; + assume ($t44 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($t43), $t42)); + + // assume Identical($t45, select staking_contract::Store.staking_contracts(global($t41))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 + assume {:print "$at(134,11481,11545)"} true; + assume ($t45 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t41))); + + // assume Identical($t46, select staking_contract::StakingContract.pool_address($t44)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:470:9+49 + assume {:print "$at(3,20547,20596)"} true; + assume ($t46 == $pool_address#$1_staking_contract_StakingContract($t44)); + + // assume Identical($t47, global($t46)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:472:9+56 + assume {:print "$at(3,20664,20720)"} true; + assume ($t47 == $ResourceValue($1_stake_StakePool_$memory, $t46)); + + // assume Identical($t48, select coin::Coin.value(select stake::StakePool.inactive($t47))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:473:9+41 + assume {:print "$at(3,20729,20770)"} true; + assume ($t48 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t47))); + + // assume Identical($t49, select coin::Coin.value(select stake::StakePool.pending_inactive($t47))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:474:9+57 + assume {:print "$at(3,20779,20836)"} true; + assume ($t49 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t47))); + + // assume Identical($t50, Add($t48, $t49)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:478:9+63 + assume {:print "$at(3,20948,21011)"} true; + assume ($t50 == ($t48 + $t49)); + + // assume Identical($t51, select stake::OwnerCapability.pool_address(select staking_contract::StakingContract.owner_cap($t44))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:479:9+61 + assume {:print "$at(3,21020,21081)"} true; + assume ($t51 == $pool_address#$1_stake_OwnerCapability($owner_cap#$1_staking_contract_StakingContract($t44))); + + // assume Identical($t52, global($t51)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:481:9+60 + assume {:print "$at(3,21151,21211)"} true; + assume ($t52 == $ResourceValue($1_stake_StakePool_$memory, $t51)); + + // assume Identical($t53, global(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:483:9+66 + assume {:print "$at(3,21286,21352)"} true; + assume ($t53 == $ResourceValue($1_stake_ValidatorSet_$memory, 1)); + + // assume Identical($t54, And(And(Not(stake::spec_contains(select stake::ValidatorSet.pending_active($t53), $t51)), Not(stake::spec_contains(select stake::ValidatorSet.active_validators($t53), $t51))), Not(stake::spec_contains(select stake::ValidatorSet.pending_inactive($t53), $t51)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:484:9+260 + assume {:print "$at(3,21361,21621)"} true; + assume ($t54 == ((!$1_stake_spec_contains($pending_active#$1_stake_ValidatorSet($t53), $t51) && !$1_stake_spec_contains($active_validators#$1_stake_ValidatorSet($t53), $t51)) && !$1_stake_spec_contains($pending_inactive#$1_stake_ValidatorSet($t53), $t51))); + + // assume Identical($t55, select coin::Coin.value(select stake::StakePool.inactive($t52))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:487:9+45 + assume {:print "$at(3,21630,21675)"} true; + assume ($t55 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t52))); + + // assume Identical($t56, select coin::Coin.value(select stake::StakePool.pending_inactive($t52))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:488:9+61 + assume {:print "$at(3,21684,21745)"} true; + assume ($t56 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t52))); + + // assume Identical($t57, Add($t55, $t56)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:489:9+53 + assume {:print "$at(3,21754,21807)"} true; + assume ($t57 == ($t55 + $t56)); + + // assert And(Ge(select staking_contract::StakingContract.commission_percentage($t32), 0), Le(select staking_contract::StakingContract.commission_percentage($t32), 100)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:56:9+102 + assume {:print "$at(3,1852,1954)"} true; + assert {:msg "assert_failed(3,1852,1954): precondition does not hold at this call"} + (($commission_percentage#$1_staking_contract_StakingContract($t32) >= 0) && ($commission_percentage#$1_staking_contract_StakingContract($t32) <= 100)); + + // vesting::unlock_rewards($t13) on_abort goto L9 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:553:13+32 + assume {:print "$at(2,26376,26408)"} true; + call $1_vesting_unlock_rewards($t13); + if ($abort_flag) { + assume {:print "$at(2,26376,26408)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(57,29):", $t5} $t5 == $t5; + goto L9; + } + + // $t14 := 1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:265:21+1 + assume {:print "$at(18,9353,9354)"} true; + $t14 := 1; + assume $IsValid'u64'($t14); + + // $t15 := +($t1, $t14) on_abort goto L9 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:265:19+1 + call $t15 := $AddU64($t1, $t14); + if ($abort_flag) { + assume {:print "$at(18,9351,9352)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(57,29):", $t5} $t5 == $t5; + goto L9; + } + + // trace_local[i#258]($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:265:13+1 + assume {:print "$track_local(57,29,1):", $t15} $t15 == $t15; + + // goto L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:265:13+9 + goto L7; + + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:554:11+1 + assume {:print "$at(2,26420,26421)"} true; +L3: + + // goto L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:554:11+1 + assume {:print "$at(2,26420,26421)"} true; + goto L8; + + // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:554:11+1 + // Loop invariant checking block for the loop started with header: L6 +L7: + + // stop() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:554:11+1 + assume {:print "$at(2,26420,26421)"} true; + assume false; + return; + + // label L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:555:5+1 + assume {:print "$at(2,26426,26427)"} true; +L8: + + // assert Not(Eq(Len
($t0), 0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:180:9+39 + assume {:print "$at(3,8355,8394)"} true; + assert {:msg "assert_failed(3,8355,8394): function does not abort under this condition"} + !$IsEqual'num'(LenVec($t0), 0); + + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:180:9+39 + return; + + // label L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:555:5+1 + assume {:print "$at(2,26426,26427)"} true; +L9: + + // abort($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:555:5+1 + assume {:print "$at(2,26426,26427)"} true; + $abort_code := $t5; $abort_flag := true; return; } // fun vesting::update_operator [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:727:5+1149 -procedure {:timeLimit 200} $1_vesting_update_operator$verify(_$t0: $signer, _$t1: int, _$t2: int, _$t3: int) returns () +procedure {:timeLimit 1000} $1_vesting_update_operator$verify(_$t0: $signer, _$t1: int, _$t2: int, _$t3: int) returns () { // declare local variables var $t4: $signer; @@ -34962,26 +37004,45 @@ procedure {:timeLimit 200} $1_vesting_update_operator$verify(_$t0: $signer, _$t1 var $t6: int; var $t7: $Mutation ($1_vesting_VestingContract); var $t8: $1_vesting_VestingContract; - var $t9: $Mutation ($1_vesting_VestingContract); + var $t9: int; var $t10: int; - var $t11: $1_vesting_VestingContract; - var $t12: $1_vesting_VestingContract; - var $t13: $signer; - var $t14: $1_vesting_StakingInfo; - var $t15: int; + var $t11: $1_staking_contract_Store; + var $t12: Table int ($1_staking_contract_StakingContract); + var $t13: $1_staking_contract_StakingContract; + var $t14: $1_vesting_VestingContract; + var $t15: Table int ($1_staking_contract_StakingContract); var $t16: int; - var $t17: $1_staking_contract_Store; - var $t18: Table int ($1_staking_contract_StakingContract); - var $t19: Table int ($1_staking_contract_StakingContract); - var $t20: $Mutation ($1_vesting_StakingInfo); - var $t21: $Mutation (int); - var $t22: $Mutation ($1_vesting_StakingInfo); - var $t23: $Mutation (int); - var $t24: $Mutation ($1_event_EventHandle'$1_vesting_UpdateOperatorEvent'); + var $t17: $1_stake_StakePool; + var $t18: int; + var $t19: int; + var $t20: int; + var $t21: int; + var $t22: $1_stake_StakePool; + var $t23: $1_stake_ValidatorSet; + var $t24: bool; var $t25: int; - var $t26: $1_vesting_StakingInfo; + var $t26: int; var $t27: int; - var $t28: $1_vesting_UpdateOperatorEvent; + var $t28: $Mutation ($1_vesting_VestingContract); + var $t29: int; + var $t30: $1_vesting_VestingContract; + var $t31: $1_vesting_VestingContract; + var $t32: $signer; + var $t33: $1_vesting_StakingInfo; + var $t34: int; + var $t35: int; + var $t36: $1_staking_contract_Store; + var $t37: Table int ($1_staking_contract_StakingContract); + var $t38: Table int ($1_staking_contract_StakingContract); + var $t39: $Mutation ($1_vesting_StakingInfo); + var $t40: $Mutation (int); + var $t41: $Mutation ($1_vesting_StakingInfo); + var $t42: $Mutation (int); + var $t43: $Mutation ($1_event_EventHandle'$1_vesting_UpdateOperatorEvent'); + var $t44: int; + var $t45: $1_vesting_StakingInfo; + var $t46: int; + var $t47: $1_vesting_UpdateOperatorEvent; var $t0: $signer; var $t1: int; var $t2: int; @@ -34990,7 +37051,11 @@ procedure {:timeLimit 200} $1_vesting_update_operator$verify(_$t0: $signer, _$t1 var $temp_0'address': int; var $temp_0'signer': $signer; var $temp_0'u64': int; - var $1_vesting_VestingContract_$memory#133: $Memory $1_vesting_VestingContract; + var $1_vesting_VestingContract_$memory#141: $Memory $1_vesting_VestingContract; + var $1_staking_contract_Store_$memory#142: $Memory $1_staking_contract_Store; + var $1_stake_StakePool_$memory#143: $Memory $1_stake_StakePool; + var $1_stake_ValidatorSet_$memory#144: $Memory $1_stake_ValidatorSet; + var $1_timestamp_CurrentTimeMicroseconds_$memory#145: $Memory $1_timestamp_CurrentTimeMicroseconds; $t0 := _$t0; $t1 := _$t1; $t2 := _$t2; @@ -35092,13 +37157,101 @@ procedure {:timeLimit 200} $1_vesting_update_operator$verify(_$t0: $signer, _$t1 // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/reconfiguration.spec.move:8:9+137 assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> ($1_timestamp_spec_now_microseconds($1_timestamp_CurrentTimeMicroseconds_$memory) >= $1_reconfiguration_$last_reconfiguration_time($1_reconfiguration_Configuration_$memory))); - // assume Identical($t8, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:382:9+65 - assume {:print "$at(3,16064,16129)"} true; + // assume Identical($t8, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:256:9+65 + assume {:print "$at(3,11198,11263)"} true; assume ($t8 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); - // @133 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:727:5+1 + // assume Identical($t9, select account::SignerCapability.account(select vesting::VestingContract.signer_cap($t8))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:257:9+46 + assume {:print "$at(3,11272,11318)"} true; + assume ($t9 == $account#$1_account_SignerCapability($signer_cap#$1_vesting_VestingContract($t8))); + + // assume Identical($t10, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t8))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:258:9+53 + assume {:print "$at(3,11327,11380)"} true; + assume ($t10 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t8))); + + // assume Identical($t11, global($t9)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:260:9+49 + assume {:print "$at(3,11487,11536)"} true; + assume ($t11 == $ResourceValue($1_staking_contract_Store_$memory, $t9)); + + // assume Identical($t12, select staking_contract::Store.staking_contracts($t11)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:261:9+48 + assume {:print "$at(3,11545,11593)"} true; + assume ($t12 == $staking_contracts#$1_staking_contract_Store($t11)); + + // assume Identical($t13, simple_map::spec_get($t12, $t10)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:264:9+77 + assume {:print "$at(3,11685,11762)"} true; + assume ($t13 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($t12, $t10)); + + // assume Identical($t14, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:511:9+65 + assume {:print "$at(3,22722,22787)"} true; + assume ($t14 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); + + // assume Identical($t15, select staking_contract::Store.staking_contracts(global($t9))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 + assume {:print "$at(134,11481,11545)"} true; + assume ($t15 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t9))); + + // assume Identical($t16, select staking_contract::StakingContract.pool_address($t13)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:470:9+49 + assume {:print "$at(3,20547,20596)"} true; + assume ($t16 == $pool_address#$1_staking_contract_StakingContract($t13)); + + // assume Identical($t17, global($t16)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:472:9+56 + assume {:print "$at(3,20664,20720)"} true; + assume ($t17 == $ResourceValue($1_stake_StakePool_$memory, $t16)); + + // assume Identical($t18, select coin::Coin.value(select stake::StakePool.inactive($t17))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:473:9+41 + assume {:print "$at(3,20729,20770)"} true; + assume ($t18 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t17))); + + // assume Identical($t19, select coin::Coin.value(select stake::StakePool.pending_inactive($t17))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:474:9+57 + assume {:print "$at(3,20779,20836)"} true; + assume ($t19 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t17))); + + // assume Identical($t20, Add($t18, $t19)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:478:9+63 + assume {:print "$at(3,20948,21011)"} true; + assume ($t20 == ($t18 + $t19)); + + // assume Identical($t21, select stake::OwnerCapability.pool_address(select staking_contract::StakingContract.owner_cap($t13))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:479:9+61 + assume {:print "$at(3,21020,21081)"} true; + assume ($t21 == $pool_address#$1_stake_OwnerCapability($owner_cap#$1_staking_contract_StakingContract($t13))); + + // assume Identical($t22, global($t21)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:481:9+60 + assume {:print "$at(3,21151,21211)"} true; + assume ($t22 == $ResourceValue($1_stake_StakePool_$memory, $t21)); + + // assume Identical($t23, global(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:483:9+66 + assume {:print "$at(3,21286,21352)"} true; + assume ($t23 == $ResourceValue($1_stake_ValidatorSet_$memory, 1)); + + // assume Identical($t24, And(And(Not(stake::spec_contains(select stake::ValidatorSet.pending_active($t23), $t21)), Not(stake::spec_contains(select stake::ValidatorSet.active_validators($t23), $t21))), Not(stake::spec_contains(select stake::ValidatorSet.pending_inactive($t23), $t21)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:484:9+260 + assume {:print "$at(3,21361,21621)"} true; + assume ($t24 == ((!$1_stake_spec_contains($pending_active#$1_stake_ValidatorSet($t23), $t21) && !$1_stake_spec_contains($active_validators#$1_stake_ValidatorSet($t23), $t21)) && !$1_stake_spec_contains($pending_inactive#$1_stake_ValidatorSet($t23), $t21))); + + // assume Identical($t25, select coin::Coin.value(select stake::StakePool.inactive($t22))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:487:9+45 + assume {:print "$at(3,21630,21675)"} true; + assume ($t25 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t22))); + + // assume Identical($t26, select coin::Coin.value(select stake::StakePool.pending_inactive($t22))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:488:9+61 + assume {:print "$at(3,21684,21745)"} true; + assume ($t26 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t22))); + + // assume Identical($t27, Add($t25, $t26)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:489:9+53 + assume {:print "$at(3,21754,21807)"} true; + assume ($t27 == ($t25 + $t26)); + + // @145 := save_mem(timestamp::CurrentTimeMicroseconds) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:727:5+1 assume {:print "$at(2,34297,34298)"} true; - $1_vesting_VestingContract_$memory#133 := $1_vesting_VestingContract_$memory; + $1_timestamp_CurrentTimeMicroseconds_$memory#145 := $1_timestamp_CurrentTimeMicroseconds_$memory; + + // @143 := save_mem(stake::StakePool) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:727:5+1 + $1_stake_StakePool_$memory#143 := $1_stake_StakePool_$memory; + + // @144 := save_mem(stake::ValidatorSet) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:727:5+1 + $1_stake_ValidatorSet_$memory#144 := $1_stake_ValidatorSet_$memory; + + // @142 := save_mem(staking_contract::Store) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:727:5+1 + $1_staking_contract_Store_$memory#142 := $1_staking_contract_Store_$memory; + + // @141 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:727:5+1 + $1_vesting_VestingContract_$memory#141 := $1_vesting_VestingContract_$memory; // trace_local[admin]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:727:5+1 assume {:print "$track_local(57,31,0):", $t0} $t0 == $t0; @@ -35112,191 +37265,231 @@ procedure {:timeLimit 200} $1_vesting_update_operator$verify(_$t0: $signer, _$t1 // trace_local[commission_percentage]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:727:5+1 assume {:print "$track_local(57,31,3):", $t3} $t3 == $t3; - // $t9 := borrow_global($t1) on_abort goto L2 with $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:733:32+17 + // $t28 := borrow_global($t1) on_abort goto L2 with $t29 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:733:32+17 assume {:print "$at(2,34521,34538)"} true; if (!$ResourceExists($1_vesting_VestingContract_$memory, $t1)) { call $ExecFailureAbort(); } else { - $t9 := $Mutation($Global($t1), EmptyVec(), $ResourceValue($1_vesting_VestingContract_$memory, $t1)); + $t28 := $Mutation($Global($t1), EmptyVec(), $ResourceValue($1_vesting_VestingContract_$memory, $t1)); } if ($abort_flag) { assume {:print "$at(2,34521,34538)"} true; - $t10 := $abort_code; - assume {:print "$track_abort(57,31):", $t10} $t10 == $t10; + $t29 := $abort_code; + assume {:print "$track_abort(57,31):", $t29} $t29 == $t29; goto L2; } - // trace_local[vesting_contract]($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:733:13+16 - $temp_0'$1_vesting_VestingContract' := $Dereference($t9); + // trace_local[vesting_contract]($t28) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:733:13+16 + $temp_0'$1_vesting_VestingContract' := $Dereference($t28); assume {:print "$track_local(57,31,7):", $temp_0'$1_vesting_VestingContract'} $temp_0'$1_vesting_VestingContract' == $temp_0'$1_vesting_VestingContract'; - // $t11 := read_ref($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:734:21+25 + // $t30 := read_ref($t28) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:734:21+25 assume {:print "$at(2,34595,34620)"} true; - $t11 := $Dereference($t9); + $t30 := $Dereference($t28); - // vesting::verify_admin($t0, $t11) on_abort goto L2 with $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:734:9+37 - call $1_vesting_verify_admin($t0, $t11); + // vesting::verify_admin($t0, $t30) on_abort goto L2 with $t29 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:734:9+37 + call $1_vesting_verify_admin($t0, $t30); if ($abort_flag) { assume {:print "$at(2,34583,34620)"} true; - $t10 := $abort_code; - assume {:print "$track_abort(57,31):", $t10} $t10 == $t10; + $t29 := $abort_code; + assume {:print "$track_abort(57,31):", $t29} $t29 == $t29; goto L2; } - // $t12 := read_ref($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:735:68+16 + // $t31 := read_ref($t28) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:735:68+16 assume {:print "$at(2,34689,34705)"} true; - $t12 := $Dereference($t9); + $t31 := $Dereference($t28); - // $t13 := vesting::get_vesting_account_signer_internal($t12) on_abort goto L2 with $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:735:32+53 - call $t13 := $1_vesting_get_vesting_account_signer_internal($t12); + // $t32 := vesting::get_vesting_account_signer_internal($t31) on_abort goto L2 with $t29 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:735:32+53 + call $t32 := $1_vesting_get_vesting_account_signer_internal($t31); if ($abort_flag) { assume {:print "$at(2,34653,34706)"} true; - $t10 := $abort_code; - assume {:print "$track_abort(57,31):", $t10} $t10 == $t10; + $t29 := $abort_code; + assume {:print "$track_abort(57,31):", $t29} $t29 == $t29; goto L2; } - // trace_local[contract_signer]($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:735:13+15 - assume {:print "$track_local(57,31,5):", $t13} $t13 == $t13; + // trace_local[contract_signer]($t32) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:735:13+15 + assume {:print "$track_local(57,31,5):", $t32} $t32 == $t32; - // $t14 := get_field.staking($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:736:28+24 + // $t33 := get_field.staking($t28) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:736:28+24 assume {:print "$at(2,34735,34759)"} true; - $t14 := $staking#$1_vesting_VestingContract($Dereference($t9)); + $t33 := $staking#$1_vesting_VestingContract($Dereference($t28)); - // $t15 := get_field.operator($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:736:28+33 - $t15 := $operator#$1_vesting_StakingInfo($t14); + // $t34 := get_field.operator($t33) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:736:28+33 + $t34 := $operator#$1_vesting_StakingInfo($t33); - // trace_local[old_operator]($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:736:13+12 - assume {:print "$track_local(57,31,6):", $t15} $t15 == $t15; + // trace_local[old_operator]($t34) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:736:13+12 + assume {:print "$track_local(57,31,6):", $t34} $t34 == $t34; - // assume Identical($t16, signer::$address_of($t13)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:170:9+48 + // assume Identical($t35, signer::$address_of($t32)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:170:9+48 assume {:print "$at(134,7475,7523)"} true; - assume ($t16 == $1_signer_$address_of($t13)); + assume ($t35 == $1_signer_$address_of($t32)); - // assume Identical($t17, global($t16)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:172:9+42 + // assume Identical($t36, global($t35)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:172:9+42 assume {:print "$at(134,7620,7662)"} true; - assume ($t17 == $ResourceValue($1_staking_contract_Store_$memory, $t16)); + assume ($t36 == $ResourceValue($1_staking_contract_Store_$memory, $t35)); - // assume Identical($t18, select staking_contract::Store.staking_contracts($t17)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:173:9+48 + // assume Identical($t37, select staking_contract::Store.staking_contracts($t36)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:173:9+48 assume {:print "$at(134,7671,7719)"} true; - assume ($t18 == $staking_contracts#$1_staking_contract_Store($t17)); + assume ($t37 == $staking_contracts#$1_staking_contract_Store($t36)); - // assume Identical($t19, select staking_contract::Store.staking_contracts(global($t16))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 + // assume Identical($t38, select staking_contract::Store.staking_contracts(global($t35))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 assume {:print "$at(134,11481,11545)"} true; - assume ($t19 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t16))); + assume ($t38 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t35))); - // staking_contract::switch_operator($t13, $t15, $t2, $t3) on_abort goto L2 with $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:737:9+101 + // staking_contract::switch_operator($t32, $t34, $t2, $t3) on_abort goto L2 with $t29 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:737:9+101 assume {:print "$at(2,34778,34879)"} true; - call $1_staking_contract_switch_operator($t13, $t15, $t2, $t3); + call $1_staking_contract_switch_operator($t32, $t34, $t2, $t3); if ($abort_flag) { assume {:print "$at(2,34778,34879)"} true; - $t10 := $abort_code; - assume {:print "$track_abort(57,31):", $t10} $t10 == $t10; + $t29 := $abort_code; + assume {:print "$track_abort(57,31):", $t29} $t29 == $t29; goto L2; } - // $t20 := borrow_field.staking($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:738:9+24 + // $t39 := borrow_field.staking($t28) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:738:9+24 assume {:print "$at(2,34889,34913)"} true; - $t20 := $ChildMutation($t9, 6, $staking#$1_vesting_VestingContract($Dereference($t9))); + $t39 := $ChildMutation($t28, 6, $staking#$1_vesting_VestingContract($Dereference($t28))); - // $t21 := borrow_field.operator($t20) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:738:9+33 - $t21 := $ChildMutation($t20, 1, $operator#$1_vesting_StakingInfo($Dereference($t20))); + // $t40 := borrow_field.operator($t39) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:738:9+33 + $t40 := $ChildMutation($t39, 1, $operator#$1_vesting_StakingInfo($Dereference($t39))); - // write_ref($t21, $t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:738:9+48 - $t21 := $UpdateMutation($t21, $t2); + // write_ref($t40, $t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:738:9+48 + $t40 := $UpdateMutation($t40, $t2); - // write_back[Reference($t20).operator (address)]($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:738:9+48 - $t20 := $UpdateMutation($t20, $Update'$1_vesting_StakingInfo'_operator($Dereference($t20), $Dereference($t21))); + // write_back[Reference($t39).operator (address)]($t40) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:738:9+48 + $t39 := $UpdateMutation($t39, $Update'$1_vesting_StakingInfo'_operator($Dereference($t39), $Dereference($t40))); - // write_back[Reference($t9).staking (vesting::StakingInfo)]($t20) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:738:9+48 - $t9 := $UpdateMutation($t9, $Update'$1_vesting_VestingContract'_staking($Dereference($t9), $Dereference($t20))); + // write_back[Reference($t28).staking (vesting::StakingInfo)]($t39) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:738:9+48 + $t28 := $UpdateMutation($t28, $Update'$1_vesting_VestingContract'_staking($Dereference($t28), $Dereference($t39))); - // $t22 := borrow_field.staking($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:739:9+24 + // $t41 := borrow_field.staking($t28) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:739:9+24 assume {:print "$at(2,34947,34971)"} true; - $t22 := $ChildMutation($t9, 6, $staking#$1_vesting_VestingContract($Dereference($t9))); + $t41 := $ChildMutation($t28, 6, $staking#$1_vesting_VestingContract($Dereference($t28))); - // $t23 := borrow_field.commission_percentage($t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:739:9+46 - $t23 := $ChildMutation($t22, 3, $commission_percentage#$1_vesting_StakingInfo($Dereference($t22))); + // $t42 := borrow_field.commission_percentage($t41) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:739:9+46 + $t42 := $ChildMutation($t41, 3, $commission_percentage#$1_vesting_StakingInfo($Dereference($t41))); - // write_ref($t23, $t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:739:9+70 - $t23 := $UpdateMutation($t23, $t3); + // write_ref($t42, $t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:739:9+70 + $t42 := $UpdateMutation($t42, $t3); - // write_back[Reference($t22).commission_percentage (u64)]($t23) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:739:9+70 - $t22 := $UpdateMutation($t22, $Update'$1_vesting_StakingInfo'_commission_percentage($Dereference($t22), $Dereference($t23))); + // write_back[Reference($t41).commission_percentage (u64)]($t42) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:739:9+70 + $t41 := $UpdateMutation($t41, $Update'$1_vesting_StakingInfo'_commission_percentage($Dereference($t41), $Dereference($t42))); - // write_back[Reference($t9).staking (vesting::StakingInfo)]($t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:739:9+70 - $t9 := $UpdateMutation($t9, $Update'$1_vesting_VestingContract'_staking($Dereference($t9), $Dereference($t22))); + // write_back[Reference($t28).staking (vesting::StakingInfo)]($t41) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:739:9+70 + $t28 := $UpdateMutation($t28, $Update'$1_vesting_VestingContract'_staking($Dereference($t28), $Dereference($t41))); - // $t24 := borrow_field.update_operator_events($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:742:13+44 + // $t43 := borrow_field.update_operator_events($t28) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:742:13+44 assume {:print "$at(2,35052,35096)"} true; - $t24 := $ChildMutation($t9, 9, $update_operator_events#$1_vesting_VestingContract($Dereference($t9))); + $t43 := $ChildMutation($t28, 9, $update_operator_events#$1_vesting_VestingContract($Dereference($t28))); - // $t25 := get_field.admin($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:744:24+22 + // $t44 := get_field.admin($t28) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:744:24+22 assume {:print "$at(2,35155,35177)"} true; - $t25 := $admin#$1_vesting_VestingContract($Dereference($t9)); + $t44 := $admin#$1_vesting_VestingContract($Dereference($t28)); - // $t26 := get_field.staking($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:746:39+24 + // $t45 := get_field.staking($t28) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:746:39+24 assume {:print "$at(2,35277,35301)"} true; - $t26 := $staking#$1_vesting_VestingContract($Dereference($t9)); + $t45 := $staking#$1_vesting_VestingContract($Dereference($t28)); - // $t27 := get_field.pool_address($t26) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:746:39+37 - $t27 := $pool_address#$1_vesting_StakingInfo($t26); + // $t46 := get_field.pool_address($t45) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:746:39+37 + $t46 := $pool_address#$1_vesting_StakingInfo($t45); - // $t28 := pack vesting::UpdateOperatorEvent($t25, $t1, $t27, $t15, $t2, $t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:743:13+318 + // $t47 := pack vesting::UpdateOperatorEvent($t44, $t1, $t46, $t34, $t2, $t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:743:13+318 assume {:print "$at(2,35110,35428)"} true; - $t28 := $1_vesting_UpdateOperatorEvent($t25, $t1, $t27, $t15, $t2, $t3); + $t47 := $1_vesting_UpdateOperatorEvent($t44, $t1, $t46, $t34, $t2, $t3); - // opaque begin: event::emit_event($t24, $t28) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:741:9+411 + // opaque begin: event::emit_event($t43, $t47) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:741:9+411 assume {:print "$at(2,35028,35439)"} true; - // opaque end: event::emit_event($t24, $t28) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:741:9+411 + // opaque end: event::emit_event($t43, $t47) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:741:9+411 - // write_back[Reference($t9).update_operator_events (event::EventHandle)]($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:741:9+411 - $t9 := $UpdateMutation($t9, $Update'$1_vesting_VestingContract'_update_operator_events($Dereference($t9), $Dereference($t24))); + // write_back[Reference($t28).update_operator_events (event::EventHandle)]($t43) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:741:9+411 + $t28 := $UpdateMutation($t28, $Update'$1_vesting_VestingContract'_update_operator_events($Dereference($t28), $Dereference($t43))); - // assert forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t9)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t9)), addr)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 + // assert forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t28)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t28)), addr)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 assume {:print "$at(59,538,673)"} true; assert {:msg "assert_failed(59,538,673): data invariant does not hold"} - (forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t9))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t9))), addr)))); + (forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t28))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t28))), addr)))); - // assert forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t9)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t9)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t9)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t9)), j)), Eq(i, j)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 + // assert forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t28)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t28)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t28)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t28)), j)), Eq(i, j)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 assume {:print "$at(59,738,867)"} true; assert {:msg "assert_failed(59,738,867): data invariant does not hold"} - (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t9))))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t9))))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; + (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t28))))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t28))))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; (var j := $i_3; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t9))), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t9))), j)) ==> $IsEqual'num'(i, j)))))))); + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t28))), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t28))), j)) ==> $IsEqual'num'(i, j)))))))); - // write_back[vesting::VestingContract@]($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:741:9+411 + // write_back[vesting::VestingContract@]($t28) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:741:9+411 assume {:print "$at(2,35028,35439)"} true; - $1_vesting_VestingContract_$memory := $ResourceUpdate($1_vesting_VestingContract_$memory, $GlobalLocationAddress($t9), - $Dereference($t9)); + $1_vesting_VestingContract_$memory := $ResourceUpdate($1_vesting_VestingContract_$memory, $GlobalLocationAddress($t28), + $Dereference($t28)); // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:752:5+1 assume {:print "$at(2,35445,35446)"} true; L1: - // assert Not(Not(exists[@133]($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:381:9+53 - assume {:print "$at(3,16002,16055)"} true; - assert {:msg "assert_failed(3,16002,16055): function does not abort under this condition"} - !!$ResourceExists($1_vesting_VestingContract_$memory#133, $t1); + // assert Not(Not(exists[@141]($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:510:9+53 + assume {:print "$at(3,22660,22713)"} true; + assert {:msg "assert_failed(3,22660,22713): function does not abort under this condition"} + !!$ResourceExists($1_vesting_VestingContract_$memory#141, $t1); - // assert Not(Neq
(signer::$address_of[]($t0), select vesting::VestingContract.admin($t8))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:383:9+62 - assume {:print "$at(3,16138,16200)"} true; - assert {:msg "assert_failed(3,16138,16200): function does not abort under this condition"} - !!$IsEqual'address'($1_signer_$address_of($t0), $admin#$1_vesting_VestingContract($t8)); + // assert Not(Neq
(signer::$address_of[]($t0), select vesting::VestingContract.admin($t14))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:512:9+62 + assume {:print "$at(3,22796,22858)"} true; + assert {:msg "assert_failed(3,22796,22858): function does not abort under this condition"} + !!$IsEqual'address'($1_signer_$address_of($t0), $admin#$1_vesting_VestingContract($t14)); + + // assert Not(Not(exists[@142]($t9))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:267:9+33 + assume {:print "$at(134,11439,11472)"} true; + assert {:msg "assert_failed(134,11439,11472): function does not abort under this condition"} + !!$ResourceExists($1_staking_contract_Store_$memory#142, $t9); + + // assert Not(Not(simple_map::spec_contains_key[]($t15, $t10))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:269:9+70 + assume {:print "$at(134,11554,11624)"} true; + assert {:msg "assert_failed(134,11554,11624): function does not abort under this condition"} + !!$1_simple_map_spec_contains_key'address_$1_staking_contract_StakingContract'($t15, $t10); + + // assert Not(simple_map::spec_contains_key[]($t12, $t2)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:262:9+73 + assume {:print "$at(3,11602,11675)"} true; + assert {:msg "assert_failed(3,11602,11675): function does not abort under this condition"} + !$1_simple_map_spec_contains_key'address_$1_staking_contract_StakingContract'($t12, $t2); - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:383:9+62 + // assert Not(Not(exists[@143]($t16))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:471:9+50 + assume {:print "$at(3,20605,20655)"} true; + assert {:msg "assert_failed(3,20605,20655): function does not abort under this condition"} + !!$ResourceExists($1_stake_StakePool_$memory#143, $t16); + + // assert Not(Gt(Add($t18, $t19), 18446744073709551615)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:475:9+48 + assume {:print "$at(3,20845,20893)"} true; + assert {:msg "assert_failed(3,20845,20893): function does not abort under this condition"} + !(($t18 + $t19) > 18446744073709551615); + + // assert Not(Not(exists[@143]($t21))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:480:9+52 + assume {:print "$at(3,21090,21142)"} true; + assert {:msg "assert_failed(3,21090,21142): function does not abort under this condition"} + !!$ResourceExists($1_stake_StakePool_$memory#143, $t21); + + // assert Not(Not(exists[@144](0x1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:482:9+57 + assume {:print "$at(3,21220,21277)"} true; + assert {:msg "assert_failed(3,21220,21277): function does not abort under this condition"} + !!$ResourceExists($1_stake_ValidatorSet_$memory#144, 1); + + // assert Not(And(And($t24, Ge(timestamp::spec_now_seconds[@145](), select stake::StakePool.locked_until_secs($t22))), Gt(Add($t25, $t26), 18446744073709551615))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:490:9+150 + assume {:print "$at(3,21816,21966)"} true; + assert {:msg "assert_failed(3,21816,21966): function does not abort under this condition"} + !(($t24 && ($1_timestamp_spec_now_seconds($1_timestamp_CurrentTimeMicroseconds_$memory#145) >= $locked_until_secs#$1_stake_StakePool($t22))) && (($t25 + $t26) > 18446744073709551615)); + + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:490:9+150 return; // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:752:5+1 assume {:print "$at(2,35445,35446)"} true; L2: - // abort($t10) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:752:5+1 + // abort($t29) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:752:5+1 assume {:print "$at(2,35445,35446)"} true; - $abort_code := $t10; + $abort_code := $t29; $abort_flag := true; return; @@ -35403,7 +37596,7 @@ L4: } // fun vesting::verify_admin [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:937:5+182 -procedure {:timeLimit 200} $1_vesting_verify_admin$verify(_$t0: $signer, _$t1: $1_vesting_VestingContract) returns () +procedure {:timeLimit 1000} $1_vesting_verify_admin$verify(_$t0: $signer, _$t1: $1_vesting_VestingContract) returns () { // declare local variables var $t2: int; @@ -35498,24 +37691,24 @@ L2: assume {:print "$at(2,43882,43883)"} true; L3: - // assert Not(Neq
(signer::$address_of[]($t0), select vesting::VestingContract.admin($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:344:9+62 - assume {:print "$at(3,14545,14607)"} true; - assert {:msg "assert_failed(3,14545,14607): function does not abort under this condition"} + // assert Not(Neq
(signer::$address_of[]($t0), select vesting::VestingContract.admin($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:411:9+62 + assume {:print "$at(3,17971,18033)"} true; + assert {:msg "assert_failed(3,17971,18033): function does not abort under this condition"} !!$IsEqual'address'($1_signer_$address_of($t0), $admin#$1_vesting_VestingContract($t1)); - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:344:9+62 + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:411:9+62 return; // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:939:5+1 assume {:print "$at(2,43882,43883)"} true; L4: - // assert Neq
(signer::$address_of[]($t0), select vesting::VestingContract.admin($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:343:5+148 - assume {:print "$at(3,14465,14613)"} true; - assert {:msg "assert_failed(3,14465,14613): abort not covered by any of the `aborts_if` clauses"} + // assert Neq
(signer::$address_of[]($t0), select vesting::VestingContract.admin($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:410:5+148 + assume {:print "$at(3,17891,18039)"} true; + assert {:msg "assert_failed(3,17891,18039): abort not covered by any of the `aborts_if` clauses"} !$IsEqual'address'($1_signer_$address_of($t0), $admin#$1_vesting_VestingContract($t1)); - // abort($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:343:5+148 + // abort($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:410:5+148 $abort_code := $t3; $abort_flag := true; return; @@ -35537,11 +37730,11 @@ procedure {:inline 1} $1_vesting_vest(_$t0: int) returns () var $t9: $Mutation ($1_vesting_VestingSchedule); var $t10: $1_vesting_VestingContract; var $t11: int; - var $t12: int; - var $t13: Table int ($1_staking_contract_StakingContract); - var $t14: $1_staking_contract_StakingContract; - var $t15: int; - var $t16: $1_stake_StakePool; + var $t12: Table int ($1_staking_contract_StakingContract); + var $t13: $1_staking_contract_StakingContract; + var $t14: int; + var $t15: $1_stake_StakePool; + var $t16: int; var $t17: int; var $t18: int; var $t19: int; @@ -35549,45 +37742,133 @@ procedure {:inline 1} $1_vesting_vest(_$t0: int) returns () var $t21: int; var $t22: $1_vesting_VestingContract; var $t23: int; - var $t24: $Mutation ($1_vesting_VestingContract); - var $t25: $1_vesting_VestingSchedule; - var $t26: int; + var $t24: int; + var $t25: Table int ($1_staking_contract_StakingContract); + var $t26: $1_staking_contract_StakingContract; var $t27: int; - var $t28: bool; - var $t29: $Mutation ($1_vesting_VestingSchedule); + var $t28: $1_stake_StakePool; + var $t29: int; var $t30: int; var $t31: int; var $t32: int; var $t33: int; - var $t34: int; + var $t34: $1_vesting_VestingContract; var $t35: int; var $t36: int; - var $t37: int; - var $t38: bool; - var $t39: Vec ($1_fixed_point32_FixedPoint32); + var $t37: $1_staking_contract_Store; + var $t38: $1_staking_contract_StakingContract; + var $t39: Table int ($1_staking_contract_StakingContract); var $t40: int; - var $t41: int; + var $t41: $1_stake_StakePool; var $t42: int; - var $t43: bool; + var $t43: int; var $t44: int; var $t45: int; - var $t46: int; - var $t47: $1_pool_u64_Pool; - var $t48: int; + var $t46: $1_stake_StakePool; + var $t47: $1_stake_ValidatorSet; + var $t48: bool; var $t49: int; - var $t50: bool; + var $t50: int; var $t51: int; - var $t52: int; + var $t52: $1_vesting_VestingContract; var $t53: int; - var $t54: int; - var $t55: $Mutation (int); - var $t56: $Mutation (int); - var $t57: $1_vesting_VestingContract; - var $t58: $Mutation ($1_event_EventHandle'$1_vesting_VestEvent'); + var $t54: Table int ($1_staking_contract_StakingContract); + var $t55: $1_staking_contract_StakingContract; + var $t56: int; + var $t57: $1_stake_StakePool; + var $t58: int; var $t59: int; - var $t60: $1_vesting_StakingInfo; + var $t60: int; var $t61: int; - var $t62: $1_vesting_VestEvent; + var $t62: int; + var $t63: int; + var $t64: $1_vesting_VestingContract; + var $t65: int; + var $t66: int; + var $t67: Table int ($1_staking_contract_StakingContract); + var $t68: $1_staking_contract_StakingContract; + var $t69: int; + var $t70: $1_stake_StakePool; + var $t71: int; + var $t72: int; + var $t73: int; + var $t74: int; + var $t75: int; + var $t76: $1_vesting_VestingContract; + var $t77: int; + var $t78: int; + var $t79: $1_staking_contract_Store; + var $t80: $1_staking_contract_StakingContract; + var $t81: Table int ($1_staking_contract_StakingContract); + var $t82: int; + var $t83: $1_stake_StakePool; + var $t84: int; + var $t85: int; + var $t86: int; + var $t87: int; + var $t88: $1_stake_StakePool; + var $t89: $1_stake_ValidatorSet; + var $t90: bool; + var $t91: int; + var $t92: int; + var $t93: int; + var $t94: int; + var $t95: $Mutation ($1_vesting_VestingContract); + var $t96: $1_vesting_VestingSchedule; + var $t97: int; + var $t98: int; + var $t99: bool; + var $t100: $Mutation ($1_vesting_VestingSchedule); + var $t101: int; + var $t102: int; + var $t103: int; + var $t104: int; + var $t105: int; + var $t106: int; + var $t107: int; + var $t108: int; + var $t109: bool; + var $t110: Vec ($1_fixed_point32_FixedPoint32); + var $t111: int; + var $t112: int; + var $t113: int; + var $t114: bool; + var $t115: int; + var $t116: int; + var $t117: int; + var $t118: $1_pool_u64_Pool; + var $t119: int; + var $t120: int; + var $t121: bool; + var $t122: int; + var $t123: int; + var $t124: int; + var $t125: int; + var $t126: $Mutation (int); + var $t127: $Mutation (int); + var $t128: $1_vesting_VestingContract; + var $t129: int; + var $t130: int; + var $t131: $1_staking_contract_Store; + var $t132: $1_staking_contract_StakingContract; + var $t133: Table int ($1_staking_contract_StakingContract); + var $t134: int; + var $t135: $1_stake_StakePool; + var $t136: int; + var $t137: int; + var $t138: int; + var $t139: int; + var $t140: $1_stake_StakePool; + var $t141: $1_stake_ValidatorSet; + var $t142: bool; + var $t143: int; + var $t144: int; + var $t145: int; + var $t146: $Mutation ($1_event_EventHandle'$1_vesting_VestEvent'); + var $t147: int; + var $t148: $1_vesting_StakingInfo; + var $t149: int; + var $t150: $1_vesting_VestEvent; var $t0: int; var $temp_0'$1_fixed_point32_FixedPoint32': $1_fixed_point32_FixedPoint32; var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; @@ -35598,120 +37879,408 @@ procedure {:inline 1} $1_vesting_vest(_$t0: int) returns () $t0 := _$t0; // bytecode translation starts here + // assume Identical($t10, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:161:9+65 + assume {:print "$at(3,7222,7287)"} true; + assume ($t10 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); + + // assume Identical($t11, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t10))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:162:9+49 + assume {:print "$at(3,7296,7345)"} true; + assume ($t11 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t10))); + + // assume Identical($t12, select staking_contract::Store.staking_contracts(global($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:163:9+92 + assume {:print "$at(3,7354,7446)"} true; + assume ($t12 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t0))); + + // assume Identical($t13, simple_map::spec_get($t12, $t11)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:164:9+73 + assume {:print "$at(3,7455,7528)"} true; + assume ($t13 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($t12, $t11)); + + // assume Identical($t14, select staking_contract::StakingContract.pool_address($t13)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:165:9+49 + assume {:print "$at(3,7537,7586)"} true; + assume ($t14 == $pool_address#$1_staking_contract_StakingContract($t13)); + + // assume Identical($t15, global($t14)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:166:9+56 + assume {:print "$at(3,7595,7651)"} true; + assume ($t15 == $ResourceValue($1_stake_StakePool_$memory, $t14)); + + // assume Identical($t16, coin::$value(select stake::StakePool.active($t15))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:167:9+44 + assume {:print "$at(3,7660,7704)"} true; + assume ($t16 == $1_coin_$value'$1_aptos_coin_AptosCoin'($active#$1_stake_StakePool($t15))); + + // assume Identical($t17, coin::$value(select stake::StakePool.pending_active($t15))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:168:9+60 + assume {:print "$at(3,7713,7773)"} true; + assume ($t17 == $1_coin_$value'$1_aptos_coin_AptosCoin'($pending_active#$1_stake_StakePool($t15))); + + // assume Identical($t18, Add($t16, $t17)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:169:9+49 + assume {:print "$at(3,7782,7831)"} true; + assume ($t18 == ($t16 + $t17)); + + // assume Identical($t19, Sub($t18, select staking_contract::StakingContract.principal($t13))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:170:9+74 + assume {:print "$at(3,7840,7914)"} true; + assume ($t19 == ($t18 - $principal#$1_staking_contract_StakingContract($t13))); + + // assume Identical($t20, Div(Mul($t19, select staking_contract::StakingContract.commission_percentage($t13)), 100)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:171:9+91 + assume {:print "$at(3,7923,8014)"} true; + assume ($t20 == (($t19 * $commission_percentage#$1_staking_contract_StakingContract($t13)) div 100)); + + // assume Identical($t21, Sub(Sub($t18, select vesting::VestingContract.remaining_grant($t10)), $t20)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:172:9+87 + assume {:print "$at(3,8023,8110)"} true; + assume ($t21 == (($t18 - $remaining_grant#$1_vesting_VestingContract($t10)) - $t20)); + + // assume Identical($t22, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:59:9+73 + assume {:print "$at(3,2072,2145)"} true; + assume ($t22 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); + + // assume Identical($t23, $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:61:9+38 + assume {:print "$at(3,2155,2193)"} true; + assume ($t23 == $t0); + + // assume Identical($t24, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t22))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:62:9+49 + assume {:print "$at(3,2202,2251)"} true; + assume ($t24 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t22))); + + // assume Identical($t25, select staking_contract::Store.staking_contracts(global($t23))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:63:9+82 + assume {:print "$at(3,2260,2342)"} true; + assume ($t25 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t23))); + + // assume Identical($t26, simple_map::spec_get($t25, $t24)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:64:9+73 + assume {:print "$at(3,2351,2424)"} true; + assume ($t26 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($t25, $t24)); + + // assume Identical($t27, select staking_contract::StakingContract.pool_address($t26)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:69:9+49 + assume {:print "$at(3,2574,2623)"} true; + assume ($t27 == $pool_address#$1_staking_contract_StakingContract($t26)); + + // assume Identical($t28, global($t27)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:70:9+56 + assume {:print "$at(3,2632,2688)"} true; + assume ($t28 == $ResourceValue($1_stake_StakePool_$memory, $t27)); + + // assume Identical($t29, coin::$value(select stake::StakePool.active($t28))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:71:9+44 + assume {:print "$at(3,2697,2741)"} true; + assume ($t29 == $1_coin_$value'$1_aptos_coin_AptosCoin'($active#$1_stake_StakePool($t28))); + + // assume Identical($t30, coin::$value(select stake::StakePool.pending_active($t28))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:72:9+60 + assume {:print "$at(3,2750,2810)"} true; + assume ($t30 == $1_coin_$value'$1_aptos_coin_AptosCoin'($pending_active#$1_stake_StakePool($t28))); + + // assume Identical($t31, Add($t29, $t30)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:73:9+49 + assume {:print "$at(3,2819,2868)"} true; + assume ($t31 == ($t29 + $t30)); + + // assume Identical($t32, Sub($t31, select staking_contract::StakingContract.principal($t26))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:74:9+74 + assume {:print "$at(3,2877,2951)"} true; + assume ($t32 == ($t31 - $principal#$1_staking_contract_StakingContract($t26))); + + // assume Identical($t33, Div(Mul($t32, select staking_contract::StakingContract.commission_percentage($t26)), 100)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:75:9+91 + assume {:print "$at(3,2960,3051)"} true; + assume ($t33 == (($t32 * $commission_percentage#$1_staking_contract_StakingContract($t26)) div 100)); + + // assume Identical($t34, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:518:9+65 + assume {:print "$at(3,23036,23101)"} true; + assume ($t34 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); + + // assume Identical($t35, select account::SignerCapability.account(select vesting::VestingContract.signer_cap($t34))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:434:9+46 + assume {:print "$at(3,18724,18770)"} true; + assume ($t35 == $account#$1_account_SignerCapability($signer_cap#$1_vesting_VestingContract($t34))); + + // assume Identical($t36, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t34))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:435:9+49 + assume {:print "$at(3,18779,18828)"} true; + assume ($t36 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t34))); + + // assume Identical($t37, global($t35)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:439:9+49 + assume {:print "$at(3,18996,19045)"} true; + assume ($t37 == $ResourceValue($1_staking_contract_Store_$memory, $t35)); + + // assume Identical($t38, simple_map::spec_get(select staking_contract::Store.staking_contracts($t37), $t36)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:440:9+79 + assume {:print "$at(3,19054,19133)"} true; + assume ($t38 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($t37), $t36)); + + // assume Identical($t39, select staking_contract::Store.staking_contracts(global($t35))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 + assume {:print "$at(134,11481,11545)"} true; + assume ($t39 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t35))); + + // assume Identical($t40, select staking_contract::StakingContract.pool_address($t38)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:470:9+49 + assume {:print "$at(3,20547,20596)"} true; + assume ($t40 == $pool_address#$1_staking_contract_StakingContract($t38)); + + // assume Identical($t41, global($t40)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:472:9+56 + assume {:print "$at(3,20664,20720)"} true; + assume ($t41 == $ResourceValue($1_stake_StakePool_$memory, $t40)); + + // assume Identical($t42, select coin::Coin.value(select stake::StakePool.inactive($t41))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:473:9+41 + assume {:print "$at(3,20729,20770)"} true; + assume ($t42 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t41))); + + // assume Identical($t43, select coin::Coin.value(select stake::StakePool.pending_inactive($t41))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:474:9+57 + assume {:print "$at(3,20779,20836)"} true; + assume ($t43 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t41))); + + // assume Identical($t44, Add($t42, $t43)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:478:9+63 + assume {:print "$at(3,20948,21011)"} true; + assume ($t44 == ($t42 + $t43)); + + // assume Identical($t45, select stake::OwnerCapability.pool_address(select staking_contract::StakingContract.owner_cap($t38))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:479:9+61 + assume {:print "$at(3,21020,21081)"} true; + assume ($t45 == $pool_address#$1_stake_OwnerCapability($owner_cap#$1_staking_contract_StakingContract($t38))); + + // assume Identical($t46, global($t45)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:481:9+60 + assume {:print "$at(3,21151,21211)"} true; + assume ($t46 == $ResourceValue($1_stake_StakePool_$memory, $t45)); + + // assume Identical($t47, global(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:483:9+66 + assume {:print "$at(3,21286,21352)"} true; + assume ($t47 == $ResourceValue($1_stake_ValidatorSet_$memory, 1)); + + // assume Identical($t48, And(And(Not(stake::spec_contains(select stake::ValidatorSet.pending_active($t47), $t45)), Not(stake::spec_contains(select stake::ValidatorSet.active_validators($t47), $t45))), Not(stake::spec_contains(select stake::ValidatorSet.pending_inactive($t47), $t45)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:484:9+260 + assume {:print "$at(3,21361,21621)"} true; + assume ($t48 == ((!$1_stake_spec_contains($pending_active#$1_stake_ValidatorSet($t47), $t45) && !$1_stake_spec_contains($active_validators#$1_stake_ValidatorSet($t47), $t45)) && !$1_stake_spec_contains($pending_inactive#$1_stake_ValidatorSet($t47), $t45))); + + // assume Identical($t49, select coin::Coin.value(select stake::StakePool.inactive($t46))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:487:9+45 + assume {:print "$at(3,21630,21675)"} true; + assume ($t49 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t46))); + + // assume Identical($t50, select coin::Coin.value(select stake::StakePool.pending_inactive($t46))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:488:9+61 + assume {:print "$at(3,21684,21745)"} true; + assume ($t50 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t46))); + + // assume Identical($t51, Add($t49, $t50)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:489:9+53 + assume {:print "$at(3,21754,21807)"} true; + assume ($t51 == ($t49 + $t50)); + + // assume And(Ge(select staking_contract::StakingContract.commission_percentage($t26), 0), Le(select staking_contract::StakingContract.commission_percentage($t26), 100)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:56:9+102 + assume {:print "$at(3,1852,1954)"} true; + assume (($commission_percentage#$1_staking_contract_StakingContract($t26) >= 0) && ($commission_percentage#$1_staking_contract_StakingContract($t26) <= 100)); + // trace_local[contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:558:5+1 assume {:print "$at(2,26481,26482)"} true; assume {:print "$track_local(57,35,0):", $t0} $t0 == $t0; - // assume Identical($t10, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:60:9+73 - assume {:print "$at(3,2125,2198)"} true; - assume ($t10 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); + // assume Identical($t52, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:161:9+65 + assume {:print "$at(3,7222,7287)"} true; + assume ($t52 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); - // assume Identical($t11, $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:62:9+38 - assume {:print "$at(3,2208,2246)"} true; - assume ($t11 == $t0); + // assume Identical($t53, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t52))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:162:9+49 + assume {:print "$at(3,7296,7345)"} true; + assume ($t53 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t52))); - // assume Identical($t12, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t10))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:63:9+49 - assume {:print "$at(3,2255,2304)"} true; - assume ($t12 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t10))); + // assume Identical($t54, select staking_contract::Store.staking_contracts(global($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:163:9+92 + assume {:print "$at(3,7354,7446)"} true; + assume ($t54 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t0))); - // assume Identical($t13, select staking_contract::Store.staking_contracts(global($t11))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:64:9+82 - assume {:print "$at(3,2313,2395)"} true; - assume ($t13 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t11))); + // assume Identical($t55, simple_map::spec_get($t54, $t53)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:164:9+73 + assume {:print "$at(3,7455,7528)"} true; + assume ($t55 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($t54, $t53)); - // assume Identical($t14, simple_map::spec_get($t13, $t12)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:65:9+73 - assume {:print "$at(3,2404,2477)"} true; - assume ($t14 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($t13, $t12)); + // assume Identical($t56, select staking_contract::StakingContract.pool_address($t55)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:165:9+49 + assume {:print "$at(3,7537,7586)"} true; + assume ($t56 == $pool_address#$1_staking_contract_StakingContract($t55)); - // assume Identical($t15, select staking_contract::StakingContract.pool_address($t14)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:70:9+49 - assume {:print "$at(3,2627,2676)"} true; - assume ($t15 == $pool_address#$1_staking_contract_StakingContract($t14)); + // assume Identical($t57, global($t56)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:166:9+56 + assume {:print "$at(3,7595,7651)"} true; + assume ($t57 == $ResourceValue($1_stake_StakePool_$memory, $t56)); - // assume Identical($t16, global($t15)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:71:9+63 - assume {:print "$at(3,2685,2748)"} true; - assume ($t16 == $ResourceValue($1_stake_StakePool_$memory, $t15)); + // assume Identical($t58, coin::$value(select stake::StakePool.active($t57))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:167:9+44 + assume {:print "$at(3,7660,7704)"} true; + assume ($t58 == $1_coin_$value'$1_aptos_coin_AptosCoin'($active#$1_stake_StakePool($t57))); - // assume Identical($t17, coin::$value(select stake::StakePool.active($t16))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:72:9+44 - assume {:print "$at(3,2757,2801)"} true; - assume ($t17 == $1_coin_$value'$1_aptos_coin_AptosCoin'($active#$1_stake_StakePool($t16))); + // assume Identical($t59, coin::$value(select stake::StakePool.pending_active($t57))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:168:9+60 + assume {:print "$at(3,7713,7773)"} true; + assume ($t59 == $1_coin_$value'$1_aptos_coin_AptosCoin'($pending_active#$1_stake_StakePool($t57))); - // assume Identical($t18, coin::$value(select stake::StakePool.pending_active($t16))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:73:9+60 - assume {:print "$at(3,2810,2870)"} true; - assume ($t18 == $1_coin_$value'$1_aptos_coin_AptosCoin'($pending_active#$1_stake_StakePool($t16))); + // assume Identical($t60, Add($t58, $t59)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:169:9+49 + assume {:print "$at(3,7782,7831)"} true; + assume ($t60 == ($t58 + $t59)); - // assume Identical($t19, Add($t17, $t18)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:74:9+49 - assume {:print "$at(3,2879,2928)"} true; - assume ($t19 == ($t17 + $t18)); + // assume Identical($t61, Sub($t60, select staking_contract::StakingContract.principal($t55))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:170:9+74 + assume {:print "$at(3,7840,7914)"} true; + assume ($t61 == ($t60 - $principal#$1_staking_contract_StakingContract($t55))); - // assume Identical($t20, Sub($t19, select staking_contract::StakingContract.principal($t14))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:75:9+74 - assume {:print "$at(3,2937,3011)"} true; - assume ($t20 == ($t19 - $principal#$1_staking_contract_StakingContract($t14))); + // assume Identical($t62, Div(Mul($t61, select staking_contract::StakingContract.commission_percentage($t55)), 100)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:171:9+91 + assume {:print "$at(3,7923,8014)"} true; + assume ($t62 == (($t61 * $commission_percentage#$1_staking_contract_StakingContract($t55)) div 100)); - // assume Identical($t21, Div(Mul($t20, select staking_contract::StakingContract.commission_percentage($t14)), 100)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:76:9+91 - assume {:print "$at(3,3020,3111)"} true; - assume ($t21 == (($t20 * $commission_percentage#$1_staking_contract_StakingContract($t14)) div 100)); + // assume Identical($t63, Sub(Sub($t60, select vesting::VestingContract.remaining_grant($t52)), $t62)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:172:9+87 + assume {:print "$at(3,8023,8110)"} true; + assume ($t63 == (($t60 - $remaining_grant#$1_vesting_VestingContract($t52)) - $t62)); - // assume Identical($t22, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:389:9+65 - assume {:print "$at(3,16378,16443)"} true; - assume ($t22 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); + // assume Identical($t64, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:59:9+73 + assume {:print "$at(3,2072,2145)"} true; + assume ($t64 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); + + // assume Identical($t65, $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:61:9+38 + assume {:print "$at(3,2155,2193)"} true; + assume ($t65 == $t0); + + // assume Identical($t66, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t64))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:62:9+49 + assume {:print "$at(3,2202,2251)"} true; + assume ($t66 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t64))); + + // assume Identical($t67, select staking_contract::Store.staking_contracts(global($t65))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:63:9+82 + assume {:print "$at(3,2260,2342)"} true; + assume ($t67 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t65))); + + // assume Identical($t68, simple_map::spec_get($t67, $t66)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:64:9+73 + assume {:print "$at(3,2351,2424)"} true; + assume ($t68 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($t67, $t66)); + + // assume Identical($t69, select staking_contract::StakingContract.pool_address($t68)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:69:9+49 + assume {:print "$at(3,2574,2623)"} true; + assume ($t69 == $pool_address#$1_staking_contract_StakingContract($t68)); + + // assume Identical($t70, global($t69)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:70:9+56 + assume {:print "$at(3,2632,2688)"} true; + assume ($t70 == $ResourceValue($1_stake_StakePool_$memory, $t69)); + + // assume Identical($t71, coin::$value(select stake::StakePool.active($t70))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:71:9+44 + assume {:print "$at(3,2697,2741)"} true; + assume ($t71 == $1_coin_$value'$1_aptos_coin_AptosCoin'($active#$1_stake_StakePool($t70))); + + // assume Identical($t72, coin::$value(select stake::StakePool.pending_active($t70))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:72:9+60 + assume {:print "$at(3,2750,2810)"} true; + assume ($t72 == $1_coin_$value'$1_aptos_coin_AptosCoin'($pending_active#$1_stake_StakePool($t70))); + + // assume Identical($t73, Add($t71, $t72)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:73:9+49 + assume {:print "$at(3,2819,2868)"} true; + assume ($t73 == ($t71 + $t72)); + + // assume Identical($t74, Sub($t73, select staking_contract::StakingContract.principal($t68))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:74:9+74 + assume {:print "$at(3,2877,2951)"} true; + assume ($t74 == ($t73 - $principal#$1_staking_contract_StakingContract($t68))); + + // assume Identical($t75, Div(Mul($t74, select staking_contract::StakingContract.commission_percentage($t68)), 100)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:75:9+91 + assume {:print "$at(3,2960,3051)"} true; + assume ($t75 == (($t74 * $commission_percentage#$1_staking_contract_StakingContract($t68)) div 100)); - // vesting::unlock_rewards($t0) on_abort goto L8 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:560:9+32 + // assume Identical($t76, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:518:9+65 + assume {:print "$at(3,23036,23101)"} true; + assume ($t76 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); + + // assume Identical($t77, select account::SignerCapability.account(select vesting::VestingContract.signer_cap($t76))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:434:9+46 + assume {:print "$at(3,18724,18770)"} true; + assume ($t77 == $account#$1_account_SignerCapability($signer_cap#$1_vesting_VestingContract($t76))); + + // assume Identical($t78, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t76))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:435:9+49 + assume {:print "$at(3,18779,18828)"} true; + assume ($t78 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t76))); + + // assume Identical($t79, global($t77)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:439:9+49 + assume {:print "$at(3,18996,19045)"} true; + assume ($t79 == $ResourceValue($1_staking_contract_Store_$memory, $t77)); + + // assume Identical($t80, simple_map::spec_get(select staking_contract::Store.staking_contracts($t79), $t78)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:440:9+79 + assume {:print "$at(3,19054,19133)"} true; + assume ($t80 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($t79), $t78)); + + // assume Identical($t81, select staking_contract::Store.staking_contracts(global($t77))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 + assume {:print "$at(134,11481,11545)"} true; + assume ($t81 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t77))); + + // assume Identical($t82, select staking_contract::StakingContract.pool_address($t80)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:470:9+49 + assume {:print "$at(3,20547,20596)"} true; + assume ($t82 == $pool_address#$1_staking_contract_StakingContract($t80)); + + // assume Identical($t83, global($t82)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:472:9+56 + assume {:print "$at(3,20664,20720)"} true; + assume ($t83 == $ResourceValue($1_stake_StakePool_$memory, $t82)); + + // assume Identical($t84, select coin::Coin.value(select stake::StakePool.inactive($t83))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:473:9+41 + assume {:print "$at(3,20729,20770)"} true; + assume ($t84 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t83))); + + // assume Identical($t85, select coin::Coin.value(select stake::StakePool.pending_inactive($t83))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:474:9+57 + assume {:print "$at(3,20779,20836)"} true; + assume ($t85 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t83))); + + // assume Identical($t86, Add($t84, $t85)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:478:9+63 + assume {:print "$at(3,20948,21011)"} true; + assume ($t86 == ($t84 + $t85)); + + // assume Identical($t87, select stake::OwnerCapability.pool_address(select staking_contract::StakingContract.owner_cap($t80))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:479:9+61 + assume {:print "$at(3,21020,21081)"} true; + assume ($t87 == $pool_address#$1_stake_OwnerCapability($owner_cap#$1_staking_contract_StakingContract($t80))); + + // assume Identical($t88, global($t87)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:481:9+60 + assume {:print "$at(3,21151,21211)"} true; + assume ($t88 == $ResourceValue($1_stake_StakePool_$memory, $t87)); + + // assume Identical($t89, global(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:483:9+66 + assume {:print "$at(3,21286,21352)"} true; + assume ($t89 == $ResourceValue($1_stake_ValidatorSet_$memory, 1)); + + // assume Identical($t90, And(And(Not(stake::spec_contains(select stake::ValidatorSet.pending_active($t89), $t87)), Not(stake::spec_contains(select stake::ValidatorSet.active_validators($t89), $t87))), Not(stake::spec_contains(select stake::ValidatorSet.pending_inactive($t89), $t87)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:484:9+260 + assume {:print "$at(3,21361,21621)"} true; + assume ($t90 == ((!$1_stake_spec_contains($pending_active#$1_stake_ValidatorSet($t89), $t87) && !$1_stake_spec_contains($active_validators#$1_stake_ValidatorSet($t89), $t87)) && !$1_stake_spec_contains($pending_inactive#$1_stake_ValidatorSet($t89), $t87))); + + // assume Identical($t91, select coin::Coin.value(select stake::StakePool.inactive($t88))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:487:9+45 + assume {:print "$at(3,21630,21675)"} true; + assume ($t91 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t88))); + + // assume Identical($t92, select coin::Coin.value(select stake::StakePool.pending_inactive($t88))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:488:9+61 + assume {:print "$at(3,21684,21745)"} true; + assume ($t92 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t88))); + + // assume Identical($t93, Add($t91, $t92)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:489:9+53 + assume {:print "$at(3,21754,21807)"} true; + assume ($t93 == ($t91 + $t92)); + + // vesting::unlock_rewards($t0) on_abort goto L8 with $t94 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:560:9+32 assume {:print "$at(2,26610,26642)"} true; call $1_vesting_unlock_rewards($t0); if ($abort_flag) { assume {:print "$at(2,26610,26642)"} true; - $t23 := $abort_code; - assume {:print "$track_abort(57,35):", $t23} $t23 == $t23; + $t94 := $abort_code; + assume {:print "$track_abort(57,35):", $t94} $t94 == $t94; goto L8; } - // $t24 := borrow_global($t0) on_abort goto L8 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:564:32+17 + // $t95 := borrow_global($t0) on_abort goto L8 with $t94 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:564:32+17 assume {:print "$at(2,26810,26827)"} true; if (!$ResourceExists($1_vesting_VestingContract_$memory, $t0)) { call $ExecFailureAbort(); } else { - $t24 := $Mutation($Global($t0), EmptyVec(), $ResourceValue($1_vesting_VestingContract_$memory, $t0)); + $t95 := $Mutation($Global($t0), EmptyVec(), $ResourceValue($1_vesting_VestingContract_$memory, $t0)); } if ($abort_flag) { assume {:print "$at(2,26810,26827)"} true; - $t23 := $abort_code; - assume {:print "$track_abort(57,35):", $t23} $t23 == $t23; + $t94 := $abort_code; + assume {:print "$track_abort(57,35):", $t94} $t94 == $t94; goto L8; } - // trace_local[vesting_contract]($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:564:13+16 - $temp_0'$1_vesting_VestingContract' := $Dereference($t24); + // trace_local[vesting_contract]($t95) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:564:13+16 + $temp_0'$1_vesting_VestingContract' := $Dereference($t95); assume {:print "$track_local(57,35,7):", $temp_0'$1_vesting_VestingContract'} $temp_0'$1_vesting_VestingContract' == $temp_0'$1_vesting_VestingContract'; - // $t25 := get_field.vesting_schedule($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:566:13+33 + // $t96 := get_field.vesting_schedule($t95) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:566:13+33 assume {:print "$at(2,26932,26965)"} true; - $t25 := $vesting_schedule#$1_vesting_VestingContract($Dereference($t24)); + $t96 := $vesting_schedule#$1_vesting_VestingContract($Dereference($t95)); - // $t26 := get_field.start_timestamp_secs($t25) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:566:13+54 - $t26 := $start_timestamp_secs#$1_vesting_VestingSchedule($t25); + // $t97 := get_field.start_timestamp_secs($t96) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:566:13+54 + $t97 := $start_timestamp_secs#$1_vesting_VestingSchedule($t96); - // $t27 := timestamp::now_seconds() on_abort goto L8 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:566:70+24 - call $t27 := $1_timestamp_now_seconds(); + // $t98 := timestamp::now_seconds() on_abort goto L8 with $t94 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:566:70+24 + call $t98 := $1_timestamp_now_seconds(); if ($abort_flag) { assume {:print "$at(2,26989,27013)"} true; - $t23 := $abort_code; - assume {:print "$track_abort(57,35):", $t23} $t23 == $t23; + $t94 := $abort_code; + assume {:print "$track_abort(57,35):", $t94} $t94 == $t94; goto L8; } - // $t28 := >($t26, $t27) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:566:68+1 - call $t28 := $Gt($t26, $t27); + // $t99 := >($t97, $t98) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:566:68+1 + call $t99 := $Gt($t97, $t98); - // if ($t28) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:566:9+117 - if ($t28) { goto L1; } else { goto L0; } + // if ($t99) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:566:9+117 + if ($t99) { goto L1; } else { goto L0; } // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:567:13+6 assume {:print "$at(2,27029,27035)"} true; L1: - // pack_ref_deep($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:567:13+6 + // pack_ref_deep($t95) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:567:13+6 assume {:print "$at(2,27029,27035)"} true; - // destroy($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:567:13+6 + // destroy($t95) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:567:13+6 // goto L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:567:13+6 goto L7; @@ -35720,86 +38289,86 @@ L1: assume {:print "$at(2,27200,27216)"} true; L0: - // $t29 := borrow_field.vesting_schedule($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:571:32+38 + // $t100 := borrow_field.vesting_schedule($t95) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:571:32+38 assume {:print "$at(2,27195,27233)"} true; - $t29 := $ChildMutation($t24, 4, $vesting_schedule#$1_vesting_VestingContract($Dereference($t24))); + $t100 := $ChildMutation($t95, 4, $vesting_schedule#$1_vesting_VestingContract($Dereference($t95))); - // trace_local[vesting_schedule]($t29) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:571:13+16 - $temp_0'$1_vesting_VestingSchedule' := $Dereference($t29); + // trace_local[vesting_schedule]($t100) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:571:13+16 + $temp_0'$1_vesting_VestingSchedule' := $Dereference($t100); assume {:print "$track_local(57,35,9):", $temp_0'$1_vesting_VestingSchedule'} $temp_0'$1_vesting_VestingSchedule' == $temp_0'$1_vesting_VestingSchedule'; - // $t30 := get_field.last_vested_period($t29) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:572:34+35 + // $t101 := get_field.last_vested_period($t100) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:572:34+35 assume {:print "$at(2,27268,27303)"} true; - $t30 := $last_vested_period#$1_vesting_VestingSchedule($Dereference($t29)); + $t101 := $last_vested_period#$1_vesting_VestingSchedule($Dereference($t100)); - // $t31 := 1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:573:56+1 + // $t102 := 1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:573:56+1 assume {:print "$at(2,27360,27361)"} true; - $t31 := 1; - assume $IsValid'u64'($t31); + $t102 := 1; + assume $IsValid'u64'($t102); - // $t32 := +($t30, $t31) on_abort goto L8 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:573:54+1 - call $t32 := $AddU64($t30, $t31); + // $t103 := +($t101, $t102) on_abort goto L8 with $t94 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:573:54+1 + call $t103 := $AddU64($t101, $t102); if ($abort_flag) { assume {:print "$at(2,27358,27359)"} true; - $t23 := $abort_code; - assume {:print "$track_abort(57,35):", $t23} $t23 == $t23; + $t94 := $abort_code; + assume {:print "$track_abort(57,35):", $t94} $t94 == $t94; goto L8; } - // trace_local[next_period_to_vest]($t32) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:573:13+19 - assume {:print "$track_local(57,35,3):", $t32} $t32 == $t32; + // trace_local[next_period_to_vest]($t103) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:573:13+19 + assume {:print "$track_local(57,35,3):", $t103} $t103 == $t103; - // $t33 := timestamp::now_seconds() on_abort goto L8 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:575:14+24 + // $t104 := timestamp::now_seconds() on_abort goto L8 with $t94 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:575:14+24 assume {:print "$at(2,27412,27436)"} true; - call $t33 := $1_timestamp_now_seconds(); + call $t104 := $1_timestamp_now_seconds(); if ($abort_flag) { assume {:print "$at(2,27412,27436)"} true; - $t23 := $abort_code; - assume {:print "$track_abort(57,35):", $t23} $t23 == $t23; + $t94 := $abort_code; + assume {:print "$track_abort(57,35):", $t94} $t94 == $t94; goto L8; } - // $t34 := get_field.start_timestamp_secs($t29) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:575:41+37 - $t34 := $start_timestamp_secs#$1_vesting_VestingSchedule($Dereference($t29)); + // $t105 := get_field.start_timestamp_secs($t100) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:575:41+37 + $t105 := $start_timestamp_secs#$1_vesting_VestingSchedule($Dereference($t100)); - // $t35 := -($t33, $t34) on_abort goto L8 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:575:39+1 - call $t35 := $Sub($t33, $t34); + // $t106 := -($t104, $t105) on_abort goto L8 with $t94 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:575:39+1 + call $t106 := $Sub($t104, $t105); if ($abort_flag) { assume {:print "$at(2,27437,27438)"} true; - $t23 := $abort_code; - assume {:print "$track_abort(57,35):", $t23} $t23 == $t23; + $t94 := $abort_code; + assume {:print "$track_abort(57,35):", $t94} $t94 == $t94; goto L8; } - // $t36 := get_field.period_duration($t29) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:575:82+32 - $t36 := $period_duration#$1_vesting_VestingSchedule($Dereference($t29)); + // $t107 := get_field.period_duration($t100) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:575:82+32 + $t107 := $period_duration#$1_vesting_VestingSchedule($Dereference($t100)); - // $t37 := /($t35, $t36) on_abort goto L8 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:575:80+1 - call $t37 := $Div($t35, $t36); + // $t108 := /($t106, $t107) on_abort goto L8 with $t94 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:575:80+1 + call $t108 := $Div($t106, $t107); if ($abort_flag) { assume {:print "$at(2,27478,27479)"} true; - $t23 := $abort_code; - assume {:print "$track_abort(57,35):", $t23} $t23 == $t23; + $t94 := $abort_code; + assume {:print "$track_abort(57,35):", $t94} $t94 == $t94; goto L8; } - // $t38 := <($t37, $t32) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:576:35+1 + // $t109 := <($t108, $t103) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:576:35+1 assume {:print "$at(2,27548,27549)"} true; - call $t38 := $Lt($t37, $t32); + call $t109 := $Lt($t108, $t103); - // if ($t38) goto L3 else goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:576:9+79 - if ($t38) { goto L3; } else { goto L2; } + // if ($t109) goto L3 else goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:576:9+79 + if ($t109) { goto L3; } else { goto L2; } // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:577:13+6 assume {:print "$at(2,27585,27591)"} true; L3: - // destroy($t29) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:577:13+6 + // destroy($t100) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:577:13+6 assume {:print "$at(2,27585,27591)"} true; - // pack_ref_deep($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:577:13+6 + // pack_ref_deep($t95) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:577:13+6 - // destroy($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:577:13+6 + // destroy($t95) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:577:13+6 // goto L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:577:13+6 goto L7; @@ -35808,57 +38377,57 @@ L3: assume {:print "$at(2,27767,27783)"} true; L2: - // $t39 := get_field.schedule($t29) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:582:24+26 + // $t110 := get_field.schedule($t100) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:582:24+26 assume {:print "$at(2,27766,27792)"} true; - $t39 := $schedule#$1_vesting_VestingSchedule($Dereference($t29)); + $t110 := $schedule#$1_vesting_VestingSchedule($Dereference($t100)); - // trace_local[schedule]($t39) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:582:13+8 - assume {:print "$track_local(57,35,4):", $t39} $t39 == $t39; + // trace_local[schedule]($t110) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:582:13+8 + assume {:print "$track_local(57,35,4):", $t110} $t110 == $t110; - // $t40 := 1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:583:52+1 + // $t111 := 1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:583:52+1 assume {:print "$at(2,27845,27846)"} true; - $t40 := 1; - assume $IsValid'u64'($t40); + $t111 := 1; + assume $IsValid'u64'($t111); - // $t41 := -($t32, $t40) on_abort goto L8 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:583:50+1 - call $t41 := $Sub($t32, $t40); + // $t112 := -($t103, $t111) on_abort goto L8 with $t94 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:583:50+1 + call $t112 := $Sub($t103, $t111); if ($abort_flag) { assume {:print "$at(2,27843,27844)"} true; - $t23 := $abort_code; - assume {:print "$track_abort(57,35):", $t23} $t23 == $t23; + $t94 := $abort_code; + assume {:print "$track_abort(57,35):", $t94} $t94 == $t94; goto L8; } - // trace_local[schedule_index]($t41) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:583:13+14 - assume {:print "$track_local(57,35,5):", $t41} $t41 == $t41; + // trace_local[schedule_index]($t112) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:583:13+14 + assume {:print "$track_local(57,35,5):", $t112} $t112 == $t112; - // $t42 := vector::length($t39) on_abort goto L8 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:584:53+24 + // $t113 := vector::length($t110) on_abort goto L8 with $t94 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:584:53+24 assume {:print "$at(2,27900,27924)"} true; - call $t42 := $1_vector_length'$1_fixed_point32_FixedPoint32'($t39); + call $t113 := $1_vector_length'$1_fixed_point32_FixedPoint32'($t110); if ($abort_flag) { assume {:print "$at(2,27900,27924)"} true; - $t23 := $abort_code; - assume {:print "$track_abort(57,35):", $t23} $t23 == $t23; + $t94 := $abort_code; + assume {:print "$track_abort(57,35):", $t94} $t94 == $t94; goto L8; } - // $t43 := <($t41, $t42) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:584:51+1 - call $t43 := $Lt($t41, $t42); + // $t114 := <($t112, $t113) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:584:51+1 + call $t114 := $Lt($t112, $t113); - // if ($t43) goto L5 else goto L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:584:32+281 - if ($t43) { goto L5; } else { goto L4; } + // if ($t114) goto L5 else goto L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:584:32+281 + if ($t114) { goto L5; } else { goto L4; } // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:585:29+8 assume {:print "$at(2,27956,27964)"} true; L5: - // $t1 := vector::borrow($t39, $t41) on_abort goto L8 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:585:14+40 + // $t1 := vector::borrow($t110, $t112) on_abort goto L8 with $t94 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:585:14+40 assume {:print "$at(2,27941,27981)"} true; - call $t1 := $1_vector_borrow'$1_fixed_point32_FixedPoint32'($t39, $t41); + call $t1 := $1_vector_borrow'$1_fixed_point32_FixedPoint32'($t110, $t112); if ($abort_flag) { assume {:print "$at(2,27941,27981)"} true; - $t23 := $abort_code; - assume {:print "$track_abort(57,35):", $t23} $t23 == $t23; + $t94 := $abort_code; + assume {:print "$track_abort(57,35):", $t94} $t94 == $t94; goto L8; } @@ -35870,35 +38439,35 @@ L5: assume {:print "$at(2,28111,28119)"} true; L4: - // $t44 := vector::length($t39) on_abort goto L8 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:588:39+24 + // $t115 := vector::length($t110) on_abort goto L8 with $t94 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:588:39+24 assume {:print "$at(2,28121,28145)"} true; - call $t44 := $1_vector_length'$1_fixed_point32_FixedPoint32'($t39); + call $t115 := $1_vector_length'$1_fixed_point32_FixedPoint32'($t110); if ($abort_flag) { assume {:print "$at(2,28121,28145)"} true; - $t23 := $abort_code; - assume {:print "$track_abort(57,35):", $t23} $t23 == $t23; + $t94 := $abort_code; + assume {:print "$track_abort(57,35):", $t94} $t94 == $t94; goto L8; } - // $t45 := 1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:588:66+1 - $t45 := 1; - assume $IsValid'u64'($t45); + // $t116 := 1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:588:66+1 + $t116 := 1; + assume $IsValid'u64'($t116); - // $t46 := -($t44, $t45) on_abort goto L8 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:588:64+1 - call $t46 := $Sub($t44, $t45); + // $t117 := -($t115, $t116) on_abort goto L8 with $t94 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:588:64+1 + call $t117 := $Sub($t115, $t116); if ($abort_flag) { assume {:print "$at(2,28146,28147)"} true; - $t23 := $abort_code; - assume {:print "$track_abort(57,35):", $t23} $t23 == $t23; + $t94 := $abort_code; + assume {:print "$track_abort(57,35):", $t94} $t94 == $t94; goto L8; } - // $t1 := vector::borrow($t39, $t46) on_abort goto L8 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:588:14+54 - call $t1 := $1_vector_borrow'$1_fixed_point32_FixedPoint32'($t39, $t46); + // $t1 := vector::borrow($t110, $t117) on_abort goto L8 with $t94 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:588:14+54 + call $t1 := $1_vector_borrow'$1_fixed_point32_FixedPoint32'($t110, $t117); if ($abort_flag) { assume {:print "$at(2,28096,28150)"} true; - $t23 := $abort_code; - assume {:print "$track_abort(57,35):", $t23} $t23 == $t23; + $t94 := $abort_code; + assume {:print "$track_abort(57,35):", $t94} $t94 == $t94; goto L8; } @@ -35910,38 +38479,38 @@ L6: assume {:print "$at(2,27860,27876)"} true; assume {:print "$track_local(57,35,8):", $t1} $t1 == $t1; - // $t47 := get_field.grant_pool($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:590:49+28 + // $t118 := get_field.grant_pool($t95) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:590:49+28 assume {:print "$at(2,28210,28238)"} true; - $t47 := $grant_pool#$1_vesting_VestingContract($Dereference($t24)); + $t118 := $grant_pool#$1_vesting_VestingContract($Dereference($t95)); - // $t48 := pool_u64::total_coins($t47) on_abort goto L8 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:590:27+51 - call $t48 := $1_pool_u64_total_coins($t47); + // $t119 := pool_u64::total_coins($t118) on_abort goto L8 with $t94 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:590:27+51 + call $t119 := $1_pool_u64_total_coins($t118); if ($abort_flag) { assume {:print "$at(2,28188,28239)"} true; - $t23 := $abort_code; - assume {:print "$track_abort(57,35):", $t23} $t23 == $t23; + $t94 := $abort_code; + assume {:print "$track_abort(57,35):", $t94} $t94 == $t94; goto L8; } - // $t49 := opaque begin: fixed_point32::multiply_u64($t48, $t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:591:29+58 + // $t120 := opaque begin: fixed_point32::multiply_u64($t119, $t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:591:29+58 assume {:print "$at(2,28269,28327)"} true; - // assume Identical($t50, Gt(fixed_point32::spec_multiply_u64($t48, $t1), 18446744073709551615)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:591:29+58 - assume ($t50 == ($1_fixed_point32_spec_multiply_u64($t48, $t1) > 18446744073709551615)); + // assume Identical($t121, Gt(fixed_point32::spec_multiply_u64($t119, $t1), 18446744073709551615)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:591:29+58 + assume ($t121 == ($1_fixed_point32_spec_multiply_u64($t119, $t1) > 18446744073709551615)); - // if ($t50) goto L11 else goto L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:591:29+58 - if ($t50) { goto L11; } else { goto L9; } + // if ($t121) goto L11 else goto L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:591:29+58 + if ($t121) { goto L11; } else { goto L9; } // label L10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:591:29+58 L10: - // assume And(Gt(fixed_point32::spec_multiply_u64($t48, $t1), 18446744073709551615), Eq(131075, $t23)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:591:29+58 + // assume And(Gt(fixed_point32::spec_multiply_u64($t119, $t1), 18446744073709551615), Eq(131075, $t94)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:591:29+58 assume {:print "$at(2,28269,28327)"} true; - assume (($1_fixed_point32_spec_multiply_u64($t48, $t1) > 18446744073709551615) && $IsEqual'num'(131075, $t23)); + assume (($1_fixed_point32_spec_multiply_u64($t119, $t1) > 18446744073709551615) && $IsEqual'num'(131075, $t94)); - // trace_abort($t23) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:591:29+58 + // trace_abort($t94) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:591:29+58 assume {:print "$at(2,28269,28327)"} true; - assume {:print "$track_abort(57,35):", $t23} $t23 == $t23; + assume {:print "$track_abort(57,35):", $t94} $t94 == $t94; // goto L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:591:29+58 goto L8; @@ -35949,111 +38518,180 @@ L10: // label L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:591:29+58 L9: - // assume WellFormed($t49) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:591:29+58 + // assume WellFormed($t120) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:591:29+58 assume {:print "$at(2,28269,28327)"} true; - assume $IsValid'u64'($t49); + assume $IsValid'u64'($t120); - // assume Eq($t49, fixed_point32::spec_multiply_u64($t48, $t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:591:29+58 - assume $IsEqual'u64'($t49, $1_fixed_point32_spec_multiply_u64($t48, $t1)); + // assume Eq($t120, fixed_point32::spec_multiply_u64($t119, $t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:591:29+58 + assume $IsEqual'u64'($t120, $1_fixed_point32_spec_multiply_u64($t119, $t1)); - // $t49 := opaque end: fixed_point32::multiply_u64($t48, $t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:591:29+58 + // $t120 := opaque end: fixed_point32::multiply_u64($t119, $t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:591:29+58 - // $t51 := get_field.remaining_grant($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:593:44+32 + // $t122 := get_field.remaining_grant($t95) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:593:44+32 assume {:print "$at(2,28489,28521)"} true; - $t51 := $remaining_grant#$1_vesting_VestingContract($Dereference($t24)); + $t122 := $remaining_grant#$1_vesting_VestingContract($Dereference($t95)); + + // $t123 := math64::min($t120, $t122) on_abort goto L8 with $t94 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:593:25+52 + call $t123 := $1_math64_min($t120, $t122); + if ($abort_flag) { + assume {:print "$at(2,28470,28522)"} true; + $t94 := $abort_code; + assume {:print "$track_abort(57,35):", $t94} $t94 == $t94; + goto L8; + } + + // trace_local[vested_amount]($t123) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:593:9+13 + assume {:print "$track_local(57,35,6):", $t123} $t123 == $t123; + + // $t124 := get_field.remaining_grant($t95) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:594:44+32 + assume {:print "$at(2,28567,28599)"} true; + $t124 := $remaining_grant#$1_vesting_VestingContract($Dereference($t95)); + + // $t125 := -($t124, $t123) on_abort goto L8 with $t94 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:594:77+1 + call $t125 := $Sub($t124, $t123); + if ($abort_flag) { + assume {:print "$at(2,28600,28601)"} true; + $t94 := $abort_code; + assume {:print "$track_abort(57,35):", $t94} $t94 == $t94; + goto L8; + } + + // $t126 := borrow_field.remaining_grant($t95) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:594:9+32 + $t126 := $ChildMutation($t95, 7, $remaining_grant#$1_vesting_VestingContract($Dereference($t95))); + + // write_ref($t126, $t125) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:594:9+83 + $t126 := $UpdateMutation($t126, $t125); + + // write_back[Reference($t95).remaining_grant (u64)]($t126) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:594:9+83 + $t95 := $UpdateMutation($t95, $Update'$1_vesting_VestingContract'_remaining_grant($Dereference($t95), $Dereference($t126))); + + // $t127 := borrow_field.last_vested_period($t100) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:595:9+35 + assume {:print "$at(2,28625,28660)"} true; + $t127 := $ChildMutation($t100, 3, $last_vested_period#$1_vesting_VestingSchedule($Dereference($t100))); + + // write_ref($t127, $t103) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:595:9+57 + $t127 := $UpdateMutation($t127, $t103); + + // write_back[Reference($t100).last_vested_period (u64)]($t127) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:595:9+57 + $t100 := $UpdateMutation($t100, $Update'$1_vesting_VestingSchedule'_last_vested_period($Dereference($t100), $Dereference($t127))); + + // write_back[Reference($t95).vesting_schedule (vesting::VestingSchedule)]($t100) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:595:9+57 + $t95 := $UpdateMutation($t95, $Update'$1_vesting_VestingContract'_vesting_schedule($Dereference($t95), $Dereference($t100))); + + // $t128 := read_ref($t95) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:596:21+33 + assume {:print "$at(2,28704,28737)"} true; + $t128 := $Dereference($t95); + + // assume Identical($t129, select account::SignerCapability.account(select vesting::VestingContract.signer_cap($t128))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:434:9+46 + assume {:print "$at(3,18724,18770)"} true; + assume ($t129 == $account#$1_account_SignerCapability($signer_cap#$1_vesting_VestingContract($t128))); + + // assume Identical($t130, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t128))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:435:9+49 + assume {:print "$at(3,18779,18828)"} true; + assume ($t130 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t128))); + + // assume Identical($t131, global($t129)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:439:9+49 + assume {:print "$at(3,18996,19045)"} true; + assume ($t131 == $ResourceValue($1_staking_contract_Store_$memory, $t129)); + + // assume Identical($t132, simple_map::spec_get(select staking_contract::Store.staking_contracts($t131), $t130)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:440:9+79 + assume {:print "$at(3,19054,19133)"} true; + assume ($t132 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($t131), $t130)); + + // assume Identical($t133, select staking_contract::Store.staking_contracts(global($t129))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 + assume {:print "$at(134,11481,11545)"} true; + assume ($t133 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t129))); - // $t52 := math64::min($t49, $t51) on_abort goto L8 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:593:25+52 - call $t52 := $1_math64_min($t49, $t51); - if ($abort_flag) { - assume {:print "$at(2,28470,28522)"} true; - $t23 := $abort_code; - assume {:print "$track_abort(57,35):", $t23} $t23 == $t23; - goto L8; - } + // assume Identical($t134, select staking_contract::StakingContract.pool_address($t132)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:470:9+49 + assume {:print "$at(3,20547,20596)"} true; + assume ($t134 == $pool_address#$1_staking_contract_StakingContract($t132)); - // trace_local[vested_amount]($t52) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:593:9+13 - assume {:print "$track_local(57,35,6):", $t52} $t52 == $t52; + // assume Identical($t135, global($t134)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:472:9+56 + assume {:print "$at(3,20664,20720)"} true; + assume ($t135 == $ResourceValue($1_stake_StakePool_$memory, $t134)); - // $t53 := get_field.remaining_grant($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:594:44+32 - assume {:print "$at(2,28567,28599)"} true; - $t53 := $remaining_grant#$1_vesting_VestingContract($Dereference($t24)); + // assume Identical($t136, select coin::Coin.value(select stake::StakePool.inactive($t135))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:473:9+41 + assume {:print "$at(3,20729,20770)"} true; + assume ($t136 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t135))); - // $t54 := -($t53, $t52) on_abort goto L8 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:594:77+1 - call $t54 := $Sub($t53, $t52); - if ($abort_flag) { - assume {:print "$at(2,28600,28601)"} true; - $t23 := $abort_code; - assume {:print "$track_abort(57,35):", $t23} $t23 == $t23; - goto L8; - } + // assume Identical($t137, select coin::Coin.value(select stake::StakePool.pending_inactive($t135))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:474:9+57 + assume {:print "$at(3,20779,20836)"} true; + assume ($t137 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t135))); - // $t55 := borrow_field.remaining_grant($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:594:9+32 - $t55 := $ChildMutation($t24, 7, $remaining_grant#$1_vesting_VestingContract($Dereference($t24))); + // assume Identical($t138, Add($t136, $t137)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:478:9+63 + assume {:print "$at(3,20948,21011)"} true; + assume ($t138 == ($t136 + $t137)); - // write_ref($t55, $t54) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:594:9+83 - $t55 := $UpdateMutation($t55, $t54); + // assume Identical($t139, select stake::OwnerCapability.pool_address(select staking_contract::StakingContract.owner_cap($t132))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:479:9+61 + assume {:print "$at(3,21020,21081)"} true; + assume ($t139 == $pool_address#$1_stake_OwnerCapability($owner_cap#$1_staking_contract_StakingContract($t132))); - // write_back[Reference($t24).remaining_grant (u64)]($t55) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:594:9+83 - $t24 := $UpdateMutation($t24, $Update'$1_vesting_VestingContract'_remaining_grant($Dereference($t24), $Dereference($t55))); + // assume Identical($t140, global($t139)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:481:9+60 + assume {:print "$at(3,21151,21211)"} true; + assume ($t140 == $ResourceValue($1_stake_StakePool_$memory, $t139)); - // $t56 := borrow_field.last_vested_period($t29) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:595:9+35 - assume {:print "$at(2,28625,28660)"} true; - $t56 := $ChildMutation($t29, 3, $last_vested_period#$1_vesting_VestingSchedule($Dereference($t29))); + // assume Identical($t141, global(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:483:9+66 + assume {:print "$at(3,21286,21352)"} true; + assume ($t141 == $ResourceValue($1_stake_ValidatorSet_$memory, 1)); - // write_ref($t56, $t32) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:595:9+57 - $t56 := $UpdateMutation($t56, $t32); + // assume Identical($t142, And(And(Not(stake::spec_contains(select stake::ValidatorSet.pending_active($t141), $t139)), Not(stake::spec_contains(select stake::ValidatorSet.active_validators($t141), $t139))), Not(stake::spec_contains(select stake::ValidatorSet.pending_inactive($t141), $t139)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:484:9+260 + assume {:print "$at(3,21361,21621)"} true; + assume ($t142 == ((!$1_stake_spec_contains($pending_active#$1_stake_ValidatorSet($t141), $t139) && !$1_stake_spec_contains($active_validators#$1_stake_ValidatorSet($t141), $t139)) && !$1_stake_spec_contains($pending_inactive#$1_stake_ValidatorSet($t141), $t139))); - // write_back[Reference($t29).last_vested_period (u64)]($t56) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:595:9+57 - $t29 := $UpdateMutation($t29, $Update'$1_vesting_VestingSchedule'_last_vested_period($Dereference($t29), $Dereference($t56))); + // assume Identical($t143, select coin::Coin.value(select stake::StakePool.inactive($t140))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:487:9+45 + assume {:print "$at(3,21630,21675)"} true; + assume ($t143 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t140))); - // write_back[Reference($t24).vesting_schedule (vesting::VestingSchedule)]($t29) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:595:9+57 - $t24 := $UpdateMutation($t24, $Update'$1_vesting_VestingContract'_vesting_schedule($Dereference($t24), $Dereference($t29))); + // assume Identical($t144, select coin::Coin.value(select stake::StakePool.pending_inactive($t140))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:488:9+61 + assume {:print "$at(3,21684,21745)"} true; + assume ($t144 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t140))); - // $t57 := read_ref($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:596:21+33 - assume {:print "$at(2,28704,28737)"} true; - $t57 := $Dereference($t24); + // assume Identical($t145, Add($t143, $t144)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:489:9+53 + assume {:print "$at(3,21754,21807)"} true; + assume ($t145 == ($t143 + $t144)); - // vesting::unlock_stake($t57, $t52) on_abort goto L8 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:596:9+45 - call $1_vesting_unlock_stake($t57, $t52); + // vesting::unlock_stake($t128, $t123) on_abort goto L8 with $t94 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:596:9+45 + assume {:print "$at(2,28692,28737)"} true; + call $1_vesting_unlock_stake($t128, $t123); if ($abort_flag) { assume {:print "$at(2,28692,28737)"} true; - $t23 := $abort_code; - assume {:print "$track_abort(57,35):", $t23} $t23 == $t23; + $t94 := $abort_code; + assume {:print "$track_abort(57,35):", $t94} $t94 == $t94; goto L8; } - // $t58 := borrow_field.vest_events($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:599:13+33 + // $t146 := borrow_field.vest_events($t95) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:599:13+33 assume {:print "$at(2,28772,28805)"} true; - $t58 := $ChildMutation($t24, 14, $vest_events#$1_vesting_VestingContract($Dereference($t24))); + $t146 := $ChildMutation($t95, 14, $vest_events#$1_vesting_VestingContract($Dereference($t95))); - // $t59 := get_field.admin($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:601:24+22 + // $t147 := get_field.admin($t95) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:601:24+22 assume {:print "$at(2,28854,28876)"} true; - $t59 := $admin#$1_vesting_VestingContract($Dereference($t24)); + $t147 := $admin#$1_vesting_VestingContract($Dereference($t95)); - // $t60 := get_field.staking($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:603:39+24 + // $t148 := get_field.staking($t95) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:603:39+24 assume {:print "$at(2,28976,29000)"} true; - $t60 := $staking#$1_vesting_VestingContract($Dereference($t24)); + $t148 := $staking#$1_vesting_VestingContract($Dereference($t95)); - // $t61 := get_field.pool_address($t60) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:603:39+37 - $t61 := $pool_address#$1_vesting_StakingInfo($t60); + // $t149 := get_field.pool_address($t148) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:603:39+37 + $t149 := $pool_address#$1_vesting_StakingInfo($t148); - // $t62 := pack vesting::VestEvent($t59, $t0, $t61, $t32, $t52) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:600:13+300 + // $t150 := pack vesting::VestEvent($t147, $t0, $t149, $t103, $t123) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:600:13+300 assume {:print "$at(2,28819,29119)"} true; - $t62 := $1_vesting_VestEvent($t59, $t0, $t61, $t32, $t52); + $t150 := $1_vesting_VestEvent($t147, $t0, $t149, $t103, $t123); - // opaque begin: event::emit_event($t58, $t62) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:598:9+382 + // opaque begin: event::emit_event($t146, $t150) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:598:9+382 assume {:print "$at(2,28748,29130)"} true; - // opaque end: event::emit_event($t58, $t62) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:598:9+382 + // opaque end: event::emit_event($t146, $t150) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:598:9+382 - // write_back[Reference($t24).vest_events (event::EventHandle)]($t58) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:598:9+382 - $t24 := $UpdateMutation($t24, $Update'$1_vesting_VestingContract'_vest_events($Dereference($t24), $Dereference($t58))); + // write_back[Reference($t95).vest_events (event::EventHandle)]($t146) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:598:9+382 + $t95 := $UpdateMutation($t95, $Update'$1_vesting_VestingContract'_vest_events($Dereference($t95), $Dereference($t146))); - // pack_ref_deep($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:598:9+382 + // pack_ref_deep($t95) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:598:9+382 - // write_back[vesting::VestingContract@]($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:598:9+382 - $1_vesting_VestingContract_$memory := $ResourceUpdate($1_vesting_VestingContract_$memory, $GlobalLocationAddress($t24), - $Dereference($t24)); + // write_back[vesting::VestingContract@]($t95) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:598:9+382 + $1_vesting_VestingContract_$memory := $ResourceUpdate($1_vesting_VestingContract_$memory, $GlobalLocationAddress($t95), + $Dereference($t95)); // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:608:5+1 assume {:print "$at(2,29136,29137)"} true; @@ -36066,9 +38704,9 @@ L7: // label L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:608:5+1 L8: - // abort($t23) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:608:5+1 + // abort($t94) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:608:5+1 assume {:print "$at(2,29136,29137)"} true; - $abort_code := $t23; + $abort_code := $t94; $abort_flag := true; return; @@ -36076,10 +38714,10 @@ L8: assume {:print "$at(1,0,10)"} true; L11: - // destroy($t24) at :1:1+10 + // destroy($t95) at :1:1+10 assume {:print "$at(1,0,10)"} true; - // destroy($t29) at :1:1+10 + // destroy($t100) at :1:1+10 // goto L10 at :1:1+10 goto L10; @@ -36087,7 +38725,7 @@ L11: } // fun vesting::vest_many [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:611:5+408 -procedure {:timeLimit 200} $1_vesting_vest_many$verify(_$t0: Vec (int)) returns () +procedure {:timeLimit 1000} $1_vesting_vest_many$verify(_$t0: Vec (int)) returns () { // declare local variables var $t1: int; @@ -36105,6 +38743,48 @@ procedure {:timeLimit 200} $1_vesting_vest_many$verify(_$t0: Vec (int)) returns var $t13: int; var $t14: int; var $t15: int; + var $t16: $1_vesting_VestingContract; + var $t17: int; + var $t18: Table int ($1_staking_contract_StakingContract); + var $t19: $1_staking_contract_StakingContract; + var $t20: int; + var $t21: $1_stake_StakePool; + var $t22: int; + var $t23: int; + var $t24: int; + var $t25: int; + var $t26: int; + var $t27: int; + var $t28: $1_vesting_VestingContract; + var $t29: int; + var $t30: int; + var $t31: Table int ($1_staking_contract_StakingContract); + var $t32: $1_staking_contract_StakingContract; + var $t33: int; + var $t34: $1_stake_StakePool; + var $t35: int; + var $t36: int; + var $t37: int; + var $t38: int; + var $t39: int; + var $t40: $1_vesting_VestingContract; + var $t41: int; + var $t42: int; + var $t43: $1_staking_contract_Store; + var $t44: $1_staking_contract_StakingContract; + var $t45: Table int ($1_staking_contract_StakingContract); + var $t46: int; + var $t47: $1_stake_StakePool; + var $t48: int; + var $t49: int; + var $t50: int; + var $t51: int; + var $t52: $1_stake_StakePool; + var $t53: $1_stake_ValidatorSet; + var $t54: bool; + var $t55: int; + var $t56: int; + var $t57: int; var $t0: Vec (int); var $temp_0'u64': int; var $temp_0'vec'address'': Vec (int); @@ -36197,7 +38877,13 @@ procedure {:timeLimit 200} $1_vesting_vest_many$verify(_$t0: Vec (int)) returns // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/reconfiguration.spec.move:8:9+137 assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> ($1_timestamp_spec_now_microseconds($1_timestamp_CurrentTimeMicroseconds_$memory) >= $1_reconfiguration_$last_reconfiguration_time($1_reconfiguration_Configuration_$memory))); + // assume forall i: Range(0, Len
($t0)): And(Ge(select staking_contract::StakingContract.commission_percentage(simple_map::spec_get(select staking_contract::Store.staking_contracts(global(Index($t0, i))), select vesting::StakingInfo.operator(select vesting::VestingContract.staking(global(Index($t0, i)))))), 0), Le(select staking_contract::StakingContract.commission_percentage(simple_map::spec_get(select staking_contract::Store.staking_contracts(global(Index($t0, i))), select vesting::StakingInfo.operator(select vesting::VestingContract.staking(global(Index($t0, i)))))), 100)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:203:9+440 + assume {:print "$at(3,9064,9504)"} true; + assume (var $range_0 := $Range(0, LenVec($t0)); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var i := $i_1; + ((($commission_percentage#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, ReadVec($t0, i))), $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($ResourceValue($1_vesting_VestingContract_$memory, ReadVec($t0, i)))))) >= 0) && ($commission_percentage#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, ReadVec($t0, i))), $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($ResourceValue($1_vesting_VestingContract_$memory, ReadVec($t0, i)))))) <= 100)))))); + // trace_local[contract_addresses]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:611:5+1 + assume {:print "$at(2,29191,29192)"} true; assume {:print "$track_local(57,36,0):", $t0} $t0 == $t0; // $t4 := vector::length
($t0) on_abort goto L9 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:612:19+35 @@ -36349,6 +39035,179 @@ L5: goto L9; } + // assume Identical($t16, global($t13)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:161:9+65 + assume {:print "$at(3,7222,7287)"} true; + assume ($t16 == $ResourceValue($1_vesting_VestingContract_$memory, $t13)); + + // assume Identical($t17, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t16))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:162:9+49 + assume {:print "$at(3,7296,7345)"} true; + assume ($t17 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t16))); + + // assume Identical($t18, select staking_contract::Store.staking_contracts(global($t13))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:163:9+92 + assume {:print "$at(3,7354,7446)"} true; + assume ($t18 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t13))); + + // assume Identical($t19, simple_map::spec_get($t18, $t17)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:164:9+73 + assume {:print "$at(3,7455,7528)"} true; + assume ($t19 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($t18, $t17)); + + // assume Identical($t20, select staking_contract::StakingContract.pool_address($t19)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:165:9+49 + assume {:print "$at(3,7537,7586)"} true; + assume ($t20 == $pool_address#$1_staking_contract_StakingContract($t19)); + + // assume Identical($t21, global($t20)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:166:9+56 + assume {:print "$at(3,7595,7651)"} true; + assume ($t21 == $ResourceValue($1_stake_StakePool_$memory, $t20)); + + // assume Identical($t22, coin::$value(select stake::StakePool.active($t21))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:167:9+44 + assume {:print "$at(3,7660,7704)"} true; + assume ($t22 == $1_coin_$value'$1_aptos_coin_AptosCoin'($active#$1_stake_StakePool($t21))); + + // assume Identical($t23, coin::$value(select stake::StakePool.pending_active($t21))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:168:9+60 + assume {:print "$at(3,7713,7773)"} true; + assume ($t23 == $1_coin_$value'$1_aptos_coin_AptosCoin'($pending_active#$1_stake_StakePool($t21))); + + // assume Identical($t24, Add($t22, $t23)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:169:9+49 + assume {:print "$at(3,7782,7831)"} true; + assume ($t24 == ($t22 + $t23)); + + // assume Identical($t25, Sub($t24, select staking_contract::StakingContract.principal($t19))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:170:9+74 + assume {:print "$at(3,7840,7914)"} true; + assume ($t25 == ($t24 - $principal#$1_staking_contract_StakingContract($t19))); + + // assume Identical($t26, Div(Mul($t25, select staking_contract::StakingContract.commission_percentage($t19)), 100)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:171:9+91 + assume {:print "$at(3,7923,8014)"} true; + assume ($t26 == (($t25 * $commission_percentage#$1_staking_contract_StakingContract($t19)) div 100)); + + // assume Identical($t27, Sub(Sub($t24, select vesting::VestingContract.remaining_grant($t16)), $t26)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:172:9+87 + assume {:print "$at(3,8023,8110)"} true; + assume ($t27 == (($t24 - $remaining_grant#$1_vesting_VestingContract($t16)) - $t26)); + + // assume Identical($t28, global($t13)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:59:9+73 + assume {:print "$at(3,2072,2145)"} true; + assume ($t28 == $ResourceValue($1_vesting_VestingContract_$memory, $t13)); + + // assume Identical($t29, $t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:61:9+38 + assume {:print "$at(3,2155,2193)"} true; + assume ($t29 == $t13); + + // assume Identical($t30, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t28))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:62:9+49 + assume {:print "$at(3,2202,2251)"} true; + assume ($t30 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t28))); + + // assume Identical($t31, select staking_contract::Store.staking_contracts(global($t29))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:63:9+82 + assume {:print "$at(3,2260,2342)"} true; + assume ($t31 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t29))); + + // assume Identical($t32, simple_map::spec_get($t31, $t30)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:64:9+73 + assume {:print "$at(3,2351,2424)"} true; + assume ($t32 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($t31, $t30)); + + // assume Identical($t33, select staking_contract::StakingContract.pool_address($t32)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:69:9+49 + assume {:print "$at(3,2574,2623)"} true; + assume ($t33 == $pool_address#$1_staking_contract_StakingContract($t32)); + + // assume Identical($t34, global($t33)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:70:9+56 + assume {:print "$at(3,2632,2688)"} true; + assume ($t34 == $ResourceValue($1_stake_StakePool_$memory, $t33)); + + // assume Identical($t35, coin::$value(select stake::StakePool.active($t34))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:71:9+44 + assume {:print "$at(3,2697,2741)"} true; + assume ($t35 == $1_coin_$value'$1_aptos_coin_AptosCoin'($active#$1_stake_StakePool($t34))); + + // assume Identical($t36, coin::$value(select stake::StakePool.pending_active($t34))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:72:9+60 + assume {:print "$at(3,2750,2810)"} true; + assume ($t36 == $1_coin_$value'$1_aptos_coin_AptosCoin'($pending_active#$1_stake_StakePool($t34))); + + // assume Identical($t37, Add($t35, $t36)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:73:9+49 + assume {:print "$at(3,2819,2868)"} true; + assume ($t37 == ($t35 + $t36)); + + // assume Identical($t38, Sub($t37, select staking_contract::StakingContract.principal($t32))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:74:9+74 + assume {:print "$at(3,2877,2951)"} true; + assume ($t38 == ($t37 - $principal#$1_staking_contract_StakingContract($t32))); + + // assume Identical($t39, Div(Mul($t38, select staking_contract::StakingContract.commission_percentage($t32)), 100)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:75:9+91 + assume {:print "$at(3,2960,3051)"} true; + assume ($t39 == (($t38 * $commission_percentage#$1_staking_contract_StakingContract($t32)) div 100)); + + // assume Identical($t40, global($t13)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:518:9+65 + assume {:print "$at(3,23036,23101)"} true; + assume ($t40 == $ResourceValue($1_vesting_VestingContract_$memory, $t13)); + + // assume Identical($t41, select account::SignerCapability.account(select vesting::VestingContract.signer_cap($t40))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:434:9+46 + assume {:print "$at(3,18724,18770)"} true; + assume ($t41 == $account#$1_account_SignerCapability($signer_cap#$1_vesting_VestingContract($t40))); + + // assume Identical($t42, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t40))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:435:9+49 + assume {:print "$at(3,18779,18828)"} true; + assume ($t42 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t40))); + + // assume Identical($t43, global($t41)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:439:9+49 + assume {:print "$at(3,18996,19045)"} true; + assume ($t43 == $ResourceValue($1_staking_contract_Store_$memory, $t41)); + + // assume Identical($t44, simple_map::spec_get(select staking_contract::Store.staking_contracts($t43), $t42)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:440:9+79 + assume {:print "$at(3,19054,19133)"} true; + assume ($t44 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($t43), $t42)); + + // assume Identical($t45, select staking_contract::Store.staking_contracts(global($t41))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 + assume {:print "$at(134,11481,11545)"} true; + assume ($t45 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t41))); + + // assume Identical($t46, select staking_contract::StakingContract.pool_address($t44)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:470:9+49 + assume {:print "$at(3,20547,20596)"} true; + assume ($t46 == $pool_address#$1_staking_contract_StakingContract($t44)); + + // assume Identical($t47, global($t46)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:472:9+56 + assume {:print "$at(3,20664,20720)"} true; + assume ($t47 == $ResourceValue($1_stake_StakePool_$memory, $t46)); + + // assume Identical($t48, select coin::Coin.value(select stake::StakePool.inactive($t47))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:473:9+41 + assume {:print "$at(3,20729,20770)"} true; + assume ($t48 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t47))); + + // assume Identical($t49, select coin::Coin.value(select stake::StakePool.pending_inactive($t47))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:474:9+57 + assume {:print "$at(3,20779,20836)"} true; + assume ($t49 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t47))); + + // assume Identical($t50, Add($t48, $t49)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:478:9+63 + assume {:print "$at(3,20948,21011)"} true; + assume ($t50 == ($t48 + $t49)); + + // assume Identical($t51, select stake::OwnerCapability.pool_address(select staking_contract::StakingContract.owner_cap($t44))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:479:9+61 + assume {:print "$at(3,21020,21081)"} true; + assume ($t51 == $pool_address#$1_stake_OwnerCapability($owner_cap#$1_staking_contract_StakingContract($t44))); + + // assume Identical($t52, global($t51)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:481:9+60 + assume {:print "$at(3,21151,21211)"} true; + assume ($t52 == $ResourceValue($1_stake_StakePool_$memory, $t51)); + + // assume Identical($t53, global(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:483:9+66 + assume {:print "$at(3,21286,21352)"} true; + assume ($t53 == $ResourceValue($1_stake_ValidatorSet_$memory, 1)); + + // assume Identical($t54, And(And(Not(stake::spec_contains(select stake::ValidatorSet.pending_active($t53), $t51)), Not(stake::spec_contains(select stake::ValidatorSet.active_validators($t53), $t51))), Not(stake::spec_contains(select stake::ValidatorSet.pending_inactive($t53), $t51)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:484:9+260 + assume {:print "$at(3,21361,21621)"} true; + assume ($t54 == ((!$1_stake_spec_contains($pending_active#$1_stake_ValidatorSet($t53), $t51) && !$1_stake_spec_contains($active_validators#$1_stake_ValidatorSet($t53), $t51)) && !$1_stake_spec_contains($pending_inactive#$1_stake_ValidatorSet($t53), $t51))); + + // assume Identical($t55, select coin::Coin.value(select stake::StakePool.inactive($t52))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:487:9+45 + assume {:print "$at(3,21630,21675)"} true; + assume ($t55 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t52))); + + // assume Identical($t56, select coin::Coin.value(select stake::StakePool.pending_inactive($t52))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:488:9+61 + assume {:print "$at(3,21684,21745)"} true; + assume ($t56 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t52))); + + // assume Identical($t57, Add($t55, $t56)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:489:9+53 + assume {:print "$at(3,21754,21807)"} true; + assume ($t57 == ($t55 + $t56)); + + // assert And(Ge(select staking_contract::StakingContract.commission_percentage($t32), 0), Le(select staking_contract::StakingContract.commission_percentage($t32), 100)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:56:9+102 + assume {:print "$at(3,1852,1954)"} true; + assert {:msg "assert_failed(3,1852,1954): precondition does not hold at this call"} + (($commission_percentage#$1_staking_contract_StakingContract($t32) >= 0) && ($commission_percentage#$1_staking_contract_StakingContract($t32) <= 100)); + // vesting::vest($t13) on_abort goto L9 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:618:13+22 assume {:print "$at(2,29558,29580)"} true; call $1_vesting_vest($t13); @@ -36400,15 +39259,16 @@ L7: assume {:print "$at(2,29598,29599)"} true; L8: - // assert Not(false) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:620:5+1 - assume {:print "$at(2,29598,29599)"} true; - assert {:msg "assert_failed(2,29598,29599): function does not abort under this condition"} - !false; + // assert Not(Eq(Len
($t0), 0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:196:9+39 + assume {:print "$at(3,8886,8925)"} true; + assert {:msg "assert_failed(3,8886,8925): function does not abort under this condition"} + !$IsEqual'num'(LenVec($t0), 0); - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:620:5+1 + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:196:9+39 return; // label L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:620:5+1 + assume {:print "$at(2,29598,29599)"} true; L9: // abort($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:620:5+1 @@ -36420,7 +39280,7 @@ L9: } // fun vesting::vesting_contracts [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:309:5+258 -procedure {:timeLimit 200} $1_vesting_vesting_contracts$verify(_$t0: int) returns ($ret0: Vec (int)) +procedure {:timeLimit 1000} $1_vesting_vesting_contracts$verify(_$t0: int) returns ($ret0: Vec (int)) { // declare local variables var $t1: Vec (int); @@ -36535,7 +39395,7 @@ L4: } // fun vesting::vesting_start_secs [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:261:5+271 -procedure {:timeLimit 200} $1_vesting_vesting_start_secs$verify(_$t0: int) returns ($ret0: int) +procedure {:timeLimit 1000} $1_vesting_vesting_start_secs$verify(_$t0: int) returns ($ret0: int) { // declare local variables var $t1: int; @@ -36636,21 +39496,37 @@ procedure {:inline 1} $1_vesting_withdraw_stake(_$t0: $1_vesting_VestingContract // declare local variables var $t2: $signer; var $t3: int; - var $t4: $1_vesting_StakingInfo; - var $t5: int; - var $t6: Table int ($1_staking_contract_StakingContract); - var $t7: int; - var $t8: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; - var $t9: int; - var $t10: $signer; - var $t11: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t4: int; + var $t5: $1_staking_contract_Store; + var $t6: $1_staking_contract_StakingContract; + var $t7: Table int ($1_staking_contract_StakingContract); + var $t8: int; + var $t9: $1_stake_StakePool; + var $t10: int; + var $t11: int; var $t12: int; - var $t13: $1_coin_CoinStore'$1_aptos_coin_AptosCoin'; - var $t14: int; - var $t15: int; - var $t16: $1_coin_CoinStore'$1_aptos_coin_AptosCoin'; + var $t13: int; + var $t14: $1_stake_StakePool; + var $t15: $1_stake_ValidatorSet; + var $t16: bool; var $t17: int; - var $t18: $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $t18: int; + var $t19: int; + var $t20: $1_vesting_StakingInfo; + var $t21: int; + var $t22: Table int ($1_staking_contract_StakingContract); + var $t23: int; + var $t24: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t25: int; + var $t26: $signer; + var $t27: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t28: int; + var $t29: $1_coin_CoinStore'$1_aptos_coin_AptosCoin'; + var $t30: int; + var $t31: int; + var $t32: $1_coin_CoinStore'$1_aptos_coin_AptosCoin'; + var $t33: int; + var $t34: $1_coin_Coin'$1_aptos_coin_AptosCoin'; var $t0: $1_vesting_VestingContract; var $t1: int; var $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin'': $1_coin_Coin'$1_aptos_coin_AptosCoin'; @@ -36661,6 +39537,70 @@ procedure {:inline 1} $1_vesting_withdraw_stake(_$t0: $1_vesting_VestingContract $t1 := _$t1; // bytecode translation starts here + // assume Identical($t4, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:455:9+49 + assume {:print "$at(3,19684,19733)"} true; + assume ($t4 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t0))); + + // assume Identical($t5, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:459:9+62 + assume {:print "$at(3,19898,19960)"} true; + assume ($t5 == $ResourceValue($1_staking_contract_Store_$memory, $t1)); + + // assume Identical($t6, simple_map::spec_get(select staking_contract::Store.staking_contracts($t5), $t4)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:460:9+79 + assume {:print "$at(3,19969,20048)"} true; + assume ($t6 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($t5), $t4)); + + // assume Identical($t7, select staking_contract::Store.staking_contracts(global($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 + assume {:print "$at(134,11481,11545)"} true; + assume ($t7 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t1))); + + // assume Identical($t8, select staking_contract::StakingContract.pool_address($t6)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:470:9+49 + assume {:print "$at(3,20547,20596)"} true; + assume ($t8 == $pool_address#$1_staking_contract_StakingContract($t6)); + + // assume Identical($t9, global($t8)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:472:9+56 + assume {:print "$at(3,20664,20720)"} true; + assume ($t9 == $ResourceValue($1_stake_StakePool_$memory, $t8)); + + // assume Identical($t10, select coin::Coin.value(select stake::StakePool.inactive($t9))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:473:9+41 + assume {:print "$at(3,20729,20770)"} true; + assume ($t10 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t9))); + + // assume Identical($t11, select coin::Coin.value(select stake::StakePool.pending_inactive($t9))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:474:9+57 + assume {:print "$at(3,20779,20836)"} true; + assume ($t11 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t9))); + + // assume Identical($t12, Add($t10, $t11)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:478:9+63 + assume {:print "$at(3,20948,21011)"} true; + assume ($t12 == ($t10 + $t11)); + + // assume Identical($t13, select stake::OwnerCapability.pool_address(select staking_contract::StakingContract.owner_cap($t6))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:479:9+61 + assume {:print "$at(3,21020,21081)"} true; + assume ($t13 == $pool_address#$1_stake_OwnerCapability($owner_cap#$1_staking_contract_StakingContract($t6))); + + // assume Identical($t14, global($t13)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:481:9+60 + assume {:print "$at(3,21151,21211)"} true; + assume ($t14 == $ResourceValue($1_stake_StakePool_$memory, $t13)); + + // assume Identical($t15, global(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:483:9+66 + assume {:print "$at(3,21286,21352)"} true; + assume ($t15 == $ResourceValue($1_stake_ValidatorSet_$memory, 1)); + + // assume Identical($t16, And(And(Not(stake::spec_contains(select stake::ValidatorSet.pending_active($t15), $t13)), Not(stake::spec_contains(select stake::ValidatorSet.active_validators($t15), $t13))), Not(stake::spec_contains(select stake::ValidatorSet.pending_inactive($t15), $t13)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:484:9+260 + assume {:print "$at(3,21361,21621)"} true; + assume ($t16 == ((!$1_stake_spec_contains($pending_active#$1_stake_ValidatorSet($t15), $t13) && !$1_stake_spec_contains($active_validators#$1_stake_ValidatorSet($t15), $t13)) && !$1_stake_spec_contains($pending_inactive#$1_stake_ValidatorSet($t15), $t13))); + + // assume Identical($t17, select coin::Coin.value(select stake::StakePool.inactive($t14))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:487:9+45 + assume {:print "$at(3,21630,21675)"} true; + assume ($t17 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t14))); + + // assume Identical($t18, select coin::Coin.value(select stake::StakePool.pending_inactive($t14))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:488:9+61 + assume {:print "$at(3,21684,21745)"} true; + assume ($t18 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t14))); + + // assume Identical($t19, Add($t17, $t18)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:489:9+53 + assume {:print "$at(3,21754,21807)"} true; + assume ($t19 == ($t17 + $t18)); + // trace_local[vesting_contract]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:956:5+1 assume {:print "$at(2,44691,44692)"} true; assume {:print "$track_local(57,41,0):", $t0} $t0 == $t0; @@ -36668,142 +39608,162 @@ procedure {:inline 1} $1_vesting_withdraw_stake(_$t0: $1_vesting_VestingContract // trace_local[contract_address]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:956:5+1 assume {:print "$track_local(57,41,1):", $t1} $t1 == $t1; - // $t4 := get_field.staking($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:959:56+24 + // $t20 := get_field.staking($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:959:56+24 assume {:print "$at(2,45009,45033)"} true; - $t4 := $staking#$1_vesting_VestingContract($t0); + $t20 := $staking#$1_vesting_VestingContract($t0); - // $t5 := get_field.operator($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:959:56+33 - $t5 := $operator#$1_vesting_StakingInfo($t4); + // $t21 := get_field.operator($t20) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:959:56+33 + $t21 := $operator#$1_vesting_StakingInfo($t20); - // assume Identical($t6, select staking_contract::Store.staking_contracts(global($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 + // assume Identical($t22, select staking_contract::Store.staking_contracts(global($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 assume {:print "$at(134,11481,11545)"} true; - assume ($t6 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t1))); + assume ($t22 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t1))); - // staking_contract::distribute($t1, $t5) on_abort goto L2 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:959:9+81 + // staking_contract::distribute($t1, $t21) on_abort goto L2 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:959:9+81 assume {:print "$at(2,44962,45043)"} true; - call $1_staking_contract_distribute($t1, $t5); + call $1_staking_contract_distribute($t1, $t21); if ($abort_flag) { assume {:print "$at(2,44962,45043)"} true; - $t7 := $abort_code; - assume {:print "$track_abort(57,41):", $t7} $t7 == $t7; + $t23 := $abort_code; + assume {:print "$track_abort(57,41):", $t23} $t23 == $t23; goto L2; } - // assume Identical($t8, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + // assume Identical($t24, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 assume {:print "$at(95,1664,1763)"} true; - assume ($t8 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + assume ($t24 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); - // $t9 := coin::balance($t1) on_abort goto L2 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:960:31+42 + // $t25 := coin::balance($t1) on_abort goto L2 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:960:31+42 assume {:print "$at(2,45075,45117)"} true; - call $t9 := $1_coin_balance'$1_aptos_coin_AptosCoin'($t1); + call $t25 := $1_coin_balance'$1_aptos_coin_AptosCoin'($t1); if ($abort_flag) { assume {:print "$at(2,45075,45117)"} true; - $t7 := $abort_code; - assume {:print "$track_abort(57,41):", $t7} $t7 == $t7; + $t23 := $abort_code; + assume {:print "$track_abort(57,41):", $t23} $t23 == $t23; goto L2; } - // trace_local[withdrawn_coins]($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:960:13+15 - assume {:print "$track_local(57,41,3):", $t9} $t9 == $t9; + // trace_local[withdrawn_coins]($t25) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:960:13+15 + assume {:print "$track_local(57,41,3):", $t25} $t25 == $t25; - // $t10 := vesting::get_vesting_account_signer_internal($t0) on_abort goto L2 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:961:32+53 + // $t26 := vesting::get_vesting_account_signer_internal($t0) on_abort goto L2 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:961:32+53 assume {:print "$at(2,45150,45203)"} true; - call $t10 := $1_vesting_get_vesting_account_signer_internal($t0); + call $t26 := $1_vesting_get_vesting_account_signer_internal($t0); if ($abort_flag) { assume {:print "$at(2,45150,45203)"} true; - $t7 := $abort_code; - assume {:print "$track_abort(57,41):", $t7} $t7 == $t7; + $t23 := $abort_code; + assume {:print "$track_abort(57,41):", $t23} $t23 == $t23; goto L2; } - // assume Identical($t11, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + // assume Identical($t27, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 assume {:print "$at(95,1664,1763)"} true; - assume ($t11 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + assume ($t27 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); - // assume Identical($t12, signer::$address_of($t10)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:384:9+47 + // assume Identical($t28, signer::$address_of($t26)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:384:9+47 assume {:print "$at(95,16622,16669)"} true; - assume ($t12 == $1_signer_$address_of($t10)); + assume ($t28 == $1_signer_$address_of($t26)); - // assume Identical($t13, global>($t12)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:385:9+59 + // assume Identical($t29, global>($t28)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:385:9+59 assume {:print "$at(95,16678,16737)"} true; - assume ($t13 == $ResourceValue($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $t12)); + assume ($t29 == $ResourceValue($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $t28)); - // assume Identical($t14, select coin::Coin.value(select coin::CoinStore.coin($t13))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:386:9+36 + // assume Identical($t30, select coin::Coin.value(select coin::CoinStore.coin($t29))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:386:9+36 assume {:print "$at(95,16746,16782)"} true; - assume ($t14 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($coin#$1_coin_CoinStore'$1_aptos_coin_AptosCoin'($t13))); + assume ($t30 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($coin#$1_coin_CoinStore'$1_aptos_coin_AptosCoin'($t29))); - // assume Identical($t15, signer::$address_of($t10)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:394:9+47 + // assume Identical($t31, signer::$address_of($t26)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:394:9+47 assume {:print "$at(95,17076,17123)"} true; - assume ($t15 == $1_signer_$address_of($t10)); + assume ($t31 == $1_signer_$address_of($t26)); - // assume Identical($t16, global>($t15)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:395:9+59 + // assume Identical($t32, global>($t31)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:395:9+59 assume {:print "$at(95,17132,17191)"} true; - assume ($t16 == $ResourceValue($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $t15)); + assume ($t32 == $ResourceValue($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $t31)); - // assume Identical($t17, select coin::Coin.value(select coin::CoinStore.coin($t16))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:396:9+36 + // assume Identical($t33, select coin::Coin.value(select coin::CoinStore.coin($t32))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:396:9+36 assume {:print "$at(95,17200,17236)"} true; - assume ($t17 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($coin#$1_coin_CoinStore'$1_aptos_coin_AptosCoin'($t16))); + assume ($t33 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($coin#$1_coin_CoinStore'$1_aptos_coin_AptosCoin'($t32))); - // $t18 := coin::withdraw($t10, $t9) on_abort goto L2 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:962:9+59 + // $t34 := coin::withdraw($t26, $t25) on_abort goto L2 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:962:9+59 assume {:print "$at(2,45213,45272)"} true; - call $t18 := $1_coin_withdraw'$1_aptos_coin_AptosCoin'($t10, $t9); + call $t34 := $1_coin_withdraw'$1_aptos_coin_AptosCoin'($t26, $t25); if ($abort_flag) { assume {:print "$at(2,45213,45272)"} true; - $t7 := $abort_code; - assume {:print "$track_abort(57,41):", $t7} $t7 == $t7; + $t23 := $abort_code; + assume {:print "$track_abort(57,41):", $t23} $t23 == $t23; goto L2; } - // trace_return[0]($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:962:9+59 - assume {:print "$track_return(57,41,0):", $t18} $t18 == $t18; + // trace_return[0]($t34) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:962:9+59 + assume {:print "$track_return(57,41,0):", $t34} $t34 == $t34; // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:963:5+1 assume {:print "$at(2,45277,45278)"} true; L1: - // return $t18 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:963:5+1 + // return $t34 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:963:5+1 assume {:print "$at(2,45277,45278)"} true; - $ret0 := $t18; + $ret0 := $t34; return; // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:963:5+1 L2: - // abort($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:963:5+1 + // abort($t23) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:963:5+1 assume {:print "$at(2,45277,45278)"} true; - $abort_code := $t7; + $abort_code := $t23; $abort_flag := true; return; } // fun vesting::withdraw_stake [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:956:5+587 -procedure {:timeLimit 200} $1_vesting_withdraw_stake$verify(_$t0: $1_vesting_VestingContract, _$t1: int) returns ($ret0: $1_coin_Coin'$1_aptos_coin_AptosCoin') +procedure {:timeLimit 1000} $1_vesting_withdraw_stake$verify(_$t0: $1_vesting_VestingContract, _$t1: int) returns ($ret0: $1_coin_Coin'$1_aptos_coin_AptosCoin') { // declare local variables var $t2: $signer; var $t3: int; - var $t4: $1_vesting_StakingInfo; - var $t5: int; - var $t6: Table int ($1_staking_contract_StakingContract); - var $t7: int; - var $t8: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; - var $t9: int; - var $t10: $signer; - var $t11: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t4: int; + var $t5: $1_staking_contract_Store; + var $t6: $1_staking_contract_StakingContract; + var $t7: Table int ($1_staking_contract_StakingContract); + var $t8: int; + var $t9: $1_stake_StakePool; + var $t10: int; + var $t11: int; var $t12: int; - var $t13: $1_coin_CoinStore'$1_aptos_coin_AptosCoin'; - var $t14: int; - var $t15: int; - var $t16: $1_coin_CoinStore'$1_aptos_coin_AptosCoin'; + var $t13: int; + var $t14: $1_stake_StakePool; + var $t15: $1_stake_ValidatorSet; + var $t16: bool; var $t17: int; - var $t18: $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $t18: int; + var $t19: int; + var $t20: $1_vesting_StakingInfo; + var $t21: int; + var $t22: Table int ($1_staking_contract_StakingContract); + var $t23: int; + var $t24: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t25: int; + var $t26: $signer; + var $t27: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t28: int; + var $t29: $1_coin_CoinStore'$1_aptos_coin_AptosCoin'; + var $t30: int; + var $t31: int; + var $t32: $1_coin_CoinStore'$1_aptos_coin_AptosCoin'; + var $t33: int; + var $t34: $1_coin_Coin'$1_aptos_coin_AptosCoin'; var $t0: $1_vesting_VestingContract; var $t1: int; var $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin'': $1_coin_Coin'$1_aptos_coin_AptosCoin'; var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; var $temp_0'address': int; var $temp_0'u64': int; + var $1_staking_contract_Store_$memory#133: $Memory $1_staking_contract_Store; + var $1_stake_StakePool_$memory#134: $Memory $1_stake_StakePool; + var $1_stake_ValidatorSet_$memory#135: $Memory $1_stake_ValidatorSet; + var $1_timestamp_CurrentTimeMicroseconds_$memory#136: $Memory $1_timestamp_CurrentTimeMicroseconds; $t0 := _$t0; $t1 := _$t1; @@ -36893,120 +39853,228 @@ procedure {:timeLimit 200} $1_vesting_withdraw_stake$verify(_$t0: $1_vesting_Ves // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/reconfiguration.spec.move:8:9+137 assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> ($1_timestamp_spec_now_microseconds($1_timestamp_CurrentTimeMicroseconds_$memory) >= $1_reconfiguration_$last_reconfiguration_time($1_reconfiguration_Configuration_$memory))); + // assume Identical($t4, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:455:9+49 + assume {:print "$at(3,19684,19733)"} true; + assume ($t4 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t0))); + + // assume Identical($t5, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:459:9+62 + assume {:print "$at(3,19898,19960)"} true; + assume ($t5 == $ResourceValue($1_staking_contract_Store_$memory, $t1)); + + // assume Identical($t6, simple_map::spec_get(select staking_contract::Store.staking_contracts($t5), $t4)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:460:9+79 + assume {:print "$at(3,19969,20048)"} true; + assume ($t6 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($t5), $t4)); + + // assume Identical($t7, select staking_contract::Store.staking_contracts(global($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 + assume {:print "$at(134,11481,11545)"} true; + assume ($t7 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t1))); + + // assume Identical($t8, select staking_contract::StakingContract.pool_address($t6)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:470:9+49 + assume {:print "$at(3,20547,20596)"} true; + assume ($t8 == $pool_address#$1_staking_contract_StakingContract($t6)); + + // assume Identical($t9, global($t8)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:472:9+56 + assume {:print "$at(3,20664,20720)"} true; + assume ($t9 == $ResourceValue($1_stake_StakePool_$memory, $t8)); + + // assume Identical($t10, select coin::Coin.value(select stake::StakePool.inactive($t9))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:473:9+41 + assume {:print "$at(3,20729,20770)"} true; + assume ($t10 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t9))); + + // assume Identical($t11, select coin::Coin.value(select stake::StakePool.pending_inactive($t9))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:474:9+57 + assume {:print "$at(3,20779,20836)"} true; + assume ($t11 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t9))); + + // assume Identical($t12, Add($t10, $t11)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:478:9+63 + assume {:print "$at(3,20948,21011)"} true; + assume ($t12 == ($t10 + $t11)); + + // assume Identical($t13, select stake::OwnerCapability.pool_address(select staking_contract::StakingContract.owner_cap($t6))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:479:9+61 + assume {:print "$at(3,21020,21081)"} true; + assume ($t13 == $pool_address#$1_stake_OwnerCapability($owner_cap#$1_staking_contract_StakingContract($t6))); + + // assume Identical($t14, global($t13)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:481:9+60 + assume {:print "$at(3,21151,21211)"} true; + assume ($t14 == $ResourceValue($1_stake_StakePool_$memory, $t13)); + + // assume Identical($t15, global(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:483:9+66 + assume {:print "$at(3,21286,21352)"} true; + assume ($t15 == $ResourceValue($1_stake_ValidatorSet_$memory, 1)); + + // assume Identical($t16, And(And(Not(stake::spec_contains(select stake::ValidatorSet.pending_active($t15), $t13)), Not(stake::spec_contains(select stake::ValidatorSet.active_validators($t15), $t13))), Not(stake::spec_contains(select stake::ValidatorSet.pending_inactive($t15), $t13)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:484:9+260 + assume {:print "$at(3,21361,21621)"} true; + assume ($t16 == ((!$1_stake_spec_contains($pending_active#$1_stake_ValidatorSet($t15), $t13) && !$1_stake_spec_contains($active_validators#$1_stake_ValidatorSet($t15), $t13)) && !$1_stake_spec_contains($pending_inactive#$1_stake_ValidatorSet($t15), $t13))); + + // assume Identical($t17, select coin::Coin.value(select stake::StakePool.inactive($t14))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:487:9+45 + assume {:print "$at(3,21630,21675)"} true; + assume ($t17 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t14))); + + // assume Identical($t18, select coin::Coin.value(select stake::StakePool.pending_inactive($t14))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:488:9+61 + assume {:print "$at(3,21684,21745)"} true; + assume ($t18 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t14))); + + // assume Identical($t19, Add($t17, $t18)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:489:9+53 + assume {:print "$at(3,21754,21807)"} true; + assume ($t19 == ($t17 + $t18)); + + // @136 := save_mem(timestamp::CurrentTimeMicroseconds) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:956:5+1 + assume {:print "$at(2,44691,44692)"} true; + $1_timestamp_CurrentTimeMicroseconds_$memory#136 := $1_timestamp_CurrentTimeMicroseconds_$memory; + + // @134 := save_mem(stake::StakePool) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:956:5+1 + $1_stake_StakePool_$memory#134 := $1_stake_StakePool_$memory; + + // @135 := save_mem(stake::ValidatorSet) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:956:5+1 + $1_stake_ValidatorSet_$memory#135 := $1_stake_ValidatorSet_$memory; + + // @133 := save_mem(staking_contract::Store) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:956:5+1 + $1_staking_contract_Store_$memory#133 := $1_staking_contract_Store_$memory; + // trace_local[vesting_contract]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:956:5+1 assume {:print "$track_local(57,41,0):", $t0} $t0 == $t0; // trace_local[contract_address]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:956:5+1 assume {:print "$track_local(57,41,1):", $t1} $t1 == $t1; - // $t4 := get_field.staking($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:959:56+24 + // $t20 := get_field.staking($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:959:56+24 assume {:print "$at(2,45009,45033)"} true; - $t4 := $staking#$1_vesting_VestingContract($t0); + $t20 := $staking#$1_vesting_VestingContract($t0); - // $t5 := get_field.operator($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:959:56+33 - $t5 := $operator#$1_vesting_StakingInfo($t4); + // $t21 := get_field.operator($t20) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:959:56+33 + $t21 := $operator#$1_vesting_StakingInfo($t20); - // assume Identical($t6, select staking_contract::Store.staking_contracts(global($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 + // assume Identical($t22, select staking_contract::Store.staking_contracts(global($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 assume {:print "$at(134,11481,11545)"} true; - assume ($t6 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t1))); + assume ($t22 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t1))); - // staking_contract::distribute($t1, $t5) on_abort goto L2 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:959:9+81 + // staking_contract::distribute($t1, $t21) on_abort goto L2 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:959:9+81 assume {:print "$at(2,44962,45043)"} true; - call $1_staking_contract_distribute($t1, $t5); + call $1_staking_contract_distribute($t1, $t21); if ($abort_flag) { assume {:print "$at(2,44962,45043)"} true; - $t7 := $abort_code; - assume {:print "$track_abort(57,41):", $t7} $t7 == $t7; + $t23 := $abort_code; + assume {:print "$track_abort(57,41):", $t23} $t23 == $t23; goto L2; } - // assume Identical($t8, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + // assume Identical($t24, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 assume {:print "$at(95,1664,1763)"} true; - assume ($t8 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + assume ($t24 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); - // $t9 := coin::balance($t1) on_abort goto L2 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:960:31+42 + // $t25 := coin::balance($t1) on_abort goto L2 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:960:31+42 assume {:print "$at(2,45075,45117)"} true; - call $t9 := $1_coin_balance'$1_aptos_coin_AptosCoin'($t1); + call $t25 := $1_coin_balance'$1_aptos_coin_AptosCoin'($t1); if ($abort_flag) { assume {:print "$at(2,45075,45117)"} true; - $t7 := $abort_code; - assume {:print "$track_abort(57,41):", $t7} $t7 == $t7; + $t23 := $abort_code; + assume {:print "$track_abort(57,41):", $t23} $t23 == $t23; goto L2; } - // trace_local[withdrawn_coins]($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:960:13+15 - assume {:print "$track_local(57,41,3):", $t9} $t9 == $t9; + // trace_local[withdrawn_coins]($t25) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:960:13+15 + assume {:print "$track_local(57,41,3):", $t25} $t25 == $t25; - // $t10 := vesting::get_vesting_account_signer_internal($t0) on_abort goto L2 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:961:32+53 + // $t26 := vesting::get_vesting_account_signer_internal($t0) on_abort goto L2 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:961:32+53 assume {:print "$at(2,45150,45203)"} true; - call $t10 := $1_vesting_get_vesting_account_signer_internal($t0); + call $t26 := $1_vesting_get_vesting_account_signer_internal($t0); if ($abort_flag) { assume {:print "$at(2,45150,45203)"} true; - $t7 := $abort_code; - assume {:print "$track_abort(57,41):", $t7} $t7 == $t7; + $t23 := $abort_code; + assume {:print "$track_abort(57,41):", $t23} $t23 == $t23; goto L2; } - // assume Identical($t11, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + // assume Identical($t27, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 assume {:print "$at(95,1664,1763)"} true; - assume ($t11 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + assume ($t27 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); - // assume Identical($t12, signer::$address_of($t10)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:384:9+47 + // assume Identical($t28, signer::$address_of($t26)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:384:9+47 assume {:print "$at(95,16622,16669)"} true; - assume ($t12 == $1_signer_$address_of($t10)); + assume ($t28 == $1_signer_$address_of($t26)); - // assume Identical($t13, global>($t12)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:385:9+59 + // assume Identical($t29, global>($t28)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:385:9+59 assume {:print "$at(95,16678,16737)"} true; - assume ($t13 == $ResourceValue($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $t12)); + assume ($t29 == $ResourceValue($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $t28)); - // assume Identical($t14, select coin::Coin.value(select coin::CoinStore.coin($t13))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:386:9+36 + // assume Identical($t30, select coin::Coin.value(select coin::CoinStore.coin($t29))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:386:9+36 assume {:print "$at(95,16746,16782)"} true; - assume ($t14 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($coin#$1_coin_CoinStore'$1_aptos_coin_AptosCoin'($t13))); + assume ($t30 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($coin#$1_coin_CoinStore'$1_aptos_coin_AptosCoin'($t29))); - // assume Identical($t15, signer::$address_of($t10)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:394:9+47 + // assume Identical($t31, signer::$address_of($t26)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:394:9+47 assume {:print "$at(95,17076,17123)"} true; - assume ($t15 == $1_signer_$address_of($t10)); + assume ($t31 == $1_signer_$address_of($t26)); - // assume Identical($t16, global>($t15)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:395:9+59 + // assume Identical($t32, global>($t31)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:395:9+59 assume {:print "$at(95,17132,17191)"} true; - assume ($t16 == $ResourceValue($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $t15)); + assume ($t32 == $ResourceValue($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $t31)); - // assume Identical($t17, select coin::Coin.value(select coin::CoinStore.coin($t16))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:396:9+36 + // assume Identical($t33, select coin::Coin.value(select coin::CoinStore.coin($t32))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:396:9+36 assume {:print "$at(95,17200,17236)"} true; - assume ($t17 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($coin#$1_coin_CoinStore'$1_aptos_coin_AptosCoin'($t16))); + assume ($t33 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($coin#$1_coin_CoinStore'$1_aptos_coin_AptosCoin'($t32))); - // $t18 := coin::withdraw($t10, $t9) on_abort goto L2 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:962:9+59 + // $t34 := coin::withdraw($t26, $t25) on_abort goto L2 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:962:9+59 assume {:print "$at(2,45213,45272)"} true; - call $t18 := $1_coin_withdraw'$1_aptos_coin_AptosCoin'($t10, $t9); + call $t34 := $1_coin_withdraw'$1_aptos_coin_AptosCoin'($t26, $t25); if ($abort_flag) { assume {:print "$at(2,45213,45272)"} true; - $t7 := $abort_code; - assume {:print "$track_abort(57,41):", $t7} $t7 == $t7; + $t23 := $abort_code; + assume {:print "$track_abort(57,41):", $t23} $t23 == $t23; goto L2; } - // trace_return[0]($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:962:9+59 - assume {:print "$track_return(57,41,0):", $t18} $t18 == $t18; + // trace_return[0]($t34) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:962:9+59 + assume {:print "$track_return(57,41,0):", $t34} $t34 == $t34; // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:963:5+1 assume {:print "$at(2,45277,45278)"} true; L1: - // assert Not(false) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:963:5+1 - assume {:print "$at(2,45277,45278)"} true; - assert {:msg "assert_failed(2,45277,45278): function does not abort under this condition"} - !false; + // assert Not(Not(exists[@133]($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:267:9+33 + assume {:print "$at(134,11439,11472)"} true; + assert {:msg "assert_failed(134,11439,11472): function does not abort under this condition"} + !!$ResourceExists($1_staking_contract_Store_$memory#133, $t1); - // return $t18 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:963:5+1 - $ret0 := $t18; + // assert Not(Not(simple_map::spec_contains_key[]($t7, $t4))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:269:9+70 + assume {:print "$at(134,11554,11624)"} true; + assert {:msg "assert_failed(134,11554,11624): function does not abort under this condition"} + !!$1_simple_map_spec_contains_key'address_$1_staking_contract_StakingContract'($t7, $t4); + + // assert Not(Not(exists[@134]($t8))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:471:9+50 + assume {:print "$at(3,20605,20655)"} true; + assert {:msg "assert_failed(3,20605,20655): function does not abort under this condition"} + !!$ResourceExists($1_stake_StakePool_$memory#134, $t8); + + // assert Not(Gt(Add($t10, $t11), 18446744073709551615)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:475:9+48 + assume {:print "$at(3,20845,20893)"} true; + assert {:msg "assert_failed(3,20845,20893): function does not abort under this condition"} + !(($t10 + $t11) > 18446744073709551615); + + // assert Not(Not(exists[@134]($t13))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:480:9+52 + assume {:print "$at(3,21090,21142)"} true; + assert {:msg "assert_failed(3,21090,21142): function does not abort under this condition"} + !!$ResourceExists($1_stake_StakePool_$memory#134, $t13); + + // assert Not(Not(exists[@135](0x1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:482:9+57 + assume {:print "$at(3,21220,21277)"} true; + assert {:msg "assert_failed(3,21220,21277): function does not abort under this condition"} + !!$ResourceExists($1_stake_ValidatorSet_$memory#135, 1); + + // assert Not(And(And($t16, Ge(timestamp::spec_now_seconds[@136](), select stake::StakePool.locked_until_secs($t14))), Gt(Add($t17, $t18), 18446744073709551615))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:490:9+150 + assume {:print "$at(3,21816,21966)"} true; + assert {:msg "assert_failed(3,21816,21966): function does not abort under this condition"} + !(($t16 && ($1_timestamp_spec_now_seconds($1_timestamp_CurrentTimeMicroseconds_$memory#136) >= $locked_until_secs#$1_stake_StakePool($t14))) && (($t17 + $t18) > 18446744073709551615)); + + // return $t34 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:490:9+150 + $ret0 := $t34; return; // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:963:5+1 + assume {:print "$at(2,45277,45278)"} true; L2: - // abort($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:963:5+1 + // abort($t23) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:963:5+1 assume {:print "$at(2,45277,45278)"} true; - $abort_code := $t7; + $abort_code := $t23; $abort_flag := true; return; diff --git a/aptos-move/framework/aptos-framework/sources/vesting.spec.move b/aptos-move/framework/aptos-framework/sources/vesting.spec.move index dfb8699098aa0..441073a502856 100644 --- a/aptos-move/framework/aptos-framework/sources/vesting.spec.move +++ b/aptos-move/framework/aptos-framework/sources/vesting.spec.move @@ -45,8 +45,7 @@ spec aptos_framework::vesting { } spec total_accumulated_rewards(vesting_contract_address: address): u64 { - // A severe timeout will occur without using partial. - pragma aborts_if_is_partial; + pragma verify_duration_estimate = 120; include TotalAccumulatedRewardsAbortsIf; } @@ -68,7 +67,7 @@ spec aptos_framework::vesting { aborts_if !simple_map::spec_contains_key(staking_contracts, operator); let pool_address = staking_contract.pool_address; - let stake_pool = borrow_global(pool_address); + let stake_pool = global(pool_address); let active = coin::value(stake_pool.active); let pending_active = coin::value(stake_pool.pending_active); let total_active_stake = active + pending_active; @@ -85,7 +84,6 @@ spec aptos_framework::vesting { spec accumulated_rewards(vesting_contract_address: address, shareholder_or_beneficiary: address): u64 { // TODO: A severe timeout can not be resolved. pragma verify = false; - pragma aborts_if_is_partial; include TotalAccumulatedRewardsAbortsIf; let vesting_contract = global(vesting_contract_address); @@ -93,7 +91,7 @@ spec aptos_framework::vesting { let staking_contracts = global(vesting_contract_address).staking_contracts; let staking_contract = simple_map::spec_get(staking_contracts, operator); let pool_address = staking_contract.pool_address; - let stake_pool = borrow_global(pool_address); + let stake_pool = global(pool_address); let active = coin::value(stake_pool.active); let pending_active = coin::value(stake_pool.pending_active); let total_active_stake = active + pending_active; @@ -138,53 +136,110 @@ spec aptos_framework::vesting { // TODO: Data invariant does not hold. pragma verify = false; pragma aborts_if_is_partial; + + aborts_if withdrawal_address == @aptos_framework || withdrawal_address == @vm_reserved; + aborts_if !exists(withdrawal_address); + aborts_if !exists>(withdrawal_address); + aborts_if len(shareholders) == 0; + aborts_if simple_map::spec_len(buy_ins) != len(shareholders); } spec unlock_rewards(contract_address: address) { - // TODO: Calls `unlock_stake` which is not verified. + // TODO: Calls `unlock_stake` which is not verified. + // Current verification times out even with partial. pragma verify = false; pragma aborts_if_is_partial; + + include UnlockRewardsAbortsIf; + } + + spec schema UnlockRewardsAbortsIf { + contract_address: address; + include TotalAccumulatedRewardsAbortsIf { vesting_contract_address: contract_address }; + + let vesting_contract = global(contract_address); + let operator = vesting_contract.staking.operator; + let staking_contracts = global(contract_address).staking_contracts; + let staking_contract = simple_map::spec_get(staking_contracts, operator); + let pool_address = staking_contract.pool_address; + let stake_pool = global(pool_address); + let active = coin::value(stake_pool.active); + let pending_active = coin::value(stake_pool.pending_active); + let total_active_stake = active + pending_active; + let accumulated_rewards = total_active_stake - staking_contract.principal; + let commission_amount = accumulated_rewards * staking_contract.commission_percentage / 100; + let amount = total_active_stake - vesting_contract.remaining_grant - commission_amount; + + include UnlockStakeAbortsIf { vesting_contract, amount }; } spec unlock_rewards_many(contract_addresses: vector
) { // TODO: Calls `unlock_rewards` in loop. - pragma verify = false; pragma aborts_if_is_partial; + aborts_if len(contract_addresses) == 0; + include PreconditionAbortsIf; } spec vest(contract_address: address) { // TODO: Calls `staking_contract::distribute` which is not verified. + // Current verification times out even with partial. pragma verify = false; pragma aborts_if_is_partial; + + include UnlockRewardsAbortsIf; } spec vest_many(contract_addresses: vector
) { // TODO: Calls `vest` in loop. pragma aborts_if_is_partial; + aborts_if len(contract_addresses) == 0; + include PreconditionAbortsIf; + } + + spec schema PreconditionAbortsIf { + contract_addresses: vector
; + + requires forall i in 0..len(contract_addresses): simple_map::spec_get(global(contract_addresses[i]).staking_contracts, global(contract_addresses[i]).staking.operator).commission_percentage >= 0 + && simple_map::spec_get(global(contract_addresses[i]).staking_contracts, global(contract_addresses[i]).staking.operator).commission_percentage <= 100; } spec distribute(contract_address: address) { // TODO: Can't handle abort in loop. pragma aborts_if_is_partial; + + include ActiveVestingContractAbortsIf; + + let vesting_contract = global(contract_address); + include WithdrawStakeAbortsIf { vesting_contract }; } spec distribute_many(contract_addresses: vector
) { // TODO: Calls `distribute` in loop. pragma aborts_if_is_partial; + aborts_if len(contract_addresses) == 0; } spec terminate_vesting_contract(admin: &signer, contract_address: address) { // TODO: Calls `staking_contract::distribute` which is not verified. pragma aborts_if_is_partial; + + include ActiveVestingContractAbortsIf; + + let vesting_contract = global(contract_address); + include WithdrawStakeAbortsIf { vesting_contract }; } spec admin_withdraw(admin: &signer, contract_address: address) { // TODO: Calls `withdraw_stake` which is not verified. pragma aborts_if_is_partial; - include VerifyAdminAbortsIf; + let vesting_contract = global(contract_address); aborts_if vesting_contract.state != VESTING_POOL_TERMINATED; + + include VerifyAdminAbortsIf; + + include WithdrawStakeAbortsIf { vesting_contract }; } spec update_operator( @@ -195,7 +250,19 @@ spec aptos_framework::vesting { ) { // TODO: Calls `staking_contract::switch_operator` which is not verified. pragma aborts_if_is_partial; + include VerifyAdminAbortsIf; + + let vesting_contract = global(contract_address); + let acc = vesting_contract.signer_cap.account; + let old_operator = vesting_contract.staking.operator; + include staking_contract::ContractExistsAbortsIf { staker: acc, operator: old_operator }; + let store = global(acc); + let staking_contracts = store.staking_contracts; + aborts_if simple_map::spec_contains_key(staking_contracts, new_operator); + + let staking_contract = simple_map::spec_get(staking_contracts, old_operator); + include DistributeInternalAbortsIf { staker: acc, operator: old_operator, staking_contract, distribute_events: store.distribute_events }; } spec update_operator_with_same_commission( @@ -355,11 +422,73 @@ spec aptos_framework::vesting { spec unlock_stake(vesting_contract: &VestingContract, amount: u64) { // TODO: Calls `staking_contract::unlock_stake` which is not verified. pragma aborts_if_is_partial; + + include UnlockStakeAbortsIf; + } + + spec schema UnlockStakeAbortsIf { + vesting_contract: &VestingContract; + amount: u64; + + // verify staking_contract::unlock_stake() + let acc = vesting_contract.signer_cap.account; + let operator = vesting_contract.staking.operator; + include amount != 0 ==> staking_contract::ContractExistsAbortsIf { staker: acc, operator }; + + // verify staking_contract::distribute_internal() + let store = global(acc); + let staking_contract = simple_map::spec_get(store.staking_contracts, operator); + include amount != 0 ==> DistributeInternalAbortsIf { staker: acc, operator, staking_contract, distribute_events: store.distribute_events }; } spec withdraw_stake(vesting_contract: &VestingContract, contract_address: address): Coin { // TODO: Calls `staking_contract::distribute` which is not verified. pragma aborts_if_is_partial; + + include WithdrawStakeAbortsIf; + } + + spec schema WithdrawStakeAbortsIf { + vesting_contract: &VestingContract; + contract_address: address; + + let operator = vesting_contract.staking.operator; + include staking_contract::ContractExistsAbortsIf { staker: contract_address, operator }; + + // verify staking_contract::distribute_internal() + let store = global(contract_address); + let staking_contract = simple_map::spec_get(store.staking_contracts, operator); + include DistributeInternalAbortsIf { staker: contract_address, operator, staking_contract, distribute_events: store.distribute_events }; + } + + spec schema DistributeInternalAbortsIf { + staker: address; // The verification below does not contain the loop in staking_contract::update_distribution_pool(). + operator: address; + staking_contract: staking_contract::StakingContract; + distribute_events: EventHandle; + + let pool_address = staking_contract.pool_address; + aborts_if !exists(pool_address); + let stake_pool = global(pool_address); + let inactive = stake_pool.inactive.value; + let pending_inactive = stake_pool.pending_inactive.value; + aborts_if inactive + pending_inactive > MAX_U64; + + // verify stake::withdraw_with_cap() + let total_potential_withdrawable = inactive + pending_inactive; + let pool_address_1 = staking_contract.owner_cap.pool_address; + aborts_if !exists(pool_address_1); + let stake_pool_1 = global(pool_address_1); + aborts_if !exists(@aptos_framework); + let validator_set = global(@aptos_framework); + let inactive_state = !stake::spec_contains(validator_set.pending_active, pool_address_1) + && !stake::spec_contains(validator_set.active_validators, pool_address_1) + && !stake::spec_contains(validator_set.pending_inactive, pool_address_1); + let inactive_1 = stake_pool_1.inactive.value; + let pending_inactive_1 = stake_pool_1.pending_inactive.value; + let new_inactive_1 = inactive_1 + pending_inactive_1; + aborts_if inactive_state && timestamp::spec_now_seconds() >= stake_pool_1.locked_until_secs + && inactive_1 + pending_inactive_1 > MAX_U64; } spec get_beneficiary(contract: &VestingContract, shareholder: address): address { From 35467a12bfe3a0b009a48d5d52fe042c7768deb2 Mon Sep 17 00:00:00 2001 From: UIZorrot Date: Mon, 17 Jul 2023 10:35:08 +0800 Subject: [PATCH 03/13] init --- .../framework/aptos-framework/doc/vesting.md | 298 +++++++++++++++--- .../aptos-framework/sources/vesting.spec.move | 13 +- 2 files changed, 256 insertions(+), 55 deletions(-) diff --git a/aptos-move/framework/aptos-framework/doc/vesting.md b/aptos-move/framework/aptos-framework/doc/vesting.md index 04eaa5b973c8a..f9439aa490b04 100644 --- a/aptos-move/framework/aptos-framework/doc/vesting.md +++ b/aptos-move/framework/aptos-framework/doc/vesting.md @@ -2899,27 +2899,41 @@ This address should be deterministic for the same admin and vesting contract cre -
pragma verify = false;
-include ActiveVestingContractAbortsIf<VestingContract>{contract_address: vesting_contract_address};
-let vesting_contract = global<VestingContract>(vesting_contract_address);
-let staker = vesting_contract_address;
-let operator = vesting_contract.staking.operator;
-let staking_contracts = global<staking_contract::Store>(staker).staking_contracts;
-let staking_contract = simple_map::spec_get(staking_contracts, operator);
-aborts_if !exists<staking_contract::Store>(staker);
-aborts_if !simple_map::spec_contains_key(staking_contracts, operator);
-let pool_address = staking_contract.pool_address;
-let stake_pool = borrow_global<stake::StakePool>(pool_address);
-let active = coin::value(stake_pool.active);
-let pending_active = coin::value(stake_pool.pending_active);
-let total_active_stake = active + pending_active;
-let accumulated_rewards = total_active_stake - staking_contract.principal;
-let commission_amount = accumulated_rewards * staking_contract.commission_percentage / 100;
-aborts_if !exists<stake::StakePool>(pool_address);
-aborts_if active + pending_active > MAX_U64;
-aborts_if total_active_stake < staking_contract.principal;
-aborts_if accumulated_rewards * staking_contract.commission_percentage > MAX_U64;
-aborts_if (vesting_contract.remaining_grant + commission_amount) > total_active_stake;
+
pragma verify_duration_estimate = 120;
+include TotalAccumulatedRewardsAbortsIf;
+
+ + + + + + + +
schema TotalAccumulatedRewardsAbortsIf {
+    vesting_contract_address: address;
+    requires staking_contract.commission_percentage >= 0 && staking_contract.commission_percentage <= 100;
+    include ActiveVestingContractAbortsIf<VestingContract>{contract_address: vesting_contract_address};
+    let vesting_contract = global<VestingContract>(vesting_contract_address);
+    let staker = vesting_contract_address;
+    let operator = vesting_contract.staking.operator;
+    let staking_contracts = global<staking_contract::Store>(staker).staking_contracts;
+    let staking_contract = simple_map::spec_get(staking_contracts, operator);
+    aborts_if !exists<staking_contract::Store>(staker);
+    aborts_if !simple_map::spec_contains_key(staking_contracts, operator);
+    let pool_address = staking_contract.pool_address;
+    let stake_pool = global<stake::StakePool>(pool_address);
+    let active = coin::value(stake_pool.active);
+    let pending_active = coin::value(stake_pool.pending_active);
+    let total_active_stake = active + pending_active;
+    let accumulated_rewards = total_active_stake - staking_contract.principal;
+    let commission_amount = accumulated_rewards * staking_contract.commission_percentage / 100;
+    aborts_if !exists<stake::StakePool>(pool_address);
+    aborts_if active + pending_active > MAX_U64;
+    aborts_if total_active_stake < staking_contract.principal;
+    aborts_if accumulated_rewards * staking_contract.commission_percentage > MAX_U64;
+    aborts_if (vesting_contract.remaining_grant + commission_amount) > total_active_stake;
+    aborts_if total_active_stake < vesting_contract.remaining_grant;
+}
 
@@ -2937,6 +2951,25 @@ This address should be deterministic for the same admin and vesting contract cre
pragma verify = false;
+include TotalAccumulatedRewardsAbortsIf;
+let vesting_contract = global<VestingContract>(vesting_contract_address);
+let operator = vesting_contract.staking.operator;
+let staking_contracts = global<staking_contract::Store>(vesting_contract_address).staking_contracts;
+let staking_contract = simple_map::spec_get(staking_contracts, operator);
+let pool_address = staking_contract.pool_address;
+let stake_pool = global<stake::StakePool>(pool_address);
+let active = coin::value(stake_pool.active);
+let pending_active = coin::value(stake_pool.pending_active);
+let total_active_stake = active + pending_active;
+let accumulated_rewards = total_active_stake - staking_contract.principal;
+let commission_amount = accumulated_rewards * staking_contract.commission_percentage / 100;
+let total_accumulated_rewards = total_active_stake - vesting_contract.remaining_grant - commission_amount;
+let shareholder = spec_shareholder(vesting_contract_address, shareholder_or_beneficiary);
+let pool = vesting_contract.grant_pool;
+let shares = pool_u64::spec_shares(pool, shareholder);
+aborts_if pool.total_coins > 0 && pool.total_shares > 0
+    && (shares * total_accumulated_rewards) / pool.total_shares > MAX_U64;
+ensures result == pool_u64::spec_shares_to_amount_with_total_coins(pool, shares, total_accumulated_rewards);
 
@@ -2958,6 +2991,15 @@ This address should be deterministic for the same admin and vesting contract cre + + + + +
fun spec_shareholder(vesting_contract_address: address, shareholder_or_beneficiary: address): address;
+
+ + + ### Function `shareholder` @@ -2970,7 +3012,10 @@ This address should be deterministic for the same admin and vesting contract cre -
include ActiveVestingContractAbortsIf<VestingContract>{contract_address: vesting_contract_address};
+
pragma verify = true;
+pragma opaque;
+include ActiveVestingContractAbortsIf<VestingContract>{contract_address: vesting_contract_address};
+ensures [abstract] result == spec_shareholder(vesting_contract_address, shareholder_or_beneficiary);
 
@@ -3006,6 +3051,12 @@ This address should be deterministic for the same admin and vesting contract cre
pragma verify = false;
+pragma aborts_if_is_partial;
+aborts_if withdrawal_address == @aptos_framework || withdrawal_address == @vm_reserved;
+aborts_if !exists<account::Account>(withdrawal_address);
+aborts_if !exists<coin::CoinStore<AptosCoin>>(withdrawal_address);
+aborts_if len(shareholders) == 0;
+aborts_if simple_map::spec_len(buy_ins) != len(shareholders);
 
@@ -3022,6 +3073,33 @@ This address should be deterministic for the same admin and vesting contract cre
pragma verify = false;
+pragma aborts_if_is_partial;
+include UnlockRewardsAbortsIf;
+
+ + + + + + + +
schema UnlockRewardsAbortsIf {
+    contract_address: address;
+    include TotalAccumulatedRewardsAbortsIf { vesting_contract_address: contract_address };
+    let vesting_contract = global<VestingContract>(contract_address);
+    let operator = vesting_contract.staking.operator;
+    let staking_contracts = global<staking_contract::Store>(contract_address).staking_contracts;
+    let staking_contract = simple_map::spec_get(staking_contracts, operator);
+    let pool_address = staking_contract.pool_address;
+    let stake_pool = global<stake::StakePool>(pool_address);
+    let active = coin::value(stake_pool.active);
+    let pending_active = coin::value(stake_pool.pending_active);
+    let total_active_stake = active + pending_active;
+    let accumulated_rewards = total_active_stake - staking_contract.principal;
+    let commission_amount = accumulated_rewards * staking_contract.commission_percentage / 100;
+    let amount = total_active_stake - vesting_contract.remaining_grant - commission_amount;
+    include UnlockStakeAbortsIf { vesting_contract, amount };
+}
 
@@ -3037,7 +3115,9 @@ This address should be deterministic for the same admin and vesting contract cre -
pragma verify = false;
+
pragma aborts_if_is_partial;
+aborts_if len(contract_addresses) == 0;
+include PreconditionAbortsIf;
 
@@ -3054,6 +3134,8 @@ This address should be deterministic for the same admin and vesting contract cre
pragma verify = false;
+pragma aborts_if_is_partial;
+include UnlockRewardsAbortsIf;
 
@@ -3069,7 +3151,22 @@ This address should be deterministic for the same admin and vesting contract cre -
pragma verify = false;
+
pragma aborts_if_is_partial;
+aborts_if len(contract_addresses) == 0;
+include PreconditionAbortsIf;
+
+ + + + + + + +
schema PreconditionAbortsIf {
+    contract_addresses: vector<address>;
+    requires forall i in 0..len(contract_addresses): simple_map::spec_get(global<staking_contract::Store>(contract_addresses[i]).staking_contracts, global<VestingContract>(contract_addresses[i]).staking.operator).commission_percentage >= 0
+        && simple_map::spec_get(global<staking_contract::Store>(contract_addresses[i]).staking_contracts, global<VestingContract>(contract_addresses[i]).staking.operator).commission_percentage <= 100;
+}
 
@@ -3085,7 +3182,10 @@ This address should be deterministic for the same admin and vesting contract cre -
pragma verify = false;
+
pragma aborts_if_is_partial;
+include ActiveVestingContractAbortsIf<VestingContract>;
+let vesting_contract = global<VestingContract>(contract_address);
+include WithdrawStakeAbortsIf { vesting_contract };
 
@@ -3101,7 +3201,8 @@ This address should be deterministic for the same admin and vesting contract cre -
pragma verify = false;
+
pragma aborts_if_is_partial;
+aborts_if len(contract_addresses) == 0;
 
@@ -3117,7 +3218,10 @@ This address should be deterministic for the same admin and vesting contract cre -
pragma verify = false;
+
pragma aborts_if_is_partial;
+include ActiveVestingContractAbortsIf<VestingContract>;
+let vesting_contract = global<VestingContract>(contract_address);
+include WithdrawStakeAbortsIf { vesting_contract };
 
@@ -3134,9 +3238,10 @@ This address should be deterministic for the same admin and vesting contract cre
pragma aborts_if_is_partial;
-include VerifyAdminAbortsIf;
 let vesting_contract = global<VestingContract>(contract_address);
 aborts_if vesting_contract.state != VESTING_POOL_TERMINATED;
+include VerifyAdminAbortsIf;
+include WithdrawStakeAbortsIf { vesting_contract };
 
@@ -3154,6 +3259,15 @@ This address should be deterministic for the same admin and vesting contract cre
pragma aborts_if_is_partial;
 include VerifyAdminAbortsIf;
+let vesting_contract = global<VestingContract>(contract_address);
+let acc = vesting_contract.signer_cap.account;
+let old_operator = vesting_contract.staking.operator;
+include staking_contract::ContractExistsAbortsIf { staker: acc, operator: old_operator };
+let store = global<staking_contract::Store>(acc);
+let staking_contracts = store.staking_contracts;
+aborts_if simple_map::spec_contains_key(staking_contracts, new_operator);
+let staking_contract = simple_map::spec_get(staking_contracts, old_operator);
+include DistributeInternalAbortsIf { staker: acc, operator: old_operator, staking_contract, distribute_events: store.distribute_events };
 
@@ -3205,14 +3319,17 @@ This address should be deterministic for the same admin and vesting contract cre -
pragma aborts_if_is_partial;
-aborts_if !exists<VestingContract>(contract_address);
-let vesting_contract1 = global<VestingContract>(contract_address);
-aborts_if signer::address_of(admin) != vesting_contract1.admin;
-let operator = vesting_contract1.staking.operator;
-let staker = vesting_contract1.signer_cap.account;
-include staking_contract::ContractExistsAbortsIf;
-include staking_contract::IncreaseLockupWithCapAbortsIf;
+
aborts_if !exists<VestingContract>(contract_address);
+let vesting_contract = global<VestingContract>(contract_address);
+aborts_if signer::address_of(admin) != vesting_contract.admin;
+let operator = vesting_contract.staking.operator;
+let staker = vesting_contract.signer_cap.account;
+include staking_contract::ContractExistsAbortsIf {staker, operator};
+include staking_contract::IncreaseLockupWithCapAbortsIf {staker, operator};
+let store = global<staking_contract::Store>(staker);
+let staking_contract = simple_map::spec_get(store.staking_contracts, operator);
+let pool_address = staking_contract.owner_cap.pool_address;
+aborts_if !exists<stake::StakePool>(vesting_contract.staking.pool_address);
 
@@ -3248,10 +3365,17 @@ This address should be deterministic for the same admin and vesting contract cre -
pragma aborts_if_is_partial;
-aborts_if !exists<VestingContract>(contract_address);
-let post vesting_contract = global<VestingContract>(contract_address);
-ensures !simple_map::spec_contains_key(vesting_contract.beneficiaries,shareholder);
+
aborts_if !exists<VestingContract>(contract_address);
+let addr = signer::address_of(account);
+let vesting_contract = global<VestingContract>(contract_address);
+aborts_if addr != vesting_contract.admin && !std::string::spec_internal_check_utf8(ROLE_BENEFICIARY_RESETTER);
+aborts_if addr != vesting_contract.admin && !exists<VestingAccountManagement>(contract_address);
+let roles = global<VestingAccountManagement>(contract_address).roles;
+let role = std::string::spec_utf8(ROLE_BENEFICIARY_RESETTER);
+aborts_if addr != vesting_contract.admin && !simple_map::spec_contains_key(roles, role);
+aborts_if addr != vesting_contract.admin && addr != simple_map::spec_get(roles, role);
+let post post_vesting_contract = global<VestingContract>(contract_address);
+ensures !simple_map::spec_contains_key(post_vesting_contract.beneficiaries,shareholder);
 
@@ -3361,21 +3485,28 @@ This address should be deterministic for the same admin and vesting contract cre -
pragma verify=false;
-pragma aborts_if_is_partial;
-let admin_addr = signer::address_of(admin);
+
let admin_addr = signer::address_of(admin);
 let admin_store = global<AdminStore>(admin_addr);
 let seed = bcs::to_bytes(admin_addr);
 let nonce = bcs::to_bytes(admin_store.nonce);
-let first = concat(seed,nonce);
-let second = concat(first,VESTING_POOL_SALT);
-let end = concat(second,contract_creation_seed);
+let first = concat(seed, nonce);
+let second = concat(first, VESTING_POOL_SALT);
+let end = concat(second, contract_creation_seed);
 let resource_addr = account::spec_create_resource_address(admin_addr, end);
 aborts_if !exists<AdminStore>(admin_addr);
 aborts_if len(account::ZERO_AUTH_KEY) != 32;
 aborts_if admin_store.nonce + 1 > MAX_U64;
 let ea = account::exists_at(resource_addr);
 include if (ea) account::CreateResourceAccountAbortsIf else account::CreateAccountAbortsIf {addr: resource_addr};
+let acc = global<account::Account>(resource_addr);
+let post post_acc = global<account::Account>(resource_addr);
+aborts_if !exists<coin::CoinStore<AptosCoin>>(resource_addr) && !aptos_std::type_info::spec_is_struct<AptosCoin>();
+aborts_if !exists<coin::CoinStore<AptosCoin>>(resource_addr) && ea && acc.guid_creation_num + 2 > MAX_U64;
+aborts_if !exists<coin::CoinStore<AptosCoin>>(resource_addr) && ea && acc.guid_creation_num + 2 >= account::MAX_GUID_CREATION_NUM;
+ensures exists<account::Account>(resource_addr) && post_acc.authentication_key == account::ZERO_AUTH_KEY &&
+        exists<coin::CoinStore<AptosCoin>>(resource_addr);
+ensures signer::address_of(result_1) == resource_addr;
+ensures result_2.account == resource_addr;
 
@@ -3439,7 +3570,26 @@ This address should be deterministic for the same admin and vesting contract cre -
pragma verify = false;
+
pragma aborts_if_is_partial;
+include UnlockStakeAbortsIf;
+
+ + + + + + + +
schema UnlockStakeAbortsIf {
+    vesting_contract: &VestingContract;
+    amount: u64;
+    let acc = vesting_contract.signer_cap.account;
+    let operator = vesting_contract.staking.operator;
+    include amount != 0 ==> staking_contract::ContractExistsAbortsIf { staker: acc, operator };
+    let store = global<staking_contract::Store>(acc);
+    let staking_contract = simple_map::spec_get(store.staking_contracts, operator);
+    include amount != 0 ==> DistributeInternalAbortsIf { staker: acc, operator, staking_contract, distribute_events: store.distribute_events };
+}
 
@@ -3455,7 +3605,59 @@ This address should be deterministic for the same admin and vesting contract cre -
pragma verify = false;
+
pragma aborts_if_is_partial;
+include WithdrawStakeAbortsIf;
+
+ + + + + + + +
schema WithdrawStakeAbortsIf {
+    vesting_contract: &VestingContract;
+    contract_address: address;
+    let operator = vesting_contract.staking.operator;
+    include staking_contract::ContractExistsAbortsIf { staker: contract_address, operator };
+    let store = global<staking_contract::Store>(contract_address);
+    let staking_contract = simple_map::spec_get(store.staking_contracts, operator);
+    include DistributeInternalAbortsIf { staker: contract_address, operator, staking_contract, distribute_events: store.distribute_events };
+}
+
+ + + + + + + +
schema DistributeInternalAbortsIf {
+    staker: address;
+    operator: address;
+    staking_contract: staking_contract::StakingContract;
+    distribute_events: EventHandle<staking_contract::DistributeEvent>;
+    let pool_address = staking_contract.pool_address;
+    aborts_if !exists<stake::StakePool>(pool_address);
+    let stake_pool = global<stake::StakePool>(pool_address);
+    let inactive = stake_pool.inactive.value;
+    let pending_inactive = stake_pool.pending_inactive.value;
+    aborts_if inactive + pending_inactive > MAX_U64;
+    let total_potential_withdrawable = inactive + pending_inactive;
+    let pool_address_1 = staking_contract.owner_cap.pool_address;
+    aborts_if !exists<stake::StakePool>(pool_address_1);
+    let stake_pool_1 = global<stake::StakePool>(pool_address_1);
+    aborts_if !exists<stake::ValidatorSet>(@aptos_framework);
+    let validator_set = global<stake::ValidatorSet>(@aptos_framework);
+    let inactive_state = !stake::spec_contains(validator_set.pending_active, pool_address_1)
+        && !stake::spec_contains(validator_set.active_validators, pool_address_1)
+        && !stake::spec_contains(validator_set.pending_inactive, pool_address_1);
+    let inactive_1 = stake_pool_1.inactive.value;
+    let pending_inactive_1 = stake_pool_1.pending_inactive.value;
+    let new_inactive_1 = inactive_1 + pending_inactive_1;
+    aborts_if inactive_state && timestamp::spec_now_seconds() >= stake_pool_1.locked_until_secs
+        && inactive_1 + pending_inactive_1 > MAX_U64;
+}
 
diff --git a/aptos-move/framework/aptos-framework/sources/vesting.spec.move b/aptos-move/framework/aptos-framework/sources/vesting.spec.move index 441073a502856..a63e1db0bcdfa 100644 --- a/aptos-move/framework/aptos-framework/sources/vesting.spec.move +++ b/aptos-move/framework/aptos-framework/sources/vesting.spec.move @@ -145,7 +145,7 @@ spec aptos_framework::vesting { } spec unlock_rewards(contract_address: address) { - // TODO: Calls `unlock_stake` which is not verified. + // TODO: Calls `unlock_stake` which is not verified. // Current verification times out even with partial. pragma verify = false; pragma aborts_if_is_partial; @@ -170,7 +170,7 @@ spec aptos_framework::vesting { let accumulated_rewards = total_active_stake - staking_contract.principal; let commission_amount = accumulated_rewards * staking_contract.commission_percentage / 100; let amount = total_active_stake - vesting_contract.remaining_grant - commission_amount; - + include UnlockStakeAbortsIf { vesting_contract, amount }; } @@ -186,7 +186,7 @@ spec aptos_framework::vesting { // Current verification times out even with partial. pragma verify = false; pragma aborts_if_is_partial; - + include UnlockRewardsAbortsIf; } @@ -324,7 +324,7 @@ spec aptos_framework::vesting { account: &signer, contract_address: address, shareholder: address, - ) { + ) { aborts_if !exists(contract_address); let addr = signer::address_of(account); @@ -401,7 +401,7 @@ spec aptos_framework::vesting { aborts_if !exists>(resource_addr) && !aptos_std::type_info::spec_is_struct(); aborts_if !exists>(resource_addr) && ea && acc.guid_creation_num + 2 > MAX_U64; aborts_if !exists>(resource_addr) && ea && acc.guid_creation_num + 2 >= account::MAX_GUID_CREATION_NUM; - ensures exists(resource_addr) && post_acc.authentication_key == account::ZERO_AUTH_KEY && + ensures exists(resource_addr) && post_acc.authentication_key == account::ZERO_AUTH_KEY && exists>(resource_addr); ensures signer::address_of(result_1) == resource_addr; ensures result_2.account == resource_addr; @@ -422,7 +422,6 @@ spec aptos_framework::vesting { spec unlock_stake(vesting_contract: &VestingContract, amount: u64) { // TODO: Calls `staking_contract::unlock_stake` which is not verified. pragma aborts_if_is_partial; - include UnlockStakeAbortsIf; } @@ -487,7 +486,7 @@ spec aptos_framework::vesting { let inactive_1 = stake_pool_1.inactive.value; let pending_inactive_1 = stake_pool_1.pending_inactive.value; let new_inactive_1 = inactive_1 + pending_inactive_1; - aborts_if inactive_state && timestamp::spec_now_seconds() >= stake_pool_1.locked_until_secs + aborts_if inactive_state && timestamp::spec_now_seconds() >= stake_pool_1.locked_until_secs && inactive_1 + pending_inactive_1 > MAX_U64; } From 1cd4af6ee998db1892d74023a680ddac002e6925 Mon Sep 17 00:00:00 2001 From: UIZorrot Date: Thu, 20 Jul 2023 17:16:51 +0800 Subject: [PATCH 04/13] fix comment --- .../framework/aptos-framework/sources/vesting.spec.move | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/aptos-move/framework/aptos-framework/sources/vesting.spec.move b/aptos-move/framework/aptos-framework/sources/vesting.spec.move index a63e1db0bcdfa..2767c7ac82d00 100644 --- a/aptos-move/framework/aptos-framework/sources/vesting.spec.move +++ b/aptos-move/framework/aptos-framework/sources/vesting.spec.move @@ -53,6 +53,9 @@ spec aptos_framework::vesting { spec schema TotalAccumulatedRewardsAbortsIf { vesting_contract_address: address; + // Note: commission percentage should not be under 0 or higher than 100, cause it's a percentage number + // This requirement will solve the timeout issue of total_accumulated_rewards + // However, accumulated_rewards is still timeout requires staking_contract.commission_percentage >= 0 && staking_contract.commission_percentage <= 100; include ActiveVestingContractAbortsIf{contract_address: vesting_contract_address}; @@ -83,9 +86,11 @@ spec aptos_framework::vesting { spec accumulated_rewards(vesting_contract_address: address, shareholder_or_beneficiary: address): u64 { // TODO: A severe timeout can not be resolved. - pragma verify = false; + pragma verify_duration_estimate = 1000; + // This schema lead to timeout include TotalAccumulatedRewardsAbortsIf; + let vesting_contract = global(vesting_contract_address); let operator = vesting_contract.staking.operator; let staking_contracts = global(vesting_contract_address).staking_contracts; @@ -135,8 +140,6 @@ spec aptos_framework::vesting { spec create_vesting_contract { // TODO: Data invariant does not hold. pragma verify = false; - pragma aborts_if_is_partial; - aborts_if withdrawal_address == @aptos_framework || withdrawal_address == @vm_reserved; aborts_if !exists(withdrawal_address); aborts_if !exists>(withdrawal_address); From 69b07f50f0bc3833997eed8aa6a582967ac458be Mon Sep 17 00:00:00 2001 From: UIZorrot Date: Thu, 20 Jul 2023 17:24:59 +0800 Subject: [PATCH 05/13] fix md --- aptos-move/framework/aptos-framework/doc/vesting.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/aptos-move/framework/aptos-framework/doc/vesting.md b/aptos-move/framework/aptos-framework/doc/vesting.md index f9439aa490b04..2047e236e6e9d 100644 --- a/aptos-move/framework/aptos-framework/doc/vesting.md +++ b/aptos-move/framework/aptos-framework/doc/vesting.md @@ -2950,7 +2950,7 @@ This address should be deterministic for the same admin and vesting contract cre -
pragma verify = false;
+
pragma verify_duration_estimate = 1000;
 include TotalAccumulatedRewardsAbortsIf;
 let vesting_contract = global<VestingContract>(vesting_contract_address);
 let operator = vesting_contract.staking.operator;
@@ -3051,7 +3051,6 @@ This address should be deterministic for the same admin and vesting contract cre
 
 
 
pragma verify = false;
-pragma aborts_if_is_partial;
 aborts_if withdrawal_address == @aptos_framework || withdrawal_address == @vm_reserved;
 aborts_if !exists<account::Account>(withdrawal_address);
 aborts_if !exists<coin::CoinStore<AptosCoin>>(withdrawal_address);

From f289edee0dbcb6a63b240abbfd621c0d075089fd Mon Sep 17 00:00:00 2001
From: UIZorrot 
Date: Fri, 21 Jul 2023 10:07:11 +0800
Subject: [PATCH 06/13] add comment

---
 aptos-move/framework/aptos-framework/doc/vesting.md         | 2 --
 .../framework/aptos-framework/sources/vesting.spec.move     | 6 ++----
 2 files changed, 2 insertions(+), 6 deletions(-)

diff --git a/aptos-move/framework/aptos-framework/doc/vesting.md b/aptos-move/framework/aptos-framework/doc/vesting.md
index 2047e236e6e9d..51b2117dc8810 100644
--- a/aptos-move/framework/aptos-framework/doc/vesting.md
+++ b/aptos-move/framework/aptos-framework/doc/vesting.md
@@ -3072,7 +3072,6 @@ This address should be deterministic for the same admin and vesting contract cre
 
 
 
pragma verify = false;
-pragma aborts_if_is_partial;
 include UnlockRewardsAbortsIf;
 
@@ -3133,7 +3132,6 @@ This address should be deterministic for the same admin and vesting contract cre
pragma verify = false;
-pragma aborts_if_is_partial;
 include UnlockRewardsAbortsIf;
 
diff --git a/aptos-move/framework/aptos-framework/sources/vesting.spec.move b/aptos-move/framework/aptos-framework/sources/vesting.spec.move index 2767c7ac82d00..707af76d4fb98 100644 --- a/aptos-move/framework/aptos-framework/sources/vesting.spec.move +++ b/aptos-move/framework/aptos-framework/sources/vesting.spec.move @@ -149,9 +149,8 @@ spec aptos_framework::vesting { spec unlock_rewards(contract_address: address) { // TODO: Calls `unlock_stake` which is not verified. - // Current verification times out even with partial. + // Current verification times out. pragma verify = false; - pragma aborts_if_is_partial; include UnlockRewardsAbortsIf; } @@ -159,6 +158,7 @@ spec aptos_framework::vesting { spec schema UnlockRewardsAbortsIf { contract_address: address; + // Cause timeout here include TotalAccumulatedRewardsAbortsIf { vesting_contract_address: contract_address }; let vesting_contract = global(contract_address); @@ -186,9 +186,7 @@ spec aptos_framework::vesting { spec vest(contract_address: address) { // TODO: Calls `staking_contract::distribute` which is not verified. - // Current verification times out even with partial. pragma verify = false; - pragma aborts_if_is_partial; include UnlockRewardsAbortsIf; } From 22977e3894672e7ef032b3db5ab9838ec88f4e9c Mon Sep 17 00:00:00 2001 From: UIZorrot Date: Fri, 21 Jul 2023 17:48:02 +0800 Subject: [PATCH 07/13] add head --- .../framework/aptos-framework/doc/vesting.md | 21 +++++++-------- .../aptos-framework/sources/vesting.spec.move | 25 +++++++----------- .../cached-packages/generated/head.mrb | Bin 596184 -> 596184 bytes 3 files changed, 19 insertions(+), 27 deletions(-) diff --git a/aptos-move/framework/aptos-framework/doc/vesting.md b/aptos-move/framework/aptos-framework/doc/vesting.md index 1d52d12d56e55..d04aa44f3e98f 100644 --- a/aptos-move/framework/aptos-framework/doc/vesting.md +++ b/aptos-move/framework/aptos-framework/doc/vesting.md @@ -3012,8 +3012,7 @@ This address should be deterministic for the same admin and vesting contract cre -
pragma verify = true;
-pragma opaque;
+
pragma opaque;
 include ActiveVestingContractAbortsIf<VestingContract>{contract_address: vesting_contract_address};
 ensures [abstract] result == spec_shareholder(vesting_contract_address, shareholder_or_beneficiary);
 
@@ -3113,7 +3112,7 @@ This address should be deterministic for the same admin and vesting contract cre -
pragma aborts_if_is_partial;
+
pragma verify = false;
 aborts_if len(contract_addresses) == 0;
 include PreconditionAbortsIf;
 
@@ -3148,7 +3147,7 @@ This address should be deterministic for the same admin and vesting contract cre -
pragma aborts_if_is_partial;
+
pragma verify = false;
 aborts_if len(contract_addresses) == 0;
 include PreconditionAbortsIf;
 
@@ -3179,7 +3178,7 @@ This address should be deterministic for the same admin and vesting contract cre -
pragma aborts_if_is_partial;
+
pragma verify = false;
 include ActiveVestingContractAbortsIf<VestingContract>;
 let vesting_contract = global<VestingContract>(contract_address);
 include WithdrawStakeAbortsIf { vesting_contract };
@@ -3198,7 +3197,7 @@ This address should be deterministic for the same admin and vesting contract cre
 
 
 
-
pragma aborts_if_is_partial;
+
pragma verify = false;
 aborts_if len(contract_addresses) == 0;
 
@@ -3215,7 +3214,7 @@ This address should be deterministic for the same admin and vesting contract cre -
pragma aborts_if_is_partial;
+
pragma verify = false;
 include ActiveVestingContractAbortsIf<VestingContract>;
 let vesting_contract = global<VestingContract>(contract_address);
 include WithdrawStakeAbortsIf { vesting_contract };
@@ -3234,7 +3233,7 @@ This address should be deterministic for the same admin and vesting contract cre
 
 
 
-
pragma aborts_if_is_partial;
+
pragma verify = false;
 let vesting_contract = global<VestingContract>(contract_address);
 aborts_if vesting_contract.state != VESTING_POOL_TERMINATED;
 include VerifyAdminAbortsIf;
@@ -3254,7 +3253,7 @@ This address should be deterministic for the same admin and vesting contract cre
 
 
 
-
pragma aborts_if_is_partial;
+
pragma verify = false;
 include VerifyAdminAbortsIf;
 let vesting_contract = global<VestingContract>(contract_address);
 let acc = vesting_contract.signer_cap.account;
@@ -3567,7 +3566,7 @@ This address should be deterministic for the same admin and vesting contract cre
 
 
 
-
pragma aborts_if_is_partial;
+
pragma verify = false;
 include UnlockStakeAbortsIf;
 
@@ -3602,7 +3601,7 @@ This address should be deterministic for the same admin and vesting contract cre -
pragma aborts_if_is_partial;
+
pragma verify = false;
 include WithdrawStakeAbortsIf;
 
diff --git a/aptos-move/framework/aptos-framework/sources/vesting.spec.move b/aptos-move/framework/aptos-framework/sources/vesting.spec.move index 707af76d4fb98..307aabfd7717b 100644 --- a/aptos-move/framework/aptos-framework/sources/vesting.spec.move +++ b/aptos-move/framework/aptos-framework/sources/vesting.spec.move @@ -120,7 +120,6 @@ spec aptos_framework::vesting { spec fun spec_shareholder(vesting_contract_address: address, shareholder_or_beneficiary: address): address; spec shareholder(vesting_contract_address: address, shareholder_or_beneficiary: address): address { - pragma verify = true; pragma opaque; include ActiveVestingContractAbortsIf{contract_address: vesting_contract_address}; ensures [abstract] result == spec_shareholder(vesting_contract_address, shareholder_or_beneficiary); @@ -151,7 +150,6 @@ spec aptos_framework::vesting { // TODO: Calls `unlock_stake` which is not verified. // Current verification times out. pragma verify = false; - include UnlockRewardsAbortsIf; } @@ -179,7 +177,7 @@ spec aptos_framework::vesting { spec unlock_rewards_many(contract_addresses: vector
) { // TODO: Calls `unlock_rewards` in loop. - pragma aborts_if_is_partial; + pragma verify = false; aborts_if len(contract_addresses) == 0; include PreconditionAbortsIf; } @@ -187,13 +185,12 @@ spec aptos_framework::vesting { spec vest(contract_address: address) { // TODO: Calls `staking_contract::distribute` which is not verified. pragma verify = false; - include UnlockRewardsAbortsIf; } spec vest_many(contract_addresses: vector
) { // TODO: Calls `vest` in loop. - pragma aborts_if_is_partial; + pragma verify = false; aborts_if len(contract_addresses) == 0; include PreconditionAbortsIf; } @@ -207,8 +204,7 @@ spec aptos_framework::vesting { spec distribute(contract_address: address) { // TODO: Can't handle abort in loop. - pragma aborts_if_is_partial; - + pragma verify = false; include ActiveVestingContractAbortsIf; let vesting_contract = global(contract_address); @@ -217,14 +213,13 @@ spec aptos_framework::vesting { spec distribute_many(contract_addresses: vector
) { // TODO: Calls `distribute` in loop. - pragma aborts_if_is_partial; + pragma verify = false; aborts_if len(contract_addresses) == 0; } spec terminate_vesting_contract(admin: &signer, contract_address: address) { // TODO: Calls `staking_contract::distribute` which is not verified. - pragma aborts_if_is_partial; - + pragma verify = false; include ActiveVestingContractAbortsIf; let vesting_contract = global(contract_address); @@ -233,13 +228,12 @@ spec aptos_framework::vesting { spec admin_withdraw(admin: &signer, contract_address: address) { // TODO: Calls `withdraw_stake` which is not verified. - pragma aborts_if_is_partial; + pragma verify = false; let vesting_contract = global(contract_address); aborts_if vesting_contract.state != VESTING_POOL_TERMINATED; include VerifyAdminAbortsIf; - include WithdrawStakeAbortsIf { vesting_contract }; } @@ -250,7 +244,7 @@ spec aptos_framework::vesting { commission_percentage: u64, ) { // TODO: Calls `staking_contract::switch_operator` which is not verified. - pragma aborts_if_is_partial; + pragma verify = false; include VerifyAdminAbortsIf; @@ -422,7 +416,7 @@ spec aptos_framework::vesting { spec unlock_stake(vesting_contract: &VestingContract, amount: u64) { // TODO: Calls `staking_contract::unlock_stake` which is not verified. - pragma aborts_if_is_partial; + pragma verify = false; include UnlockStakeAbortsIf; } @@ -443,8 +437,7 @@ spec aptos_framework::vesting { spec withdraw_stake(vesting_contract: &VestingContract, contract_address: address): Coin { // TODO: Calls `staking_contract::distribute` which is not verified. - pragma aborts_if_is_partial; - + pragma verify = false; include WithdrawStakeAbortsIf; } diff --git a/aptos-move/framework/cached-packages/generated/head.mrb b/aptos-move/framework/cached-packages/generated/head.mrb index 13b01563b186fb94ddc5f802e49550516d2247c1..7f45942d111606f90e65d1d5b9395a02bae23aa1 100644 GIT binary patch delta 108 zcmWN=!3~2j3;;j@EoBe}u;bw1UmcQ6z(72Zx&VtHAu&oAr#|VPb9~Nm+ncLh>zBhc zlS7Jra Date: Sat, 29 Jul 2023 13:24:47 +0800 Subject: [PATCH 08/13] add func total_accumulated_rewards time --- .../framework/aptos-framework/boogie.bpl | 36047 +++++----------- .../aptos-framework/sources/vesting.spec.move | 2 +- 2 files changed, 9748 insertions(+), 26301 deletions(-) diff --git a/aptos-move/framework/aptos-framework/boogie.bpl b/aptos-move/framework/aptos-framework/boogie.bpl index dcc52f8b7635a..424de1b5f615c 100644 --- a/aptos-move/framework/aptos-framework/boogie.bpl +++ b/aptos-move/framework/aptos-framework/boogie.bpl @@ -5502,75 +5502,75 @@ $1_vector_index_of'address'(v: Vec (int), e: int) returns (res1: bool, res2: int // ---------------------------------------------------------------------------------- -// Native Vector implementation for element type `u64` +// Native Vector implementation for element type `u8` // Not inlined. It appears faster this way. -function $IsEqual'vec'u64''(v1: Vec (int), v2: Vec (int)): bool { +function $IsEqual'vec'u8''(v1: Vec (int), v2: Vec (int)): bool { LenVec(v1) == LenVec(v2) && - (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'u64'(ReadVec(v1, i), ReadVec(v2, i))) + (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'u8'(ReadVec(v1, i), ReadVec(v2, i))) } // Not inlined. -function $IsPrefix'vec'u64''(v: Vec (int), prefix: Vec (int)): bool { +function $IsPrefix'vec'u8''(v: Vec (int), prefix: Vec (int)): bool { LenVec(v) >= LenVec(prefix) && - (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'u64'(ReadVec(v, i), ReadVec(prefix, i))) + (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'u8'(ReadVec(v, i), ReadVec(prefix, i))) } // Not inlined. -function $IsSuffix'vec'u64''(v: Vec (int), suffix: Vec (int)): bool { +function $IsSuffix'vec'u8''(v: Vec (int), suffix: Vec (int)): bool { LenVec(v) >= LenVec(suffix) && - (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'u64'(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) + (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'u8'(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) } // Not inlined. -function $IsValid'vec'u64''(v: Vec (int)): bool { +function $IsValid'vec'u8''(v: Vec (int)): bool { $IsValid'u64'(LenVec(v)) && - (forall i: int:: InRangeVec(v, i) ==> $IsValid'u64'(ReadVec(v, i))) + (forall i: int:: InRangeVec(v, i) ==> $IsValid'u8'(ReadVec(v, i))) } -function {:inline} $ContainsVec'u64'(v: Vec (int), e: int): bool { - (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'u64'(ReadVec(v, i), e)) +function {:inline} $ContainsVec'u8'(v: Vec (int), e: int): bool { + (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'u8'(ReadVec(v, i), e)) } -function $IndexOfVec'u64'(v: Vec (int), e: int): int; -axiom (forall v: Vec (int), e: int:: {$IndexOfVec'u64'(v, e)} - (var i := $IndexOfVec'u64'(v, e); - if (!$ContainsVec'u64'(v, e)) then i == -1 - else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'u64'(ReadVec(v, i), e) && - (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'u64'(ReadVec(v, j), e)))); +function $IndexOfVec'u8'(v: Vec (int), e: int): int; +axiom (forall v: Vec (int), e: int:: {$IndexOfVec'u8'(v, e)} + (var i := $IndexOfVec'u8'(v, e); + if (!$ContainsVec'u8'(v, e)) then i == -1 + else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'u8'(ReadVec(v, i), e) && + (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'u8'(ReadVec(v, j), e)))); -function {:inline} $RangeVec'u64'(v: Vec (int)): $Range { +function {:inline} $RangeVec'u8'(v: Vec (int)): $Range { $Range(0, LenVec(v)) } -function {:inline} $EmptyVec'u64'(): Vec (int) { +function {:inline} $EmptyVec'u8'(): Vec (int) { EmptyVec() } -procedure {:inline 1} $1_vector_empty'u64'() returns (v: Vec (int)) { +procedure {:inline 1} $1_vector_empty'u8'() returns (v: Vec (int)) { v := EmptyVec(); } -function {:inline} $1_vector_$empty'u64'(): Vec (int) { +function {:inline} $1_vector_$empty'u8'(): Vec (int) { EmptyVec() } -procedure {:inline 1} $1_vector_is_empty'u64'(v: Vec (int)) returns (b: bool) { +procedure {:inline 1} $1_vector_is_empty'u8'(v: Vec (int)) returns (b: bool) { b := IsEmptyVec(v); } -procedure {:inline 1} $1_vector_push_back'u64'(m: $Mutation (Vec (int)), val: int) returns (m': $Mutation (Vec (int))) { +procedure {:inline 1} $1_vector_push_back'u8'(m: $Mutation (Vec (int)), val: int) returns (m': $Mutation (Vec (int))) { m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); } -function {:inline} $1_vector_$push_back'u64'(v: Vec (int), val: int): Vec (int) { +function {:inline} $1_vector_$push_back'u8'(v: Vec (int), val: int): Vec (int) { ExtendVec(v, val) } -procedure {:inline 1} $1_vector_pop_back'u64'(m: $Mutation (Vec (int))) returns (e: int, m': $Mutation (Vec (int))) { +procedure {:inline 1} $1_vector_pop_back'u8'(m: $Mutation (Vec (int))) returns (e: int, m': $Mutation (Vec (int))) { var v: Vec (int); var len: int; v := $Dereference(m); @@ -5583,19 +5583,19 @@ procedure {:inline 1} $1_vector_pop_back'u64'(m: $Mutation (Vec (int))) returns m' := $UpdateMutation(m, RemoveVec(v)); } -procedure {:inline 1} $1_vector_append'u64'(m: $Mutation (Vec (int)), other: Vec (int)) returns (m': $Mutation (Vec (int))) { +procedure {:inline 1} $1_vector_append'u8'(m: $Mutation (Vec (int)), other: Vec (int)) returns (m': $Mutation (Vec (int))) { m' := $UpdateMutation(m, ConcatVec($Dereference(m), other)); } -procedure {:inline 1} $1_vector_reverse'u64'(m: $Mutation (Vec (int))) returns (m': $Mutation (Vec (int))) { +procedure {:inline 1} $1_vector_reverse'u8'(m: $Mutation (Vec (int))) returns (m': $Mutation (Vec (int))) { m' := $UpdateMutation(m, ReverseVec($Dereference(m))); } -procedure {:inline 1} $1_vector_reverse_append'u64'(m: $Mutation (Vec (int)), other: Vec (int)) returns (m': $Mutation (Vec (int))) { +procedure {:inline 1} $1_vector_reverse_append'u8'(m: $Mutation (Vec (int)), other: Vec (int)) returns (m': $Mutation (Vec (int))) { m' := $UpdateMutation(m, ConcatVec($Dereference(m), ReverseVec(other))); } -procedure {:inline 1} $1_vector_trim_reverse'u64'(m: $Mutation (Vec (int)), new_len: int) returns (v: (Vec (int)), m': $Mutation (Vec (int))) { +procedure {:inline 1} $1_vector_trim_reverse'u8'(m: $Mutation (Vec (int)), new_len: int) returns (v: (Vec (int)), m': $Mutation (Vec (int))) { var len: int; v := $Dereference(m); if (LenVec(v) < new_len) { @@ -5607,7 +5607,7 @@ procedure {:inline 1} $1_vector_trim_reverse'u64'(m: $Mutation (Vec (int)), new_ m' := $UpdateMutation(m, SliceVec($Dereference(m), 0, new_len)); } -procedure {:inline 1} $1_vector_trim'u64'(m: $Mutation (Vec (int)), new_len: int) returns (v: (Vec (int)), m': $Mutation (Vec (int))) { +procedure {:inline 1} $1_vector_trim'u8'(m: $Mutation (Vec (int)), new_len: int) returns (v: (Vec (int)), m': $Mutation (Vec (int))) { var len: int; v := $Dereference(m); if (LenVec(v) < new_len) { @@ -5618,7 +5618,7 @@ procedure {:inline 1} $1_vector_trim'u64'(m: $Mutation (Vec (int)), new_len: int m' := $UpdateMutation(m, SliceVec($Dereference(m), 0, new_len)); } -procedure {:inline 1} $1_vector_reverse_slice'u64'(m: $Mutation (Vec (int)), left: int, right: int) returns (m': $Mutation (Vec (int))) { +procedure {:inline 1} $1_vector_reverse_slice'u8'(m: $Mutation (Vec (int)), left: int, right: int) returns (m': $Mutation (Vec (int))) { var left_vec: Vec (int); var mid_vec: Vec (int); var right_vec: Vec (int); @@ -5642,7 +5642,7 @@ procedure {:inline 1} $1_vector_reverse_slice'u64'(m: $Mutation (Vec (int)), lef m' := $UpdateMutation(m, ConcatVec(left_vec, ConcatVec(mid_vec, right_vec))); } -procedure {:inline 1} $1_vector_rotate'u64'(m: $Mutation (Vec (int)), rot: int) returns (n: int, m': $Mutation (Vec (int))) { +procedure {:inline 1} $1_vector_rotate'u8'(m: $Mutation (Vec (int)), rot: int) returns (n: int, m': $Mutation (Vec (int))) { var v: Vec (int); var len: int; var left_vec: Vec (int); @@ -5658,7 +5658,7 @@ procedure {:inline 1} $1_vector_rotate'u64'(m: $Mutation (Vec (int)), rot: int) n := LenVec(v) - rot; } -procedure {:inline 1} $1_vector_rotate_slice'u64'(m: $Mutation (Vec (int)), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec (int))) { +procedure {:inline 1} $1_vector_rotate_slice'u8'(m: $Mutation (Vec (int)), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec (int))) { var left_vec: Vec (int); var mid_vec: Vec (int); var right_vec: Vec (int); @@ -5684,7 +5684,7 @@ procedure {:inline 1} $1_vector_rotate_slice'u64'(m: $Mutation (Vec (int)), left n := left + (right - rot); } -procedure {:inline 1} $1_vector_insert'u64'(m: $Mutation (Vec (int)), i: int, e: int) returns (m': $Mutation (Vec (int))) { +procedure {:inline 1} $1_vector_insert'u8'(m: $Mutation (Vec (int)), i: int, e: int) returns (m': $Mutation (Vec (int))) { var left_vec: Vec (int); var right_vec: Vec (int); var v: Vec (int); @@ -5702,15 +5702,15 @@ procedure {:inline 1} $1_vector_insert'u64'(m: $Mutation (Vec (int)), i: int, e: } } -procedure {:inline 1} $1_vector_length'u64'(v: Vec (int)) returns (l: int) { +procedure {:inline 1} $1_vector_length'u8'(v: Vec (int)) returns (l: int) { l := LenVec(v); } -function {:inline} $1_vector_$length'u64'(v: Vec (int)): int { +function {:inline} $1_vector_$length'u8'(v: Vec (int)): int { LenVec(v) } -procedure {:inline 1} $1_vector_borrow'u64'(v: Vec (int), i: int) returns (dst: int) { +procedure {:inline 1} $1_vector_borrow'u8'(v: Vec (int), i: int) returns (dst: int) { if (!InRangeVec(v, i)) { call $ExecFailureAbort(); return; @@ -5718,11 +5718,11 @@ procedure {:inline 1} $1_vector_borrow'u64'(v: Vec (int), i: int) returns (dst: dst := ReadVec(v, i); } -function {:inline} $1_vector_$borrow'u64'(v: Vec (int), i: int): int { +function {:inline} $1_vector_$borrow'u8'(v: Vec (int), i: int): int { ReadVec(v, i) } -procedure {:inline 1} $1_vector_borrow_mut'u64'(m: $Mutation (Vec (int)), index: int) +procedure {:inline 1} $1_vector_borrow_mut'u8'(m: $Mutation (Vec (int)), index: int) returns (dst: $Mutation (int), m': $Mutation (Vec (int))) { var v: Vec (int); @@ -5735,17 +5735,17 @@ returns (dst: $Mutation (int), m': $Mutation (Vec (int))) m' := m; } -function {:inline} $1_vector_$borrow_mut'u64'(v: Vec (int), i: int): int { +function {:inline} $1_vector_$borrow_mut'u8'(v: Vec (int), i: int): int { ReadVec(v, i) } -procedure {:inline 1} $1_vector_destroy_empty'u64'(v: Vec (int)) { +procedure {:inline 1} $1_vector_destroy_empty'u8'(v: Vec (int)) { if (!IsEmptyVec(v)) { call $ExecFailureAbort(); } } -procedure {:inline 1} $1_vector_swap'u64'(m: $Mutation (Vec (int)), i: int, j: int) returns (m': $Mutation (Vec (int))) +procedure {:inline 1} $1_vector_swap'u8'(m: $Mutation (Vec (int)), i: int, j: int) returns (m': $Mutation (Vec (int))) { var v: Vec (int); v := $Dereference(m); @@ -5756,11 +5756,11 @@ procedure {:inline 1} $1_vector_swap'u64'(m: $Mutation (Vec (int)), i: int, j: i m' := $UpdateMutation(m, SwapVec(v, i, j)); } -function {:inline} $1_vector_$swap'u64'(v: Vec (int), i: int, j: int): Vec (int) { +function {:inline} $1_vector_$swap'u8'(v: Vec (int), i: int, j: int): Vec (int) { SwapVec(v, i, j) } -procedure {:inline 1} $1_vector_remove'u64'(m: $Mutation (Vec (int)), i: int) returns (e: int, m': $Mutation (Vec (int))) +procedure {:inline 1} $1_vector_remove'u8'(m: $Mutation (Vec (int)), i: int) returns (e: int, m': $Mutation (Vec (int))) { var v: Vec (int); @@ -5774,7 +5774,7 @@ procedure {:inline 1} $1_vector_remove'u64'(m: $Mutation (Vec (int)), i: int) re m' := $UpdateMutation(m, RemoveAtVec(v, i)); } -procedure {:inline 1} $1_vector_swap_remove'u64'(m: $Mutation (Vec (int)), i: int) returns (e: int, m': $Mutation (Vec (int))) +procedure {:inline 1} $1_vector_swap_remove'u8'(m: $Mutation (Vec (int)), i: int) returns (e: int, m': $Mutation (Vec (int))) { var len: int; var v: Vec (int); @@ -5789,13 +5789,13 @@ procedure {:inline 1} $1_vector_swap_remove'u64'(m: $Mutation (Vec (int)), i: in m' := $UpdateMutation(m, RemoveVec(SwapVec(v, i, len-1))); } -procedure {:inline 1} $1_vector_contains'u64'(v: Vec (int), e: int) returns (res: bool) { - res := $ContainsVec'u64'(v, e); +procedure {:inline 1} $1_vector_contains'u8'(v: Vec (int), e: int) returns (res: bool) { + res := $ContainsVec'u8'(v, e); } procedure {:inline 1} -$1_vector_index_of'u64'(v: Vec (int), e: int) returns (res1: bool, res2: int) { - res2 := $IndexOfVec'u64'(v, e); +$1_vector_index_of'u8'(v: Vec (int), e: int) returns (res1: bool, res2: int) { + res2 := $IndexOfVec'u8'(v, e); if (res2 >= 0) { res1 := true; } else { @@ -5806,76 +5806,76 @@ $1_vector_index_of'u64'(v: Vec (int), e: int) returns (res1: bool, res2: int) { // ---------------------------------------------------------------------------------- -// Native Vector implementation for element type `u8` +// Native Vector implementation for element type `bv8` // Not inlined. It appears faster this way. -function $IsEqual'vec'u8''(v1: Vec (int), v2: Vec (int)): bool { +function $IsEqual'vec'bv8''(v1: Vec (bv8), v2: Vec (bv8)): bool { LenVec(v1) == LenVec(v2) && - (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'u8'(ReadVec(v1, i), ReadVec(v2, i))) + (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'bv8'(ReadVec(v1, i), ReadVec(v2, i))) } // Not inlined. -function $IsPrefix'vec'u8''(v: Vec (int), prefix: Vec (int)): bool { +function $IsPrefix'vec'bv8''(v: Vec (bv8), prefix: Vec (bv8)): bool { LenVec(v) >= LenVec(prefix) && - (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'u8'(ReadVec(v, i), ReadVec(prefix, i))) + (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'bv8'(ReadVec(v, i), ReadVec(prefix, i))) } // Not inlined. -function $IsSuffix'vec'u8''(v: Vec (int), suffix: Vec (int)): bool { +function $IsSuffix'vec'bv8''(v: Vec (bv8), suffix: Vec (bv8)): bool { LenVec(v) >= LenVec(suffix) && - (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'u8'(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) + (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'bv8'(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) } // Not inlined. -function $IsValid'vec'u8''(v: Vec (int)): bool { +function $IsValid'vec'bv8''(v: Vec (bv8)): bool { $IsValid'u64'(LenVec(v)) && - (forall i: int:: InRangeVec(v, i) ==> $IsValid'u8'(ReadVec(v, i))) + (forall i: int:: InRangeVec(v, i) ==> $IsValid'bv8'(ReadVec(v, i))) } -function {:inline} $ContainsVec'u8'(v: Vec (int), e: int): bool { - (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'u8'(ReadVec(v, i), e)) +function {:inline} $ContainsVec'bv8'(v: Vec (bv8), e: bv8): bool { + (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'bv8'(ReadVec(v, i), e)) } -function $IndexOfVec'u8'(v: Vec (int), e: int): int; -axiom (forall v: Vec (int), e: int:: {$IndexOfVec'u8'(v, e)} - (var i := $IndexOfVec'u8'(v, e); - if (!$ContainsVec'u8'(v, e)) then i == -1 - else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'u8'(ReadVec(v, i), e) && - (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'u8'(ReadVec(v, j), e)))); +function $IndexOfVec'bv8'(v: Vec (bv8), e: bv8): int; +axiom (forall v: Vec (bv8), e: bv8:: {$IndexOfVec'bv8'(v, e)} + (var i := $IndexOfVec'bv8'(v, e); + if (!$ContainsVec'bv8'(v, e)) then i == -1 + else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'bv8'(ReadVec(v, i), e) && + (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'bv8'(ReadVec(v, j), e)))); -function {:inline} $RangeVec'u8'(v: Vec (int)): $Range { +function {:inline} $RangeVec'bv8'(v: Vec (bv8)): $Range { $Range(0, LenVec(v)) } -function {:inline} $EmptyVec'u8'(): Vec (int) { +function {:inline} $EmptyVec'bv8'(): Vec (bv8) { EmptyVec() } -procedure {:inline 1} $1_vector_empty'u8'() returns (v: Vec (int)) { +procedure {:inline 1} $1_vector_empty'bv8'() returns (v: Vec (bv8)) { v := EmptyVec(); } -function {:inline} $1_vector_$empty'u8'(): Vec (int) { +function {:inline} $1_vector_$empty'bv8'(): Vec (bv8) { EmptyVec() } -procedure {:inline 1} $1_vector_is_empty'u8'(v: Vec (int)) returns (b: bool) { +procedure {:inline 1} $1_vector_is_empty'bv8'(v: Vec (bv8)) returns (b: bool) { b := IsEmptyVec(v); } -procedure {:inline 1} $1_vector_push_back'u8'(m: $Mutation (Vec (int)), val: int) returns (m': $Mutation (Vec (int))) { +procedure {:inline 1} $1_vector_push_back'bv8'(m: $Mutation (Vec (bv8)), val: bv8) returns (m': $Mutation (Vec (bv8))) { m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); } -function {:inline} $1_vector_$push_back'u8'(v: Vec (int), val: int): Vec (int) { +function {:inline} $1_vector_$push_back'bv8'(v: Vec (bv8), val: bv8): Vec (bv8) { ExtendVec(v, val) } -procedure {:inline 1} $1_vector_pop_back'u8'(m: $Mutation (Vec (int))) returns (e: int, m': $Mutation (Vec (int))) { - var v: Vec (int); +procedure {:inline 1} $1_vector_pop_back'bv8'(m: $Mutation (Vec (bv8))) returns (e: bv8, m': $Mutation (Vec (bv8))) { + var v: Vec (bv8); var len: int; v := $Dereference(m); len := LenVec(v); @@ -5887,19 +5887,19 @@ procedure {:inline 1} $1_vector_pop_back'u8'(m: $Mutation (Vec (int))) returns ( m' := $UpdateMutation(m, RemoveVec(v)); } -procedure {:inline 1} $1_vector_append'u8'(m: $Mutation (Vec (int)), other: Vec (int)) returns (m': $Mutation (Vec (int))) { +procedure {:inline 1} $1_vector_append'bv8'(m: $Mutation (Vec (bv8)), other: Vec (bv8)) returns (m': $Mutation (Vec (bv8))) { m' := $UpdateMutation(m, ConcatVec($Dereference(m), other)); } -procedure {:inline 1} $1_vector_reverse'u8'(m: $Mutation (Vec (int))) returns (m': $Mutation (Vec (int))) { +procedure {:inline 1} $1_vector_reverse'bv8'(m: $Mutation (Vec (bv8))) returns (m': $Mutation (Vec (bv8))) { m' := $UpdateMutation(m, ReverseVec($Dereference(m))); } -procedure {:inline 1} $1_vector_reverse_append'u8'(m: $Mutation (Vec (int)), other: Vec (int)) returns (m': $Mutation (Vec (int))) { +procedure {:inline 1} $1_vector_reverse_append'bv8'(m: $Mutation (Vec (bv8)), other: Vec (bv8)) returns (m': $Mutation (Vec (bv8))) { m' := $UpdateMutation(m, ConcatVec($Dereference(m), ReverseVec(other))); } -procedure {:inline 1} $1_vector_trim_reverse'u8'(m: $Mutation (Vec (int)), new_len: int) returns (v: (Vec (int)), m': $Mutation (Vec (int))) { +procedure {:inline 1} $1_vector_trim_reverse'bv8'(m: $Mutation (Vec (bv8)), new_len: int) returns (v: (Vec (bv8)), m': $Mutation (Vec (bv8))) { var len: int; v := $Dereference(m); if (LenVec(v) < new_len) { @@ -5911,7 +5911,7 @@ procedure {:inline 1} $1_vector_trim_reverse'u8'(m: $Mutation (Vec (int)), new_l m' := $UpdateMutation(m, SliceVec($Dereference(m), 0, new_len)); } -procedure {:inline 1} $1_vector_trim'u8'(m: $Mutation (Vec (int)), new_len: int) returns (v: (Vec (int)), m': $Mutation (Vec (int))) { +procedure {:inline 1} $1_vector_trim'bv8'(m: $Mutation (Vec (bv8)), new_len: int) returns (v: (Vec (bv8)), m': $Mutation (Vec (bv8))) { var len: int; v := $Dereference(m); if (LenVec(v) < new_len) { @@ -5922,11 +5922,11 @@ procedure {:inline 1} $1_vector_trim'u8'(m: $Mutation (Vec (int)), new_len: int) m' := $UpdateMutation(m, SliceVec($Dereference(m), 0, new_len)); } -procedure {:inline 1} $1_vector_reverse_slice'u8'(m: $Mutation (Vec (int)), left: int, right: int) returns (m': $Mutation (Vec (int))) { - var left_vec: Vec (int); - var mid_vec: Vec (int); - var right_vec: Vec (int); - var v: Vec (int); +procedure {:inline 1} $1_vector_reverse_slice'bv8'(m: $Mutation (Vec (bv8)), left: int, right: int) returns (m': $Mutation (Vec (bv8))) { + var left_vec: Vec (bv8); + var mid_vec: Vec (bv8); + var right_vec: Vec (bv8); + var v: Vec (bv8); if (left > right) { call $ExecFailureAbort(); return; @@ -5946,11 +5946,11 @@ procedure {:inline 1} $1_vector_reverse_slice'u8'(m: $Mutation (Vec (int)), left m' := $UpdateMutation(m, ConcatVec(left_vec, ConcatVec(mid_vec, right_vec))); } -procedure {:inline 1} $1_vector_rotate'u8'(m: $Mutation (Vec (int)), rot: int) returns (n: int, m': $Mutation (Vec (int))) { - var v: Vec (int); +procedure {:inline 1} $1_vector_rotate'bv8'(m: $Mutation (Vec (bv8)), rot: int) returns (n: int, m': $Mutation (Vec (bv8))) { + var v: Vec (bv8); var len: int; - var left_vec: Vec (int); - var right_vec: Vec (int); + var left_vec: Vec (bv8); + var right_vec: Vec (bv8); v := $Dereference(m); if (!(rot >= 0 && rot <= LenVec(v))) { call $ExecFailureAbort(); @@ -5962,13 +5962,13 @@ procedure {:inline 1} $1_vector_rotate'u8'(m: $Mutation (Vec (int)), rot: int) r n := LenVec(v) - rot; } -procedure {:inline 1} $1_vector_rotate_slice'u8'(m: $Mutation (Vec (int)), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec (int))) { - var left_vec: Vec (int); - var mid_vec: Vec (int); - var right_vec: Vec (int); - var mid_left_vec: Vec (int); - var mid_right_vec: Vec (int); - var v: Vec (int); +procedure {:inline 1} $1_vector_rotate_slice'bv8'(m: $Mutation (Vec (bv8)), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec (bv8))) { + var left_vec: Vec (bv8); + var mid_vec: Vec (bv8); + var right_vec: Vec (bv8); + var mid_left_vec: Vec (bv8); + var mid_right_vec: Vec (bv8); + var v: Vec (bv8); v := $Dereference(m); if (!(left <= rot && rot <= right)) { call $ExecFailureAbort(); @@ -5988,10 +5988,10 @@ procedure {:inline 1} $1_vector_rotate_slice'u8'(m: $Mutation (Vec (int)), left: n := left + (right - rot); } -procedure {:inline 1} $1_vector_insert'u8'(m: $Mutation (Vec (int)), i: int, e: int) returns (m': $Mutation (Vec (int))) { - var left_vec: Vec (int); - var right_vec: Vec (int); - var v: Vec (int); +procedure {:inline 1} $1_vector_insert'bv8'(m: $Mutation (Vec (bv8)), i: int, e: bv8) returns (m': $Mutation (Vec (bv8))) { + var left_vec: Vec (bv8); + var right_vec: Vec (bv8); + var v: Vec (bv8); v := $Dereference(m); if (!(i >= 0 && i <= LenVec(v))) { call $ExecFailureAbort(); @@ -6006,15 +6006,15 @@ procedure {:inline 1} $1_vector_insert'u8'(m: $Mutation (Vec (int)), i: int, e: } } -procedure {:inline 1} $1_vector_length'u8'(v: Vec (int)) returns (l: int) { +procedure {:inline 1} $1_vector_length'bv8'(v: Vec (bv8)) returns (l: int) { l := LenVec(v); } -function {:inline} $1_vector_$length'u8'(v: Vec (int)): int { +function {:inline} $1_vector_$length'bv8'(v: Vec (bv8)): int { LenVec(v) } -procedure {:inline 1} $1_vector_borrow'u8'(v: Vec (int), i: int) returns (dst: int) { +procedure {:inline 1} $1_vector_borrow'bv8'(v: Vec (bv8), i: int) returns (dst: bv8) { if (!InRangeVec(v, i)) { call $ExecFailureAbort(); return; @@ -6022,14 +6022,14 @@ procedure {:inline 1} $1_vector_borrow'u8'(v: Vec (int), i: int) returns (dst: i dst := ReadVec(v, i); } -function {:inline} $1_vector_$borrow'u8'(v: Vec (int), i: int): int { +function {:inline} $1_vector_$borrow'bv8'(v: Vec (bv8), i: int): bv8 { ReadVec(v, i) } -procedure {:inline 1} $1_vector_borrow_mut'u8'(m: $Mutation (Vec (int)), index: int) -returns (dst: $Mutation (int), m': $Mutation (Vec (int))) +procedure {:inline 1} $1_vector_borrow_mut'bv8'(m: $Mutation (Vec (bv8)), index: int) +returns (dst: $Mutation (bv8), m': $Mutation (Vec (bv8))) { - var v: Vec (int); + var v: Vec (bv8); v := $Dereference(m); if (!InRangeVec(v, index)) { call $ExecFailureAbort(); @@ -6039,19 +6039,19 @@ returns (dst: $Mutation (int), m': $Mutation (Vec (int))) m' := m; } -function {:inline} $1_vector_$borrow_mut'u8'(v: Vec (int), i: int): int { +function {:inline} $1_vector_$borrow_mut'bv8'(v: Vec (bv8), i: int): bv8 { ReadVec(v, i) } -procedure {:inline 1} $1_vector_destroy_empty'u8'(v: Vec (int)) { +procedure {:inline 1} $1_vector_destroy_empty'bv8'(v: Vec (bv8)) { if (!IsEmptyVec(v)) { call $ExecFailureAbort(); } } -procedure {:inline 1} $1_vector_swap'u8'(m: $Mutation (Vec (int)), i: int, j: int) returns (m': $Mutation (Vec (int))) +procedure {:inline 1} $1_vector_swap'bv8'(m: $Mutation (Vec (bv8)), i: int, j: int) returns (m': $Mutation (Vec (bv8))) { - var v: Vec (int); + var v: Vec (bv8); v := $Dereference(m); if (!InRangeVec(v, i) || !InRangeVec(v, j)) { call $ExecFailureAbort(); @@ -6060,13 +6060,13 @@ procedure {:inline 1} $1_vector_swap'u8'(m: $Mutation (Vec (int)), i: int, j: in m' := $UpdateMutation(m, SwapVec(v, i, j)); } -function {:inline} $1_vector_$swap'u8'(v: Vec (int), i: int, j: int): Vec (int) { +function {:inline} $1_vector_$swap'bv8'(v: Vec (bv8), i: int, j: int): Vec (bv8) { SwapVec(v, i, j) } -procedure {:inline 1} $1_vector_remove'u8'(m: $Mutation (Vec (int)), i: int) returns (e: int, m': $Mutation (Vec (int))) +procedure {:inline 1} $1_vector_remove'bv8'(m: $Mutation (Vec (bv8)), i: int) returns (e: bv8, m': $Mutation (Vec (bv8))) { - var v: Vec (int); + var v: Vec (bv8); v := $Dereference(m); @@ -6078,10 +6078,10 @@ procedure {:inline 1} $1_vector_remove'u8'(m: $Mutation (Vec (int)), i: int) ret m' := $UpdateMutation(m, RemoveAtVec(v, i)); } -procedure {:inline 1} $1_vector_swap_remove'u8'(m: $Mutation (Vec (int)), i: int) returns (e: int, m': $Mutation (Vec (int))) +procedure {:inline 1} $1_vector_swap_remove'bv8'(m: $Mutation (Vec (bv8)), i: int) returns (e: bv8, m': $Mutation (Vec (bv8))) { var len: int; - var v: Vec (int); + var v: Vec (bv8); v := $Dereference(m); len := LenVec(v); @@ -6093,13 +6093,13 @@ procedure {:inline 1} $1_vector_swap_remove'u8'(m: $Mutation (Vec (int)), i: int m' := $UpdateMutation(m, RemoveVec(SwapVec(v, i, len-1))); } -procedure {:inline 1} $1_vector_contains'u8'(v: Vec (int), e: int) returns (res: bool) { - res := $ContainsVec'u8'(v, e); +procedure {:inline 1} $1_vector_contains'bv8'(v: Vec (bv8), e: bv8) returns (res: bool) { + res := $ContainsVec'bv8'(v, e); } procedure {:inline 1} -$1_vector_index_of'u8'(v: Vec (int), e: int) returns (res1: bool, res2: int) { - res2 := $IndexOfVec'u8'(v, e); +$1_vector_index_of'bv8'(v: Vec (bv8), e: bv8) returns (res1: bool, res2: int) { + res2 := $IndexOfVec'bv8'(v, e); if (res2 >= 0) { res1 := true; } else { @@ -6109,670 +6109,356 @@ $1_vector_index_of'u8'(v: Vec (int), e: int) returns (res1: bool, res2: int) { } -// ---------------------------------------------------------------------------------- -// Native Vector implementation for element type `bv64` - -// Not inlined. It appears faster this way. -function $IsEqual'vec'bv64''(v1: Vec (bv64), v2: Vec (bv64)): bool { - LenVec(v1) == LenVec(v2) && - (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'bv64'(ReadVec(v1, i), ReadVec(v2, i))) -} +// ================================================================================== +// Native Table -// Not inlined. -function $IsPrefix'vec'bv64''(v: Vec (bv64), prefix: Vec (bv64)): bool { - LenVec(v) >= LenVec(prefix) && - (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'bv64'(ReadVec(v, i), ReadVec(prefix, i))) -} +// ---------------------------------------------------------------------------------- +// Native Table key encoding for type `address` -// Not inlined. -function $IsSuffix'vec'bv64''(v: Vec (bv64), suffix: Vec (bv64)): bool { - LenVec(v) >= LenVec(suffix) && - (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'bv64'(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) -} +function $EncodeKey'address'(k: int): int; +axiom ( + forall k1, k2: int :: {$EncodeKey'address'(k1), $EncodeKey'address'(k2)} + $IsEqual'address'(k1, k2) <==> $EncodeKey'address'(k1) == $EncodeKey'address'(k2) +); -// Not inlined. -function $IsValid'vec'bv64''(v: Vec (bv64)): bool { - $IsValid'u64'(LenVec(v)) && - (forall i: int:: InRangeVec(v, i) ==> $IsValid'bv64'(ReadVec(v, i))) -} +// ---------------------------------------------------------------------------------- +// Native Table key encoding for type `$1_string_String` -function {:inline} $ContainsVec'bv64'(v: Vec (bv64), e: bv64): bool { - (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'bv64'(ReadVec(v, i), e)) -} +function $EncodeKey'$1_string_String'(k: $1_string_String): int; +axiom ( + forall k1, k2: $1_string_String :: {$EncodeKey'$1_string_String'(k1), $EncodeKey'$1_string_String'(k2)} + $IsEqual'$1_string_String'(k1, k2) <==> $EncodeKey'$1_string_String'(k1) == $EncodeKey'$1_string_String'(k2) +); -function $IndexOfVec'bv64'(v: Vec (bv64), e: bv64): int; -axiom (forall v: Vec (bv64), e: bv64:: {$IndexOfVec'bv64'(v, e)} - (var i := $IndexOfVec'bv64'(v, e); - if (!$ContainsVec'bv64'(v, e)) then i == -1 - else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'bv64'(ReadVec(v, i), e) && - (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'bv64'(ReadVec(v, j), e)))); +// ---------------------------------------------------------------------------------- +// Native Table implementation for type `(address,u64)` -function {:inline} $RangeVec'bv64'(v: Vec (bv64)): $Range { - $Range(0, LenVec(v)) +function $IsEqual'$1_simple_map_SimpleMap'address_u64''(t1: Table int (int), t2: Table int (int)): bool { + LenTable(t1) == LenTable(t2) && + (forall k: int :: ContainsTable(t1, k) <==> ContainsTable(t2, k)) && + (forall k: int :: ContainsTable(t1, k) ==> GetTable(t1, k) == GetTable(t2, k)) && + (forall k: int :: ContainsTable(t2, k) ==> GetTable(t1, k) == GetTable(t2, k)) } - -function {:inline} $EmptyVec'bv64'(): Vec (bv64) { - EmptyVec() +// Not inlined. +function $IsValid'$1_simple_map_SimpleMap'address_u64''(t: Table int (int)): bool { + $IsValid'u64'(LenTable(t)) && + (forall i: int:: ContainsTable(t, i) ==> $IsValid'u64'(GetTable(t, i))) } - -procedure {:inline 1} $1_vector_empty'bv64'() returns (v: Vec (bv64)) { - v := EmptyVec(); +procedure {:inline 2} $1_simple_map_create'address_u64'() returns (v: Table int (int)) { + v := EmptyTable(); } - -function {:inline} $1_vector_$empty'bv64'(): Vec (bv64) { - EmptyVec() +procedure {:inline 2} $1_simple_map_destroy_empty'address_u64'(t: Table int (int)) { + if (LenTable(t) != 0) { + call $Abort($StdError(1/*INVALID_STATE*/, 102/*ENOT_EMPTY*/)); + } } - -procedure {:inline 1} $1_vector_is_empty'bv64'(v: Vec (bv64)) returns (b: bool) { - b := IsEmptyVec(v); +procedure {:inline 2} $1_simple_map_length'address_u64'(t: (Table int (int))) returns (l: int) { + l := LenTable(t); } - -procedure {:inline 1} $1_vector_push_back'bv64'(m: $Mutation (Vec (bv64)), val: bv64) returns (m': $Mutation (Vec (bv64))) { - m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); +procedure {:inline 2} $1_simple_map_contains_key'address_u64'(t: (Table int (int)), k: int) returns (r: bool) { + r := ContainsTable(t, $EncodeKey'address'(k)); } - -function {:inline} $1_vector_$push_back'bv64'(v: Vec (bv64), val: bv64): Vec (bv64) { - ExtendVec(v, val) -} - -procedure {:inline 1} $1_vector_pop_back'bv64'(m: $Mutation (Vec (bv64))) returns (e: bv64, m': $Mutation (Vec (bv64))) { - var v: Vec (bv64); - var len: int; - v := $Dereference(m); - len := LenVec(v); - if (len == 0) { - call $ExecFailureAbort(); - return; +procedure {:inline 2} $1_simple_map_add'address_u64'(m: $Mutation (Table int (int)), k: int, v: int) returns (m': $Mutation(Table int (int))) { + var enc_k: int; + var t: Table int (int); + enc_k := $EncodeKey'address'(k); + t := $Dereference(m); + if (ContainsTable(t, enc_k)) { + call $Abort($StdError(7/*INVALID_ARGUMENTS*/, 100/*EALREADY_EXISTS*/)); + } else { + m' := $UpdateMutation(m, AddTable(t, enc_k, v)); } - e := ReadVec(v, len-1); - m' := $UpdateMutation(m, RemoveVec(v)); -} - -procedure {:inline 1} $1_vector_append'bv64'(m: $Mutation (Vec (bv64)), other: Vec (bv64)) returns (m': $Mutation (Vec (bv64))) { - m' := $UpdateMutation(m, ConcatVec($Dereference(m), other)); -} - -procedure {:inline 1} $1_vector_reverse'bv64'(m: $Mutation (Vec (bv64))) returns (m': $Mutation (Vec (bv64))) { - m' := $UpdateMutation(m, ReverseVec($Dereference(m))); -} - -procedure {:inline 1} $1_vector_reverse_append'bv64'(m: $Mutation (Vec (bv64)), other: Vec (bv64)) returns (m': $Mutation (Vec (bv64))) { - m' := $UpdateMutation(m, ConcatVec($Dereference(m), ReverseVec(other))); } - -procedure {:inline 1} $1_vector_trim_reverse'bv64'(m: $Mutation (Vec (bv64)), new_len: int) returns (v: (Vec (bv64)), m': $Mutation (Vec (bv64))) { - var len: int; - v := $Dereference(m); - if (LenVec(v) < new_len) { - call $ExecFailureAbort(); - return; +procedure {:inline 2} $1_simple_map_remove'address_u64'(m: $Mutation (Table int (int)), k: int) +returns (k': int, v: int, m': $Mutation(Table int (int))) { + var enc_k: int; + var t: Table int (int); + enc_k := $EncodeKey'address'(k); + t := $Dereference(m); + if (!ContainsTable(t, enc_k)) { + call $Abort($StdError(7/*INVALID_ARGUMENTS*/, 101/*ENOT_FOUND*/)); + } else { + k' := k; + v := GetTable(t, enc_k); + m' := $UpdateMutation(m, RemoveTable(t, enc_k)); } - v := SliceVec(v, new_len, LenVec(v)); - v := ReverseVec(v); - m' := $UpdateMutation(m, SliceVec($Dereference(m), 0, new_len)); } - -procedure {:inline 1} $1_vector_trim'bv64'(m: $Mutation (Vec (bv64)), new_len: int) returns (v: (Vec (bv64)), m': $Mutation (Vec (bv64))) { - var len: int; - v := $Dereference(m); - if (LenVec(v) < new_len) { - call $ExecFailureAbort(); - return; +procedure {:inline 2} $1_simple_map_borrow'address_u64'(t: Table int (int), k: int) returns (v: int) { + var enc_k: int; + enc_k := $EncodeKey'address'(k); + if (!ContainsTable(t, enc_k)) { + call $Abort($StdError(7/*INVALID_ARGUMENTS*/, 101/*ENOT_FOUND*/)); + } else { + v := GetTable(t, $EncodeKey'address'(k)); } - v := SliceVec(v, new_len, LenVec(v)); - m' := $UpdateMutation(m, SliceVec($Dereference(m), 0, new_len)); } - -procedure {:inline 1} $1_vector_reverse_slice'bv64'(m: $Mutation (Vec (bv64)), left: int, right: int) returns (m': $Mutation (Vec (bv64))) { - var left_vec: Vec (bv64); - var mid_vec: Vec (bv64); - var right_vec: Vec (bv64); - var v: Vec (bv64); - if (left > right) { - call $ExecFailureAbort(); - return; - } - if (left == right) { +procedure {:inline 2} $1_simple_map_borrow_mut'address_u64'(m: $Mutation (Table int (int)), k: int) +returns (dst: $Mutation (int), m': $Mutation (Table int (int))) { + var enc_k: int; + var t: Table int (int); + enc_k := $EncodeKey'address'(k); + t := $Dereference(m); + if (!ContainsTable(t, enc_k)) { + call $Abort($StdError(7/*INVALID_ARGUMENTS*/, 101/*ENOT_FOUND*/)); + } else { + dst := $Mutation(l#$Mutation(m), ExtendVec(p#$Mutation(m), enc_k), GetTable(t, enc_k)); m' := m; - return; - } - v := $Dereference(m); - if (!(right >= 0 && right <= LenVec(v))) { - call $ExecFailureAbort(); - return; } - left_vec := SliceVec(v, 0, left); - right_vec := SliceVec(v, right, LenVec(v)); - mid_vec := ReverseVec(SliceVec(v, left, right)); - m' := $UpdateMutation(m, ConcatVec(left_vec, ConcatVec(mid_vec, right_vec))); } - -procedure {:inline 1} $1_vector_rotate'bv64'(m: $Mutation (Vec (bv64)), rot: int) returns (n: int, m': $Mutation (Vec (bv64))) { - var v: Vec (bv64); - var len: int; - var left_vec: Vec (bv64); - var right_vec: Vec (bv64); - v := $Dereference(m); - if (!(rot >= 0 && rot <= LenVec(v))) { - call $ExecFailureAbort(); - return; - } - left_vec := SliceVec(v, 0, rot); - right_vec := SliceVec(v, rot, LenVec(v)); - m' := $UpdateMutation(m, ConcatVec(right_vec, left_vec)); - n := LenVec(v) - rot; +function {:inline} $1_simple_map_spec_len'address_u64'(t: (Table int (int))): int { + LenTable(t) } - -procedure {:inline 1} $1_vector_rotate_slice'bv64'(m: $Mutation (Vec (bv64)), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec (bv64))) { - var left_vec: Vec (bv64); - var mid_vec: Vec (bv64); - var right_vec: Vec (bv64); - var mid_left_vec: Vec (bv64); - var mid_right_vec: Vec (bv64); - var v: Vec (bv64); - v := $Dereference(m); - if (!(left <= rot && rot <= right)) { - call $ExecFailureAbort(); - return; - } - if (!(right >= 0 && right <= LenVec(v))) { - call $ExecFailureAbort(); - return; - } - v := $Dereference(m); - left_vec := SliceVec(v, 0, left); - right_vec := SliceVec(v, right, LenVec(v)); - mid_left_vec := SliceVec(v, left, rot); - mid_right_vec := SliceVec(v, rot, right); - mid_vec := ConcatVec(mid_right_vec, mid_left_vec); - m' := $UpdateMutation(m, ConcatVec(left_vec, ConcatVec(mid_vec, right_vec))); - n := left + (right - rot); +function {:inline} $1_simple_map_spec_contains_key'address_u64'(t: (Table int (int)), k: int): bool { + ContainsTable(t, $EncodeKey'address'(k)) } - -procedure {:inline 1} $1_vector_insert'bv64'(m: $Mutation (Vec (bv64)), i: int, e: bv64) returns (m': $Mutation (Vec (bv64))) { - var left_vec: Vec (bv64); - var right_vec: Vec (bv64); - var v: Vec (bv64); - v := $Dereference(m); - if (!(i >= 0 && i <= LenVec(v))) { - call $ExecFailureAbort(); - return; - } - if (i == LenVec(v)) { - m' := $UpdateMutation(m, ExtendVec(v, e)); - } else { - left_vec := ExtendVec(SliceVec(v, 0, i), e); - right_vec := SliceVec(v, i, LenVec(v)); - m' := $UpdateMutation(m, ConcatVec(left_vec, right_vec)); - } +function {:inline} $1_simple_map_spec_set'address_u64'(t: Table int (int), k: int, v: int): Table int (int) { + (var enc_k := $EncodeKey'address'(k); + if (ContainsTable(t, enc_k)) then + UpdateTable(t, enc_k, v) + else + AddTable(t, enc_k, v)) } - -procedure {:inline 1} $1_vector_length'bv64'(v: Vec (bv64)) returns (l: int) { - l := LenVec(v); +function {:inline} $1_simple_map_spec_remove'address_u64'(t: Table int (int), k: int): Table int (int) { + RemoveTable(t, $EncodeKey'address'(k)) } - -function {:inline} $1_vector_$length'bv64'(v: Vec (bv64)): int { - LenVec(v) +function {:inline} $1_simple_map_spec_get'address_u64'(t: Table int (int), k: int): int { + GetTable(t, $EncodeKey'address'(k)) } -procedure {:inline 1} $1_vector_borrow'bv64'(v: Vec (bv64), i: int) returns (dst: bv64) { - if (!InRangeVec(v, i)) { - call $ExecFailureAbort(); - return; - } - dst := ReadVec(v, i); -} -function {:inline} $1_vector_$borrow'bv64'(v: Vec (bv64), i: int): bv64 { - ReadVec(v, i) -} -procedure {:inline 1} $1_vector_borrow_mut'bv64'(m: $Mutation (Vec (bv64)), index: int) -returns (dst: $Mutation (bv64), m': $Mutation (Vec (bv64))) -{ - var v: Vec (bv64); - v := $Dereference(m); - if (!InRangeVec(v, index)) { - call $ExecFailureAbort(); - return; - } - dst := $Mutation(l#$Mutation(m), ExtendVec(p#$Mutation(m), index), ReadVec(v, index)); - m' := m; -} +// ---------------------------------------------------------------------------------- +// Native Table implementation for type `(address,address)` -function {:inline} $1_vector_$borrow_mut'bv64'(v: Vec (bv64), i: int): bv64 { - ReadVec(v, i) +function $IsEqual'$1_simple_map_SimpleMap'address_address''(t1: Table int (int), t2: Table int (int)): bool { + LenTable(t1) == LenTable(t2) && + (forall k: int :: ContainsTable(t1, k) <==> ContainsTable(t2, k)) && + (forall k: int :: ContainsTable(t1, k) ==> GetTable(t1, k) == GetTable(t2, k)) && + (forall k: int :: ContainsTable(t2, k) ==> GetTable(t1, k) == GetTable(t2, k)) } -procedure {:inline 1} $1_vector_destroy_empty'bv64'(v: Vec (bv64)) { - if (!IsEmptyVec(v)) { - call $ExecFailureAbort(); - } +// Not inlined. +function $IsValid'$1_simple_map_SimpleMap'address_address''(t: Table int (int)): bool { + $IsValid'u64'(LenTable(t)) && + (forall i: int:: ContainsTable(t, i) ==> $IsValid'address'(GetTable(t, i))) } - -procedure {:inline 1} $1_vector_swap'bv64'(m: $Mutation (Vec (bv64)), i: int, j: int) returns (m': $Mutation (Vec (bv64))) -{ - var v: Vec (bv64); - v := $Dereference(m); - if (!InRangeVec(v, i) || !InRangeVec(v, j)) { - call $ExecFailureAbort(); - return; +procedure {:inline 2} $1_simple_map_create'address_address'() returns (v: Table int (int)) { + v := EmptyTable(); +} +procedure {:inline 2} $1_simple_map_destroy_empty'address_address'(t: Table int (int)) { + if (LenTable(t) != 0) { + call $Abort($StdError(1/*INVALID_STATE*/, 102/*ENOT_EMPTY*/)); } - m' := $UpdateMutation(m, SwapVec(v, i, j)); } - -function {:inline} $1_vector_$swap'bv64'(v: Vec (bv64), i: int, j: int): Vec (bv64) { - SwapVec(v, i, j) +procedure {:inline 2} $1_simple_map_length'address_address'(t: (Table int (int))) returns (l: int) { + l := LenTable(t); } - -procedure {:inline 1} $1_vector_remove'bv64'(m: $Mutation (Vec (bv64)), i: int) returns (e: bv64, m': $Mutation (Vec (bv64))) -{ - var v: Vec (bv64); - - v := $Dereference(m); - - if (!InRangeVec(v, i)) { - call $ExecFailureAbort(); - return; - } - e := ReadVec(v, i); - m' := $UpdateMutation(m, RemoveAtVec(v, i)); +procedure {:inline 2} $1_simple_map_contains_key'address_address'(t: (Table int (int)), k: int) returns (r: bool) { + r := ContainsTable(t, $EncodeKey'address'(k)); } - -procedure {:inline 1} $1_vector_swap_remove'bv64'(m: $Mutation (Vec (bv64)), i: int) returns (e: bv64, m': $Mutation (Vec (bv64))) -{ - var len: int; - var v: Vec (bv64); - - v := $Dereference(m); - len := LenVec(v); - if (!InRangeVec(v, i)) { - call $ExecFailureAbort(); - return; +procedure {:inline 2} $1_simple_map_add'address_address'(m: $Mutation (Table int (int)), k: int, v: int) returns (m': $Mutation(Table int (int))) { + var enc_k: int; + var t: Table int (int); + enc_k := $EncodeKey'address'(k); + t := $Dereference(m); + if (ContainsTable(t, enc_k)) { + call $Abort($StdError(7/*INVALID_ARGUMENTS*/, 100/*EALREADY_EXISTS*/)); + } else { + m' := $UpdateMutation(m, AddTable(t, enc_k, v)); } - e := ReadVec(v, i); - m' := $UpdateMutation(m, RemoveVec(SwapVec(v, i, len-1))); } - -procedure {:inline 1} $1_vector_contains'bv64'(v: Vec (bv64), e: bv64) returns (res: bool) { - res := $ContainsVec'bv64'(v, e); -} - -procedure {:inline 1} -$1_vector_index_of'bv64'(v: Vec (bv64), e: bv64) returns (res1: bool, res2: int) { - res2 := $IndexOfVec'bv64'(v, e); - if (res2 >= 0) { - res1 := true; +procedure {:inline 2} $1_simple_map_remove'address_address'(m: $Mutation (Table int (int)), k: int) +returns (k': int, v: int, m': $Mutation(Table int (int))) { + var enc_k: int; + var t: Table int (int); + enc_k := $EncodeKey'address'(k); + t := $Dereference(m); + if (!ContainsTable(t, enc_k)) { + call $Abort($StdError(7/*INVALID_ARGUMENTS*/, 101/*ENOT_FOUND*/)); } else { - res1 := false; - res2 := 0; + k' := k; + v := GetTable(t, enc_k); + m' := $UpdateMutation(m, RemoveTable(t, enc_k)); } } - - -// ---------------------------------------------------------------------------------- -// Native Vector implementation for element type `bv8` - -// Not inlined. It appears faster this way. -function $IsEqual'vec'bv8''(v1: Vec (bv8), v2: Vec (bv8)): bool { - LenVec(v1) == LenVec(v2) && - (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'bv8'(ReadVec(v1, i), ReadVec(v2, i))) +procedure {:inline 2} $1_simple_map_borrow'address_address'(t: Table int (int), k: int) returns (v: int) { + var enc_k: int; + enc_k := $EncodeKey'address'(k); + if (!ContainsTable(t, enc_k)) { + call $Abort($StdError(7/*INVALID_ARGUMENTS*/, 101/*ENOT_FOUND*/)); + } else { + v := GetTable(t, $EncodeKey'address'(k)); + } } - -// Not inlined. -function $IsPrefix'vec'bv8''(v: Vec (bv8), prefix: Vec (bv8)): bool { - LenVec(v) >= LenVec(prefix) && - (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'bv8'(ReadVec(v, i), ReadVec(prefix, i))) +procedure {:inline 2} $1_simple_map_borrow_mut'address_address'(m: $Mutation (Table int (int)), k: int) +returns (dst: $Mutation (int), m': $Mutation (Table int (int))) { + var enc_k: int; + var t: Table int (int); + enc_k := $EncodeKey'address'(k); + t := $Dereference(m); + if (!ContainsTable(t, enc_k)) { + call $Abort($StdError(7/*INVALID_ARGUMENTS*/, 101/*ENOT_FOUND*/)); + } else { + dst := $Mutation(l#$Mutation(m), ExtendVec(p#$Mutation(m), enc_k), GetTable(t, enc_k)); + m' := m; + } } - -// Not inlined. -function $IsSuffix'vec'bv8''(v: Vec (bv8), suffix: Vec (bv8)): bool { - LenVec(v) >= LenVec(suffix) && - (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'bv8'(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) +function {:inline} $1_simple_map_spec_len'address_address'(t: (Table int (int))): int { + LenTable(t) } - -// Not inlined. -function $IsValid'vec'bv8''(v: Vec (bv8)): bool { - $IsValid'u64'(LenVec(v)) && - (forall i: int:: InRangeVec(v, i) ==> $IsValid'bv8'(ReadVec(v, i))) +function {:inline} $1_simple_map_spec_contains_key'address_address'(t: (Table int (int)), k: int): bool { + ContainsTable(t, $EncodeKey'address'(k)) } - - -function {:inline} $ContainsVec'bv8'(v: Vec (bv8), e: bv8): bool { - (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'bv8'(ReadVec(v, i), e)) +function {:inline} $1_simple_map_spec_set'address_address'(t: Table int (int), k: int, v: int): Table int (int) { + (var enc_k := $EncodeKey'address'(k); + if (ContainsTable(t, enc_k)) then + UpdateTable(t, enc_k, v) + else + AddTable(t, enc_k, v)) } - -function $IndexOfVec'bv8'(v: Vec (bv8), e: bv8): int; -axiom (forall v: Vec (bv8), e: bv8:: {$IndexOfVec'bv8'(v, e)} - (var i := $IndexOfVec'bv8'(v, e); - if (!$ContainsVec'bv8'(v, e)) then i == -1 - else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'bv8'(ReadVec(v, i), e) && - (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'bv8'(ReadVec(v, j), e)))); - - -function {:inline} $RangeVec'bv8'(v: Vec (bv8)): $Range { - $Range(0, LenVec(v)) +function {:inline} $1_simple_map_spec_remove'address_address'(t: Table int (int), k: int): Table int (int) { + RemoveTable(t, $EncodeKey'address'(k)) } - - -function {:inline} $EmptyVec'bv8'(): Vec (bv8) { - EmptyVec() +function {:inline} $1_simple_map_spec_get'address_address'(t: Table int (int), k: int): int { + GetTable(t, $EncodeKey'address'(k)) } -procedure {:inline 1} $1_vector_empty'bv8'() returns (v: Vec (bv8)) { - v := EmptyVec(); -} -function {:inline} $1_vector_$empty'bv8'(): Vec (bv8) { - EmptyVec() -} -procedure {:inline 1} $1_vector_is_empty'bv8'(v: Vec (bv8)) returns (b: bool) { - b := IsEmptyVec(v); -} +// ---------------------------------------------------------------------------------- +// Native Table implementation for type `(address,$1_staking_contract_StakingContract)` -procedure {:inline 1} $1_vector_push_back'bv8'(m: $Mutation (Vec (bv8)), val: bv8) returns (m': $Mutation (Vec (bv8))) { - m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); +function $IsEqual'$1_simple_map_SimpleMap'address_$1_staking_contract_StakingContract''(t1: Table int ($1_staking_contract_StakingContract), t2: Table int ($1_staking_contract_StakingContract)): bool { + LenTable(t1) == LenTable(t2) && + (forall k: int :: ContainsTable(t1, k) <==> ContainsTable(t2, k)) && + (forall k: int :: ContainsTable(t1, k) ==> GetTable(t1, k) == GetTable(t2, k)) && + (forall k: int :: ContainsTable(t2, k) ==> GetTable(t1, k) == GetTable(t2, k)) } -function {:inline} $1_vector_$push_back'bv8'(v: Vec (bv8), val: bv8): Vec (bv8) { - ExtendVec(v, val) +// Not inlined. +function $IsValid'$1_simple_map_SimpleMap'address_$1_staking_contract_StakingContract''(t: Table int ($1_staking_contract_StakingContract)): bool { + $IsValid'u64'(LenTable(t)) && + (forall i: int:: ContainsTable(t, i) ==> $IsValid'$1_staking_contract_StakingContract'(GetTable(t, i))) } - -procedure {:inline 1} $1_vector_pop_back'bv8'(m: $Mutation (Vec (bv8))) returns (e: bv8, m': $Mutation (Vec (bv8))) { - var v: Vec (bv8); - var len: int; - v := $Dereference(m); - len := LenVec(v); - if (len == 0) { - call $ExecFailureAbort(); - return; - } - e := ReadVec(v, len-1); - m' := $UpdateMutation(m, RemoveVec(v)); +procedure {:inline 2} $1_simple_map_create'address_$1_staking_contract_StakingContract'() returns (v: Table int ($1_staking_contract_StakingContract)) { + v := EmptyTable(); } - -procedure {:inline 1} $1_vector_append'bv8'(m: $Mutation (Vec (bv8)), other: Vec (bv8)) returns (m': $Mutation (Vec (bv8))) { - m' := $UpdateMutation(m, ConcatVec($Dereference(m), other)); +procedure {:inline 2} $1_simple_map_destroy_empty'address_$1_staking_contract_StakingContract'(t: Table int ($1_staking_contract_StakingContract)) { + if (LenTable(t) != 0) { + call $Abort($StdError(1/*INVALID_STATE*/, 102/*ENOT_EMPTY*/)); + } } - -procedure {:inline 1} $1_vector_reverse'bv8'(m: $Mutation (Vec (bv8))) returns (m': $Mutation (Vec (bv8))) { - m' := $UpdateMutation(m, ReverseVec($Dereference(m))); +procedure {:inline 2} $1_simple_map_length'address_$1_staking_contract_StakingContract'(t: (Table int ($1_staking_contract_StakingContract))) returns (l: int) { + l := LenTable(t); } - -procedure {:inline 1} $1_vector_reverse_append'bv8'(m: $Mutation (Vec (bv8)), other: Vec (bv8)) returns (m': $Mutation (Vec (bv8))) { - m' := $UpdateMutation(m, ConcatVec($Dereference(m), ReverseVec(other))); +procedure {:inline 2} $1_simple_map_contains_key'address_$1_staking_contract_StakingContract'(t: (Table int ($1_staking_contract_StakingContract)), k: int) returns (r: bool) { + r := ContainsTable(t, $EncodeKey'address'(k)); } - -procedure {:inline 1} $1_vector_trim_reverse'bv8'(m: $Mutation (Vec (bv8)), new_len: int) returns (v: (Vec (bv8)), m': $Mutation (Vec (bv8))) { - var len: int; - v := $Dereference(m); - if (LenVec(v) < new_len) { - call $ExecFailureAbort(); - return; +procedure {:inline 2} $1_simple_map_add'address_$1_staking_contract_StakingContract'(m: $Mutation (Table int ($1_staking_contract_StakingContract)), k: int, v: $1_staking_contract_StakingContract) returns (m': $Mutation(Table int ($1_staking_contract_StakingContract))) { + var enc_k: int; + var t: Table int ($1_staking_contract_StakingContract); + enc_k := $EncodeKey'address'(k); + t := $Dereference(m); + if (ContainsTable(t, enc_k)) { + call $Abort($StdError(7/*INVALID_ARGUMENTS*/, 100/*EALREADY_EXISTS*/)); + } else { + m' := $UpdateMutation(m, AddTable(t, enc_k, v)); } - v := SliceVec(v, new_len, LenVec(v)); - v := ReverseVec(v); - m' := $UpdateMutation(m, SliceVec($Dereference(m), 0, new_len)); } - -procedure {:inline 1} $1_vector_trim'bv8'(m: $Mutation (Vec (bv8)), new_len: int) returns (v: (Vec (bv8)), m': $Mutation (Vec (bv8))) { - var len: int; - v := $Dereference(m); - if (LenVec(v) < new_len) { - call $ExecFailureAbort(); - return; +procedure {:inline 2} $1_simple_map_remove'address_$1_staking_contract_StakingContract'(m: $Mutation (Table int ($1_staking_contract_StakingContract)), k: int) +returns (k': int, v: $1_staking_contract_StakingContract, m': $Mutation(Table int ($1_staking_contract_StakingContract))) { + var enc_k: int; + var t: Table int ($1_staking_contract_StakingContract); + enc_k := $EncodeKey'address'(k); + t := $Dereference(m); + if (!ContainsTable(t, enc_k)) { + call $Abort($StdError(7/*INVALID_ARGUMENTS*/, 101/*ENOT_FOUND*/)); + } else { + k' := k; + v := GetTable(t, enc_k); + m' := $UpdateMutation(m, RemoveTable(t, enc_k)); } - v := SliceVec(v, new_len, LenVec(v)); - m' := $UpdateMutation(m, SliceVec($Dereference(m), 0, new_len)); } - -procedure {:inline 1} $1_vector_reverse_slice'bv8'(m: $Mutation (Vec (bv8)), left: int, right: int) returns (m': $Mutation (Vec (bv8))) { - var left_vec: Vec (bv8); - var mid_vec: Vec (bv8); - var right_vec: Vec (bv8); - var v: Vec (bv8); - if (left > right) { - call $ExecFailureAbort(); - return; +procedure {:inline 2} $1_simple_map_borrow'address_$1_staking_contract_StakingContract'(t: Table int ($1_staking_contract_StakingContract), k: int) returns (v: $1_staking_contract_StakingContract) { + var enc_k: int; + enc_k := $EncodeKey'address'(k); + if (!ContainsTable(t, enc_k)) { + call $Abort($StdError(7/*INVALID_ARGUMENTS*/, 101/*ENOT_FOUND*/)); + } else { + v := GetTable(t, $EncodeKey'address'(k)); } - if (left == right) { +} +procedure {:inline 2} $1_simple_map_borrow_mut'address_$1_staking_contract_StakingContract'(m: $Mutation (Table int ($1_staking_contract_StakingContract)), k: int) +returns (dst: $Mutation ($1_staking_contract_StakingContract), m': $Mutation (Table int ($1_staking_contract_StakingContract))) { + var enc_k: int; + var t: Table int ($1_staking_contract_StakingContract); + enc_k := $EncodeKey'address'(k); + t := $Dereference(m); + if (!ContainsTable(t, enc_k)) { + call $Abort($StdError(7/*INVALID_ARGUMENTS*/, 101/*ENOT_FOUND*/)); + } else { + dst := $Mutation(l#$Mutation(m), ExtendVec(p#$Mutation(m), enc_k), GetTable(t, enc_k)); m' := m; - return; - } - v := $Dereference(m); - if (!(right >= 0 && right <= LenVec(v))) { - call $ExecFailureAbort(); - return; } - left_vec := SliceVec(v, 0, left); - right_vec := SliceVec(v, right, LenVec(v)); - mid_vec := ReverseVec(SliceVec(v, left, right)); - m' := $UpdateMutation(m, ConcatVec(left_vec, ConcatVec(mid_vec, right_vec))); +} +function {:inline} $1_simple_map_spec_len'address_$1_staking_contract_StakingContract'(t: (Table int ($1_staking_contract_StakingContract))): int { + LenTable(t) +} +function {:inline} $1_simple_map_spec_contains_key'address_$1_staking_contract_StakingContract'(t: (Table int ($1_staking_contract_StakingContract)), k: int): bool { + ContainsTable(t, $EncodeKey'address'(k)) +} +function {:inline} $1_simple_map_spec_set'address_$1_staking_contract_StakingContract'(t: Table int ($1_staking_contract_StakingContract), k: int, v: $1_staking_contract_StakingContract): Table int ($1_staking_contract_StakingContract) { + (var enc_k := $EncodeKey'address'(k); + if (ContainsTable(t, enc_k)) then + UpdateTable(t, enc_k, v) + else + AddTable(t, enc_k, v)) +} +function {:inline} $1_simple_map_spec_remove'address_$1_staking_contract_StakingContract'(t: Table int ($1_staking_contract_StakingContract), k: int): Table int ($1_staking_contract_StakingContract) { + RemoveTable(t, $EncodeKey'address'(k)) +} +function {:inline} $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'(t: Table int ($1_staking_contract_StakingContract), k: int): $1_staking_contract_StakingContract { + GetTable(t, $EncodeKey'address'(k)) } -procedure {:inline 1} $1_vector_rotate'bv8'(m: $Mutation (Vec (bv8)), rot: int) returns (n: int, m': $Mutation (Vec (bv8))) { - var v: Vec (bv8); - var len: int; - var left_vec: Vec (bv8); - var right_vec: Vec (bv8); - v := $Dereference(m); - if (!(rot >= 0 && rot <= LenVec(v))) { - call $ExecFailureAbort(); - return; - } - left_vec := SliceVec(v, 0, rot); - right_vec := SliceVec(v, rot, LenVec(v)); - m' := $UpdateMutation(m, ConcatVec(right_vec, left_vec)); - n := LenVec(v) - rot; -} - -procedure {:inline 1} $1_vector_rotate_slice'bv8'(m: $Mutation (Vec (bv8)), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec (bv8))) { - var left_vec: Vec (bv8); - var mid_vec: Vec (bv8); - var right_vec: Vec (bv8); - var mid_left_vec: Vec (bv8); - var mid_right_vec: Vec (bv8); - var v: Vec (bv8); - v := $Dereference(m); - if (!(left <= rot && rot <= right)) { - call $ExecFailureAbort(); - return; - } - if (!(right >= 0 && right <= LenVec(v))) { - call $ExecFailureAbort(); - return; - } - v := $Dereference(m); - left_vec := SliceVec(v, 0, left); - right_vec := SliceVec(v, right, LenVec(v)); - mid_left_vec := SliceVec(v, left, rot); - mid_right_vec := SliceVec(v, rot, right); - mid_vec := ConcatVec(mid_right_vec, mid_left_vec); - m' := $UpdateMutation(m, ConcatVec(left_vec, ConcatVec(mid_vec, right_vec))); - n := left + (right - rot); -} - -procedure {:inline 1} $1_vector_insert'bv8'(m: $Mutation (Vec (bv8)), i: int, e: bv8) returns (m': $Mutation (Vec (bv8))) { - var left_vec: Vec (bv8); - var right_vec: Vec (bv8); - var v: Vec (bv8); - v := $Dereference(m); - if (!(i >= 0 && i <= LenVec(v))) { - call $ExecFailureAbort(); - return; - } - if (i == LenVec(v)) { - m' := $UpdateMutation(m, ExtendVec(v, e)); - } else { - left_vec := ExtendVec(SliceVec(v, 0, i), e); - right_vec := SliceVec(v, i, LenVec(v)); - m' := $UpdateMutation(m, ConcatVec(left_vec, right_vec)); - } -} - -procedure {:inline 1} $1_vector_length'bv8'(v: Vec (bv8)) returns (l: int) { - l := LenVec(v); -} - -function {:inline} $1_vector_$length'bv8'(v: Vec (bv8)): int { - LenVec(v) -} - -procedure {:inline 1} $1_vector_borrow'bv8'(v: Vec (bv8), i: int) returns (dst: bv8) { - if (!InRangeVec(v, i)) { - call $ExecFailureAbort(); - return; - } - dst := ReadVec(v, i); -} - -function {:inline} $1_vector_$borrow'bv8'(v: Vec (bv8), i: int): bv8 { - ReadVec(v, i) -} - -procedure {:inline 1} $1_vector_borrow_mut'bv8'(m: $Mutation (Vec (bv8)), index: int) -returns (dst: $Mutation (bv8), m': $Mutation (Vec (bv8))) -{ - var v: Vec (bv8); - v := $Dereference(m); - if (!InRangeVec(v, index)) { - call $ExecFailureAbort(); - return; - } - dst := $Mutation(l#$Mutation(m), ExtendVec(p#$Mutation(m), index), ReadVec(v, index)); - m' := m; -} - -function {:inline} $1_vector_$borrow_mut'bv8'(v: Vec (bv8), i: int): bv8 { - ReadVec(v, i) -} - -procedure {:inline 1} $1_vector_destroy_empty'bv8'(v: Vec (bv8)) { - if (!IsEmptyVec(v)) { - call $ExecFailureAbort(); - } -} - -procedure {:inline 1} $1_vector_swap'bv8'(m: $Mutation (Vec (bv8)), i: int, j: int) returns (m': $Mutation (Vec (bv8))) -{ - var v: Vec (bv8); - v := $Dereference(m); - if (!InRangeVec(v, i) || !InRangeVec(v, j)) { - call $ExecFailureAbort(); - return; - } - m' := $UpdateMutation(m, SwapVec(v, i, j)); -} - -function {:inline} $1_vector_$swap'bv8'(v: Vec (bv8), i: int, j: int): Vec (bv8) { - SwapVec(v, i, j) -} - -procedure {:inline 1} $1_vector_remove'bv8'(m: $Mutation (Vec (bv8)), i: int) returns (e: bv8, m': $Mutation (Vec (bv8))) -{ - var v: Vec (bv8); - - v := $Dereference(m); - - if (!InRangeVec(v, i)) { - call $ExecFailureAbort(); - return; - } - e := ReadVec(v, i); - m' := $UpdateMutation(m, RemoveAtVec(v, i)); -} - -procedure {:inline 1} $1_vector_swap_remove'bv8'(m: $Mutation (Vec (bv8)), i: int) returns (e: bv8, m': $Mutation (Vec (bv8))) -{ - var len: int; - var v: Vec (bv8); - - v := $Dereference(m); - len := LenVec(v); - if (!InRangeVec(v, i)) { - call $ExecFailureAbort(); - return; - } - e := ReadVec(v, i); - m' := $UpdateMutation(m, RemoveVec(SwapVec(v, i, len-1))); -} - -procedure {:inline 1} $1_vector_contains'bv8'(v: Vec (bv8), e: bv8) returns (res: bool) { - res := $ContainsVec'bv8'(v, e); -} - -procedure {:inline 1} -$1_vector_index_of'bv8'(v: Vec (bv8), e: bv8) returns (res1: bool, res2: int) { - res2 := $IndexOfVec'bv8'(v, e); - if (res2 >= 0) { - res1 := true; - } else { - res1 := false; - res2 := 0; - } -} - - -// ================================================================================== -// Native Table - -// ---------------------------------------------------------------------------------- -// Native Table key encoding for type `address` - -function $EncodeKey'address'(k: int): int; -axiom ( - forall k1, k2: int :: {$EncodeKey'address'(k1), $EncodeKey'address'(k2)} - $IsEqual'address'(k1, k2) <==> $EncodeKey'address'(k1) == $EncodeKey'address'(k2) -); - - -// ---------------------------------------------------------------------------------- -// Native Table key encoding for type `$1_string_String` - -function $EncodeKey'$1_string_String'(k: $1_string_String): int; -axiom ( - forall k1, k2: $1_string_String :: {$EncodeKey'$1_string_String'(k1), $EncodeKey'$1_string_String'(k2)} - $IsEqual'$1_string_String'(k1, k2) <==> $EncodeKey'$1_string_String'(k1) == $EncodeKey'$1_string_String'(k2) -); - - -// ---------------------------------------------------------------------------------- -// Native Table implementation for type `(address,u64)` - -function $IsEqual'$1_simple_map_SimpleMap'address_u64''(t1: Table int (int), t2: Table int (int)): bool { - LenTable(t1) == LenTable(t2) && - (forall k: int :: ContainsTable(t1, k) <==> ContainsTable(t2, k)) && - (forall k: int :: ContainsTable(t1, k) ==> GetTable(t1, k) == GetTable(t2, k)) && - (forall k: int :: ContainsTable(t2, k) ==> GetTable(t1, k) == GetTable(t2, k)) + + +// ---------------------------------------------------------------------------------- +// Native Table implementation for type `($1_string_String,address)` + +function $IsEqual'$1_simple_map_SimpleMap'$1_string_String_address''(t1: Table int (int), t2: Table int (int)): bool { + LenTable(t1) == LenTable(t2) && + (forall k: int :: ContainsTable(t1, k) <==> ContainsTable(t2, k)) && + (forall k: int :: ContainsTable(t1, k) ==> GetTable(t1, k) == GetTable(t2, k)) && + (forall k: int :: ContainsTable(t2, k) ==> GetTable(t1, k) == GetTable(t2, k)) } // Not inlined. -function $IsValid'$1_simple_map_SimpleMap'address_u64''(t: Table int (int)): bool { +function $IsValid'$1_simple_map_SimpleMap'$1_string_String_address''(t: Table int (int)): bool { $IsValid'u64'(LenTable(t)) && - (forall i: int:: ContainsTable(t, i) ==> $IsValid'u64'(GetTable(t, i))) + (forall i: int:: ContainsTable(t, i) ==> $IsValid'address'(GetTable(t, i))) } -procedure {:inline 2} $1_simple_map_create'address_u64'() returns (v: Table int (int)) { +procedure {:inline 2} $1_simple_map_create'$1_string_String_address'() returns (v: Table int (int)) { v := EmptyTable(); } -procedure {:inline 2} $1_simple_map_destroy_empty'address_u64'(t: Table int (int)) { +procedure {:inline 2} $1_simple_map_destroy_empty'$1_string_String_address'(t: Table int (int)) { if (LenTable(t) != 0) { call $Abort($StdError(1/*INVALID_STATE*/, 102/*ENOT_EMPTY*/)); } } -procedure {:inline 2} $1_simple_map_length'address_u64'(t: (Table int (int))) returns (l: int) { +procedure {:inline 2} $1_simple_map_length'$1_string_String_address'(t: (Table int (int))) returns (l: int) { l := LenTable(t); } -procedure {:inline 2} $1_simple_map_contains_key'address_u64'(t: (Table int (int)), k: int) returns (r: bool) { - r := ContainsTable(t, $EncodeKey'address'(k)); +procedure {:inline 2} $1_simple_map_contains_key'$1_string_String_address'(t: (Table int (int)), k: $1_string_String) returns (r: bool) { + r := ContainsTable(t, $EncodeKey'$1_string_String'(k)); } -procedure {:inline 2} $1_simple_map_add'address_u64'(m: $Mutation (Table int (int)), k: int, v: int) returns (m': $Mutation(Table int (int))) { +procedure {:inline 2} $1_simple_map_add'$1_string_String_address'(m: $Mutation (Table int (int)), k: $1_string_String, v: int) returns (m': $Mutation(Table int (int))) { var enc_k: int; var t: Table int (int); - enc_k := $EncodeKey'address'(k); + enc_k := $EncodeKey'$1_string_String'(k); t := $Dereference(m); if (ContainsTable(t, enc_k)) { call $Abort($StdError(7/*INVALID_ARGUMENTS*/, 100/*EALREADY_EXISTS*/)); @@ -6780,11 +6466,11 @@ procedure {:inline 2} $1_simple_map_add'address_u64'(m: $Mutation (Table int (in m' := $UpdateMutation(m, AddTable(t, enc_k, v)); } } -procedure {:inline 2} $1_simple_map_remove'address_u64'(m: $Mutation (Table int (int)), k: int) -returns (k': int, v: int, m': $Mutation(Table int (int))) { +procedure {:inline 2} $1_simple_map_remove'$1_string_String_address'(m: $Mutation (Table int (int)), k: $1_string_String) +returns (k': $1_string_String, v: int, m': $Mutation(Table int (int))) { var enc_k: int; var t: Table int (int); - enc_k := $EncodeKey'address'(k); + enc_k := $EncodeKey'$1_string_String'(k); t := $Dereference(m); if (!ContainsTable(t, enc_k)) { call $Abort($StdError(7/*INVALID_ARGUMENTS*/, 101/*ENOT_FOUND*/)); @@ -6794,20 +6480,20 @@ returns (k': int, v: int, m': $Mutation(Table int (int))) { m' := $UpdateMutation(m, RemoveTable(t, enc_k)); } } -procedure {:inline 2} $1_simple_map_borrow'address_u64'(t: Table int (int), k: int) returns (v: int) { +procedure {:inline 2} $1_simple_map_borrow'$1_string_String_address'(t: Table int (int), k: $1_string_String) returns (v: int) { var enc_k: int; - enc_k := $EncodeKey'address'(k); + enc_k := $EncodeKey'$1_string_String'(k); if (!ContainsTable(t, enc_k)) { call $Abort($StdError(7/*INVALID_ARGUMENTS*/, 101/*ENOT_FOUND*/)); } else { - v := GetTable(t, $EncodeKey'address'(k)); + v := GetTable(t, $EncodeKey'$1_string_String'(k)); } } -procedure {:inline 2} $1_simple_map_borrow_mut'address_u64'(m: $Mutation (Table int (int)), k: int) +procedure {:inline 2} $1_simple_map_borrow_mut'$1_string_String_address'(m: $Mutation (Table int (int)), k: $1_string_String) returns (dst: $Mutation (int), m': $Mutation (Table int (int))) { var enc_k: int; var t: Table int (int); - enc_k := $EncodeKey'address'(k); + enc_k := $EncodeKey'$1_string_String'(k); t := $Dereference(m); if (!ContainsTable(t, enc_k)) { call $Abort($StdError(7/*INVALID_ARGUMENTS*/, 101/*ENOT_FOUND*/)); @@ -6816,442 +6502,148 @@ returns (dst: $Mutation (int), m': $Mutation (Table int (int))) { m' := m; } } -function {:inline} $1_simple_map_spec_len'address_u64'(t: (Table int (int))): int { +function {:inline} $1_simple_map_spec_len'$1_string_String_address'(t: (Table int (int))): int { LenTable(t) } -function {:inline} $1_simple_map_spec_contains_key'address_u64'(t: (Table int (int)), k: int): bool { - ContainsTable(t, $EncodeKey'address'(k)) +function {:inline} $1_simple_map_spec_contains_key'$1_string_String_address'(t: (Table int (int)), k: $1_string_String): bool { + ContainsTable(t, $EncodeKey'$1_string_String'(k)) } -function {:inline} $1_simple_map_spec_set'address_u64'(t: Table int (int), k: int, v: int): Table int (int) { - (var enc_k := $EncodeKey'address'(k); +function {:inline} $1_simple_map_spec_set'$1_string_String_address'(t: Table int (int), k: $1_string_String, v: int): Table int (int) { + (var enc_k := $EncodeKey'$1_string_String'(k); if (ContainsTable(t, enc_k)) then UpdateTable(t, enc_k, v) else AddTable(t, enc_k, v)) } -function {:inline} $1_simple_map_spec_remove'address_u64'(t: Table int (int), k: int): Table int (int) { - RemoveTable(t, $EncodeKey'address'(k)) +function {:inline} $1_simple_map_spec_remove'$1_string_String_address'(t: Table int (int), k: $1_string_String): Table int (int) { + RemoveTable(t, $EncodeKey'$1_string_String'(k)) } -function {:inline} $1_simple_map_spec_get'address_u64'(t: Table int (int), k: int): int { - GetTable(t, $EncodeKey'address'(k)) +function {:inline} $1_simple_map_spec_get'$1_string_String_address'(t: Table int (int), k: $1_string_String): int { + GetTable(t, $EncodeKey'$1_string_String'(k)) } -// ---------------------------------------------------------------------------------- -// Native Table implementation for type `(address,address)` +// ================================================================================== +// Native Hash -function $IsEqual'$1_simple_map_SimpleMap'address_address''(t1: Table int (int), t2: Table int (int)): bool { - LenTable(t1) == LenTable(t2) && - (forall k: int :: ContainsTable(t1, k) <==> ContainsTable(t2, k)) && - (forall k: int :: ContainsTable(t1, k) ==> GetTable(t1, k) == GetTable(t2, k)) && - (forall k: int :: ContainsTable(t2, k) ==> GetTable(t1, k) == GetTable(t2, k)) -} +// Hash is modeled as an otherwise uninterpreted injection. +// In truth, it is not an injection since the domain has greater cardinality +// (arbitrary length vectors) than the co-domain (vectors of length 32). But it is +// common to assume in code there are no hash collisions in practice. Fortunately, +// Boogie is not smart enough to recognized that there is an inconsistency. +// FIXME: If we were using a reliable extensional theory of arrays, and if we could use == +// instead of $IsEqual, we might be able to avoid so many quantified formulas by +// using a sha2_inverse function in the ensures conditions of Hash_sha2_256 to +// assert that sha2/3 are injections without using global quantified axioms. -// Not inlined. -function $IsValid'$1_simple_map_SimpleMap'address_address''(t: Table int (int)): bool { - $IsValid'u64'(LenTable(t)) && - (forall i: int:: ContainsTable(t, i) ==> $IsValid'address'(GetTable(t, i))) -} -procedure {:inline 2} $1_simple_map_create'address_address'() returns (v: Table int (int)) { - v := EmptyTable(); -} -procedure {:inline 2} $1_simple_map_destroy_empty'address_address'(t: Table int (int)) { - if (LenTable(t) != 0) { - call $Abort($StdError(1/*INVALID_STATE*/, 102/*ENOT_EMPTY*/)); - } -} -procedure {:inline 2} $1_simple_map_length'address_address'(t: (Table int (int))) returns (l: int) { - l := LenTable(t); -} -procedure {:inline 2} $1_simple_map_contains_key'address_address'(t: (Table int (int)), k: int) returns (r: bool) { - r := ContainsTable(t, $EncodeKey'address'(k)); -} -procedure {:inline 2} $1_simple_map_add'address_address'(m: $Mutation (Table int (int)), k: int, v: int) returns (m': $Mutation(Table int (int))) { - var enc_k: int; - var t: Table int (int); - enc_k := $EncodeKey'address'(k); - t := $Dereference(m); - if (ContainsTable(t, enc_k)) { - call $Abort($StdError(7/*INVALID_ARGUMENTS*/, 100/*EALREADY_EXISTS*/)); - } else { - m' := $UpdateMutation(m, AddTable(t, enc_k, v)); - } -} -procedure {:inline 2} $1_simple_map_remove'address_address'(m: $Mutation (Table int (int)), k: int) -returns (k': int, v: int, m': $Mutation(Table int (int))) { - var enc_k: int; - var t: Table int (int); - enc_k := $EncodeKey'address'(k); - t := $Dereference(m); - if (!ContainsTable(t, enc_k)) { - call $Abort($StdError(7/*INVALID_ARGUMENTS*/, 101/*ENOT_FOUND*/)); - } else { - k' := k; - v := GetTable(t, enc_k); - m' := $UpdateMutation(m, RemoveTable(t, enc_k)); - } -} -procedure {:inline 2} $1_simple_map_borrow'address_address'(t: Table int (int), k: int) returns (v: int) { - var enc_k: int; - enc_k := $EncodeKey'address'(k); - if (!ContainsTable(t, enc_k)) { - call $Abort($StdError(7/*INVALID_ARGUMENTS*/, 101/*ENOT_FOUND*/)); - } else { - v := GetTable(t, $EncodeKey'address'(k)); - } -} -procedure {:inline 2} $1_simple_map_borrow_mut'address_address'(m: $Mutation (Table int (int)), k: int) -returns (dst: $Mutation (int), m': $Mutation (Table int (int))) { - var enc_k: int; - var t: Table int (int); - enc_k := $EncodeKey'address'(k); - t := $Dereference(m); - if (!ContainsTable(t, enc_k)) { - call $Abort($StdError(7/*INVALID_ARGUMENTS*/, 101/*ENOT_FOUND*/)); - } else { - dst := $Mutation(l#$Mutation(m), ExtendVec(p#$Mutation(m), enc_k), GetTable(t, enc_k)); - m' := m; - } -} -function {:inline} $1_simple_map_spec_len'address_address'(t: (Table int (int))): int { - LenTable(t) -} -function {:inline} $1_simple_map_spec_contains_key'address_address'(t: (Table int (int)), k: int): bool { - ContainsTable(t, $EncodeKey'address'(k)) -} -function {:inline} $1_simple_map_spec_set'address_address'(t: Table int (int), k: int, v: int): Table int (int) { - (var enc_k := $EncodeKey'address'(k); - if (ContainsTable(t, enc_k)) then - UpdateTable(t, enc_k, v) - else - AddTable(t, enc_k, v)) -} -function {:inline} $1_simple_map_spec_remove'address_address'(t: Table int (int), k: int): Table int (int) { - RemoveTable(t, $EncodeKey'address'(k)) -} -function {:inline} $1_simple_map_spec_get'address_address'(t: Table int (int), k: int): int { - GetTable(t, $EncodeKey'address'(k)) -} +function $1_hash_sha2(val: Vec int): Vec int; +// This says that Hash_sha2 is bijective. +axiom (forall v1,v2: Vec int :: {$1_hash_sha2(v1), $1_hash_sha2(v2)} + $IsEqual'vec'u8''(v1, v2) <==> $IsEqual'vec'u8''($1_hash_sha2(v1), $1_hash_sha2(v2))); -// ---------------------------------------------------------------------------------- -// Native Table implementation for type `(address,$1_staking_contract_StakingContract)` +procedure $1_hash_sha2_256(val: Vec int) returns (res: Vec int); +ensures res == $1_hash_sha2(val); // returns Hash_sha2 Value +ensures $IsValid'vec'u8''(res); // result is a legal vector of U8s. +ensures LenVec(res) == 32; // result is 32 bytes. -function $IsEqual'$1_simple_map_SimpleMap'address_$1_staking_contract_StakingContract''(t1: Table int ($1_staking_contract_StakingContract), t2: Table int ($1_staking_contract_StakingContract)): bool { - LenTable(t1) == LenTable(t2) && - (forall k: int :: ContainsTable(t1, k) <==> ContainsTable(t2, k)) && - (forall k: int :: ContainsTable(t1, k) ==> GetTable(t1, k) == GetTable(t2, k)) && - (forall k: int :: ContainsTable(t2, k) ==> GetTable(t1, k) == GetTable(t2, k)) +// Spec version of Move native function. +function {:inline} $1_hash_$sha2_256(val: Vec int): Vec int { + $1_hash_sha2(val) } -// Not inlined. -function $IsValid'$1_simple_map_SimpleMap'address_$1_staking_contract_StakingContract''(t: Table int ($1_staking_contract_StakingContract)): bool { - $IsValid'u64'(LenTable(t)) && - (forall i: int:: ContainsTable(t, i) ==> $IsValid'$1_staking_contract_StakingContract'(GetTable(t, i))) -} -procedure {:inline 2} $1_simple_map_create'address_$1_staking_contract_StakingContract'() returns (v: Table int ($1_staking_contract_StakingContract)) { - v := EmptyTable(); -} -procedure {:inline 2} $1_simple_map_destroy_empty'address_$1_staking_contract_StakingContract'(t: Table int ($1_staking_contract_StakingContract)) { - if (LenTable(t) != 0) { - call $Abort($StdError(1/*INVALID_STATE*/, 102/*ENOT_EMPTY*/)); - } +// similarly for Hash_sha3 +function $1_hash_sha3(val: Vec int): Vec int; + +axiom (forall v1,v2: Vec int :: {$1_hash_sha3(v1), $1_hash_sha3(v2)} + $IsEqual'vec'u8''(v1, v2) <==> $IsEqual'vec'u8''($1_hash_sha3(v1), $1_hash_sha3(v2))); + +procedure $1_hash_sha3_256(val: Vec int) returns (res: Vec int); +ensures res == $1_hash_sha3(val); // returns Hash_sha3 Value +ensures $IsValid'vec'u8''(res); // result is a legal vector of U8s. +ensures LenVec(res) == 32; // result is 32 bytes. + +// Spec version of Move native function. +function {:inline} $1_hash_$sha3_256(val: Vec int): Vec int { + $1_hash_sha3(val) } -procedure {:inline 2} $1_simple_map_length'address_$1_staking_contract_StakingContract'(t: (Table int ($1_staking_contract_StakingContract))) returns (l: int) { - l := LenTable(t); + +// ================================================================================== +// Native string + +// TODO: correct implementation of strings + +procedure {:inline 1} $1_string_internal_check_utf8(x: Vec int) returns (r: bool) { } -procedure {:inline 2} $1_simple_map_contains_key'address_$1_staking_contract_StakingContract'(t: (Table int ($1_staking_contract_StakingContract)), k: int) returns (r: bool) { - r := ContainsTable(t, $EncodeKey'address'(k)); + +procedure {:inline 1} $1_string_internal_sub_string(x: Vec int, i: int, j: int) returns (r: Vec int) { } -procedure {:inline 2} $1_simple_map_add'address_$1_staking_contract_StakingContract'(m: $Mutation (Table int ($1_staking_contract_StakingContract)), k: int, v: $1_staking_contract_StakingContract) returns (m': $Mutation(Table int ($1_staking_contract_StakingContract))) { - var enc_k: int; - var t: Table int ($1_staking_contract_StakingContract); - enc_k := $EncodeKey'address'(k); - t := $Dereference(m); - if (ContainsTable(t, enc_k)) { - call $Abort($StdError(7/*INVALID_ARGUMENTS*/, 100/*EALREADY_EXISTS*/)); - } else { - m' := $UpdateMutation(m, AddTable(t, enc_k, v)); - } + +procedure {:inline 1} $1_string_internal_index_of(x: Vec int, y: Vec int) returns (r: int) { } -procedure {:inline 2} $1_simple_map_remove'address_$1_staking_contract_StakingContract'(m: $Mutation (Table int ($1_staking_contract_StakingContract)), k: int) -returns (k': int, v: $1_staking_contract_StakingContract, m': $Mutation(Table int ($1_staking_contract_StakingContract))) { - var enc_k: int; - var t: Table int ($1_staking_contract_StakingContract); - enc_k := $EncodeKey'address'(k); - t := $Dereference(m); - if (!ContainsTable(t, enc_k)) { - call $Abort($StdError(7/*INVALID_ARGUMENTS*/, 101/*ENOT_FOUND*/)); - } else { - k' := k; - v := GetTable(t, enc_k); - m' := $UpdateMutation(m, RemoveTable(t, enc_k)); - } + +procedure {:inline 1} $1_string_internal_is_char_boundary(x: Vec int, i: int) returns (r: bool) { } -procedure {:inline 2} $1_simple_map_borrow'address_$1_staking_contract_StakingContract'(t: Table int ($1_staking_contract_StakingContract), k: int) returns (v: $1_staking_contract_StakingContract) { - var enc_k: int; - enc_k := $EncodeKey'address'(k); - if (!ContainsTable(t, enc_k)) { - call $Abort($StdError(7/*INVALID_ARGUMENTS*/, 101/*ENOT_FOUND*/)); - } else { - v := GetTable(t, $EncodeKey'address'(k)); - } + + + + +// ================================================================================== +// Native diem_account + +procedure {:inline 1} $1_DiemAccount_create_signer( + addr: int +) returns (signer: $signer) { + // A signer is currently identical to an address. + signer := $signer(addr); } -procedure {:inline 2} $1_simple_map_borrow_mut'address_$1_staking_contract_StakingContract'(m: $Mutation (Table int ($1_staking_contract_StakingContract)), k: int) -returns (dst: $Mutation ($1_staking_contract_StakingContract), m': $Mutation (Table int ($1_staking_contract_StakingContract))) { - var enc_k: int; - var t: Table int ($1_staking_contract_StakingContract); - enc_k := $EncodeKey'address'(k); - t := $Dereference(m); - if (!ContainsTable(t, enc_k)) { - call $Abort($StdError(7/*INVALID_ARGUMENTS*/, 101/*ENOT_FOUND*/)); - } else { - dst := $Mutation(l#$Mutation(m), ExtendVec(p#$Mutation(m), enc_k), GetTable(t, enc_k)); - m' := m; - } + +procedure {:inline 1} $1_DiemAccount_destroy_signer( + signer: $signer +) { + return; } -function {:inline} $1_simple_map_spec_len'address_$1_staking_contract_StakingContract'(t: (Table int ($1_staking_contract_StakingContract))): int { - LenTable(t) + +// ================================================================================== +// Native account + +procedure {:inline 1} $1_Account_create_signer( + addr: int +) returns (signer: $signer) { + // A signer is currently identical to an address. + signer := $signer(addr); } -function {:inline} $1_simple_map_spec_contains_key'address_$1_staking_contract_StakingContract'(t: (Table int ($1_staking_contract_StakingContract)), k: int): bool { - ContainsTable(t, $EncodeKey'address'(k)) + +// ================================================================================== +// Native Signer + +type {:datatype} $signer; +function {:constructor} $signer($addr: int): $signer; +function {:inline} $IsValid'signer'(s: $signer): bool { + $IsValid'address'($addr#$signer(s)) } -function {:inline} $1_simple_map_spec_set'address_$1_staking_contract_StakingContract'(t: Table int ($1_staking_contract_StakingContract), k: int, v: $1_staking_contract_StakingContract): Table int ($1_staking_contract_StakingContract) { - (var enc_k := $EncodeKey'address'(k); - if (ContainsTable(t, enc_k)) then - UpdateTable(t, enc_k, v) - else - AddTable(t, enc_k, v)) +function {:inline} $IsEqual'signer'(s1: $signer, s2: $signer): bool { + s1 == s2 } -function {:inline} $1_simple_map_spec_remove'address_$1_staking_contract_StakingContract'(t: Table int ($1_staking_contract_StakingContract), k: int): Table int ($1_staking_contract_StakingContract) { - RemoveTable(t, $EncodeKey'address'(k)) + +procedure {:inline 1} $1_signer_borrow_address(signer: $signer) returns (res: int) { + res := $addr#$signer(signer); } -function {:inline} $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'(t: Table int ($1_staking_contract_StakingContract), k: int): $1_staking_contract_StakingContract { - GetTable(t, $EncodeKey'address'(k)) + +function {:inline} $1_signer_$borrow_address(signer: $signer): int +{ + $addr#$signer(signer) } +function $1_signer_is_txn_signer(s: $signer): bool; +function $1_signer_is_txn_signer_addr(a: int): bool; -// ---------------------------------------------------------------------------------- -// Native Table implementation for type `($1_string_String,address)` -function $IsEqual'$1_simple_map_SimpleMap'$1_string_String_address''(t1: Table int (int), t2: Table int (int)): bool { - LenTable(t1) == LenTable(t2) && - (forall k: int :: ContainsTable(t1, k) <==> ContainsTable(t2, k)) && - (forall k: int :: ContainsTable(t1, k) ==> GetTable(t1, k) == GetTable(t2, k)) && - (forall k: int :: ContainsTable(t2, k) ==> GetTable(t1, k) == GetTable(t2, k)) -} - -// Not inlined. -function $IsValid'$1_simple_map_SimpleMap'$1_string_String_address''(t: Table int (int)): bool { - $IsValid'u64'(LenTable(t)) && - (forall i: int:: ContainsTable(t, i) ==> $IsValid'address'(GetTable(t, i))) -} -procedure {:inline 2} $1_simple_map_create'$1_string_String_address'() returns (v: Table int (int)) { - v := EmptyTable(); -} -procedure {:inline 2} $1_simple_map_destroy_empty'$1_string_String_address'(t: Table int (int)) { - if (LenTable(t) != 0) { - call $Abort($StdError(1/*INVALID_STATE*/, 102/*ENOT_EMPTY*/)); - } -} -procedure {:inline 2} $1_simple_map_length'$1_string_String_address'(t: (Table int (int))) returns (l: int) { - l := LenTable(t); -} -procedure {:inline 2} $1_simple_map_contains_key'$1_string_String_address'(t: (Table int (int)), k: $1_string_String) returns (r: bool) { - r := ContainsTable(t, $EncodeKey'$1_string_String'(k)); -} -procedure {:inline 2} $1_simple_map_add'$1_string_String_address'(m: $Mutation (Table int (int)), k: $1_string_String, v: int) returns (m': $Mutation(Table int (int))) { - var enc_k: int; - var t: Table int (int); - enc_k := $EncodeKey'$1_string_String'(k); - t := $Dereference(m); - if (ContainsTable(t, enc_k)) { - call $Abort($StdError(7/*INVALID_ARGUMENTS*/, 100/*EALREADY_EXISTS*/)); - } else { - m' := $UpdateMutation(m, AddTable(t, enc_k, v)); - } -} -procedure {:inline 2} $1_simple_map_remove'$1_string_String_address'(m: $Mutation (Table int (int)), k: $1_string_String) -returns (k': $1_string_String, v: int, m': $Mutation(Table int (int))) { - var enc_k: int; - var t: Table int (int); - enc_k := $EncodeKey'$1_string_String'(k); - t := $Dereference(m); - if (!ContainsTable(t, enc_k)) { - call $Abort($StdError(7/*INVALID_ARGUMENTS*/, 101/*ENOT_FOUND*/)); - } else { - k' := k; - v := GetTable(t, enc_k); - m' := $UpdateMutation(m, RemoveTable(t, enc_k)); - } -} -procedure {:inline 2} $1_simple_map_borrow'$1_string_String_address'(t: Table int (int), k: $1_string_String) returns (v: int) { - var enc_k: int; - enc_k := $EncodeKey'$1_string_String'(k); - if (!ContainsTable(t, enc_k)) { - call $Abort($StdError(7/*INVALID_ARGUMENTS*/, 101/*ENOT_FOUND*/)); - } else { - v := GetTable(t, $EncodeKey'$1_string_String'(k)); - } -} -procedure {:inline 2} $1_simple_map_borrow_mut'$1_string_String_address'(m: $Mutation (Table int (int)), k: $1_string_String) -returns (dst: $Mutation (int), m': $Mutation (Table int (int))) { - var enc_k: int; - var t: Table int (int); - enc_k := $EncodeKey'$1_string_String'(k); - t := $Dereference(m); - if (!ContainsTable(t, enc_k)) { - call $Abort($StdError(7/*INVALID_ARGUMENTS*/, 101/*ENOT_FOUND*/)); - } else { - dst := $Mutation(l#$Mutation(m), ExtendVec(p#$Mutation(m), enc_k), GetTable(t, enc_k)); - m' := m; - } -} -function {:inline} $1_simple_map_spec_len'$1_string_String_address'(t: (Table int (int))): int { - LenTable(t) -} -function {:inline} $1_simple_map_spec_contains_key'$1_string_String_address'(t: (Table int (int)), k: $1_string_String): bool { - ContainsTable(t, $EncodeKey'$1_string_String'(k)) -} -function {:inline} $1_simple_map_spec_set'$1_string_String_address'(t: Table int (int), k: $1_string_String, v: int): Table int (int) { - (var enc_k := $EncodeKey'$1_string_String'(k); - if (ContainsTable(t, enc_k)) then - UpdateTable(t, enc_k, v) - else - AddTable(t, enc_k, v)) -} -function {:inline} $1_simple_map_spec_remove'$1_string_String_address'(t: Table int (int), k: $1_string_String): Table int (int) { - RemoveTable(t, $EncodeKey'$1_string_String'(k)) -} -function {:inline} $1_simple_map_spec_get'$1_string_String_address'(t: Table int (int), k: $1_string_String): int { - GetTable(t, $EncodeKey'$1_string_String'(k)) -} - - - -// ================================================================================== -// Native Hash - -// Hash is modeled as an otherwise uninterpreted injection. -// In truth, it is not an injection since the domain has greater cardinality -// (arbitrary length vectors) than the co-domain (vectors of length 32). But it is -// common to assume in code there are no hash collisions in practice. Fortunately, -// Boogie is not smart enough to recognized that there is an inconsistency. -// FIXME: If we were using a reliable extensional theory of arrays, and if we could use == -// instead of $IsEqual, we might be able to avoid so many quantified formulas by -// using a sha2_inverse function in the ensures conditions of Hash_sha2_256 to -// assert that sha2/3 are injections without using global quantified axioms. - - -function $1_hash_sha2(val: Vec int): Vec int; - -// This says that Hash_sha2 is bijective. -axiom (forall v1,v2: Vec int :: {$1_hash_sha2(v1), $1_hash_sha2(v2)} - $IsEqual'vec'u8''(v1, v2) <==> $IsEqual'vec'u8''($1_hash_sha2(v1), $1_hash_sha2(v2))); - -procedure $1_hash_sha2_256(val: Vec int) returns (res: Vec int); -ensures res == $1_hash_sha2(val); // returns Hash_sha2 Value -ensures $IsValid'vec'u8''(res); // result is a legal vector of U8s. -ensures LenVec(res) == 32; // result is 32 bytes. - -// Spec version of Move native function. -function {:inline} $1_hash_$sha2_256(val: Vec int): Vec int { - $1_hash_sha2(val) -} - -// similarly for Hash_sha3 -function $1_hash_sha3(val: Vec int): Vec int; - -axiom (forall v1,v2: Vec int :: {$1_hash_sha3(v1), $1_hash_sha3(v2)} - $IsEqual'vec'u8''(v1, v2) <==> $IsEqual'vec'u8''($1_hash_sha3(v1), $1_hash_sha3(v2))); - -procedure $1_hash_sha3_256(val: Vec int) returns (res: Vec int); -ensures res == $1_hash_sha3(val); // returns Hash_sha3 Value -ensures $IsValid'vec'u8''(res); // result is a legal vector of U8s. -ensures LenVec(res) == 32; // result is 32 bytes. - -// Spec version of Move native function. -function {:inline} $1_hash_$sha3_256(val: Vec int): Vec int { - $1_hash_sha3(val) -} - -// ================================================================================== -// Native string - -// TODO: correct implementation of strings - -procedure {:inline 1} $1_string_internal_check_utf8(x: Vec int) returns (r: bool) { -} - -procedure {:inline 1} $1_string_internal_sub_string(x: Vec int, i: int, j: int) returns (r: Vec int) { -} - -procedure {:inline 1} $1_string_internal_index_of(x: Vec int, y: Vec int) returns (r: int) { -} - -procedure {:inline 1} $1_string_internal_is_char_boundary(x: Vec int, i: int) returns (r: bool) { -} - - - - -// ================================================================================== -// Native diem_account - -procedure {:inline 1} $1_DiemAccount_create_signer( - addr: int -) returns (signer: $signer) { - // A signer is currently identical to an address. - signer := $signer(addr); -} - -procedure {:inline 1} $1_DiemAccount_destroy_signer( - signer: $signer -) { - return; -} - -// ================================================================================== -// Native account - -procedure {:inline 1} $1_Account_create_signer( - addr: int -) returns (signer: $signer) { - // A signer is currently identical to an address. - signer := $signer(addr); -} - -// ================================================================================== -// Native Signer - -type {:datatype} $signer; -function {:constructor} $signer($addr: int): $signer; -function {:inline} $IsValid'signer'(s: $signer): bool { - $IsValid'address'($addr#$signer(s)) -} -function {:inline} $IsEqual'signer'(s1: $signer, s2: $signer): bool { - s1 == s2 -} - -procedure {:inline 1} $1_signer_borrow_address(signer: $signer) returns (res: int) { - res := $addr#$signer(signer); -} - -function {:inline} $1_signer_$borrow_address(signer: $signer): int -{ - $addr#$signer(signer) -} - -function $1_signer_is_txn_signer(s: $signer): bool; - -function $1_signer_is_txn_signer_addr(a: int): bool; - - -// ================================================================================== -// Native signature +// ================================================================================== +// Native signature // Signature related functionality is handled via uninterpreted functions. This is sound // currently because we verify every code path based on signature verification with @@ -7430,9 +6822,6 @@ axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid // axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''($1_from_bcs_deserialize'vec'u8''(b1), $1_from_bcs_deserialize'vec'u8''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u64''($1_from_bcs_deserialize'vec'u64''(b1), $1_from_bcs_deserialize'vec'u64''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - // axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'address''($1_from_bcs_deserialize'vec'address''(b1), $1_from_bcs_deserialize'vec'address''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); @@ -7457,9 +6846,6 @@ axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid // axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'#0''($1_from_bcs_deserialize'vec'#0''(b1), $1_from_bcs_deserialize'vec'#0''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_option_Option'u64''($1_from_bcs_deserialize'$1_option_Option'u64''(b1), $1_from_bcs_deserialize'$1_option_Option'u64''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - // axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_option_Option'address''($1_from_bcs_deserialize'$1_option_Option'address''(b1), $1_from_bcs_deserialize'$1_option_Option'address''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); @@ -7496,9 +6882,6 @@ axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid // axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_event_EventHandle'$1_coin_WithdrawEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_coin_WithdrawEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_coin_WithdrawEvent''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_event_EventHandle'$1_aptos_account_DirectCoinTransferConfigUpdatedEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_aptos_account_DirectCoinTransferConfigUpdatedEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_aptos_account_DirectCoinTransferConfigUpdatedEvent''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - // axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_event_EventHandle'$1_stake_AddStakeEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_AddStakeEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_AddStakeEvent''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); @@ -7628,12 +7011,6 @@ axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid // axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''($1_from_bcs_deserialize'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''(b1), $1_from_bcs_deserialize'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_coin_DepositEvent'($1_from_bcs_deserialize'$1_coin_DepositEvent'(b1), $1_from_bcs_deserialize'$1_coin_DepositEvent'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_coin_WithdrawEvent'($1_from_bcs_deserialize'$1_coin_WithdrawEvent'(b1), $1_from_bcs_deserialize'$1_coin_WithdrawEvent'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - // axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin''($1_from_bcs_deserialize'$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin''(b1), $1_from_bcs_deserialize'$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); @@ -7643,9 +7020,6 @@ axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid // axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_aptos_coin_AptosCoin'($1_from_bcs_deserialize'$1_aptos_coin_AptosCoin'(b1), $1_from_bcs_deserialize'$1_aptos_coin_AptosCoin'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_aptos_account_DirectTransferConfig'($1_from_bcs_deserialize'$1_aptos_account_DirectTransferConfig'(b1), $1_from_bcs_deserialize'$1_aptos_account_DirectTransferConfig'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - // axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_chain_status_GenesisEndMarker'($1_from_bcs_deserialize'$1_chain_status_GenesisEndMarker'(b1), $1_from_bcs_deserialize'$1_chain_status_GenesisEndMarker'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); @@ -7676,48 +7050,24 @@ axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid // axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_stake_OwnerCapability'($1_from_bcs_deserialize'$1_stake_OwnerCapability'(b1), $1_from_bcs_deserialize'$1_stake_OwnerCapability'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_stake_SetOperatorEvent'($1_from_bcs_deserialize'$1_stake_SetOperatorEvent'(b1), $1_from_bcs_deserialize'$1_stake_SetOperatorEvent'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - // axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_stake_StakePool'($1_from_bcs_deserialize'$1_stake_StakePool'(b1), $1_from_bcs_deserialize'$1_stake_StakePool'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_stake_UnlockStakeEvent'($1_from_bcs_deserialize'$1_stake_UnlockStakeEvent'(b1), $1_from_bcs_deserialize'$1_stake_UnlockStakeEvent'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - // axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_stake_ValidatorConfig'($1_from_bcs_deserialize'$1_stake_ValidatorConfig'(b1), $1_from_bcs_deserialize'$1_stake_ValidatorConfig'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_stake_ValidatorInfo'($1_from_bcs_deserialize'$1_stake_ValidatorInfo'(b1), $1_from_bcs_deserialize'$1_stake_ValidatorInfo'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - // axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_stake_ValidatorPerformance'($1_from_bcs_deserialize'$1_stake_ValidatorPerformance'(b1), $1_from_bcs_deserialize'$1_stake_ValidatorPerformance'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); // axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_stake_ValidatorSet'($1_from_bcs_deserialize'$1_stake_ValidatorSet'(b1), $1_from_bcs_deserialize'$1_stake_ValidatorSet'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_stake_WithdrawStakeEvent'($1_from_bcs_deserialize'$1_stake_WithdrawStakeEvent'(b1), $1_from_bcs_deserialize'$1_stake_WithdrawStakeEvent'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - // axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_reconfiguration_Configuration'($1_from_bcs_deserialize'$1_reconfiguration_Configuration'(b1), $1_from_bcs_deserialize'$1_reconfiguration_Configuration'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); // axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_pool_u64_Pool'($1_from_bcs_deserialize'$1_pool_u64_Pool'(b1), $1_from_bcs_deserialize'$1_pool_u64_Pool'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_staking_contract_UnlockStakeEvent'($1_from_bcs_deserialize'$1_staking_contract_UnlockStakeEvent'(b1), $1_from_bcs_deserialize'$1_staking_contract_UnlockStakeEvent'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_staking_contract_AddDistributionEvent'($1_from_bcs_deserialize'$1_staking_contract_AddDistributionEvent'(b1), $1_from_bcs_deserialize'$1_staking_contract_AddDistributionEvent'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_staking_contract_DistributeEvent'($1_from_bcs_deserialize'$1_staking_contract_DistributeEvent'(b1), $1_from_bcs_deserialize'$1_staking_contract_DistributeEvent'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_staking_contract_RequestCommissionEvent'($1_from_bcs_deserialize'$1_staking_contract_RequestCommissionEvent'(b1), $1_from_bcs_deserialize'$1_staking_contract_RequestCommissionEvent'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - // axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_staking_contract_ResetLockupEvent'($1_from_bcs_deserialize'$1_staking_contract_ResetLockupEvent'(b1), $1_from_bcs_deserialize'$1_staking_contract_ResetLockupEvent'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); @@ -7727,15 +7077,9 @@ axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid // axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_staking_contract_Store'($1_from_bcs_deserialize'$1_staking_contract_Store'(b1), $1_from_bcs_deserialize'$1_staking_contract_Store'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_staking_contract_SwitchOperatorEvent'($1_from_bcs_deserialize'$1_staking_contract_SwitchOperatorEvent'(b1), $1_from_bcs_deserialize'$1_staking_contract_SwitchOperatorEvent'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - // axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_staking_contract_UpdateVoterEvent'($1_from_bcs_deserialize'$1_staking_contract_UpdateVoterEvent'(b1), $1_from_bcs_deserialize'$1_staking_contract_UpdateVoterEvent'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_vesting_DistributeEvent'($1_from_bcs_deserialize'$1_vesting_DistributeEvent'(b1), $1_from_bcs_deserialize'$1_vesting_DistributeEvent'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - // axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_vesting_ResetLockupEvent'($1_from_bcs_deserialize'$1_vesting_ResetLockupEvent'(b1), $1_from_bcs_deserialize'$1_vesting_ResetLockupEvent'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); @@ -7745,24 +7089,12 @@ axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid // axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_vesting_AdminStore'($1_from_bcs_deserialize'$1_vesting_AdminStore'(b1), $1_from_bcs_deserialize'$1_vesting_AdminStore'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_vesting_AdminWithdrawEvent'($1_from_bcs_deserialize'$1_vesting_AdminWithdrawEvent'(b1), $1_from_bcs_deserialize'$1_vesting_AdminWithdrawEvent'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - // axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_vesting_SetBeneficiaryEvent'($1_from_bcs_deserialize'$1_vesting_SetBeneficiaryEvent'(b1), $1_from_bcs_deserialize'$1_vesting_SetBeneficiaryEvent'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); // axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_vesting_StakingInfo'($1_from_bcs_deserialize'$1_vesting_StakingInfo'(b1), $1_from_bcs_deserialize'$1_vesting_StakingInfo'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_vesting_TerminateEvent'($1_from_bcs_deserialize'$1_vesting_TerminateEvent'(b1), $1_from_bcs_deserialize'$1_vesting_TerminateEvent'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_vesting_UpdateOperatorEvent'($1_from_bcs_deserialize'$1_vesting_UpdateOperatorEvent'(b1), $1_from_bcs_deserialize'$1_vesting_UpdateOperatorEvent'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_vesting_VestEvent'($1_from_bcs_deserialize'$1_vesting_VestEvent'(b1), $1_from_bcs_deserialize'$1_vesting_VestEvent'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - // axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_vesting_VestingAccountManagement'($1_from_bcs_deserialize'$1_vesting_VestingAccountManagement'(b1), $1_from_bcs_deserialize'$1_vesting_VestingAccountManagement'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); @@ -7799,9 +7131,6 @@ axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid // axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'vec'u8''(b1), $1_from_bcs_deserializable'vec'u8''(b2))))); -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'vec'u64''(b1), $1_from_bcs_deserializable'vec'u64''(b2))))); - // axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'vec'address''(b1), $1_from_bcs_deserializable'vec'address''(b2))))); @@ -7826,9 +7155,6 @@ axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid // axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'vec'#0''(b1), $1_from_bcs_deserializable'vec'#0''(b2))))); -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_option_Option'u64''(b1), $1_from_bcs_deserializable'$1_option_Option'u64''(b2))))); - // axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_option_Option'address''(b1), $1_from_bcs_deserializable'$1_option_Option'address''(b2))))); @@ -7865,9 +7191,6 @@ axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid // axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_event_EventHandle'$1_coin_WithdrawEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_coin_WithdrawEvent''(b2))))); -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_event_EventHandle'$1_aptos_account_DirectCoinTransferConfigUpdatedEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_aptos_account_DirectCoinTransferConfigUpdatedEvent''(b2))))); - // axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_AddStakeEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_AddStakeEvent''(b2))))); @@ -7997,12 +7320,6 @@ axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid // axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''(b1), $1_from_bcs_deserializable'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''(b2))))); -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_coin_DepositEvent'(b1), $1_from_bcs_deserializable'$1_coin_DepositEvent'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_coin_WithdrawEvent'(b1), $1_from_bcs_deserializable'$1_coin_WithdrawEvent'(b2))))); - // axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin''(b1), $1_from_bcs_deserializable'$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin''(b2))))); @@ -8012,9 +7329,6 @@ axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid // axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_aptos_coin_AptosCoin'(b1), $1_from_bcs_deserializable'$1_aptos_coin_AptosCoin'(b2))))); -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_aptos_account_DirectTransferConfig'(b1), $1_from_bcs_deserializable'$1_aptos_account_DirectTransferConfig'(b2))))); - // axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_chain_status_GenesisEndMarker'(b1), $1_from_bcs_deserializable'$1_chain_status_GenesisEndMarker'(b2))))); @@ -8045,48 +7359,24 @@ axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid // axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_stake_OwnerCapability'(b1), $1_from_bcs_deserializable'$1_stake_OwnerCapability'(b2))))); -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_stake_SetOperatorEvent'(b1), $1_from_bcs_deserializable'$1_stake_SetOperatorEvent'(b2))))); - // axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_stake_StakePool'(b1), $1_from_bcs_deserializable'$1_stake_StakePool'(b2))))); -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_stake_UnlockStakeEvent'(b1), $1_from_bcs_deserializable'$1_stake_UnlockStakeEvent'(b2))))); - // axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_stake_ValidatorConfig'(b1), $1_from_bcs_deserializable'$1_stake_ValidatorConfig'(b2))))); -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_stake_ValidatorInfo'(b1), $1_from_bcs_deserializable'$1_stake_ValidatorInfo'(b2))))); - // axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_stake_ValidatorPerformance'(b1), $1_from_bcs_deserializable'$1_stake_ValidatorPerformance'(b2))))); // axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_stake_ValidatorSet'(b1), $1_from_bcs_deserializable'$1_stake_ValidatorSet'(b2))))); -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_stake_WithdrawStakeEvent'(b1), $1_from_bcs_deserializable'$1_stake_WithdrawStakeEvent'(b2))))); - // axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_reconfiguration_Configuration'(b1), $1_from_bcs_deserializable'$1_reconfiguration_Configuration'(b2))))); // axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_pool_u64_Pool'(b1), $1_from_bcs_deserializable'$1_pool_u64_Pool'(b2))))); -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_staking_contract_UnlockStakeEvent'(b1), $1_from_bcs_deserializable'$1_staking_contract_UnlockStakeEvent'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_staking_contract_AddDistributionEvent'(b1), $1_from_bcs_deserializable'$1_staking_contract_AddDistributionEvent'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_staking_contract_DistributeEvent'(b1), $1_from_bcs_deserializable'$1_staking_contract_DistributeEvent'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_staking_contract_RequestCommissionEvent'(b1), $1_from_bcs_deserializable'$1_staking_contract_RequestCommissionEvent'(b2))))); - // axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_staking_contract_ResetLockupEvent'(b1), $1_from_bcs_deserializable'$1_staking_contract_ResetLockupEvent'(b2))))); @@ -8096,15 +7386,9 @@ axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid // axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_staking_contract_Store'(b1), $1_from_bcs_deserializable'$1_staking_contract_Store'(b2))))); -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_staking_contract_SwitchOperatorEvent'(b1), $1_from_bcs_deserializable'$1_staking_contract_SwitchOperatorEvent'(b2))))); - // axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_staking_contract_UpdateVoterEvent'(b1), $1_from_bcs_deserializable'$1_staking_contract_UpdateVoterEvent'(b2))))); -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_vesting_DistributeEvent'(b1), $1_from_bcs_deserializable'$1_vesting_DistributeEvent'(b2))))); - // axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_vesting_ResetLockupEvent'(b1), $1_from_bcs_deserializable'$1_vesting_ResetLockupEvent'(b2))))); @@ -8114,24 +7398,12 @@ axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid // axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_vesting_AdminStore'(b1), $1_from_bcs_deserializable'$1_vesting_AdminStore'(b2))))); -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_vesting_AdminWithdrawEvent'(b1), $1_from_bcs_deserializable'$1_vesting_AdminWithdrawEvent'(b2))))); - // axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_vesting_SetBeneficiaryEvent'(b1), $1_from_bcs_deserializable'$1_vesting_SetBeneficiaryEvent'(b2))))); // axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_vesting_StakingInfo'(b1), $1_from_bcs_deserializable'$1_vesting_StakingInfo'(b2))))); -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_vesting_TerminateEvent'(b1), $1_from_bcs_deserializable'$1_vesting_TerminateEvent'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_vesting_UpdateOperatorEvent'(b1), $1_from_bcs_deserializable'$1_vesting_UpdateOperatorEvent'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_vesting_VestEvent'(b1), $1_from_bcs_deserializable'$1_vesting_VestEvent'(b2))))); - // axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_vesting_VestingAccountManagement'(b1), $1_from_bcs_deserializable'$1_vesting_VestingAccountManagement'(b2))))); @@ -8168,9 +7440,6 @@ axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid // axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'vec'u8''($1_from_bcs_deserialize'vec'u8''(b1), $1_from_bcs_deserialize'vec'u8''(b2))))); -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'vec'u64''($1_from_bcs_deserialize'vec'u64''(b1), $1_from_bcs_deserialize'vec'u64''(b2))))); - // axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'vec'address''($1_from_bcs_deserialize'vec'address''(b1), $1_from_bcs_deserialize'vec'address''(b2))))); @@ -8195,9 +7464,6 @@ axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid // axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'vec'#0''($1_from_bcs_deserialize'vec'#0''(b1), $1_from_bcs_deserialize'vec'#0''(b2))))); -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_option_Option'u64''($1_from_bcs_deserialize'$1_option_Option'u64''(b1), $1_from_bcs_deserialize'$1_option_Option'u64''(b2))))); - // axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_option_Option'address''($1_from_bcs_deserialize'$1_option_Option'address''(b1), $1_from_bcs_deserialize'$1_option_Option'address''(b2))))); @@ -8234,9 +7500,6 @@ axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid // axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_event_EventHandle'$1_coin_WithdrawEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_coin_WithdrawEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_coin_WithdrawEvent''(b2))))); -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_event_EventHandle'$1_aptos_account_DirectCoinTransferConfigUpdatedEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_aptos_account_DirectCoinTransferConfigUpdatedEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_aptos_account_DirectCoinTransferConfigUpdatedEvent''(b2))))); - // axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_event_EventHandle'$1_stake_AddStakeEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_AddStakeEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_AddStakeEvent''(b2))))); @@ -8366,12 +7629,6 @@ axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid // axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''($1_from_bcs_deserialize'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''(b1), $1_from_bcs_deserialize'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''(b2))))); -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_coin_DepositEvent'($1_from_bcs_deserialize'$1_coin_DepositEvent'(b1), $1_from_bcs_deserialize'$1_coin_DepositEvent'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_coin_WithdrawEvent'($1_from_bcs_deserialize'$1_coin_WithdrawEvent'(b1), $1_from_bcs_deserialize'$1_coin_WithdrawEvent'(b2))))); - // axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin''($1_from_bcs_deserialize'$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin''(b1), $1_from_bcs_deserialize'$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin''(b2))))); @@ -8381,9 +7638,6 @@ axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid // axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_aptos_coin_AptosCoin'($1_from_bcs_deserialize'$1_aptos_coin_AptosCoin'(b1), $1_from_bcs_deserialize'$1_aptos_coin_AptosCoin'(b2))))); -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_aptos_account_DirectTransferConfig'($1_from_bcs_deserialize'$1_aptos_account_DirectTransferConfig'(b1), $1_from_bcs_deserialize'$1_aptos_account_DirectTransferConfig'(b2))))); - // axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_chain_status_GenesisEndMarker'($1_from_bcs_deserialize'$1_chain_status_GenesisEndMarker'(b1), $1_from_bcs_deserialize'$1_chain_status_GenesisEndMarker'(b2))))); @@ -8414,48 +7668,24 @@ axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid // axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_stake_OwnerCapability'($1_from_bcs_deserialize'$1_stake_OwnerCapability'(b1), $1_from_bcs_deserialize'$1_stake_OwnerCapability'(b2))))); -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_stake_SetOperatorEvent'($1_from_bcs_deserialize'$1_stake_SetOperatorEvent'(b1), $1_from_bcs_deserialize'$1_stake_SetOperatorEvent'(b2))))); - // axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_stake_StakePool'($1_from_bcs_deserialize'$1_stake_StakePool'(b1), $1_from_bcs_deserialize'$1_stake_StakePool'(b2))))); -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_stake_UnlockStakeEvent'($1_from_bcs_deserialize'$1_stake_UnlockStakeEvent'(b1), $1_from_bcs_deserialize'$1_stake_UnlockStakeEvent'(b2))))); - // axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_stake_ValidatorConfig'($1_from_bcs_deserialize'$1_stake_ValidatorConfig'(b1), $1_from_bcs_deserialize'$1_stake_ValidatorConfig'(b2))))); -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_stake_ValidatorInfo'($1_from_bcs_deserialize'$1_stake_ValidatorInfo'(b1), $1_from_bcs_deserialize'$1_stake_ValidatorInfo'(b2))))); - // axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_stake_ValidatorPerformance'($1_from_bcs_deserialize'$1_stake_ValidatorPerformance'(b1), $1_from_bcs_deserialize'$1_stake_ValidatorPerformance'(b2))))); // axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_stake_ValidatorSet'($1_from_bcs_deserialize'$1_stake_ValidatorSet'(b1), $1_from_bcs_deserialize'$1_stake_ValidatorSet'(b2))))); -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_stake_WithdrawStakeEvent'($1_from_bcs_deserialize'$1_stake_WithdrawStakeEvent'(b1), $1_from_bcs_deserialize'$1_stake_WithdrawStakeEvent'(b2))))); - // axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_reconfiguration_Configuration'($1_from_bcs_deserialize'$1_reconfiguration_Configuration'(b1), $1_from_bcs_deserialize'$1_reconfiguration_Configuration'(b2))))); // axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_pool_u64_Pool'($1_from_bcs_deserialize'$1_pool_u64_Pool'(b1), $1_from_bcs_deserialize'$1_pool_u64_Pool'(b2))))); -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_staking_contract_UnlockStakeEvent'($1_from_bcs_deserialize'$1_staking_contract_UnlockStakeEvent'(b1), $1_from_bcs_deserialize'$1_staking_contract_UnlockStakeEvent'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_staking_contract_AddDistributionEvent'($1_from_bcs_deserialize'$1_staking_contract_AddDistributionEvent'(b1), $1_from_bcs_deserialize'$1_staking_contract_AddDistributionEvent'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_staking_contract_DistributeEvent'($1_from_bcs_deserialize'$1_staking_contract_DistributeEvent'(b1), $1_from_bcs_deserialize'$1_staking_contract_DistributeEvent'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_staking_contract_RequestCommissionEvent'($1_from_bcs_deserialize'$1_staking_contract_RequestCommissionEvent'(b1), $1_from_bcs_deserialize'$1_staking_contract_RequestCommissionEvent'(b2))))); - // axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_staking_contract_ResetLockupEvent'($1_from_bcs_deserialize'$1_staking_contract_ResetLockupEvent'(b1), $1_from_bcs_deserialize'$1_staking_contract_ResetLockupEvent'(b2))))); @@ -8465,15 +7695,9 @@ axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid // axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_staking_contract_Store'($1_from_bcs_deserialize'$1_staking_contract_Store'(b1), $1_from_bcs_deserialize'$1_staking_contract_Store'(b2))))); -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_staking_contract_SwitchOperatorEvent'($1_from_bcs_deserialize'$1_staking_contract_SwitchOperatorEvent'(b1), $1_from_bcs_deserialize'$1_staking_contract_SwitchOperatorEvent'(b2))))); - // axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_staking_contract_UpdateVoterEvent'($1_from_bcs_deserialize'$1_staking_contract_UpdateVoterEvent'(b1), $1_from_bcs_deserialize'$1_staking_contract_UpdateVoterEvent'(b2))))); -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_vesting_DistributeEvent'($1_from_bcs_deserialize'$1_vesting_DistributeEvent'(b1), $1_from_bcs_deserialize'$1_vesting_DistributeEvent'(b2))))); - // axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_vesting_ResetLockupEvent'($1_from_bcs_deserialize'$1_vesting_ResetLockupEvent'(b1), $1_from_bcs_deserialize'$1_vesting_ResetLockupEvent'(b2))))); @@ -8483,24 +7707,12 @@ axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid // axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_vesting_AdminStore'($1_from_bcs_deserialize'$1_vesting_AdminStore'(b1), $1_from_bcs_deserialize'$1_vesting_AdminStore'(b2))))); -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_vesting_AdminWithdrawEvent'($1_from_bcs_deserialize'$1_vesting_AdminWithdrawEvent'(b1), $1_from_bcs_deserialize'$1_vesting_AdminWithdrawEvent'(b2))))); - // axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_vesting_SetBeneficiaryEvent'($1_from_bcs_deserialize'$1_vesting_SetBeneficiaryEvent'(b1), $1_from_bcs_deserialize'$1_vesting_SetBeneficiaryEvent'(b2))))); // axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_vesting_StakingInfo'($1_from_bcs_deserialize'$1_vesting_StakingInfo'(b1), $1_from_bcs_deserialize'$1_vesting_StakingInfo'(b2))))); -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_vesting_TerminateEvent'($1_from_bcs_deserialize'$1_vesting_TerminateEvent'(b1), $1_from_bcs_deserialize'$1_vesting_TerminateEvent'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_vesting_UpdateOperatorEvent'($1_from_bcs_deserialize'$1_vesting_UpdateOperatorEvent'(b1), $1_from_bcs_deserialize'$1_vesting_UpdateOperatorEvent'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_vesting_VestEvent'($1_from_bcs_deserialize'$1_vesting_VestEvent'(b1), $1_from_bcs_deserialize'$1_vesting_VestEvent'(b2))))); - // axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_vesting_VestingAccountManagement'($1_from_bcs_deserialize'$1_vesting_VestingAccountManagement'(b1), $1_from_bcs_deserialize'$1_vesting_VestingAccountManagement'(b2))))); @@ -8513,10 +7725,20 @@ axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid // axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance <#0> axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'#0'($1_from_bcs_deserialize'#0'(b1), $1_from_bcs_deserialize'#0'(b2))))); -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:146:5+86 -function {:inline} $1_vector_$is_empty'u64'(v: Vec (int)): bool { - $IsEqual'u64'($1_vector_$length'u64'(v), 0) -} +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/hash.spec.move:8:9+113 +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''($1_aptos_hash_spec_keccak256(b1), $1_aptos_hash_spec_keccak256(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/hash.spec.move:13:9+129 +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''($1_aptos_hash_spec_sha2_512_internal(b1), $1_aptos_hash_spec_sha2_512_internal(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/hash.spec.move:18:9+129 +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''($1_aptos_hash_spec_sha3_512_internal(b1), $1_aptos_hash_spec_sha3_512_internal(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/hash.spec.move:23:9+131 +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''($1_aptos_hash_spec_ripemd160_internal(b1), $1_aptos_hash_spec_ripemd160_internal(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/hash.spec.move:28:9+135 +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''($1_aptos_hash_spec_blake2b_256_internal(b1), $1_aptos_hash_spec_blake2b_256_internal(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); // spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:146:5+86 function {:inline} $1_vector_$is_empty'address'(v: Vec (int)): bool { @@ -8533,17 +7755,12 @@ function {:inline} $1_vector_$is_empty'$1_optional_aggregator_Integer'(v: Vec ($ $IsEqual'u64'($1_vector_$length'$1_optional_aggregator_Integer'(v), 0) } -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:608:9+110 +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:628:9+110 function {:inline} $1_vector_spec_contains'address'(v: Vec (int), e: int): bool { (var $range_0 := v; (exists $i_1: int :: InRangeVec($range_0, $i_1) && (var x := ReadVec($range_0, $i_1); ($IsEqual'address'(x, e))))) } -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/option.move:102:5+145 -function {:inline} $1_option_$borrow'u64'(t: $1_option_Option'u64'): int { - $1_vector_$borrow'u64'($vec#$1_option_Option'u64'(t), 0) -} - // spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/option.move:102:5+145 function {:inline} $1_option_$borrow'$1_aggregator_Aggregator'(t: $1_option_Option'$1_aggregator_Aggregator'): $1_aggregator_Aggregator { $1_vector_$borrow'$1_aggregator_Aggregator'($vec#$1_option_Option'$1_aggregator_Aggregator'(t), 0) @@ -8554,11 +7771,6 @@ function {:inline} $1_option_$borrow'$1_optional_aggregator_Integer'(t: $1_optio $1_vector_$borrow'$1_optional_aggregator_Integer'($vec#$1_option_Option'$1_optional_aggregator_Integer'(t), 0) } -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/option.move:61:5+95 -function {:inline} $1_option_$is_none'u64'(t: $1_option_Option'u64'): bool { - $1_vector_$is_empty'u64'($vec#$1_option_Option'u64'(t)) -} - // spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/option.move:61:5+95 function {:inline} $1_option_$is_none'$1_aggregator_Aggregator'(t: $1_option_Option'$1_aggregator_Aggregator'): bool { $1_vector_$is_empty'$1_aggregator_Aggregator'($vec#$1_option_Option'$1_aggregator_Aggregator'(t)) @@ -8569,11 +7781,6 @@ function {:inline} $1_option_$is_none'$1_optional_aggregator_Integer'(t: $1_opti $1_vector_$is_empty'$1_optional_aggregator_Integer'($vec#$1_option_Option'$1_optional_aggregator_Integer'(t)) } -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/option.move:74:5+96 -function {:inline} $1_option_$is_some'u64'(t: $1_option_Option'u64'): bool { - !$1_vector_$is_empty'u64'($vec#$1_option_Option'u64'(t)) -} - // spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/option.move:74:5+96 function {:inline} $1_option_$is_some'$1_aggregator_Aggregator'(t: $1_option_Option'$1_aggregator_Aggregator'): bool { !$1_vector_$is_empty'$1_aggregator_Aggregator'($vec#$1_option_Option'$1_aggregator_Aggregator'(t)) @@ -8599,23 +7806,6 @@ function {:inline} $1_option_spec_is_none'address'(t: $1_option_Option'address') $1_vector_$is_empty'address'($vec#$1_option_Option'address'(t)) } -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/option.move:82:10+92 -function {:inline} $1_option_spec_is_some'u64'(t: $1_option_Option'u64'): bool { - !$1_vector_$is_empty'u64'($vec#$1_option_Option'u64'(t)) -} - -// struct option::Option at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/option.move:7:5+81 -type {:datatype} $1_option_Option'u64'; -function {:constructor} $1_option_Option'u64'($vec: Vec (int)): $1_option_Option'u64'; -function {:inline} $Update'$1_option_Option'u64''_vec(s: $1_option_Option'u64', x: Vec (int)): $1_option_Option'u64' { - $1_option_Option'u64'(x) -} -function $IsValid'$1_option_Option'u64''(s: $1_option_Option'u64'): bool { - $IsValid'vec'u64''($vec#$1_option_Option'u64'(s)) -} -function {:inline} $IsEqual'$1_option_Option'u64''(s1: $1_option_Option'u64', s2: $1_option_Option'u64'): bool { - $IsEqual'vec'u64''($vec#$1_option_Option'u64'(s1), $vec#$1_option_Option'u64'(s2))} - // struct option::Option
at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/option.move:7:5+81 type {:datatype} $1_option_Option'address'; function {:constructor} $1_option_Option'address'($vec: Vec (int)): $1_option_Option'address'; @@ -9234,7 +8424,7 @@ procedure {:inline 1} $1_guid_create(_$t0: int, _$t1: $Mutation (int)) returns ( // bytecode translation starts here // trace_local[addr]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/guid.move:23:5+1 - assume {:print "$at(118,836,837)"} true; + assume {:print "$at(125,836,837)"} true; assume {:print "$track_local(13,0,0):", $t0} $t0 == $t0; // trace_local[creation_num_ref]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/guid.move:23:5+1 @@ -9242,21 +8432,21 @@ procedure {:inline 1} $1_guid_create(_$t0: int, _$t1: $Mutation (int)) returns ( assume {:print "$track_local(13,0,1):", $temp_0'u64'} $temp_0'u64' == $temp_0'u64'; // $t3 := read_ref($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/guid.move:24:28+17 - assume {:print "$at(118,940,957)"} true; + assume {:print "$at(125,940,957)"} true; $t3 := $Dereference($t1); // trace_local[creation_num]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/guid.move:24:13+12 assume {:print "$track_local(13,0,2):", $t3} $t3 == $t3; // $t4 := 1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/guid.move:25:44+1 - assume {:print "$at(118,1002,1003)"} true; + assume {:print "$at(125,1002,1003)"} true; $t4 := 1; assume $IsValid'u64'($t4); // $t5 := +($t3, $t4) on_abort goto L2 with $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/guid.move:25:42+1 call $t5 := $AddU64($t3, $t4); if ($abort_flag) { - assume {:print "$at(118,1000,1001)"} true; + assume {:print "$at(125,1000,1001)"} true; $t6 := $abort_code; assume {:print "$track_abort(13,0):", $t6} $t6 == $t6; goto L2; @@ -9266,11 +8456,11 @@ procedure {:inline 1} $1_guid_create(_$t0: int, _$t1: $Mutation (int)) returns ( $t1 := $UpdateMutation($t1, $t5); // $t7 := pack guid::ID($t3, $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/guid.move:27:17+70 - assume {:print "$at(118,1036,1106)"} true; + assume {:print "$at(125,1036,1106)"} true; $t7 := $1_guid_ID($t3, $t0); // $t8 := pack guid::GUID($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/guid.move:26:9+103 - assume {:print "$at(118,1013,1116)"} true; + assume {:print "$at(125,1013,1116)"} true; $t8 := $1_guid_GUID($t7); // trace_return[0]($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/guid.move:26:9+103 @@ -9281,11 +8471,11 @@ procedure {:inline 1} $1_guid_create(_$t0: int, _$t1: $Mutation (int)) returns ( assume {:print "$track_local(13,0,1):", $temp_0'u64'} $temp_0'u64' == $temp_0'u64'; // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/guid.move:32:5+1 - assume {:print "$at(118,1121,1122)"} true; + assume {:print "$at(125,1121,1122)"} true; L1: // return $t8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/guid.move:32:5+1 - assume {:print "$at(118,1121,1122)"} true; + assume {:print "$at(125,1121,1122)"} true; $ret0 := $t8; $ret1 := $t1; return; @@ -9294,7 +8484,7 @@ L1: L2: // abort($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/guid.move:32:5+1 - assume {:print "$at(118,1121,1122)"} true; + assume {:print "$at(125,1121,1122)"} true; $abort_code := $t6; $abort_flag := true; return; @@ -9349,12 +8539,6 @@ axiom (forall bytes: Vec (int) :: (var $$res := $1_from_bcs_deserialize'vec'u8''(bytes); $IsValid'vec'u8''($$res))); -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'vec'u64''(bytes: Vec (int)): Vec (int); -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'vec'u64''(bytes); -$IsValid'vec'u64''($$res))); - // spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 function $1_from_bcs_deserialize'vec'address''(bytes: Vec (int)): Vec (int); axiom (forall bytes: Vec (int) :: @@ -9403,12 +8587,6 @@ axiom (forall bytes: Vec (int) :: (var $$res := $1_from_bcs_deserialize'vec'#0''(bytes); $IsValid'vec'#0''($$res))); -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_option_Option'u64''(bytes: Vec (int)): $1_option_Option'u64'; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_option_Option'u64''(bytes); -$IsValid'$1_option_Option'u64''($$res))); - // spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 function $1_from_bcs_deserialize'$1_option_Option'address''(bytes: Vec (int)): $1_option_Option'address'; axiom (forall bytes: Vec (int) :: @@ -9481,12 +8659,6 @@ axiom (forall bytes: Vec (int) :: (var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_coin_WithdrawEvent''(bytes); $IsValid'$1_event_EventHandle'$1_coin_WithdrawEvent''($$res))); -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_event_EventHandle'$1_aptos_account_DirectCoinTransferConfigUpdatedEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_aptos_account_DirectCoinTransferConfigUpdatedEvent'; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_aptos_account_DirectCoinTransferConfigUpdatedEvent''(bytes); -$IsValid'$1_event_EventHandle'$1_aptos_account_DirectCoinTransferConfigUpdatedEvent''($$res))); - // spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 function $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_AddStakeEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_stake_AddStakeEvent'; axiom (forall bytes: Vec (int) :: @@ -9745,18 +8917,6 @@ axiom (forall bytes: Vec (int) :: (var $$res := $1_from_bcs_deserialize'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''(bytes); $IsValid'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''($$res))); -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_coin_DepositEvent'(bytes: Vec (int)): $1_coin_DepositEvent; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_coin_DepositEvent'(bytes); -$IsValid'$1_coin_DepositEvent'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_coin_WithdrawEvent'(bytes: Vec (int)): $1_coin_WithdrawEvent; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_coin_WithdrawEvent'(bytes); -$IsValid'$1_coin_WithdrawEvent'($$res))); - // spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 function $1_from_bcs_deserialize'$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin''(bytes: Vec (int)): $1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'; axiom (forall bytes: Vec (int) :: @@ -9775,12 +8935,6 @@ axiom (forall bytes: Vec (int) :: (var $$res := $1_from_bcs_deserialize'$1_aptos_coin_AptosCoin'(bytes); $IsValid'$1_aptos_coin_AptosCoin'($$res))); -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_aptos_account_DirectTransferConfig'(bytes: Vec (int)): $1_aptos_account_DirectTransferConfig; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_aptos_account_DirectTransferConfig'(bytes); -$IsValid'$1_aptos_account_DirectTransferConfig'($$res))); - // spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 function $1_from_bcs_deserialize'$1_chain_status_GenesisEndMarker'(bytes: Vec (int)): $1_chain_status_GenesisEndMarker; axiom (forall bytes: Vec (int) :: @@ -9841,36 +8995,18 @@ axiom (forall bytes: Vec (int) :: (var $$res := $1_from_bcs_deserialize'$1_stake_OwnerCapability'(bytes); $IsValid'$1_stake_OwnerCapability'($$res))); -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_stake_SetOperatorEvent'(bytes: Vec (int)): $1_stake_SetOperatorEvent; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_stake_SetOperatorEvent'(bytes); -$IsValid'$1_stake_SetOperatorEvent'($$res))); - // spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 function $1_from_bcs_deserialize'$1_stake_StakePool'(bytes: Vec (int)): $1_stake_StakePool; axiom (forall bytes: Vec (int) :: (var $$res := $1_from_bcs_deserialize'$1_stake_StakePool'(bytes); $IsValid'$1_stake_StakePool'($$res))); -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_stake_UnlockStakeEvent'(bytes: Vec (int)): $1_stake_UnlockStakeEvent; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_stake_UnlockStakeEvent'(bytes); -$IsValid'$1_stake_UnlockStakeEvent'($$res))); - // spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 function $1_from_bcs_deserialize'$1_stake_ValidatorConfig'(bytes: Vec (int)): $1_stake_ValidatorConfig; axiom (forall bytes: Vec (int) :: (var $$res := $1_from_bcs_deserialize'$1_stake_ValidatorConfig'(bytes); $IsValid'$1_stake_ValidatorConfig'($$res))); -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_stake_ValidatorInfo'(bytes: Vec (int)): $1_stake_ValidatorInfo; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_stake_ValidatorInfo'(bytes); -$IsValid'$1_stake_ValidatorInfo'($$res))); - // spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 function $1_from_bcs_deserialize'$1_stake_ValidatorPerformance'(bytes: Vec (int)): $1_stake_ValidatorPerformance; axiom (forall bytes: Vec (int) :: @@ -9883,12 +9019,6 @@ axiom (forall bytes: Vec (int) :: (var $$res := $1_from_bcs_deserialize'$1_stake_ValidatorSet'(bytes); $IsValid'$1_stake_ValidatorSet'($$res))); -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_stake_WithdrawStakeEvent'(bytes: Vec (int)): $1_stake_WithdrawStakeEvent; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_stake_WithdrawStakeEvent'(bytes); -$IsValid'$1_stake_WithdrawStakeEvent'($$res))); - // spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 function $1_from_bcs_deserialize'$1_reconfiguration_Configuration'(bytes: Vec (int)): $1_reconfiguration_Configuration; axiom (forall bytes: Vec (int) :: @@ -9901,30 +9031,6 @@ axiom (forall bytes: Vec (int) :: (var $$res := $1_from_bcs_deserialize'$1_pool_u64_Pool'(bytes); $IsValid'$1_pool_u64_Pool'($$res))); -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_staking_contract_UnlockStakeEvent'(bytes: Vec (int)): $1_staking_contract_UnlockStakeEvent; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_staking_contract_UnlockStakeEvent'(bytes); -$IsValid'$1_staking_contract_UnlockStakeEvent'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_staking_contract_AddDistributionEvent'(bytes: Vec (int)): $1_staking_contract_AddDistributionEvent; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_staking_contract_AddDistributionEvent'(bytes); -$IsValid'$1_staking_contract_AddDistributionEvent'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_staking_contract_DistributeEvent'(bytes: Vec (int)): $1_staking_contract_DistributeEvent; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_staking_contract_DistributeEvent'(bytes); -$IsValid'$1_staking_contract_DistributeEvent'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_staking_contract_RequestCommissionEvent'(bytes: Vec (int)): $1_staking_contract_RequestCommissionEvent; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_staking_contract_RequestCommissionEvent'(bytes); -$IsValid'$1_staking_contract_RequestCommissionEvent'($$res))); - // spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 function $1_from_bcs_deserialize'$1_staking_contract_ResetLockupEvent'(bytes: Vec (int)): $1_staking_contract_ResetLockupEvent; axiom (forall bytes: Vec (int) :: @@ -9943,24 +9049,12 @@ axiom (forall bytes: Vec (int) :: (var $$res := $1_from_bcs_deserialize'$1_staking_contract_Store'(bytes); $IsValid'$1_staking_contract_Store'($$res))); -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_staking_contract_SwitchOperatorEvent'(bytes: Vec (int)): $1_staking_contract_SwitchOperatorEvent; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_staking_contract_SwitchOperatorEvent'(bytes); -$IsValid'$1_staking_contract_SwitchOperatorEvent'($$res))); - // spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 function $1_from_bcs_deserialize'$1_staking_contract_UpdateVoterEvent'(bytes: Vec (int)): $1_staking_contract_UpdateVoterEvent; axiom (forall bytes: Vec (int) :: (var $$res := $1_from_bcs_deserialize'$1_staking_contract_UpdateVoterEvent'(bytes); $IsValid'$1_staking_contract_UpdateVoterEvent'($$res))); -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_vesting_DistributeEvent'(bytes: Vec (int)): $1_vesting_DistributeEvent; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_vesting_DistributeEvent'(bytes); -$IsValid'$1_vesting_DistributeEvent'($$res))); - // spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 function $1_from_bcs_deserialize'$1_vesting_ResetLockupEvent'(bytes: Vec (int)): $1_vesting_ResetLockupEvent; axiom (forall bytes: Vec (int) :: @@ -9979,12 +9073,6 @@ axiom (forall bytes: Vec (int) :: (var $$res := $1_from_bcs_deserialize'$1_vesting_AdminStore'(bytes); $IsValid'$1_vesting_AdminStore'($$res))); -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_vesting_AdminWithdrawEvent'(bytes: Vec (int)): $1_vesting_AdminWithdrawEvent; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_vesting_AdminWithdrawEvent'(bytes); -$IsValid'$1_vesting_AdminWithdrawEvent'($$res))); - // spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 function $1_from_bcs_deserialize'$1_vesting_SetBeneficiaryEvent'(bytes: Vec (int)): $1_vesting_SetBeneficiaryEvent; axiom (forall bytes: Vec (int) :: @@ -9997,24 +9085,6 @@ axiom (forall bytes: Vec (int) :: (var $$res := $1_from_bcs_deserialize'$1_vesting_StakingInfo'(bytes); $IsValid'$1_vesting_StakingInfo'($$res))); -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_vesting_TerminateEvent'(bytes: Vec (int)): $1_vesting_TerminateEvent; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_vesting_TerminateEvent'(bytes); -$IsValid'$1_vesting_TerminateEvent'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_vesting_UpdateOperatorEvent'(bytes: Vec (int)): $1_vesting_UpdateOperatorEvent; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_vesting_UpdateOperatorEvent'(bytes); -$IsValid'$1_vesting_UpdateOperatorEvent'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_vesting_VestEvent'(bytes: Vec (int)): $1_vesting_VestEvent; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_vesting_VestEvent'(bytes); -$IsValid'$1_vesting_VestEvent'($$res))); - // spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 function $1_from_bcs_deserialize'$1_vesting_VestingAccountManagement'(bytes: Vec (int)): $1_vesting_VestingAccountManagement; axiom (forall bytes: Vec (int) :: @@ -10087,12 +9157,6 @@ axiom (forall bytes: Vec (int) :: (var $$res := $1_from_bcs_deserializable'vec'u8''(bytes); $IsValid'bool'($$res))); -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'vec'u64''(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'vec'u64''(bytes); -$IsValid'bool'($$res))); - // spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 function $1_from_bcs_deserializable'vec'address''(bytes: Vec (int)): bool; axiom (forall bytes: Vec (int) :: @@ -10141,12 +9205,6 @@ axiom (forall bytes: Vec (int) :: (var $$res := $1_from_bcs_deserializable'vec'#0''(bytes); $IsValid'bool'($$res))); -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_option_Option'u64''(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_option_Option'u64''(bytes); -$IsValid'bool'($$res))); - // spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 function $1_from_bcs_deserializable'$1_option_Option'address''(bytes: Vec (int)): bool; axiom (forall bytes: Vec (int) :: @@ -10219,12 +9277,6 @@ axiom (forall bytes: Vec (int) :: (var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_coin_WithdrawEvent''(bytes); $IsValid'bool'($$res))); -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_event_EventHandle'$1_aptos_account_DirectCoinTransferConfigUpdatedEvent''(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_aptos_account_DirectCoinTransferConfigUpdatedEvent''(bytes); -$IsValid'bool'($$res))); - // spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 function $1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_AddStakeEvent''(bytes: Vec (int)): bool; axiom (forall bytes: Vec (int) :: @@ -10483,18 +9535,6 @@ axiom (forall bytes: Vec (int) :: (var $$res := $1_from_bcs_deserializable'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''(bytes); $IsValid'bool'($$res))); -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_coin_DepositEvent'(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_coin_DepositEvent'(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_coin_WithdrawEvent'(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_coin_WithdrawEvent'(bytes); -$IsValid'bool'($$res))); - // spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 function $1_from_bcs_deserializable'$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin''(bytes: Vec (int)): bool; axiom (forall bytes: Vec (int) :: @@ -10513,12 +9553,6 @@ axiom (forall bytes: Vec (int) :: (var $$res := $1_from_bcs_deserializable'$1_aptos_coin_AptosCoin'(bytes); $IsValid'bool'($$res))); -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_aptos_account_DirectTransferConfig'(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_aptos_account_DirectTransferConfig'(bytes); -$IsValid'bool'($$res))); - // spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 function $1_from_bcs_deserializable'$1_chain_status_GenesisEndMarker'(bytes: Vec (int)): bool; axiom (forall bytes: Vec (int) :: @@ -10579,36 +9613,18 @@ axiom (forall bytes: Vec (int) :: (var $$res := $1_from_bcs_deserializable'$1_stake_OwnerCapability'(bytes); $IsValid'bool'($$res))); -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_stake_SetOperatorEvent'(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_stake_SetOperatorEvent'(bytes); -$IsValid'bool'($$res))); - // spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 function $1_from_bcs_deserializable'$1_stake_StakePool'(bytes: Vec (int)): bool; axiom (forall bytes: Vec (int) :: (var $$res := $1_from_bcs_deserializable'$1_stake_StakePool'(bytes); $IsValid'bool'($$res))); -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_stake_UnlockStakeEvent'(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_stake_UnlockStakeEvent'(bytes); -$IsValid'bool'($$res))); - // spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 function $1_from_bcs_deserializable'$1_stake_ValidatorConfig'(bytes: Vec (int)): bool; axiom (forall bytes: Vec (int) :: (var $$res := $1_from_bcs_deserializable'$1_stake_ValidatorConfig'(bytes); $IsValid'bool'($$res))); -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_stake_ValidatorInfo'(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_stake_ValidatorInfo'(bytes); -$IsValid'bool'($$res))); - // spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 function $1_from_bcs_deserializable'$1_stake_ValidatorPerformance'(bytes: Vec (int)): bool; axiom (forall bytes: Vec (int) :: @@ -10621,12 +9637,6 @@ axiom (forall bytes: Vec (int) :: (var $$res := $1_from_bcs_deserializable'$1_stake_ValidatorSet'(bytes); $IsValid'bool'($$res))); -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_stake_WithdrawStakeEvent'(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_stake_WithdrawStakeEvent'(bytes); -$IsValid'bool'($$res))); - // spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 function $1_from_bcs_deserializable'$1_reconfiguration_Configuration'(bytes: Vec (int)): bool; axiom (forall bytes: Vec (int) :: @@ -10639,30 +9649,6 @@ axiom (forall bytes: Vec (int) :: (var $$res := $1_from_bcs_deserializable'$1_pool_u64_Pool'(bytes); $IsValid'bool'($$res))); -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_staking_contract_UnlockStakeEvent'(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_staking_contract_UnlockStakeEvent'(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_staking_contract_AddDistributionEvent'(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_staking_contract_AddDistributionEvent'(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_staking_contract_DistributeEvent'(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_staking_contract_DistributeEvent'(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_staking_contract_RequestCommissionEvent'(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_staking_contract_RequestCommissionEvent'(bytes); -$IsValid'bool'($$res))); - // spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 function $1_from_bcs_deserializable'$1_staking_contract_ResetLockupEvent'(bytes: Vec (int)): bool; axiom (forall bytes: Vec (int) :: @@ -10681,24 +9667,12 @@ axiom (forall bytes: Vec (int) :: (var $$res := $1_from_bcs_deserializable'$1_staking_contract_Store'(bytes); $IsValid'bool'($$res))); -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_staking_contract_SwitchOperatorEvent'(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_staking_contract_SwitchOperatorEvent'(bytes); -$IsValid'bool'($$res))); - // spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 function $1_from_bcs_deserializable'$1_staking_contract_UpdateVoterEvent'(bytes: Vec (int)): bool; axiom (forall bytes: Vec (int) :: (var $$res := $1_from_bcs_deserializable'$1_staking_contract_UpdateVoterEvent'(bytes); $IsValid'bool'($$res))); -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_vesting_DistributeEvent'(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_vesting_DistributeEvent'(bytes); -$IsValid'bool'($$res))); - // spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 function $1_from_bcs_deserializable'$1_vesting_ResetLockupEvent'(bytes: Vec (int)): bool; axiom (forall bytes: Vec (int) :: @@ -10717,12 +9691,6 @@ axiom (forall bytes: Vec (int) :: (var $$res := $1_from_bcs_deserializable'$1_vesting_AdminStore'(bytes); $IsValid'bool'($$res))); -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_vesting_AdminWithdrawEvent'(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_vesting_AdminWithdrawEvent'(bytes); -$IsValid'bool'($$res))); - // spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 function $1_from_bcs_deserializable'$1_vesting_SetBeneficiaryEvent'(bytes: Vec (int)): bool; axiom (forall bytes: Vec (int) :: @@ -10735,24 +9703,6 @@ axiom (forall bytes: Vec (int) :: (var $$res := $1_from_bcs_deserializable'$1_vesting_StakingInfo'(bytes); $IsValid'bool'($$res))); -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_vesting_TerminateEvent'(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_vesting_TerminateEvent'(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_vesting_UpdateOperatorEvent'(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_vesting_UpdateOperatorEvent'(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_vesting_VestEvent'(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_vesting_VestEvent'(bytes); -$IsValid'bool'($$res))); - // spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 function $1_from_bcs_deserializable'$1_vesting_VestingAccountManagement'(bytes: Vec (int)): bool; axiom (forall bytes: Vec (int) :: @@ -10845,23 +9795,6 @@ function {:inline} $IsEqual'$1_event_EventHandle'$1_coin_WithdrawEvent''(s1: $1_ s1 == s2 } -// struct event::EventHandle at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:16:5+224 -type {:datatype} $1_event_EventHandle'$1_aptos_account_DirectCoinTransferConfigUpdatedEvent'; -function {:constructor} $1_event_EventHandle'$1_aptos_account_DirectCoinTransferConfigUpdatedEvent'($counter: int, $guid: $1_guid_GUID): $1_event_EventHandle'$1_aptos_account_DirectCoinTransferConfigUpdatedEvent'; -function {:inline} $Update'$1_event_EventHandle'$1_aptos_account_DirectCoinTransferConfigUpdatedEvent''_counter(s: $1_event_EventHandle'$1_aptos_account_DirectCoinTransferConfigUpdatedEvent', x: int): $1_event_EventHandle'$1_aptos_account_DirectCoinTransferConfigUpdatedEvent' { - $1_event_EventHandle'$1_aptos_account_DirectCoinTransferConfigUpdatedEvent'(x, $guid#$1_event_EventHandle'$1_aptos_account_DirectCoinTransferConfigUpdatedEvent'(s)) -} -function {:inline} $Update'$1_event_EventHandle'$1_aptos_account_DirectCoinTransferConfigUpdatedEvent''_guid(s: $1_event_EventHandle'$1_aptos_account_DirectCoinTransferConfigUpdatedEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_aptos_account_DirectCoinTransferConfigUpdatedEvent' { - $1_event_EventHandle'$1_aptos_account_DirectCoinTransferConfigUpdatedEvent'($counter#$1_event_EventHandle'$1_aptos_account_DirectCoinTransferConfigUpdatedEvent'(s), x) -} -function $IsValid'$1_event_EventHandle'$1_aptos_account_DirectCoinTransferConfigUpdatedEvent''(s: $1_event_EventHandle'$1_aptos_account_DirectCoinTransferConfigUpdatedEvent'): bool { - $IsValid'u64'($counter#$1_event_EventHandle'$1_aptos_account_DirectCoinTransferConfigUpdatedEvent'(s)) - && $IsValid'$1_guid_GUID'($guid#$1_event_EventHandle'$1_aptos_account_DirectCoinTransferConfigUpdatedEvent'(s)) -} -function {:inline} $IsEqual'$1_event_EventHandle'$1_aptos_account_DirectCoinTransferConfigUpdatedEvent''(s1: $1_event_EventHandle'$1_aptos_account_DirectCoinTransferConfigUpdatedEvent', s2: $1_event_EventHandle'$1_aptos_account_DirectCoinTransferConfigUpdatedEvent'): bool { - s1 == s2 -} - // struct event::EventHandle at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:16:5+224 type {:datatype} $1_event_EventHandle'$1_stake_AddStakeEvent'; function {:constructor} $1_event_EventHandle'$1_stake_AddStakeEvent'($counter: int, $guid: $1_guid_GUID): $1_event_EventHandle'$1_stake_AddStakeEvent'; @@ -11419,27 +10352,27 @@ procedure {:inline 1} $1_event_new_event_handle'$1_account_CoinRegisterEvent'(_$ // bytecode translation starts here // trace_local[guid]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:24:5+1 - assume {:print "$at(110,978,979)"} true; + assume {:print "$at(117,978,979)"} true; assume {:print "$track_local(15,4,0):", $t0} $t0 == $t0; // $t1 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:26:22+1 - assume {:print "$at(110,1107,1108)"} true; + assume {:print "$at(117,1107,1108)"} true; $t1 := 0; assume $IsValid'u64'($t1); // $t2 := pack event::EventHandle<#0>($t1, $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:25:9+68 - assume {:print "$at(110,1069,1137)"} true; + assume {:print "$at(117,1069,1137)"} true; $t2 := $1_event_EventHandle'$1_account_CoinRegisterEvent'($t1, $t0); // trace_return[0]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:25:9+68 assume {:print "$track_return(15,4,0):", $t2} $t2 == $t2; // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:29:5+1 - assume {:print "$at(110,1142,1143)"} true; + assume {:print "$at(117,1142,1143)"} true; L1: // return $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:29:5+1 - assume {:print "$at(110,1142,1143)"} true; + assume {:print "$at(117,1142,1143)"} true; $ret0 := $t2; return; @@ -11458,27 +10391,27 @@ procedure {:inline 1} $1_event_new_event_handle'$1_account_KeyRotationEvent'(_$t // bytecode translation starts here // trace_local[guid]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:24:5+1 - assume {:print "$at(110,978,979)"} true; + assume {:print "$at(117,978,979)"} true; assume {:print "$track_local(15,4,0):", $t0} $t0 == $t0; // $t1 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:26:22+1 - assume {:print "$at(110,1107,1108)"} true; + assume {:print "$at(117,1107,1108)"} true; $t1 := 0; assume $IsValid'u64'($t1); // $t2 := pack event::EventHandle<#0>($t1, $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:25:9+68 - assume {:print "$at(110,1069,1137)"} true; + assume {:print "$at(117,1069,1137)"} true; $t2 := $1_event_EventHandle'$1_account_KeyRotationEvent'($t1, $t0); // trace_return[0]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:25:9+68 assume {:print "$track_return(15,4,0):", $t2} $t2 == $t2; // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:29:5+1 - assume {:print "$at(110,1142,1143)"} true; + assume {:print "$at(117,1142,1143)"} true; L1: // return $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:29:5+1 - assume {:print "$at(110,1142,1143)"} true; + assume {:print "$at(117,1142,1143)"} true; $ret0 := $t2; return; @@ -11497,27 +10430,27 @@ procedure {:inline 1} $1_event_new_event_handle'$1_coin_DepositEvent'(_$t0: $1_g // bytecode translation starts here // trace_local[guid]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:24:5+1 - assume {:print "$at(110,978,979)"} true; + assume {:print "$at(117,978,979)"} true; assume {:print "$track_local(15,4,0):", $t0} $t0 == $t0; // $t1 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:26:22+1 - assume {:print "$at(110,1107,1108)"} true; + assume {:print "$at(117,1107,1108)"} true; $t1 := 0; assume $IsValid'u64'($t1); // $t2 := pack event::EventHandle<#0>($t1, $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:25:9+68 - assume {:print "$at(110,1069,1137)"} true; + assume {:print "$at(117,1069,1137)"} true; $t2 := $1_event_EventHandle'$1_coin_DepositEvent'($t1, $t0); // trace_return[0]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:25:9+68 assume {:print "$track_return(15,4,0):", $t2} $t2 == $t2; // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:29:5+1 - assume {:print "$at(110,1142,1143)"} true; + assume {:print "$at(117,1142,1143)"} true; L1: // return $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:29:5+1 - assume {:print "$at(110,1142,1143)"} true; + assume {:print "$at(117,1142,1143)"} true; $ret0 := $t2; return; @@ -11536,44 +10469,44 @@ procedure {:inline 1} $1_event_new_event_handle'$1_coin_WithdrawEvent'(_$t0: $1_ // bytecode translation starts here // trace_local[guid]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:24:5+1 - assume {:print "$at(110,978,979)"} true; + assume {:print "$at(117,978,979)"} true; assume {:print "$track_local(15,4,0):", $t0} $t0 == $t0; // $t1 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:26:22+1 - assume {:print "$at(110,1107,1108)"} true; + assume {:print "$at(117,1107,1108)"} true; $t1 := 0; assume $IsValid'u64'($t1); // $t2 := pack event::EventHandle<#0>($t1, $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:25:9+68 - assume {:print "$at(110,1069,1137)"} true; + assume {:print "$at(117,1069,1137)"} true; $t2 := $1_event_EventHandle'$1_coin_WithdrawEvent'($t1, $t0); // trace_return[0]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:25:9+68 assume {:print "$track_return(15,4,0):", $t2} $t2 == $t2; // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:29:5+1 - assume {:print "$at(110,1142,1143)"} true; + assume {:print "$at(117,1142,1143)"} true; L1: // return $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:29:5+1 - assume {:print "$at(110,1142,1143)"} true; + assume {:print "$at(117,1142,1143)"} true; $ret0 := $t2; return; } -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:224:5+79 +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:225:5+79 function {:inline} $1_account_$exists_at($1_account_Account_$memory: $Memory $1_account_Account, addr: int): bool { $ResourceExists($1_account_Account_$memory, addr) } -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:393:10+77 +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:409:10+77 function $1_account_spec_create_resource_address(source: int, seed: Vec (int)): int; axiom (forall source: int, seed: Vec (int) :: (var $$res := $1_account_spec_create_resource_address(source, seed); $IsValid'address'($$res))); -// struct account::Account at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:26:5+401 +// struct account::Account at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:27:5+401 type {:datatype} $1_account_Account; function {:constructor} $1_account_Account($authentication_key: Vec (int), $sequence_number: int, $guid_creation_num: int, $coin_register_events: $1_event_EventHandle'$1_account_CoinRegisterEvent', $key_rotation_events: $1_event_EventHandle'$1_account_KeyRotationEvent', $rotation_capability_offer: $1_account_CapabilityOffer'$1_account_RotationCapability', $signer_capability_offer: $1_account_CapabilityOffer'$1_account_SignerCapability'): $1_account_Account; function {:inline} $Update'$1_account_Account'_authentication_key(s: $1_account_Account, x: Vec (int)): $1_account_Account { @@ -11616,7 +10549,7 @@ function {:inline} $IsEqual'$1_account_Account'(s1: $1_account_Account, s2: $1_a && $IsEqual'$1_account_CapabilityOffer'$1_account_SignerCapability''($signer_capability_offer#$1_account_Account(s1), $signer_capability_offer#$1_account_Account(s2))} var $1_account_Account_$memory: $Memory $1_account_Account; -// struct account::CapabilityOffer at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:45:5+68 +// struct account::CapabilityOffer at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:46:5+68 type {:datatype} $1_account_CapabilityOffer'$1_account_RotationCapability'; function {:constructor} $1_account_CapabilityOffer'$1_account_RotationCapability'($for: $1_option_Option'address'): $1_account_CapabilityOffer'$1_account_RotationCapability'; function {:inline} $Update'$1_account_CapabilityOffer'$1_account_RotationCapability''_for(s: $1_account_CapabilityOffer'$1_account_RotationCapability', x: $1_option_Option'address'): $1_account_CapabilityOffer'$1_account_RotationCapability' { @@ -11628,7 +10561,7 @@ function $IsValid'$1_account_CapabilityOffer'$1_account_RotationCapability''(s: function {:inline} $IsEqual'$1_account_CapabilityOffer'$1_account_RotationCapability''(s1: $1_account_CapabilityOffer'$1_account_RotationCapability', s2: $1_account_CapabilityOffer'$1_account_RotationCapability'): bool { $IsEqual'$1_option_Option'address''($for#$1_account_CapabilityOffer'$1_account_RotationCapability'(s1), $for#$1_account_CapabilityOffer'$1_account_RotationCapability'(s2))} -// struct account::CapabilityOffer at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:45:5+68 +// struct account::CapabilityOffer at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:46:5+68 type {:datatype} $1_account_CapabilityOffer'$1_account_SignerCapability'; function {:constructor} $1_account_CapabilityOffer'$1_account_SignerCapability'($for: $1_option_Option'address'): $1_account_CapabilityOffer'$1_account_SignerCapability'; function {:inline} $Update'$1_account_CapabilityOffer'$1_account_SignerCapability''_for(s: $1_account_CapabilityOffer'$1_account_SignerCapability', x: $1_option_Option'address'): $1_account_CapabilityOffer'$1_account_SignerCapability' { @@ -11640,7 +10573,7 @@ function $IsValid'$1_account_CapabilityOffer'$1_account_SignerCapability''(s: $1 function {:inline} $IsEqual'$1_account_CapabilityOffer'$1_account_SignerCapability''(s1: $1_account_CapabilityOffer'$1_account_SignerCapability', s2: $1_account_CapabilityOffer'$1_account_SignerCapability'): bool { $IsEqual'$1_option_Option'address''($for#$1_account_CapabilityOffer'$1_account_SignerCapability'(s1), $for#$1_account_CapabilityOffer'$1_account_SignerCapability'(s2))} -// struct account::CoinRegisterEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:41:5+77 +// struct account::CoinRegisterEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:42:5+77 type {:datatype} $1_account_CoinRegisterEvent; function {:constructor} $1_account_CoinRegisterEvent($type_info: $1_type_info_TypeInfo): $1_account_CoinRegisterEvent; function {:inline} $Update'$1_account_CoinRegisterEvent'_type_info(s: $1_account_CoinRegisterEvent, x: $1_type_info_TypeInfo): $1_account_CoinRegisterEvent { @@ -11652,7 +10585,7 @@ function $IsValid'$1_account_CoinRegisterEvent'(s: $1_account_CoinRegisterEvent) function {:inline} $IsEqual'$1_account_CoinRegisterEvent'(s1: $1_account_CoinRegisterEvent, s2: $1_account_CoinRegisterEvent): bool { $IsEqual'$1_type_info_TypeInfo'($type_info#$1_account_CoinRegisterEvent(s1), $type_info#$1_account_CoinRegisterEvent(s2))} -// struct account::KeyRotationEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:36:5+135 +// struct account::KeyRotationEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:37:5+135 type {:datatype} $1_account_KeyRotationEvent; function {:constructor} $1_account_KeyRotationEvent($old_authentication_key: Vec (int), $new_authentication_key: Vec (int)): $1_account_KeyRotationEvent; function {:inline} $Update'$1_account_KeyRotationEvent'_old_authentication_key(s: $1_account_KeyRotationEvent, x: Vec (int)): $1_account_KeyRotationEvent { @@ -11669,7 +10602,7 @@ function {:inline} $IsEqual'$1_account_KeyRotationEvent'(s1: $1_account_KeyRotat $IsEqual'vec'u8''($old_authentication_key#$1_account_KeyRotationEvent(s1), $old_authentication_key#$1_account_KeyRotationEvent(s2)) && $IsEqual'vec'u8''($new_authentication_key#$1_account_KeyRotationEvent(s1), $new_authentication_key#$1_account_KeyRotationEvent(s2))} -// struct account::RotationCapability at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:47:5+62 +// struct account::RotationCapability at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:48:5+62 type {:datatype} $1_account_RotationCapability; function {:constructor} $1_account_RotationCapability($account: int): $1_account_RotationCapability; function {:inline} $Update'$1_account_RotationCapability'_account(s: $1_account_RotationCapability, x: int): $1_account_RotationCapability { @@ -11682,7 +10615,7 @@ function {:inline} $IsEqual'$1_account_RotationCapability'(s1: $1_account_Rotati s1 == s2 } -// struct account::SignerCapability at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:49:5+60 +// struct account::SignerCapability at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:50:5+60 type {:datatype} $1_account_SignerCapability; function {:constructor} $1_account_SignerCapability($account: int): $1_account_SignerCapability; function {:inline} $Update'$1_account_SignerCapability'_account(s: $1_account_SignerCapability, x: int): $1_account_SignerCapability { @@ -11695,7 +10628,7 @@ function {:inline} $IsEqual'$1_account_SignerCapability'(s1: $1_account_SignerCa s1 == s2 } -// fun account::new_event_handle [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:669:5+157 +// fun account::new_event_handle [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:691:5+157 procedure {:inline 1} $1_account_new_event_handle'$1_coin_DepositEvent'(_$t0: $signer) returns ($ret0: $1_event_EventHandle'$1_coin_DepositEvent') { // declare local variables @@ -11713,73 +10646,73 @@ procedure {:inline 1} $1_account_new_event_handle'$1_coin_DepositEvent'(_$t0: $s $t0 := _$t0; // bytecode translation starts here - // assume Identical($t1, signer::$address_of($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:444:9+39 - assume {:print "$at(73,21650,21689)"} true; + // assume Identical($t1, signer::$address_of($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:461:9+39 + assume {:print "$at(80,22297,22336)"} true; assume ($t1 == $1_signer_$address_of($t0)); - // assume Identical($t2, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:445:9+36 - assume {:print "$at(73,21698,21734)"} true; + // assume Identical($t2, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:462:9+36 + assume {:print "$at(80,22345,22381)"} true; assume ($t2 == $ResourceValue($1_account_Account_$memory, $t1)); - // trace_local[account]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:669:5+1 - assume {:print "$at(72,38254,38255)"} true; - assume {:print "$track_local(18,18,0):", $t0} $t0 == $t0; + // trace_local[account]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:691:5+1 + assume {:print "$at(79,39221,39222)"} true; + assume {:print "$track_local(18,20,0):", $t0} $t0 == $t0; - // assume Identical($t3, signer::$address_of($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:430:9+46 - assume {:print "$at(73,21158,21204)"} true; + // assume Identical($t3, signer::$address_of($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:446:9+46 + assume {:print "$at(80,21696,21742)"} true; assume ($t3 == $1_signer_$address_of($t0)); - // assume Identical($t4, signer::$address_of($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:444:9+39 - assume {:print "$at(73,21650,21689)"} true; + // assume Identical($t4, signer::$address_of($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:461:9+39 + assume {:print "$at(80,22297,22336)"} true; assume ($t4 == $1_signer_$address_of($t0)); - // assume Identical($t5, global($t4)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:445:9+36 - assume {:print "$at(73,21698,21734)"} true; + // assume Identical($t5, global($t4)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:462:9+36 + assume {:print "$at(80,22345,22381)"} true; assume ($t5 == $ResourceValue($1_account_Account_$memory, $t4)); - // $t6 := account::create_guid($t0) on_abort goto L2 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:670:33+20 - assume {:print "$at(72,38384,38404)"} true; + // $t6 := account::create_guid($t0) on_abort goto L2 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:692:33+20 + assume {:print "$at(79,39351,39371)"} true; call $t6 := $1_account_create_guid($t0); if ($abort_flag) { - assume {:print "$at(72,38384,38404)"} true; + assume {:print "$at(79,39351,39371)"} true; $t7 := $abort_code; - assume {:print "$track_abort(18,18):", $t7} $t7 == $t7; + assume {:print "$track_abort(18,20):", $t7} $t7 == $t7; goto L2; } - // $t8 := event::new_event_handle<#0>($t6) on_abort goto L2 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:670:9+45 + // $t8 := event::new_event_handle<#0>($t6) on_abort goto L2 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:692:9+45 call $t8 := $1_event_new_event_handle'$1_coin_DepositEvent'($t6); if ($abort_flag) { - assume {:print "$at(72,38360,38405)"} true; + assume {:print "$at(79,39327,39372)"} true; $t7 := $abort_code; - assume {:print "$track_abort(18,18):", $t7} $t7 == $t7; + assume {:print "$track_abort(18,20):", $t7} $t7 == $t7; goto L2; } - // trace_return[0]($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:670:9+45 - assume {:print "$track_return(18,18,0):", $t8} $t8 == $t8; + // trace_return[0]($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:692:9+45 + assume {:print "$track_return(18,20,0):", $t8} $t8 == $t8; - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:671:5+1 - assume {:print "$at(72,38410,38411)"} true; + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:693:5+1 + assume {:print "$at(79,39377,39378)"} true; L1: - // return $t8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:671:5+1 - assume {:print "$at(72,38410,38411)"} true; + // return $t8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:693:5+1 + assume {:print "$at(79,39377,39378)"} true; $ret0 := $t8; return; - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:671:5+1 + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:693:5+1 L2: - // abort($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:671:5+1 - assume {:print "$at(72,38410,38411)"} true; + // abort($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:693:5+1 + assume {:print "$at(79,39377,39378)"} true; $abort_code := $t7; $abort_flag := true; return; } -// fun account::new_event_handle [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:669:5+157 +// fun account::new_event_handle [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:691:5+157 procedure {:inline 1} $1_account_new_event_handle'$1_coin_WithdrawEvent'(_$t0: $signer) returns ($ret0: $1_event_EventHandle'$1_coin_WithdrawEvent') { // declare local variables @@ -11797,599 +10730,364 @@ procedure {:inline 1} $1_account_new_event_handle'$1_coin_WithdrawEvent'(_$t0: $ $t0 := _$t0; // bytecode translation starts here - // assume Identical($t1, signer::$address_of($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:444:9+39 - assume {:print "$at(73,21650,21689)"} true; + // assume Identical($t1, signer::$address_of($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:461:9+39 + assume {:print "$at(80,22297,22336)"} true; assume ($t1 == $1_signer_$address_of($t0)); - // assume Identical($t2, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:445:9+36 - assume {:print "$at(73,21698,21734)"} true; + // assume Identical($t2, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:462:9+36 + assume {:print "$at(80,22345,22381)"} true; assume ($t2 == $ResourceValue($1_account_Account_$memory, $t1)); - // trace_local[account]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:669:5+1 - assume {:print "$at(72,38254,38255)"} true; - assume {:print "$track_local(18,18,0):", $t0} $t0 == $t0; + // trace_local[account]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:691:5+1 + assume {:print "$at(79,39221,39222)"} true; + assume {:print "$track_local(18,20,0):", $t0} $t0 == $t0; - // assume Identical($t3, signer::$address_of($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:430:9+46 - assume {:print "$at(73,21158,21204)"} true; + // assume Identical($t3, signer::$address_of($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:446:9+46 + assume {:print "$at(80,21696,21742)"} true; assume ($t3 == $1_signer_$address_of($t0)); - // assume Identical($t4, signer::$address_of($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:444:9+39 - assume {:print "$at(73,21650,21689)"} true; + // assume Identical($t4, signer::$address_of($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:461:9+39 + assume {:print "$at(80,22297,22336)"} true; assume ($t4 == $1_signer_$address_of($t0)); - // assume Identical($t5, global($t4)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:445:9+36 - assume {:print "$at(73,21698,21734)"} true; + // assume Identical($t5, global($t4)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:462:9+36 + assume {:print "$at(80,22345,22381)"} true; assume ($t5 == $ResourceValue($1_account_Account_$memory, $t4)); - // $t6 := account::create_guid($t0) on_abort goto L2 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:670:33+20 - assume {:print "$at(72,38384,38404)"} true; + // $t6 := account::create_guid($t0) on_abort goto L2 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:692:33+20 + assume {:print "$at(79,39351,39371)"} true; call $t6 := $1_account_create_guid($t0); if ($abort_flag) { - assume {:print "$at(72,38384,38404)"} true; + assume {:print "$at(79,39351,39371)"} true; $t7 := $abort_code; - assume {:print "$track_abort(18,18):", $t7} $t7 == $t7; + assume {:print "$track_abort(18,20):", $t7} $t7 == $t7; goto L2; } - // $t8 := event::new_event_handle<#0>($t6) on_abort goto L2 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:670:9+45 + // $t8 := event::new_event_handle<#0>($t6) on_abort goto L2 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:692:9+45 call $t8 := $1_event_new_event_handle'$1_coin_WithdrawEvent'($t6); if ($abort_flag) { - assume {:print "$at(72,38360,38405)"} true; + assume {:print "$at(79,39327,39372)"} true; $t7 := $abort_code; - assume {:print "$track_abort(18,18):", $t7} $t7 == $t7; + assume {:print "$track_abort(18,20):", $t7} $t7 == $t7; goto L2; } - // trace_return[0]($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:670:9+45 - assume {:print "$track_return(18,18,0):", $t8} $t8 == $t8; + // trace_return[0]($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:692:9+45 + assume {:print "$track_return(18,20,0):", $t8} $t8 == $t8; - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:671:5+1 - assume {:print "$at(72,38410,38411)"} true; + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:693:5+1 + assume {:print "$at(79,39377,39378)"} true; L1: - // return $t8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:671:5+1 - assume {:print "$at(72,38410,38411)"} true; + // return $t8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:693:5+1 + assume {:print "$at(79,39377,39378)"} true; $ret0 := $t8; return; - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:671:5+1 + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:693:5+1 L2: - // abort($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:671:5+1 - assume {:print "$at(72,38410,38411)"} true; + // abort($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:693:5+1 + assume {:print "$at(79,39377,39378)"} true; $abort_code := $t7; $abort_flag := true; return; } -// fun account::create_account [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:178:5+589 -procedure {:inline 1} $1_account_create_account(_$t0: int) returns ($ret0: $signer) +// fun account::create_account_unchecked [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:192:5+1182 +procedure {:inline 1} $1_account_create_account_unchecked(_$t0: int) returns ($ret0: $signer) { // declare local variables - var $t1: bool; - var $t2: bool; - var $t3: Vec (int); - var $t4: bool; - var $t5: bool; - var $t6: int; - var $t7: int; - var $t8: int; + var $t1: Vec (int); + var $t2: $1_event_EventHandle'$1_account_CoinRegisterEvent'; + var $t3: int; + var $t4: $1_event_EventHandle'$1_account_KeyRotationEvent'; + var $t5: $signer; + var $t6: Vec (int); + var $t7: $signer; + var $t8: Vec (int); var $t9: int; - var $t10: bool; + var $t10: int; var $t11: int; var $t12: bool; var $t13: int; - var $t14: bool; + var $t14: int; var $t15: int; - var $t16: int; - var $t17: Vec (int); - var $t18: $signer; + var $t16: $Mutation (int); + var $t17: $1_guid_GUID; + var $t18: $1_event_EventHandle'$1_account_CoinRegisterEvent'; + var $t19: $Mutation (int); + var $t20: $1_guid_GUID; + var $t21: $1_event_EventHandle'$1_account_KeyRotationEvent'; + var $t22: int; + var $t23: int; + var $t24: $1_option_Option'address'; + var $t25: $1_account_CapabilityOffer'$1_account_RotationCapability'; + var $t26: $1_option_Option'address'; + var $t27: $1_account_CapabilityOffer'$1_account_SignerCapability'; + var $t28: $1_account_Account; var $t0: int; + var $temp_0'$1_event_EventHandle'$1_account_CoinRegisterEvent'': $1_event_EventHandle'$1_account_CoinRegisterEvent'; + var $temp_0'$1_event_EventHandle'$1_account_KeyRotationEvent'': $1_event_EventHandle'$1_account_KeyRotationEvent'; var $temp_0'address': int; var $temp_0'signer': $signer; + var $temp_0'u64': int; + var $temp_0'vec'u8'': Vec (int); $t0 := _$t0; // bytecode translation starts here - // assume Identical($t3, bcs::$to_bytes
($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:34:9+45 - assume {:print "$at(73,1495,1540)"} true; - assume ($t3 == $1_bcs_$to_bytes'address'($t0)); + // assume Identical($t6, bcs::$to_bytes
($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:40:9+45 + assume {:print "$at(80,1640,1685)"} true; + assume ($t6 == $1_bcs_$to_bytes'address'($t0)); - // trace_local[new_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:178:5+1 - assume {:print "$at(72,9572,9573)"} true; - assume {:print "$track_local(18,1,0):", $t0} $t0 == $t0; + // trace_local[new_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:192:5+1 + assume {:print "$at(79,10213,10214)"} true; + assume {:print "$track_local(18,2,0):", $t0} $t0 == $t0; - // $t4 := exists($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:180:18+6 - assume {:print "$at(72,9726,9732)"} true; - $t4 := $ResourceExists($1_account_Account_$memory, $t0); + // $t7 := opaque begin: create_signer::create_signer($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:193:27+26 + assume {:print "$at(79,10300,10326)"} true; - // $t5 := !($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:180:17+1 - call $t5 := $Not($t4); + // assume WellFormed($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:193:27+26 + assume $IsValid'signer'($t7) && $1_signer_is_txn_signer($t7) && $1_signer_is_txn_signer_addr($addr#$signer($t7)); - // if ($t5) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:180:9+86 - if ($t5) { goto L1; } else { goto L0; } + // assume Eq
(signer::$address_of($t7), $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:193:27+26 + assume $IsEqual'address'($1_signer_$address_of($t7), $t0); - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:180:9+86 -L1: + // $t7 := opaque end: create_signer::create_signer($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:193:27+26 - // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:180:9+86 - assume {:print "$at(72,9717,9803)"} true; - goto L2; + // trace_local[new_account]($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:193:13+11 + assume {:print "$track_local(18,2,5):", $t7} $t7 == $t7; - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:180:70+23 -L0: + // $t8 := bcs::to_bytes
($t0) on_abort goto L4 with $t9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:194:34+27 + assume {:print "$at(79,10361,10388)"} true; + call $t8 := $1_bcs_to_bytes'address'($t0); + if ($abort_flag) { + assume {:print "$at(79,10361,10388)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(18,2):", $t9} $t9 == $t9; + goto L4; + } - // $t6 := 1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:180:70+23 - assume {:print "$at(72,9778,9801)"} true; - $t6 := 1; - assume $IsValid'u64'($t6); + // trace_local[authentication_key]($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:194:13+18 + assume {:print "$track_local(18,2,1):", $t8} $t8 == $t8; - // $t7 := error::already_exists($t6) on_abort goto L13 with $t8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:180:48+46 - call $t7 := $1_error_already_exists($t6); + // $t10 := vector::length($t8) on_abort goto L4 with $t9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:196:13+35 + assume {:print "$at(79,10419,10454)"} true; + call $t10 := $1_vector_length'u8'($t8); if ($abort_flag) { - assume {:print "$at(72,9756,9802)"} true; - $t8 := $abort_code; - assume {:print "$track_abort(18,1):", $t8} $t8 == $t8; - goto L13; + assume {:print "$at(79,10419,10454)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(18,2):", $t9} $t9 == $t9; + goto L4; } - // trace_abort($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:180:9+86 - assume {:print "$at(72,9717,9803)"} true; - assume {:print "$track_abort(18,1):", $t7} $t7 == $t7; + // $t11 := 32 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:196:52+2 + $t11 := 32; + assume $IsValid'u64'($t11); - // $t8 := move($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:180:9+86 - $t8 := $t7; + // $t12 := ==($t10, $t11) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:196:49+2 + $t12 := $IsEqual'u64'($t10, $t11); - // goto L13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:180:9+86 - goto L13; + // if ($t12) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:195:9+140 + assume {:print "$at(79,10398,10538)"} true; + if ($t12) { goto L1; } else { goto L0; } - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:184:13+11 - assume {:print "$at(72,9941,9952)"} true; -L2: + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:195:9+140 +L1: - // $t9 := 0x0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:184:28+12 - assume {:print "$at(72,9956,9968)"} true; - $t9 := 0; - assume $IsValid'address'($t9); + // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:195:9+140 + assume {:print "$at(79,10398,10538)"} true; + goto L2; - // $t10 := !=($t0, $t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:184:25+2 - $t10 := !$IsEqual'address'($t0, $t9); + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:197:37+29 + assume {:print "$at(79,10498,10527)"} true; +L0: - // if ($t10) goto L4 else goto L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:184:13+62 - if ($t10) { goto L4; } else { goto L3; } + // $t13 := 4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:197:37+29 + assume {:print "$at(79,10498,10527)"} true; + $t13 := 4; + assume $IsValid'u64'($t13); - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:184:44+11 -L4: + // $t14 := error::invalid_argument($t13) on_abort goto L4 with $t9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:197:13+54 + call $t14 := $1_error_invalid_argument($t13); + if ($abort_flag) { + assume {:print "$at(79,10474,10528)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(18,2):", $t9} $t9 == $t9; + goto L4; + } - // $t11 := 0x1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:184:59+16 - assume {:print "$at(72,9987,10003)"} true; - $t11 := 1; - assume $IsValid'address'($t11); + // trace_abort($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:195:9+140 + assume {:print "$at(79,10398,10538)"} true; + assume {:print "$track_abort(18,2):", $t14} $t14 == $t14; - // $t1 := !=($t0, $t11) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:184:56+2 - $t1 := !$IsEqual'address'($t0, $t11); + // $t9 := move($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:195:9+140 + $t9 := $t14; - // goto L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:184:13+62 - goto L5; + // goto L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:195:9+140 + goto L4; - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:184:13+62 -L3: + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:200:33+1 + assume {:print "$at(79,10573,10574)"} true; +L2: - // $t12 := false at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:184:13+62 - assume {:print "$at(72,9941,10003)"} true; - $t12 := false; - assume $IsValid'bool'($t12); - - // $t1 := $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:184:13+62 - $t1 := $t12; - - // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:184:13+62 -L5: - - // if ($t1) goto L7 else goto L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:184:13+93 - assume {:print "$at(72,9941,10034)"} true; - if ($t1) { goto L7; } else { goto L6; } - - // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:184:79+11 -L7: - - // $t13 := 0x3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:184:94+12 - assume {:print "$at(72,10022,10034)"} true; - $t13 := 3; - assume $IsValid'address'($t13); - - // $t2 := !=($t0, $t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:184:91+2 - $t2 := !$IsEqual'address'($t0, $t13); - - // goto L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:184:13+93 - goto L8; - - // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:184:13+93 -L6: - - // $t14 := false at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:184:13+93 - assume {:print "$at(72,9941,10034)"} true; - $t14 := false; - assume $IsValid'bool'($t14); - - // $t2 := $t14 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:184:13+93 - $t2 := $t14; - - // label L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:184:13+93 -L8: - - // if ($t2) goto L10 else goto L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:183:9+187 - assume {:print "$at(72,9920,10107)"} true; - if ($t2) { goto L10; } else { goto L9; } - - // label L10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:183:9+187 -L10: - - // goto L11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:183:9+187 - assume {:print "$at(72,9920,10107)"} true; - goto L11; - - // label L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:185:37+24 - assume {:print "$at(72,10072,10096)"} true; -L9: - - // $t15 := 5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:185:37+24 - assume {:print "$at(72,10072,10096)"} true; - $t15 := 5; - assume $IsValid'u64'($t15); - - // $t16 := error::invalid_argument($t15) on_abort goto L13 with $t8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:185:13+49 - call $t16 := $1_error_invalid_argument($t15); - if ($abort_flag) { - assume {:print "$at(72,10048,10097)"} true; - $t8 := $abort_code; - assume {:print "$track_abort(18,1):", $t8} $t8 == $t8; - goto L13; - } - - // trace_abort($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:183:9+187 - assume {:print "$at(72,9920,10107)"} true; - assume {:print "$track_abort(18,1):", $t16} $t16 == $t16; - - // $t8 := move($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:183:9+187 - $t8 := $t16; - - // goto L13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:183:9+187 - goto L13; - - // label L11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:188:34+11 - assume {:print "$at(72,10143,10154)"} true; -L11: - - // assume Identical($t17, bcs::$to_bytes
($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:34:9+45 - assume {:print "$at(73,1495,1540)"} true; - assume ($t17 == $1_bcs_$to_bytes'address'($t0)); - - // $t18 := account::create_account_unchecked($t0) on_abort goto L13 with $t8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:188:9+37 - assume {:print "$at(72,10118,10155)"} true; - call $t18 := $1_account_create_account_unchecked($t0); - if ($abort_flag) { - assume {:print "$at(72,10118,10155)"} true; - $t8 := $abort_code; - assume {:print "$track_abort(18,1):", $t8} $t8 == $t8; - goto L13; - } - - // trace_return[0]($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:188:9+37 - assume {:print "$track_return(18,1,0):", $t18} $t18 == $t18; - - // label L12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:189:5+1 - assume {:print "$at(72,10160,10161)"} true; -L12: - - // return $t18 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:189:5+1 - assume {:print "$at(72,10160,10161)"} true; - $ret0 := $t18; - return; - - // label L13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:189:5+1 -L13: - - // abort($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:189:5+1 - assume {:print "$at(72,10160,10161)"} true; - $abort_code := $t8; - $abort_flag := true; - return; - -} - -// fun account::create_account_unchecked [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:191:5+1182 -procedure {:inline 1} $1_account_create_account_unchecked(_$t0: int) returns ($ret0: $signer) -{ - // declare local variables - var $t1: Vec (int); - var $t2: $1_event_EventHandle'$1_account_CoinRegisterEvent'; - var $t3: int; - var $t4: $1_event_EventHandle'$1_account_KeyRotationEvent'; - var $t5: $signer; - var $t6: Vec (int); - var $t7: $signer; - var $t8: Vec (int); - var $t9: int; - var $t10: int; - var $t11: int; - var $t12: bool; - var $t13: int; - var $t14: int; - var $t15: int; - var $t16: $Mutation (int); - var $t17: $1_guid_GUID; - var $t18: $1_event_EventHandle'$1_account_CoinRegisterEvent'; - var $t19: $Mutation (int); - var $t20: $1_guid_GUID; - var $t21: $1_event_EventHandle'$1_account_KeyRotationEvent'; - var $t22: int; - var $t23: int; - var $t24: $1_option_Option'address'; - var $t25: $1_account_CapabilityOffer'$1_account_RotationCapability'; - var $t26: $1_option_Option'address'; - var $t27: $1_account_CapabilityOffer'$1_account_SignerCapability'; - var $t28: $1_account_Account; - var $t0: int; - var $temp_0'$1_event_EventHandle'$1_account_CoinRegisterEvent'': $1_event_EventHandle'$1_account_CoinRegisterEvent'; - var $temp_0'$1_event_EventHandle'$1_account_KeyRotationEvent'': $1_event_EventHandle'$1_account_KeyRotationEvent'; - var $temp_0'address': int; - var $temp_0'signer': $signer; - var $temp_0'u64': int; - var $temp_0'vec'u8'': Vec (int); - $t0 := _$t0; - - // bytecode translation starts here - // assume Identical($t6, bcs::$to_bytes
($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:34:9+45 - assume {:print "$at(73,1495,1540)"} true; - assume ($t6 == $1_bcs_$to_bytes'address'($t0)); - - // trace_local[new_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:191:5+1 - assume {:print "$at(72,10167,10168)"} true; - assume {:print "$track_local(18,2,0):", $t0} $t0 == $t0; - - // $t7 := opaque begin: create_signer::create_signer($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:192:27+26 - assume {:print "$at(72,10254,10280)"} true; - - // assume WellFormed($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:192:27+26 - assume $IsValid'signer'($t7) && $1_signer_is_txn_signer($t7) && $1_signer_is_txn_signer_addr($addr#$signer($t7)); - - // assume Eq
(signer::$address_of($t7), $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:192:27+26 - assume $IsEqual'address'($1_signer_$address_of($t7), $t0); - - // $t7 := opaque end: create_signer::create_signer($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:192:27+26 - - // trace_local[new_account]($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:192:13+11 - assume {:print "$track_local(18,2,5):", $t7} $t7 == $t7; - - // $t8 := bcs::to_bytes
($t0) on_abort goto L4 with $t9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:193:34+27 - assume {:print "$at(72,10315,10342)"} true; - call $t8 := $1_bcs_to_bytes'address'($t0); - if ($abort_flag) { - assume {:print "$at(72,10315,10342)"} true; - $t9 := $abort_code; - assume {:print "$track_abort(18,2):", $t9} $t9 == $t9; - goto L4; - } - - // trace_local[authentication_key]($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:193:13+18 - assume {:print "$track_local(18,2,1):", $t8} $t8 == $t8; - - // $t10 := vector::length($t8) on_abort goto L4 with $t9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:195:13+35 - assume {:print "$at(72,10373,10408)"} true; - call $t10 := $1_vector_length'u8'($t8); - if ($abort_flag) { - assume {:print "$at(72,10373,10408)"} true; - $t9 := $abort_code; - assume {:print "$track_abort(18,2):", $t9} $t9 == $t9; - goto L4; - } - - // $t11 := 32 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:195:52+2 - $t11 := 32; - assume $IsValid'u64'($t11); - - // $t12 := ==($t10, $t11) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:195:49+2 - $t12 := $IsEqual'u64'($t10, $t11); - - // if ($t12) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:194:9+140 - assume {:print "$at(72,10352,10492)"} true; - if ($t12) { goto L1; } else { goto L0; } - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:194:9+140 -L1: - - // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:194:9+140 - assume {:print "$at(72,10352,10492)"} true; - goto L2; - - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:196:37+29 - assume {:print "$at(72,10452,10481)"} true; -L0: - - // $t13 := 4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:196:37+29 - assume {:print "$at(72,10452,10481)"} true; - $t13 := 4; - assume $IsValid'u64'($t13); - - // $t14 := error::invalid_argument($t13) on_abort goto L4 with $t9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:196:13+54 - call $t14 := $1_error_invalid_argument($t13); - if ($abort_flag) { - assume {:print "$at(72,10428,10482)"} true; - $t9 := $abort_code; - assume {:print "$track_abort(18,2):", $t9} $t9 == $t9; - goto L4; - } - - // trace_abort($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:194:9+140 - assume {:print "$at(72,10352,10492)"} true; - assume {:print "$track_abort(18,2):", $t14} $t14 == $t14; - - // $t9 := move($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:194:9+140 - $t9 := $t14; - - // goto L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:194:9+140 - goto L4; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:199:33+1 - assume {:print "$at(72,10527,10528)"} true; -L2: - - // $t15 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:199:33+1 - assume {:print "$at(72,10527,10528)"} true; + // $t15 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:200:33+1 + assume {:print "$at(79,10573,10574)"} true; $t15 := 0; assume $IsValid'u64'($t15); - // $t3 := $t15 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:199:13+17 + // $t3 := $t15 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:200:13+17 $t3 := $t15; - // trace_local[guid_creation_num]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:199:13+17 + // trace_local[guid_creation_num]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:200:13+17 assume {:print "$track_local(18,2,3):", $t3} $t3 == $t3; - // $t16 := borrow_local($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:201:55+22 - assume {:print "$at(72,10585,10607)"} true; + // $t16 := borrow_local($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:202:55+22 + assume {:print "$at(79,10631,10653)"} true; $t16 := $Mutation($Local(3), EmptyVec(), $t3); - // $t17 := guid::create($t0, $t16) on_abort goto L4 with $t9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:201:29+49 + // $t17 := guid::create($t0, $t16) on_abort goto L4 with $t9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:202:29+49 call $t17,$t16 := $1_guid_create($t0, $t16); if ($abort_flag) { - assume {:print "$at(72,10559,10608)"} true; + assume {:print "$at(79,10605,10654)"} true; $t9 := $abort_code; assume {:print "$track_abort(18,2):", $t9} $t9 == $t9; goto L4; } - // write_back[LocalRoot($t3)@]($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:201:29+49 + // write_back[LocalRoot($t3)@]($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:202:29+49 $t3 := $Dereference($t16); - // trace_local[guid_creation_num]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:201:29+49 + // trace_local[guid_creation_num]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:202:29+49 assume {:print "$track_local(18,2,3):", $t3} $t3 == $t3; - // $t18 := event::new_event_handle($t17) on_abort goto L4 with $t9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:202:36+57 - assume {:print "$at(72,10645,10702)"} true; + // $t18 := event::new_event_handle($t17) on_abort goto L4 with $t9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:203:36+57 + assume {:print "$at(79,10691,10748)"} true; call $t18 := $1_event_new_event_handle'$1_account_CoinRegisterEvent'($t17); if ($abort_flag) { - assume {:print "$at(72,10645,10702)"} true; + assume {:print "$at(79,10691,10748)"} true; $t9 := $abort_code; assume {:print "$track_abort(18,2):", $t9} $t9 == $t9; goto L4; } - // trace_local[coin_register_events]($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:202:13+20 + // trace_local[coin_register_events]($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:203:13+20 assume {:print "$track_local(18,2,2):", $t18} $t18 == $t18; - // $t19 := borrow_local($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:204:59+22 - assume {:print "$at(72,10763,10785)"} true; + // $t19 := borrow_local($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:205:59+22 + assume {:print "$at(79,10809,10831)"} true; $t19 := $Mutation($Local(3), EmptyVec(), $t3); - // $t20 := guid::create($t0, $t19) on_abort goto L4 with $t9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:204:33+49 + // $t20 := guid::create($t0, $t19) on_abort goto L4 with $t9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:205:33+49 call $t20,$t19 := $1_guid_create($t0, $t19); if ($abort_flag) { - assume {:print "$at(72,10737,10786)"} true; + assume {:print "$at(79,10783,10832)"} true; $t9 := $abort_code; assume {:print "$track_abort(18,2):", $t9} $t9 == $t9; goto L4; } - // write_back[LocalRoot($t3)@]($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:204:33+49 + // write_back[LocalRoot($t3)@]($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:205:33+49 $t3 := $Dereference($t19); - // trace_local[guid_creation_num]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:204:33+49 + // trace_local[guid_creation_num]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:205:33+49 assume {:print "$track_local(18,2,3):", $t3} $t3 == $t3; - // $t21 := event::new_event_handle($t20) on_abort goto L4 with $t9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:205:35+60 - assume {:print "$at(72,10822,10882)"} true; + // $t21 := event::new_event_handle($t20) on_abort goto L4 with $t9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:206:35+60 + assume {:print "$at(79,10868,10928)"} true; call $t21 := $1_event_new_event_handle'$1_account_KeyRotationEvent'($t20); if ($abort_flag) { - assume {:print "$at(72,10822,10882)"} true; + assume {:print "$at(79,10868,10928)"} true; $t9 := $abort_code; assume {:print "$track_abort(18,2):", $t9} $t9 == $t9; goto L4; } - // trace_local[key_rotation_events]($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:205:13+19 + // trace_local[key_rotation_events]($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:206:13+19 assume {:print "$track_local(18,2,4):", $t21} $t21 == $t21; - // $t22 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:211:34+1 - assume {:print "$at(72,11019,11020)"} true; + // $t22 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:212:34+1 + assume {:print "$at(79,11065,11066)"} true; $t22 := 0; assume $IsValid'u64'($t22); - // $t23 := move($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:212:17+17 - assume {:print "$at(72,11038,11055)"} true; + // $t23 := move($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:213:17+17 + assume {:print "$at(79,11084,11101)"} true; $t23 := $t3; - // $t24 := opaque begin: option::none
() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:215:67+14 - assume {:print "$at(72,11198,11212)"} true; + // $t24 := opaque begin: option::none
() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:216:67+14 + assume {:print "$at(79,11244,11258)"} true; - // assume And(WellFormed($t24), Le(Len
(select option::Option.vec($t24)), 1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:215:67+14 + // assume And(WellFormed($t24), Le(Len
(select option::Option.vec($t24)), 1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:216:67+14 assume ($IsValid'$1_option_Option'address''($t24) && (LenVec($vec#$1_option_Option'address'($t24)) <= 1)); - // assume Eq>($t24, option::spec_none
()) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:215:67+14 + // assume Eq>($t24, option::spec_none
()) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:216:67+14 assume $IsEqual'$1_option_Option'address''($t24, $1_option_spec_none'address'()); - // $t24 := opaque end: option::none
() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:215:67+14 + // $t24 := opaque end: option::none
() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:216:67+14 - // $t25 := pack account::CapabilityOffer($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:215:44+39 + // $t25 := pack account::CapabilityOffer($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:216:44+39 $t25 := $1_account_CapabilityOffer'$1_account_RotationCapability'($t24); - // $t26 := opaque begin: option::none
() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:216:65+14 - assume {:print "$at(72,11280,11294)"} true; + // $t26 := opaque begin: option::none
() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:217:65+14 + assume {:print "$at(79,11326,11340)"} true; - // assume And(WellFormed($t26), Le(Len
(select option::Option.vec($t26)), 1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:216:65+14 + // assume And(WellFormed($t26), Le(Len
(select option::Option.vec($t26)), 1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:217:65+14 assume ($IsValid'$1_option_Option'address''($t26) && (LenVec($vec#$1_option_Option'address'($t26)) <= 1)); - // assume Eq>($t26, option::spec_none
()) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:216:65+14 + // assume Eq>($t26, option::spec_none
()) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:217:65+14 assume $IsEqual'$1_option_Option'address''($t26, $1_option_spec_none'address'()); - // $t26 := opaque end: option::none
() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:216:65+14 + // $t26 := opaque end: option::none
() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:217:65+14 - // $t27 := pack account::CapabilityOffer($t26) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:216:42+39 + // $t27 := pack account::CapabilityOffer($t26) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:217:42+39 $t27 := $1_account_CapabilityOffer'$1_account_SignerCapability'($t26); - // $t28 := pack account::Account($t8, $t22, $t23, $t18, $t21, $t25, $t27) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:209:13+371 - assume {:print "$at(72,10940,11311)"} true; + // $t28 := pack account::Account($t8, $t22, $t23, $t18, $t21, $t25, $t27) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:210:13+371 + assume {:print "$at(79,10986,11357)"} true; $t28 := $1_account_Account($t8, $t22, $t23, $t18, $t21, $t25, $t27); - // move_to($t28, $t7) on_abort goto L4 with $t9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:207:9+7 - assume {:print "$at(72,10893,10900)"} true; + // move_to($t28, $t7) on_abort goto L4 with $t9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:208:9+7 + assume {:print "$at(79,10939,10946)"} true; if ($ResourceExists($1_account_Account_$memory, $addr#$signer($t7))) { call $ExecFailureAbort(); } else { $1_account_Account_$memory := $ResourceUpdate($1_account_Account_$memory, $addr#$signer($t7), $t28); } if ($abort_flag) { - assume {:print "$at(72,10893,10900)"} true; + assume {:print "$at(79,10939,10946)"} true; $t9 := $abort_code; assume {:print "$track_abort(18,2):", $t9} $t9 == $t9; goto L4; } - // trace_return[0]($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:220:9+11 - assume {:print "$at(72,11332,11343)"} true; + // trace_return[0]($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:221:9+11 + assume {:print "$at(79,11378,11389)"} true; assume {:print "$track_return(18,2,0):", $t7} $t7 == $t7; - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:221:5+1 - assume {:print "$at(72,11348,11349)"} true; + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:222:5+1 + assume {:print "$at(79,11394,11395)"} true; L3: - // return $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:221:5+1 - assume {:print "$at(72,11348,11349)"} true; + // return $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:222:5+1 + assume {:print "$at(79,11394,11395)"} true; $ret0 := $t7; return; - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:221:5+1 + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:222:5+1 L4: - // abort($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:221:5+1 - assume {:print "$at(72,11348,11349)"} true; + // abort($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:222:5+1 + assume {:print "$at(79,11394,11395)"} true; $abort_code := $t9; $abort_flag := true; return; } -// fun account::create_guid [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:654:5+436 +// fun account::create_guid [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:676:5+436 procedure {:inline 1} $1_account_create_guid(_$t0: $signer) returns ($ret0: $1_guid_GUID) { // declare local variables @@ -12418,157 +11116,157 @@ procedure {:inline 1} $1_account_create_guid(_$t0: $signer) returns ($ret0: $1_g $t0 := _$t0; // bytecode translation starts here - // assume Identical($t4, signer::$address_of($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:430:9+46 - assume {:print "$at(73,21158,21204)"} true; + // assume Identical($t4, signer::$address_of($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:446:9+46 + assume {:print "$at(80,21696,21742)"} true; assume ($t4 == $1_signer_$address_of($t0)); - // assume Identical($t5, signer::$address_of($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:444:9+39 - assume {:print "$at(73,21650,21689)"} true; + // assume Identical($t5, signer::$address_of($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:461:9+39 + assume {:print "$at(80,22297,22336)"} true; assume ($t5 == $1_signer_$address_of($t0)); - // assume Identical($t6, global($t5)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:445:9+36 - assume {:print "$at(73,21698,21734)"} true; + // assume Identical($t6, global($t5)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:462:9+36 + assume {:print "$at(80,22345,22381)"} true; assume ($t6 == $ResourceValue($1_account_Account_$memory, $t5)); - // trace_local[account_signer]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:654:5+1 - assume {:print "$at(72,37618,37619)"} true; + // trace_local[account_signer]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:676:5+1 + assume {:print "$at(79,38585,38586)"} true; assume {:print "$track_local(18,5,0):", $t0} $t0 == $t0; - // $t7 := signer::address_of($t0) on_abort goto L4 with $t8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:655:20+34 - assume {:print "$at(72,37716,37750)"} true; + // $t7 := signer::address_of($t0) on_abort goto L4 with $t8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:677:20+34 + assume {:print "$at(79,38683,38717)"} true; call $t7 := $1_signer_address_of($t0); if ($abort_flag) { - assume {:print "$at(72,37716,37750)"} true; + assume {:print "$at(79,38683,38717)"} true; $t8 := $abort_code; assume {:print "$track_abort(18,5):", $t8} $t8 == $t8; goto L4; } - // trace_local[addr]($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:655:13+4 + // trace_local[addr]($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:677:13+4 assume {:print "$track_local(18,5,2):", $t7} $t7 == $t7; - // $t9 := borrow_global($t7) on_abort goto L4 with $t8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:656:23+17 - assume {:print "$at(72,37774,37791)"} true; + // $t9 := borrow_global($t7) on_abort goto L4 with $t8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:678:23+17 + assume {:print "$at(79,38741,38758)"} true; if (!$ResourceExists($1_account_Account_$memory, $t7)) { call $ExecFailureAbort(); } else { $t9 := $Mutation($Global($t7), EmptyVec(), $ResourceValue($1_account_Account_$memory, $t7)); } if ($abort_flag) { - assume {:print "$at(72,37774,37791)"} true; + assume {:print "$at(79,38741,38758)"} true; $t8 := $abort_code; assume {:print "$track_abort(18,5):", $t8} $t8 == $t8; goto L4; } - // trace_local[account]($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:656:13+7 + // trace_local[account]($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:678:13+7 $temp_0'$1_account_Account' := $Dereference($t9); assume {:print "$track_local(18,5,1):", $temp_0'$1_account_Account'} $temp_0'$1_account_Account' == $temp_0'$1_account_Account'; - // $t10 := borrow_field.guid_creation_num($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:657:39+30 - assume {:print "$at(72,37846,37876)"} true; + // $t10 := borrow_field.guid_creation_num($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:679:39+30 + assume {:print "$at(79,38813,38843)"} true; $t10 := $ChildMutation($t9, 2, $guid_creation_num#$1_account_Account($Dereference($t9))); - // $t11 := guid::create($t7, $t10) on_abort goto L4 with $t8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:657:20+50 + // $t11 := guid::create($t7, $t10) on_abort goto L4 with $t8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:679:20+50 call $t11,$t10 := $1_guid_create($t7, $t10); if ($abort_flag) { - assume {:print "$at(72,37827,37877)"} true; + assume {:print "$at(79,38794,38844)"} true; $t8 := $abort_code; assume {:print "$track_abort(18,5):", $t8} $t8 == $t8; goto L4; } - // write_back[Reference($t9).guid_creation_num (u64)]($t10) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:657:20+50 + // write_back[Reference($t9).guid_creation_num (u64)]($t10) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:679:20+50 $t9 := $UpdateMutation($t9, $Update'$1_account_Account'_guid_creation_num($Dereference($t9), $Dereference($t10))); - // trace_local[guid]($t11) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:657:13+4 + // trace_local[guid]($t11) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:679:13+4 assume {:print "$track_local(18,5,3):", $t11} $t11 == $t11; - // $t12 := get_field.guid_creation_num($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:659:13+25 - assume {:print "$at(72,37908,37933)"} true; + // $t12 := get_field.guid_creation_num($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:681:13+25 + assume {:print "$at(79,38875,38900)"} true; $t12 := $guid_creation_num#$1_account_Account($Dereference($t9)); - // pack_ref_deep($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:659:13+25 + // pack_ref_deep($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:681:13+25 - // write_back[account::Account@]($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:659:13+25 + // write_back[account::Account@]($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:681:13+25 $1_account_Account_$memory := $ResourceUpdate($1_account_Account_$memory, $GlobalLocationAddress($t9), $Dereference($t9)); - // $t13 := 1125899906842624 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:659:41+21 + // $t13 := 1125899906842624 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:681:41+21 $t13 := 1125899906842624; assume $IsValid'u64'($t13); - // $t14 := <($t12, $t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:659:39+1 + // $t14 := <($t12, $t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:681:39+1 call $t14 := $Lt($t12, $t13); - // if ($t14) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:658:9+147 - assume {:print "$at(72,37887,38034)"} true; + // if ($t14) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:680:9+147 + assume {:print "$at(79,38854,39001)"} true; if ($t14) { goto L1; } else { goto L0; } - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:658:9+147 + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:680:9+147 L1: - // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:658:9+147 - assume {:print "$at(72,37887,38034)"} true; + // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:680:9+147 + assume {:print "$at(79,38854,39001)"} true; goto L2; - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:660:33+31 - assume {:print "$at(72,37991,38022)"} true; + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:682:33+31 + assume {:print "$at(79,38958,38989)"} true; L0: - // $t15 := 20 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:660:33+31 - assume {:print "$at(72,37991,38022)"} true; + // $t15 := 20 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:682:33+31 + assume {:print "$at(79,38958,38989)"} true; $t15 := 20; assume $IsValid'u64'($t15); - // $t16 := error::out_of_range($t15) on_abort goto L4 with $t8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:660:13+52 + // $t16 := error::out_of_range($t15) on_abort goto L4 with $t8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:682:13+52 call $t16 := $1_error_out_of_range($t15); if ($abort_flag) { - assume {:print "$at(72,37971,38023)"} true; + assume {:print "$at(79,38938,38990)"} true; $t8 := $abort_code; assume {:print "$track_abort(18,5):", $t8} $t8 == $t8; goto L4; } - // trace_abort($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:658:9+147 - assume {:print "$at(72,37887,38034)"} true; + // trace_abort($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:680:9+147 + assume {:print "$at(79,38854,39001)"} true; assume {:print "$track_abort(18,5):", $t16} $t16 == $t16; - // $t8 := move($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:658:9+147 + // $t8 := move($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:680:9+147 $t8 := $t16; - // goto L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:658:9+147 + // goto L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:680:9+147 goto L4; - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:662:9+4 - assume {:print "$at(72,38044,38048)"} true; + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:684:9+4 + assume {:print "$at(79,39011,39015)"} true; L2: - // trace_return[0]($t11) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:662:9+4 - assume {:print "$at(72,38044,38048)"} true; + // trace_return[0]($t11) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:684:9+4 + assume {:print "$at(79,39011,39015)"} true; assume {:print "$track_return(18,5,0):", $t11} $t11 == $t11; - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:663:5+1 - assume {:print "$at(72,38053,38054)"} true; + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:685:5+1 + assume {:print "$at(79,39020,39021)"} true; L3: - // return $t11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:663:5+1 - assume {:print "$at(72,38053,38054)"} true; + // return $t11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:685:5+1 + assume {:print "$at(79,39020,39021)"} true; $ret0 := $t11; return; - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:663:5+1 + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:685:5+1 L4: - // abort($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:663:5+1 - assume {:print "$at(72,38053,38054)"} true; + // abort($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:685:5+1 + assume {:print "$at(79,39020,39021)"} true; $abort_code := $t8; $abort_flag := true; return; } -// fun account::create_resource_account [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:602:5+1378 +// fun account::create_resource_account [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:624:5+1378 procedure {:inline 1} $1_account_create_resource_account(_$t0: $signer, _$t1: Vec (int)) returns ($ret0: $signer, $ret1: $1_account_SignerCapability) { // declare local variables @@ -12617,345 +11315,345 @@ procedure {:inline 1} $1_account_create_resource_account(_$t0: $signer, _$t1: Ve $t1 := _$t1; // bytecode translation starts here - // assume Identical($t9, signer::$address_of($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:396:9+45 - assume {:print "$at(73,19766,19811)"} true; + // assume Identical($t9, signer::$address_of($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:412:9+45 + assume {:print "$at(80,20304,20349)"} true; assume ($t9 == $1_signer_$address_of($t0)); - // assume Identical($t10, account::spec_create_resource_address($t9, $t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:397:9+68 - assume {:print "$at(73,19820,19888)"} true; + // assume Identical($t10, account::spec_create_resource_address($t9, $t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:413:9+68 + assume {:print "$at(80,20358,20426)"} true; assume ($t10 == $1_account_spec_create_resource_address($t9, $t1)); - // assume Identical($t11, global($t10)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:464:9+45 - assume {:print "$at(73,22404,22449)"} true; + // assume Identical($t11, global($t10)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:481:9+45 + assume {:print "$at(80,23051,23096)"} true; assume ($t11 == $ResourceValue($1_account_Account_$memory, $t10)); - // assume Identical($t12, bcs::$to_bytes
($t10)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:34:9+45 - assume {:print "$at(73,1495,1540)"} true; + // assume Identical($t12, bcs::$to_bytes
($t10)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:40:9+45 + assume {:print "$at(80,1640,1685)"} true; assume ($t12 == $1_bcs_$to_bytes'address'($t10)); - // trace_local[source]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:602:5+1 - assume {:print "$at(72,35313,35314)"} true; + // trace_local[source]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:624:5+1 + assume {:print "$at(79,36280,36281)"} true; assume {:print "$track_local(18,6,0):", $t0} $t0 == $t0; - // trace_local[seed]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:602:5+1 + // trace_local[seed]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:624:5+1 assume {:print "$track_local(18,6,1):", $t1} $t1 == $t1; - // $t13 := signer::address_of($t0) on_abort goto L10 with $t14 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:603:54+26 - assume {:print "$at(72,35483,35509)"} true; + // $t13 := signer::address_of($t0) on_abort goto L10 with $t14 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:625:54+26 + assume {:print "$at(79,36450,36476)"} true; call $t13 := $1_signer_address_of($t0); if ($abort_flag) { - assume {:print "$at(72,35483,35509)"} true; + assume {:print "$at(79,36450,36476)"} true; $t14 := $abort_code; assume {:print "$track_abort(18,6):", $t14} $t14 == $t14; goto L10; } - // $t15 := opaque begin: account::create_resource_address($t13, $t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:603:29+58 + // $t15 := opaque begin: account::create_resource_address($t13, $t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:625:29+58 - // assume WellFormed($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:603:29+58 + // assume WellFormed($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:625:29+58 assume $IsValid'address'($t15); - // assume Eq
($t15, account::spec_create_resource_address($t13, $t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:603:29+58 + // assume Eq
($t15, account::spec_create_resource_address($t13, $t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:625:29+58 assume $IsEqual'address'($t15, $1_account_spec_create_resource_address($t13, $t1)); - // $t15 := opaque end: account::create_resource_address($t13, $t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:603:29+58 + // $t15 := opaque end: account::create_resource_address($t13, $t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:625:29+58 - // trace_local[resource_addr]($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:603:13+13 + // trace_local[resource_addr]($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:625:13+13 assume {:print "$track_local(18,6,7):", $t15} $t15 == $t15; - // $t16 := account::exists_at($t15) on_abort goto L10 with $t14 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:604:28+24 - assume {:print "$at(72,35545,35569)"} true; + // $t16 := account::exists_at($t15) on_abort goto L10 with $t14 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:626:28+24 + assume {:print "$at(79,36512,36536)"} true; call $t16 := $1_account_exists_at($t15); if ($abort_flag) { - assume {:print "$at(72,35545,35569)"} true; + assume {:print "$at(79,36512,36536)"} true; $t14 := $abort_code; assume {:print "$track_abort(18,6):", $t14} $t14 == $t14; goto L10; } - // if ($t16) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:604:24+532 + // if ($t16) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:626:24+532 if ($t16) { goto L1; } else { goto L0; } - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:605:50+13 - assume {:print "$at(72,35622,35635)"} true; + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:627:50+13 + assume {:print "$at(79,36589,36602)"} true; L1: - // $t17 := get_global($t15) on_abort goto L10 with $t14 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:605:27+13 - assume {:print "$at(72,35599,35612)"} true; + // $t17 := get_global($t15) on_abort goto L10 with $t14 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:627:27+13 + assume {:print "$at(79,36566,36579)"} true; if (!$ResourceExists($1_account_Account_$memory, $t15)) { call $ExecFailureAbort(); } else { $t17 := $ResourceValue($1_account_Account_$memory, $t15); } if ($abort_flag) { - assume {:print "$at(72,35599,35612)"} true; + assume {:print "$at(79,36566,36579)"} true; $t14 := $abort_code; assume {:print "$track_abort(18,6):", $t14} $t14 == $t14; goto L10; } - // trace_local[account]($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:605:17+7 + // trace_local[account]($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:627:17+7 assume {:print "$track_local(18,6,4):", $t17} $t17 == $t17; - // $t18 := get_field.signer_capability_offer($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:607:34+31 - assume {:print "$at(72,35692,35723)"} true; + // $t18 := get_field.signer_capability_offer($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:629:34+31 + assume {:print "$at(79,36659,36690)"} true; $t18 := $signer_capability_offer#$1_account_Account($t17); - // $t19 := get_field>.for($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:607:33+36 + // $t19 := get_field>.for($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:629:33+36 $t19 := $for#$1_account_CapabilityOffer'$1_account_SignerCapability'($t18); - // $t20 := opaque begin: option::is_none
($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:607:17+53 + // $t20 := opaque begin: option::is_none
($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:629:17+53 - // assume WellFormed($t20) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:607:17+53 + // assume WellFormed($t20) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:629:17+53 assume $IsValid'bool'($t20); - // assume Eq($t20, option::spec_is_none
($t19)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:607:17+53 + // assume Eq($t20, option::spec_is_none
($t19)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:629:17+53 assume $IsEqual'bool'($t20, $1_option_spec_is_none'address'($t19)); - // $t20 := opaque end: option::is_none
($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:607:17+53 + // $t20 := opaque end: option::is_none
($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:629:17+53 - // if ($t20) goto L3 else goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:606:13+159 - assume {:print "$at(72,35650,35809)"} true; + // if ($t20) goto L3 else goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:628:13+159 + assume {:print "$at(79,36617,36776)"} true; if ($t20) { goto L3; } else { goto L2; } - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:606:13+159 + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:628:13+159 L3: - // goto L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:606:13+159 - assume {:print "$at(72,35650,35809)"} true; + // goto L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:628:13+159 + assume {:print "$at(79,36617,36776)"} true; goto L4; - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:606:13+159 + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:628:13+159 L2: - // $t21 := 15 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:608:39+25 - assume {:print "$at(72,35768,35793)"} true; + // $t21 := 15 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:630:39+25 + assume {:print "$at(79,36735,36760)"} true; $t21 := 15; assume $IsValid'u64'($t21); - // $t22 := error::already_exists($t21) on_abort goto L10 with $t14 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:608:17+48 + // $t22 := error::already_exists($t21) on_abort goto L10 with $t14 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:630:17+48 call $t22 := $1_error_already_exists($t21); if ($abort_flag) { - assume {:print "$at(72,35746,35794)"} true; + assume {:print "$at(79,36713,36761)"} true; $t14 := $abort_code; assume {:print "$track_abort(18,6):", $t14} $t14 == $t14; goto L10; } - // trace_abort($t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:606:13+159 - assume {:print "$at(72,35650,35809)"} true; + // trace_abort($t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:628:13+159 + assume {:print "$at(79,36617,36776)"} true; assume {:print "$track_abort(18,6):", $t22} $t22 == $t22; - // $t14 := move($t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:606:13+159 + // $t14 := move($t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:628:13+159 $t14 := $t22; - // goto L10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:606:13+159 + // goto L10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:628:13+159 goto L10; - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:611:17+7 - assume {:print "$at(72,35848,35855)"} true; + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:633:17+7 + assume {:print "$at(79,36815,36822)"} true; L4: - // $t23 := get_field.sequence_number($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:611:17+23 - assume {:print "$at(72,35848,35871)"} true; + // $t23 := get_field.sequence_number($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:633:17+23 + assume {:print "$at(79,36815,36838)"} true; $t23 := $sequence_number#$1_account_Account($t17); - // $t24 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:611:44+1 + // $t24 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:633:44+1 $t24 := 0; assume $IsValid'u64'($t24); - // $t25 := ==($t23, $t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:611:41+2 + // $t25 := ==($t23, $t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:633:41+2 $t25 := $IsEqual'u64'($t23, $t24); - // if ($t25) goto L6 else goto L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:610:13+129 - assume {:print "$at(72,35823,35952)"} true; + // if ($t25) goto L6 else goto L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:632:13+129 + assume {:print "$at(79,36790,36919)"} true; if ($t25) { goto L6; } else { goto L5; } - // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:610:13+129 + // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:632:13+129 L6: - // goto L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:610:13+129 - assume {:print "$at(72,35823,35952)"} true; + // goto L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:632:13+129 + assume {:print "$at(79,36790,36919)"} true; goto L7; - // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:612:38+21 - assume {:print "$at(72,35915,35936)"} true; + // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:634:38+21 + assume {:print "$at(79,36882,36903)"} true; L5: - // $t26 := 16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:612:38+21 - assume {:print "$at(72,35915,35936)"} true; + // $t26 := 16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:634:38+21 + assume {:print "$at(79,36882,36903)"} true; $t26 := 16; assume $IsValid'u64'($t26); - // $t27 := error::invalid_state($t26) on_abort goto L10 with $t14 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:612:17+43 + // $t27 := error::invalid_state($t26) on_abort goto L10 with $t14 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:634:17+43 call $t27 := $1_error_invalid_state($t26); if ($abort_flag) { - assume {:print "$at(72,35894,35937)"} true; + assume {:print "$at(79,36861,36904)"} true; $t14 := $abort_code; assume {:print "$track_abort(18,6):", $t14} $t14 == $t14; goto L10; } - // trace_abort($t27) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:610:13+129 - assume {:print "$at(72,35823,35952)"} true; + // trace_abort($t27) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:632:13+129 + assume {:print "$at(79,36790,36919)"} true; assume {:print "$track_abort(18,6):", $t27} $t27 == $t27; - // $t14 := move($t27) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:610:13+129 + // $t14 := move($t27) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:632:13+129 $t14 := $t27; - // goto L10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:610:13+129 + // goto L10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:632:13+129 goto L10; - // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:614:27+13 - assume {:print "$at(72,35980,35993)"} true; + // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:636:27+13 + assume {:print "$at(79,36947,36960)"} true; L7: - // $t3 := opaque begin: create_signer::create_signer($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:614:13+28 - assume {:print "$at(72,35966,35994)"} true; + // $t3 := opaque begin: create_signer::create_signer($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:636:13+28 + assume {:print "$at(79,36933,36961)"} true; - // assume WellFormed($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:614:13+28 + // assume WellFormed($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:636:13+28 assume $IsValid'signer'($t3) && $1_signer_is_txn_signer($t3) && $1_signer_is_txn_signer_addr($addr#$signer($t3)); - // assume Eq
(signer::$address_of($t3), $t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:614:13+28 + // assume Eq
(signer::$address_of($t3), $t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:636:13+28 assume $IsEqual'address'($1_signer_$address_of($t3), $t15); - // $t3 := opaque end: create_signer::create_signer($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:614:13+28 + // $t3 := opaque end: create_signer::create_signer($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:636:13+28 - // goto L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:604:24+532 - assume {:print "$at(72,35541,36073)"} true; + // goto L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:626:24+532 + assume {:print "$at(79,36508,37040)"} true; goto L8; - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:616:38+13 - assume {:print "$at(72,36049,36062)"} true; + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:638:38+13 + assume {:print "$at(79,37016,37029)"} true; L0: - // assume Identical($t28, bcs::$to_bytes
($t15)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:34:9+45 - assume {:print "$at(73,1495,1540)"} true; + // assume Identical($t28, bcs::$to_bytes
($t15)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:40:9+45 + assume {:print "$at(80,1640,1685)"} true; assume ($t28 == $1_bcs_$to_bytes'address'($t15)); - // $t3 := account::create_account_unchecked($t15) on_abort goto L10 with $t14 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:616:13+39 - assume {:print "$at(72,36024,36063)"} true; + // $t3 := account::create_account_unchecked($t15) on_abort goto L10 with $t14 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:638:13+39 + assume {:print "$at(79,36991,37030)"} true; call $t3 := $1_account_create_account_unchecked($t15); if ($abort_flag) { - assume {:print "$at(72,36024,36063)"} true; + assume {:print "$at(79,36991,37030)"} true; $t14 := $abort_code; assume {:print "$track_abort(18,6):", $t14} $t14 == $t14; goto L10; } - // label L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:604:24+532 - assume {:print "$at(72,35541,36073)"} true; + // label L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:626:24+532 + assume {:print "$at(79,36508,37040)"} true; L8: - // trace_local[resource]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:604:13+8 - assume {:print "$at(72,35530,35538)"} true; + // trace_local[resource]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:626:13+8 + assume {:print "$at(79,36497,36505)"} true; assume {:print "$track_local(18,6,6):", $t3} $t3 == $t3; - // $t29 := [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:622:55+13 - assume {:print "$at(72,36428,36441)"} true; + // $t29 := [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:644:55+13 + assume {:print "$at(79,37395,37408)"} true; $t29 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(0, 0, 0, 0), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)); assume $IsValid'vec'u8''($t29); - // assume Identical($t30, signer::$address_of($t3)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:68:9+39 - assume {:print "$at(73,2861,2900)"} true; + // assume Identical($t30, signer::$address_of($t3)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:74:9+39 + assume {:print "$at(80,3006,3045)"} true; assume ($t30 == $1_signer_$address_of($t3)); - // account::rotate_authentication_key_internal($t3, $t29) on_abort goto L10 with $t14 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:622:9+60 - assume {:print "$at(72,36382,36442)"} true; + // account::rotate_authentication_key_internal($t3, $t29) on_abort goto L10 with $t14 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:644:9+60 + assume {:print "$at(79,37349,37409)"} true; call $1_account_rotate_authentication_key_internal($t3, $t29); if ($abort_flag) { - assume {:print "$at(72,36382,36442)"} true; + assume {:print "$at(79,37349,37409)"} true; $t14 := $abort_code; assume {:print "$track_abort(18,6):", $t14} $t14 == $t14; goto L10; } - // $t31 := borrow_global($t15) on_abort goto L10 with $t14 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:624:23+17 - assume {:print "$at(72,36467,36484)"} true; + // $t31 := borrow_global($t15) on_abort goto L10 with $t14 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:646:23+17 + assume {:print "$at(79,37434,37451)"} true; if (!$ResourceExists($1_account_Account_$memory, $t15)) { call $ExecFailureAbort(); } else { $t31 := $Mutation($Global($t15), EmptyVec(), $ResourceValue($1_account_Account_$memory, $t15)); } if ($abort_flag) { - assume {:print "$at(72,36467,36484)"} true; + assume {:print "$at(79,37434,37451)"} true; $t14 := $abort_code; assume {:print "$track_abort(18,6):", $t14} $t14 == $t14; goto L10; } - // trace_local[account#3]($t31) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:624:13+7 + // trace_local[account#3]($t31) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:646:13+7 $temp_0'$1_account_Account' := $Dereference($t31); assume {:print "$track_local(18,6,5):", $temp_0'$1_account_Account'} $temp_0'$1_account_Account' == $temp_0'$1_account_Account'; - // $t32 := opaque begin: option::some
($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:625:47+27 - assume {:print "$at(72,36556,36583)"} true; + // $t32 := opaque begin: option::some
($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:647:47+27 + assume {:print "$at(79,37523,37550)"} true; - // assume And(WellFormed($t32), Le(Len
(select option::Option.vec($t32)), 1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:625:47+27 + // assume And(WellFormed($t32), Le(Len
(select option::Option.vec($t32)), 1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:647:47+27 assume ($IsValid'$1_option_Option'address''($t32) && (LenVec($vec#$1_option_Option'address'($t32)) <= 1)); - // assume Eq>($t32, option::spec_some
($t15)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:625:47+27 + // assume Eq>($t32, option::spec_some
($t15)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:647:47+27 assume $IsEqual'$1_option_Option'address''($t32, $1_option_spec_some'address'($t15)); - // $t32 := opaque end: option::some
($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:625:47+27 + // $t32 := opaque end: option::some
($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:647:47+27 - // $t33 := borrow_field.signer_capability_offer($t31) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:625:9+31 + // $t33 := borrow_field.signer_capability_offer($t31) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:647:9+31 $t33 := $ChildMutation($t31, 6, $signer_capability_offer#$1_account_Account($Dereference($t31))); - // $t34 := borrow_field>.for($t33) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:625:9+35 + // $t34 := borrow_field>.for($t33) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:647:9+35 $t34 := $ChildMutation($t33, 0, $for#$1_account_CapabilityOffer'$1_account_SignerCapability'($Dereference($t33))); - // write_ref($t34, $t32) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:625:9+65 + // write_ref($t34, $t32) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:647:9+65 $t34 := $UpdateMutation($t34, $t32); - // write_back[Reference($t33).for (option::Option
)]($t34) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:625:9+65 + // write_back[Reference($t33).for (option::Option
)]($t34) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:647:9+65 $t33 := $UpdateMutation($t33, $Update'$1_account_CapabilityOffer'$1_account_SignerCapability''_for($Dereference($t33), $Dereference($t34))); - // write_back[Reference($t31).signer_capability_offer (account::CapabilityOffer)]($t33) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:625:9+65 + // write_back[Reference($t31).signer_capability_offer (account::CapabilityOffer)]($t33) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:647:9+65 $t31 := $UpdateMutation($t31, $Update'$1_account_Account'_signer_capability_offer($Dereference($t31), $Dereference($t33))); - // pack_ref_deep($t31) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:625:9+65 + // pack_ref_deep($t31) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:647:9+65 - // write_back[account::Account@]($t31) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:625:9+65 + // write_back[account::Account@]($t31) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:647:9+65 $1_account_Account_$memory := $ResourceUpdate($1_account_Account_$memory, $GlobalLocationAddress($t31), $Dereference($t31)); - // $t35 := pack account::SignerCapability($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:626:26+43 - assume {:print "$at(72,36610,36653)"} true; + // $t35 := pack account::SignerCapability($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:648:26+43 + assume {:print "$at(79,37577,37620)"} true; $t35 := $1_account_SignerCapability($t15); - // trace_local[signer_cap]($t35) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:626:13+10 + // trace_local[signer_cap]($t35) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:648:13+10 assume {:print "$track_local(18,6,8):", $t35} $t35 == $t35; - // trace_return[0]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:627:9+22 - assume {:print "$at(72,36663,36685)"} true; + // trace_return[0]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:649:9+22 + assume {:print "$at(79,37630,37652)"} true; assume {:print "$track_return(18,6,0):", $t3} $t3 == $t3; - // trace_return[1]($t35) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:627:9+22 + // trace_return[1]($t35) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:649:9+22 assume {:print "$track_return(18,6,1):", $t35} $t35 == $t35; - // label L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:628:5+1 - assume {:print "$at(72,36690,36691)"} true; + // label L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:650:5+1 + assume {:print "$at(79,37657,37658)"} true; L9: - // return ($t3, $t35) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:628:5+1 - assume {:print "$at(72,36690,36691)"} true; + // return ($t3, $t35) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:650:5+1 + assume {:print "$at(79,37657,37658)"} true; $ret0 := $t3; $ret1 := $t35; return; - // label L10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:628:5+1 + // label L10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:650:5+1 L10: - // abort($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:628:5+1 - assume {:print "$at(72,36690,36691)"} true; + // abort($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:650:5+1 + assume {:print "$at(79,37657,37658)"} true; $abort_code := $t14; $abort_flag := true; return; } -// fun account::create_signer_with_capability [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:707:5+156 +// fun account::create_signer_with_capability [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:729:5+156 procedure {:inline 1} $1_account_create_signer_with_capability(_$t0: $1_account_SignerCapability) returns ($ret0: $signer) { // declare local variables @@ -12968,44 +11666,44 @@ procedure {:inline 1} $1_account_create_signer_with_capability(_$t0: $1_account_ $t0 := _$t0; // bytecode translation starts here - // assume Identical($t1, select account::SignerCapability.account($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:458:9+30 - assume {:print "$at(73,22226,22256)"} true; + // assume Identical($t1, select account::SignerCapability.account($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:475:9+30 + assume {:print "$at(80,22873,22903)"} true; assume ($t1 == $account#$1_account_SignerCapability($t0)); - // trace_local[capability]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:707:5+1 - assume {:print "$at(72,39859,39860)"} true; + // trace_local[capability]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:729:5+1 + assume {:print "$at(79,40826,40827)"} true; assume {:print "$track_local(18,8,0):", $t0} $t0 == $t0; - // $t2 := get_field.account($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:708:20+19 - assume {:print "$at(72,39960,39979)"} true; + // $t2 := get_field.account($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:730:20+19 + assume {:print "$at(79,40927,40946)"} true; $t2 := $account#$1_account_SignerCapability($t0); - // $t3 := opaque begin: create_signer::create_signer($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:709:9+20 - assume {:print "$at(72,39989,40009)"} true; + // $t3 := opaque begin: create_signer::create_signer($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:731:9+20 + assume {:print "$at(79,40956,40976)"} true; - // assume WellFormed($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:709:9+20 + // assume WellFormed($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:731:9+20 assume $IsValid'signer'($t3) && $1_signer_is_txn_signer($t3) && $1_signer_is_txn_signer_addr($addr#$signer($t3)); - // assume Eq
(signer::$address_of($t3), $t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:709:9+20 + // assume Eq
(signer::$address_of($t3), $t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:731:9+20 assume $IsEqual'address'($1_signer_$address_of($t3), $t2); - // $t3 := opaque end: create_signer::create_signer($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:709:9+20 + // $t3 := opaque end: create_signer::create_signer($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:731:9+20 - // trace_return[0]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:709:9+20 + // trace_return[0]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:731:9+20 assume {:print "$track_return(18,8,0):", $t3} $t3 == $t3; - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:710:5+1 - assume {:print "$at(72,40014,40015)"} true; + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:732:5+1 + assume {:print "$at(79,40981,40982)"} true; L1: - // return $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:710:5+1 - assume {:print "$at(72,40014,40015)"} true; + // return $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:732:5+1 + assume {:print "$at(79,40981,40982)"} true; $ret0 := $t3; return; } -// fun account::exists_at [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:224:5+79 +// fun account::exists_at [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:225:5+79 procedure {:inline 1} $1_account_exists_at(_$t0: int) returns ($ret0: bool) { // declare local variables @@ -13016,29 +11714,29 @@ procedure {:inline 1} $1_account_exists_at(_$t0: int) returns ($ret0: bool) $t0 := _$t0; // bytecode translation starts here - // trace_local[addr]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:224:5+1 - assume {:print "$at(72,11367,11368)"} true; + // trace_local[addr]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:225:5+1 + assume {:print "$at(79,11413,11414)"} true; assume {:print "$track_local(18,9,0):", $t0} $t0 == $t0; - // $t1 := exists($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:225:9+6 - assume {:print "$at(72,11419,11425)"} true; + // $t1 := exists($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:226:9+6 + assume {:print "$at(79,11465,11471)"} true; $t1 := $ResourceExists($1_account_Account_$memory, $t0); - // trace_return[0]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:225:9+21 + // trace_return[0]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:226:9+21 assume {:print "$track_return(18,9,0):", $t1} $t1 == $t1; - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:226:5+1 - assume {:print "$at(72,11445,11446)"} true; + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:227:5+1 + assume {:print "$at(79,11491,11492)"} true; L1: - // return $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:226:5+1 - assume {:print "$at(72,11445,11446)"} true; + // return $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:227:5+1 + assume {:print "$at(79,11491,11492)"} true; $ret0 := $t1; return; } -// fun account::register_coin [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:677:5+364 +// fun account::register_coin [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:699:5+364 procedure {:inline 1} $1_account_register_coin'$1_aptos_coin_AptosCoin'(_$t0: int) returns () { // declare local variables @@ -13053,30 +11751,30 @@ procedure {:inline 1} $1_account_register_coin'$1_aptos_coin_AptosCoin'(_$t0: in $t0 := _$t0; // bytecode translation starts here - // trace_local[account_addr]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:677:5+1 - assume {:print "$at(72,38611,38612)"} true; - assume {:print "$track_local(18,21,0):", $t0} $t0 == $t0; + // trace_local[account_addr]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:699:5+1 + assume {:print "$at(79,39578,39579)"} true; + assume {:print "$track_local(18,23,0):", $t0} $t0 == $t0; - // $t1 := borrow_global($t0) on_abort goto L2 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:678:23+17 - assume {:print "$at(72,38718,38735)"} true; + // $t1 := borrow_global($t0) on_abort goto L2 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:700:23+17 + assume {:print "$at(79,39685,39702)"} true; if (!$ResourceExists($1_account_Account_$memory, $t0)) { call $ExecFailureAbort(); } else { $t1 := $Mutation($Global($t0), EmptyVec(), $ResourceValue($1_account_Account_$memory, $t0)); } if ($abort_flag) { - assume {:print "$at(72,38718,38735)"} true; + assume {:print "$at(79,39685,39702)"} true; $t2 := $abort_code; - assume {:print "$track_abort(18,21):", $t2} $t2 == $t2; + assume {:print "$track_abort(18,23):", $t2} $t2 == $t2; goto L2; } - // $t3 := borrow_field.coin_register_events($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:680:13+33 - assume {:print "$at(72,38818,38851)"} true; + // $t3 := borrow_field.coin_register_events($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:702:13+33 + assume {:print "$at(79,39785,39818)"} true; $t3 := $ChildMutation($t1, 3, $coin_register_events#$1_account_Account($Dereference($t1))); - // $t4 := type_info::type_of<#0>() on_abort goto L2 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:682:28+30 - assume {:print "$at(72,38912,38942)"} true; + // $t4 := type_info::type_of<#0>() on_abort goto L2 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:704:28+30 + assume {:print "$at(79,39879,39909)"} true; if (!true) { call $ExecFailureAbort(); } @@ -13084,50 +11782,50 @@ procedure {:inline 1} $1_account_register_coin'$1_aptos_coin_AptosCoin'(_$t0: in $t4 := $1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)); } if ($abort_flag) { - assume {:print "$at(72,38912,38942)"} true; + assume {:print "$at(79,39879,39909)"} true; $t2 := $abort_code; - assume {:print "$track_abort(18,21):", $t2} $t2 == $t2; + assume {:print "$track_abort(18,23):", $t2} $t2 == $t2; goto L2; } - // $t5 := pack account::CoinRegisterEvent($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:681:13+92 - assume {:print "$at(72,38865,38957)"} true; + // $t5 := pack account::CoinRegisterEvent($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:703:13+92 + assume {:print "$at(79,39832,39924)"} true; $t5 := $1_account_CoinRegisterEvent($t4); - // opaque begin: event::emit_event($t3, $t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:679:9+200 - assume {:print "$at(72,38768,38968)"} true; + // opaque begin: event::emit_event($t3, $t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:701:9+200 + assume {:print "$at(79,39735,39935)"} true; - // opaque end: event::emit_event($t3, $t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:679:9+200 + // opaque end: event::emit_event($t3, $t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:701:9+200 - // write_back[Reference($t1).coin_register_events (event::EventHandle)]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:679:9+200 + // write_back[Reference($t1).coin_register_events (event::EventHandle)]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:701:9+200 $t1 := $UpdateMutation($t1, $Update'$1_account_Account'_coin_register_events($Dereference($t1), $Dereference($t3))); - // pack_ref_deep($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:679:9+200 + // pack_ref_deep($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:701:9+200 - // write_back[account::Account@]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:679:9+200 + // write_back[account::Account@]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:701:9+200 $1_account_Account_$memory := $ResourceUpdate($1_account_Account_$memory, $GlobalLocationAddress($t1), $Dereference($t1)); - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:685:5+1 - assume {:print "$at(72,38974,38975)"} true; + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:707:5+1 + assume {:print "$at(79,39941,39942)"} true; L1: - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:685:5+1 - assume {:print "$at(72,38974,38975)"} true; + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:707:5+1 + assume {:print "$at(79,39941,39942)"} true; return; - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:685:5+1 + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:707:5+1 L2: - // abort($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:685:5+1 - assume {:print "$at(72,38974,38975)"} true; + // abort($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:707:5+1 + assume {:print "$at(79,39941,39942)"} true; $abort_code := $t2; $abort_flag := true; return; } -// fun account::rotate_authentication_key_internal [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:256:5+516 +// fun account::rotate_authentication_key_internal [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:257:5+516 procedure {:inline 1} $1_account_rotate_authentication_key_internal(_$t0: $signer, _$t1: Vec (int)) returns () { // declare local variables @@ -13157,188 +11855,188 @@ procedure {:inline 1} $1_account_rotate_authentication_key_internal(_$t0: $signe $t1 := _$t1; // bytecode translation starts here - // assume Identical($t4, signer::$address_of($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:68:9+39 - assume {:print "$at(73,2861,2900)"} true; + // assume Identical($t4, signer::$address_of($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:74:9+39 + assume {:print "$at(80,3006,3045)"} true; assume ($t4 == $1_signer_$address_of($t0)); - // trace_local[account]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:256:5+1 - assume {:print "$at(72,12425,12426)"} true; - assume {:print "$track_local(18,27,0):", $t0} $t0 == $t0; + // trace_local[account]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:257:5+1 + assume {:print "$at(79,12471,12472)"} true; + assume {:print "$track_local(18,29,0):", $t0} $t0 == $t0; - // trace_local[new_auth_key]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:256:5+1 - assume {:print "$track_local(18,27,1):", $t1} $t1 == $t1; + // trace_local[new_auth_key]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:257:5+1 + assume {:print "$track_local(18,29,1):", $t1} $t1 == $t1; - // $t5 := signer::address_of($t0) on_abort goto L7 with $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:257:20+27 - assume {:print "$at(72,12561,12588)"} true; + // $t5 := signer::address_of($t0) on_abort goto L7 with $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:258:20+27 + assume {:print "$at(79,12607,12634)"} true; call $t5 := $1_signer_address_of($t0); if ($abort_flag) { - assume {:print "$at(72,12561,12588)"} true; + assume {:print "$at(79,12607,12634)"} true; $t6 := $abort_code; - assume {:print "$track_abort(18,27):", $t6} $t6 == $t6; + assume {:print "$track_abort(18,29):", $t6} $t6 == $t6; goto L7; } - // trace_local[addr]($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:257:13+4 - assume {:print "$track_local(18,27,3):", $t5} $t5 == $t5; + // trace_local[addr]($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:258:13+4 + assume {:print "$track_local(18,29,3):", $t5} $t5 == $t5; - // $t7 := account::exists_at($t5) on_abort goto L7 with $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:258:17+15 - assume {:print "$at(72,12606,12621)"} true; + // $t7 := account::exists_at($t5) on_abort goto L7 with $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:259:17+15 + assume {:print "$at(79,12652,12667)"} true; call $t7 := $1_account_exists_at($t5); if ($abort_flag) { - assume {:print "$at(72,12606,12621)"} true; + assume {:print "$at(79,12652,12667)"} true; $t6 := $abort_code; - assume {:print "$track_abort(18,27):", $t6} $t6 == $t6; + assume {:print "$track_abort(18,29):", $t6} $t6 == $t6; goto L7; } - // if ($t7) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:258:9+67 + // if ($t7) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:259:9+67 if ($t7) { goto L1; } else { goto L0; } - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:258:9+67 + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:259:9+67 L1: - // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:258:9+67 - assume {:print "$at(72,12598,12665)"} true; + // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:259:9+67 + assume {:print "$at(79,12644,12711)"} true; goto L2; - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:258:51+23 + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:259:51+23 L0: - // $t8 := 2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:258:51+23 - assume {:print "$at(72,12640,12663)"} true; + // $t8 := 2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:259:51+23 + assume {:print "$at(79,12686,12709)"} true; $t8 := 2; assume $IsValid'u64'($t8); - // $t9 := error::not_found($t8) on_abort goto L7 with $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:258:34+41 + // $t9 := error::not_found($t8) on_abort goto L7 with $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:259:34+41 call $t9 := $1_error_not_found($t8); if ($abort_flag) { - assume {:print "$at(72,12623,12664)"} true; + assume {:print "$at(79,12669,12710)"} true; $t6 := $abort_code; - assume {:print "$track_abort(18,27):", $t6} $t6 == $t6; + assume {:print "$track_abort(18,29):", $t6} $t6 == $t6; goto L7; } - // trace_abort($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:258:9+67 - assume {:print "$at(72,12598,12665)"} true; - assume {:print "$track_abort(18,27):", $t9} $t9 == $t9; + // trace_abort($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:259:9+67 + assume {:print "$at(79,12644,12711)"} true; + assume {:print "$track_abort(18,29):", $t9} $t9 == $t9; - // $t6 := move($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:258:9+67 + // $t6 := move($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:259:9+67 $t6 := $t9; - // goto L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:258:9+67 + // goto L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:259:9+67 goto L7; - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:260:28+13 - assume {:print "$at(72,12711,12724)"} true; + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:261:28+13 + assume {:print "$at(79,12757,12770)"} true; L2: - // $t10 := vector::length($t1) on_abort goto L7 with $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:260:13+29 - assume {:print "$at(72,12696,12725)"} true; + // $t10 := vector::length($t1) on_abort goto L7 with $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:261:13+29 + assume {:print "$at(79,12742,12771)"} true; call $t10 := $1_vector_length'u8'($t1); if ($abort_flag) { - assume {:print "$at(72,12696,12725)"} true; + assume {:print "$at(79,12742,12771)"} true; $t6 := $abort_code; - assume {:print "$track_abort(18,27):", $t6} $t6 == $t6; + assume {:print "$track_abort(18,29):", $t6} $t6 == $t6; goto L7; } - // $t11 := 32 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:260:46+2 + // $t11 := 32 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:261:46+2 $t11 := 32; assume $IsValid'u64'($t11); - // $t12 := ==($t10, $t11) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:260:43+2 + // $t12 := ==($t10, $t11) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:261:43+2 $t12 := $IsEqual'u64'($t10, $t11); - // if ($t12) goto L4 else goto L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:259:9+134 - assume {:print "$at(72,12675,12809)"} true; + // if ($t12) goto L4 else goto L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:260:9+134 + assume {:print "$at(79,12721,12855)"} true; if ($t12) { goto L4; } else { goto L3; } - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:259:9+134 + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:260:9+134 L4: - // goto L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:259:9+134 - assume {:print "$at(72,12675,12809)"} true; + // goto L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:260:9+134 + assume {:print "$at(79,12721,12855)"} true; goto L5; - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:261:37+29 - assume {:print "$at(72,12769,12798)"} true; + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:262:37+29 + assume {:print "$at(79,12815,12844)"} true; L3: - // $t13 := 4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:261:37+29 - assume {:print "$at(72,12769,12798)"} true; + // $t13 := 4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:262:37+29 + assume {:print "$at(79,12815,12844)"} true; $t13 := 4; assume $IsValid'u64'($t13); - // $t14 := error::invalid_argument($t13) on_abort goto L7 with $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:261:13+54 + // $t14 := error::invalid_argument($t13) on_abort goto L7 with $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:262:13+54 call $t14 := $1_error_invalid_argument($t13); if ($abort_flag) { - assume {:print "$at(72,12745,12799)"} true; + assume {:print "$at(79,12791,12845)"} true; $t6 := $abort_code; - assume {:print "$track_abort(18,27):", $t6} $t6 == $t6; + assume {:print "$track_abort(18,29):", $t6} $t6 == $t6; goto L7; } - // trace_abort($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:259:9+134 - assume {:print "$at(72,12675,12809)"} true; - assume {:print "$track_abort(18,27):", $t14} $t14 == $t14; + // trace_abort($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:260:9+134 + assume {:print "$at(79,12721,12855)"} true; + assume {:print "$track_abort(18,29):", $t14} $t14 == $t14; - // $t6 := move($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:259:9+134 + // $t6 := move($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:260:9+134 $t6 := $t14; - // goto L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:259:9+134 + // goto L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:260:9+134 goto L7; - // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:263:59+4 - assume {:print "$at(72,12869,12873)"} true; + // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:264:59+4 + assume {:print "$at(79,12915,12919)"} true; L5: - // $t15 := borrow_global($t5) on_abort goto L7 with $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:263:32+17 - assume {:print "$at(72,12842,12859)"} true; + // $t15 := borrow_global($t5) on_abort goto L7 with $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:264:32+17 + assume {:print "$at(79,12888,12905)"} true; if (!$ResourceExists($1_account_Account_$memory, $t5)) { call $ExecFailureAbort(); } else { $t15 := $Mutation($Global($t5), EmptyVec(), $ResourceValue($1_account_Account_$memory, $t5)); } if ($abort_flag) { - assume {:print "$at(72,12842,12859)"} true; + assume {:print "$at(79,12888,12905)"} true; $t6 := $abort_code; - assume {:print "$track_abort(18,27):", $t6} $t6 == $t6; + assume {:print "$track_abort(18,29):", $t6} $t6 == $t6; goto L7; } - // trace_local[account_resource]($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:263:13+16 + // trace_local[account_resource]($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:264:13+16 $temp_0'$1_account_Account' := $Dereference($t15); - assume {:print "$track_local(18,27,2):", $temp_0'$1_account_Account'} $temp_0'$1_account_Account' == $temp_0'$1_account_Account'; + assume {:print "$track_local(18,29,2):", $temp_0'$1_account_Account'} $temp_0'$1_account_Account' == $temp_0'$1_account_Account'; - // $t16 := borrow_field.authentication_key($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:264:9+35 - assume {:print "$at(72,12884,12919)"} true; + // $t16 := borrow_field.authentication_key($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:265:9+35 + assume {:print "$at(79,12930,12965)"} true; $t16 := $ChildMutation($t15, 0, $authentication_key#$1_account_Account($Dereference($t15))); - // write_ref($t16, $t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:264:9+50 + // write_ref($t16, $t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:265:9+50 $t16 := $UpdateMutation($t16, $t1); - // write_back[Reference($t15).authentication_key (vector)]($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:264:9+50 + // write_back[Reference($t15).authentication_key (vector)]($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:265:9+50 $t15 := $UpdateMutation($t15, $Update'$1_account_Account'_authentication_key($Dereference($t15), $Dereference($t16))); - // pack_ref_deep($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:264:9+50 + // pack_ref_deep($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:265:9+50 - // write_back[account::Account@]($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:264:9+50 + // write_back[account::Account@]($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:265:9+50 $1_account_Account_$memory := $ResourceUpdate($1_account_Account_$memory, $GlobalLocationAddress($t15), $Dereference($t15)); - // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:265:5+1 - assume {:print "$at(72,12940,12941)"} true; + // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:266:5+1 + assume {:print "$at(79,12986,12987)"} true; L6: - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:265:5+1 - assume {:print "$at(72,12940,12941)"} true; + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:266:5+1 + assume {:print "$at(79,12986,12987)"} true; return; - // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:265:5+1 + // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:266:5+1 L7: - // abort($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:265:5+1 - assume {:print "$at(72,12940,12941)"} true; + // abort($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:266:5+1 + assume {:print "$at(79,12986,12987)"} true; $abort_code := $t6; $abort_flag := true; return; @@ -13379,12 +12077,12 @@ function {:inline} $IsEqual'$1_optional_aggregator_OptionalAggregator'(s1: $1_op $IsEqual'$1_option_Option'$1_aggregator_Aggregator''($aggregator#$1_optional_aggregator_OptionalAggregator(s1), $aggregator#$1_optional_aggregator_OptionalAggregator(s2)) && $IsEqual'$1_option_Option'$1_optional_aggregator_Integer''($integer#$1_optional_aggregator_OptionalAggregator(s1), $integer#$1_optional_aggregator_OptionalAggregator(s2))} -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:255:5+129 +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:266:5+129 function {:inline} $1_coin_$is_account_registered'$1_aptos_coin_AptosCoin'($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory: $Memory $1_coin_CoinStore'$1_aptos_coin_AptosCoin', account_addr: int): bool { $ResourceExists($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, account_addr) } -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:566:5+81 +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:580:5+81 function {:inline} $1_coin_$value'$1_aptos_coin_AptosCoin'(coin: $1_coin_Coin'$1_aptos_coin_AptosCoin'): int { $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'(coin) } @@ -13510,1666 +12208,1248 @@ function {:inline} $IsEqual'$1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCo } var $1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory: $Memory $1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'; -// fun coin::extract [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:366:5+434 -procedure {:inline 1} $1_coin_extract'$1_aptos_coin_AptosCoin'(_$t0: $Mutation ($1_coin_Coin'$1_aptos_coin_AptosCoin'), _$t1: int) returns ($ret0: $1_coin_Coin'$1_aptos_coin_AptosCoin', $ret1: $Mutation ($1_coin_Coin'$1_aptos_coin_AptosCoin')) +// fun coin::value [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:580:5+81 +procedure {:inline 1} $1_coin_value'$1_aptos_coin_AptosCoin'(_$t0: $1_coin_Coin'$1_aptos_coin_AptosCoin') returns ($ret0: int) { // declare local variables - var $t2: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; - var $t3: int; - var $t4: bool; - var $t5: int; - var $t6: int; - var $t7: int; - var $t8: $1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'; - var $t9: int; - var $t10: $Mutation ($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'); - var $t11: int; - var $t12: int; - var $t13: $Mutation (int); - var $t14: $1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'; - var $t15: int; - var $t16: $Mutation ($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'); - var $t17: $1_coin_Coin'$1_aptos_coin_AptosCoin'; - var $t0: $Mutation ($1_coin_Coin'$1_aptos_coin_AptosCoin'); - var $t1: int; + var $t1: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t2: int; + var $t0: $1_coin_Coin'$1_aptos_coin_AptosCoin'; var $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin'': $1_coin_Coin'$1_aptos_coin_AptosCoin'; var $temp_0'u64': int; $t0 := _$t0; - $t1 := _$t1; // bytecode translation starts here - // assume Identical($t2, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 - assume {:print "$at(95,1664,1763)"} true; - assume ($t2 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); - - // trace_local[coin]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:366:5+1 - assume {:print "$at(94,13880,13881)"} true; - $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin'' := $Dereference($t0); - assume {:print "$track_local(23,13,0):", $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin''} $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin'' == $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin''; - - // trace_local[amount]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:366:5+1 - assume {:print "$track_local(23,13,1):", $t1} $t1 == $t1; + // assume Identical($t1, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + assume {:print "$at(102,1664,1763)"} true; + assume ($t1 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); - // $t3 := get_field>.value($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:367:17+10 - assume {:print "$at(94,13983,13993)"} true; - $t3 := $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($Dereference($t0)); + // trace_local[coin]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:580:5+1 + assume {:print "$at(101,22011,22012)"} true; + assume {:print "$track_local(23,35,0):", $t0} $t0 == $t0; - // $t4 := >=($t3, $t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:367:28+2 - call $t4 := $Ge($t3, $t1); + // $t2 := get_field>.value($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:581:9+10 + assume {:print "$at(101,22076,22086)"} true; + $t2 := $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($t0); - // if ($t4) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:367:9+77 - if ($t4) { goto L1; } else { goto L0; } + // trace_return[0]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:581:9+10 + assume {:print "$track_return(23,35,0):", $t2} $t2 == $t2; - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:367:9+77 + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:582:5+1 + assume {:print "$at(101,22091,22092)"} true; L1: - // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:367:9+77 - assume {:print "$at(94,13975,14052)"} true; - goto L2; - - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:367:9+77 -L0: - - // destroy($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:367:9+77 - assume {:print "$at(94,13975,14052)"} true; - - // $t5 := 6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:367:63+21 - $t5 := 6; - assume $IsValid'u64'($t5); - - // $t6 := error::invalid_argument($t5) on_abort goto L4 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:367:39+46 - call $t6 := $1_error_invalid_argument($t5); - if ($abort_flag) { - assume {:print "$at(94,14005,14051)"} true; - $t7 := $abort_code; - assume {:print "$track_abort(23,13):", $t7} $t7 == $t7; - goto L4; - } - - // trace_abort($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:367:9+77 - assume {:print "$at(94,13975,14052)"} true; - assume {:print "$track_abort(23,13):", $t6} $t6 == $t6; - - // $t7 := move($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:367:9+77 - $t7 := $t6; - - // goto L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:367:9+77 - goto L4; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:368:9+81 - assume {:print "$at(94,14062,14143)"} true; -L2: - - // assume Identical($t8, pack coin::Ghost$supply<#0>(Sub(select coin::Ghost$supply.v<#0>(global>(0x0)), $t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:369:13+52 - assume {:print "$at(94,14081,14133)"} true; - assume ($t8 == $1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'(($v#$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, 0)) - $t1))); - - // assume Identical($t9, 0x0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:369:13+52 - assume ($t9 == 0); - - // $t10 := borrow_global>($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:369:13+52 - if (!$ResourceExists($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $t9)) { - call $ExecFailureAbort(); - } else { - $t10 := $Mutation($Global($t9), EmptyVec(), $ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $t9)); - } - - // write_ref($t10, $t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:369:13+52 - $t10 := $UpdateMutation($t10, $t8); - - // write_back[coin::Ghost$supply<#0>@]($t10) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:369:13+52 - $1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory := $ResourceUpdate($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $GlobalLocationAddress($t10), - $Dereference($t10)); - - // $t11 := get_field>.value($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:371:22+10 - assume {:print "$at(94,14166,14176)"} true; - $t11 := $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($Dereference($t0)); - - // $t12 := -($t11, $t1) on_abort goto L4 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:371:33+1 - call $t12 := $Sub($t11, $t1); - if ($abort_flag) { - assume {:print "$at(94,14177,14178)"} true; - $t7 := $abort_code; - assume {:print "$track_abort(23,13):", $t7} $t7 == $t7; - goto L4; - } - - // $t13 := borrow_field>.value($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:371:9+10 - $t13 := $ChildMutation($t0, 0, $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($Dereference($t0))); - - // write_ref($t13, $t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:371:9+32 - $t13 := $UpdateMutation($t13, $t12); - - // write_back[Reference($t0).value (u64)]($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:371:9+32 - $t0 := $UpdateMutation($t0, $Update'$1_coin_Coin'$1_aptos_coin_AptosCoin''_value($Dereference($t0), $Dereference($t13))); - - // trace_local[coin]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:371:9+32 - $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin'' := $Dereference($t0); - assume {:print "$track_local(23,13,0):", $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin''} $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin'' == $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin''; - - // assume Identical($t14, pack coin::Ghost$supply<#0>(Add(select coin::Ghost$supply.v<#0>(global>(0x0)), $t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:373:13+52 - assume {:print "$at(94,14214,14266)"} true; - assume ($t14 == $1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'(($v#$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, 0)) + $t1))); - - // assume Identical($t15, 0x0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:373:13+52 - assume ($t15 == 0); - - // $t16 := borrow_global>($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:373:13+52 - if (!$ResourceExists($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $t15)) { - call $ExecFailureAbort(); - } else { - $t16 := $Mutation($Global($t15), EmptyVec(), $ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $t15)); - } - - // write_ref($t16, $t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:373:13+52 - $t16 := $UpdateMutation($t16, $t14); - - // write_back[coin::Ghost$supply<#0>@]($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:373:13+52 - $1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory := $ResourceUpdate($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $GlobalLocationAddress($t16), - $Dereference($t16)); - - // $t17 := pack coin::Coin<#0>($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:375:9+22 - assume {:print "$at(94,14286,14308)"} true; - $t17 := $1_coin_Coin'$1_aptos_coin_AptosCoin'($t1); - - // trace_return[0]($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:375:9+22 - assume {:print "$track_return(23,13,0):", $t17} $t17 == $t17; - - // trace_local[coin]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:375:9+22 - $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin'' := $Dereference($t0); - assume {:print "$track_local(23,13,0):", $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin''} $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin'' == $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin''; - - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:376:5+1 - assume {:print "$at(94,14313,14314)"} true; -L3: - - // return $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:376:5+1 - assume {:print "$at(94,14313,14314)"} true; - $ret0 := $t17; - $ret1 := $t0; - return; - - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:376:5+1 -L4: - - // abort($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:376:5+1 - assume {:print "$at(94,14313,14314)"} true; - $abort_code := $t7; - $abort_flag := true; + // return $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:582:5+1 + assume {:print "$at(101,22091,22092)"} true; + $ret0 := $t2; return; } -// fun coin::value [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:566:5+81 -procedure {:inline 1} $1_coin_value'$1_aptos_coin_AptosCoin'(_$t0: $1_coin_Coin'$1_aptos_coin_AptosCoin') returns ($ret0: int) +// fun coin::is_account_registered [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:266:5+129 +procedure {:inline 1} $1_coin_is_account_registered'$1_aptos_coin_AptosCoin'(_$t0: int) returns ($ret0: bool) { // declare local variables var $t1: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; - var $t2: int; - var $t0: $1_coin_Coin'$1_aptos_coin_AptosCoin'; - var $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin'': $1_coin_Coin'$1_aptos_coin_AptosCoin'; - var $temp_0'u64': int; + var $t2: bool; + var $t0: int; + var $temp_0'address': int; + var $temp_0'bool': bool; $t0 := _$t0; // bytecode translation starts here // assume Identical($t1, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 - assume {:print "$at(95,1664,1763)"} true; + assume {:print "$at(102,1664,1763)"} true; assume ($t1 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); - // trace_local[coin]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:566:5+1 - assume {:print "$at(94,21587,21588)"} true; - assume {:print "$track_local(23,34,0):", $t0} $t0 == $t0; + // trace_local[account_addr]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:266:5+1 + assume {:print "$at(101,9762,9763)"} true; + assume {:print "$track_local(23,21,0):", $t0} $t0 == $t0; - // $t2 := get_field>.value($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:567:9+10 - assume {:print "$at(94,21652,21662)"} true; - $t2 := $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($t0); + // $t2 := exists>($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:267:9+6 + assume {:print "$at(101,9844,9850)"} true; + $t2 := $ResourceExists($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $t0); - // trace_return[0]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:567:9+10 - assume {:print "$track_return(23,34,0):", $t2} $t2 == $t2; + // trace_return[0]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:267:9+41 + assume {:print "$track_return(23,21,0):", $t2} $t2 == $t2; - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:568:5+1 - assume {:print "$at(94,21667,21668)"} true; + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:268:5+1 + assume {:print "$at(101,9890,9891)"} true; L1: - // return $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:568:5+1 - assume {:print "$at(94,21667,21668)"} true; + // return $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:268:5+1 + assume {:print "$at(101,9890,9891)"} true; $ret0 := $t2; return; } -// fun coin::balance [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:239:5+274 -procedure {:inline 1} $1_coin_balance'$1_aptos_coin_AptosCoin'(_$t0: int) returns ($ret0: int) +// fun coin::register [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:552:5+664 +procedure {:inline 1} $1_coin_register'$1_aptos_coin_AptosCoin'(_$t0: $signer) returns () { // declare local variables - var $t1: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; - var $t2: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; - var $t3: bool; + var $t1: int; + var $t2: $1_coin_CoinStore'$1_aptos_coin_AptosCoin'; + var $t3: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; var $t4: int; - var $t5: int; + var $t5: $1_account_Account; var $t6: int; - var $t7: $1_coin_CoinStore'$1_aptos_coin_AptosCoin'; - var $t8: $1_coin_Coin'$1_aptos_coin_AptosCoin'; - var $t9: int; - var $t0: int; + var $t7: int; + var $t8: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t9: bool; + var $t10: int; + var $t11: $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $t12: bool; + var $t13: int; + var $t14: $1_account_Account; + var $t15: $1_event_EventHandle'$1_coin_DepositEvent'; + var $t16: int; + var $t17: $1_account_Account; + var $t18: $1_event_EventHandle'$1_coin_WithdrawEvent'; + var $t19: $1_coin_CoinStore'$1_aptos_coin_AptosCoin'; + var $t0: $signer; + var $temp_0'$1_coin_CoinStore'$1_aptos_coin_AptosCoin'': $1_coin_CoinStore'$1_aptos_coin_AptosCoin'; var $temp_0'address': int; - var $temp_0'u64': int; + var $temp_0'signer': $signer; $t0 := _$t0; // bytecode translation starts here - // assume Identical($t1, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 - assume {:print "$at(95,1664,1763)"} true; - assume ($t1 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + // assume Identical($t3, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + assume {:print "$at(102,1664,1763)"} true; + assume ($t3 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + + // assume Identical($t4, signer::$address_of($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:347:9+47 + assume {:print "$at(102,14682,14729)"} true; + assume ($t4 == $1_signer_$address_of($t0)); - // trace_local[owner]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:239:5+1 - assume {:print "$at(94,8778,8779)"} true; - assume {:print "$track_local(23,1,0):", $t0} $t0 == $t0; + // assume Identical($t5, global($t4)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:348:9+49 + assume {:print "$at(102,14738,14787)"} true; + assume ($t5 == $ResourceValue($1_account_Account_$memory, $t4)); - // assume Identical($t2, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 - assume {:print "$at(95,1664,1763)"} true; - assume ($t2 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + // trace_local[account]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:552:5+1 + assume {:print "$at(101,21007,21008)"} true; + assume {:print "$track_local(23,29,0):", $t0} $t0 == $t0; - // $t3 := coin::is_account_registered<#0>($t0) on_abort goto L4 with $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:241:13+38 - assume {:print "$at(94,8878,8916)"} true; - call $t3 := $1_coin_is_account_registered'$1_aptos_coin_AptosCoin'($t0); + // $t6 := signer::address_of($t0) on_abort goto L3 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:553:28+27 + assume {:print "$at(101,21084,21111)"} true; + call $t6 := $1_signer_address_of($t0); if ($abort_flag) { - assume {:print "$at(94,8878,8916)"} true; - $t4 := $abort_code; - assume {:print "$track_abort(23,1):", $t4} $t4 == $t4; - goto L4; + assume {:print "$at(101,21084,21111)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(23,29):", $t7} $t7 == $t7; + goto L3; } - // if ($t3) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:240:9+127 - assume {:print "$at(94,8857,8984)"} true; - if ($t3) { goto L1; } else { goto L0; } + // trace_local[account_addr]($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:553:13+12 + assume {:print "$track_local(23,29,1):", $t6} $t6 == $t6; + + // assume Identical($t8, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + assume {:print "$at(102,1664,1763)"} true; + assume ($t8 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + + // $t9 := coin::is_account_registered<#0>($t6) on_abort goto L3 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:555:13+45 + assume {:print "$at(101,21212,21257)"} true; + call $t9 := $1_coin_is_account_registered'$1_aptos_coin_AptosCoin'($t6); + if ($abort_flag) { + assume {:print "$at(101,21212,21257)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(23,29):", $t7} $t7 == $t7; + goto L3; + } + + // if ($t9) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:555:9+81 + if ($t9) { goto L1; } else { goto L0; } - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:240:9+127 + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:556:13+6 + assume {:print "$at(101,21273,21279)"} true; L1: - // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:240:9+127 - assume {:print "$at(94,8857,8984)"} true; + // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:556:13+6 + assume {:print "$at(101,21273,21279)"} true; goto L2; - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:242:30+25 - assume {:print "$at(94,8947,8972)"} true; + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:559:42+12 + assume {:print "$at(101,21333,21345)"} true; L0: - // $t5 := 5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:242:30+25 - assume {:print "$at(94,8947,8972)"} true; - $t5 := 5; - assume $IsValid'u64'($t5); - - // $t6 := error::not_found($t5) on_abort goto L4 with $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:242:13+43 - call $t6 := $1_error_not_found($t5); + // account::register_coin<#0>($t6) on_abort goto L3 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:559:9+46 + assume {:print "$at(101,21300,21346)"} true; + call $1_account_register_coin'$1_aptos_coin_AptosCoin'($t6); if ($abort_flag) { - assume {:print "$at(94,8930,8973)"} true; - $t4 := $abort_code; - assume {:print "$track_abort(23,1):", $t4} $t4 == $t4; - goto L4; + assume {:print "$at(101,21300,21346)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(23,29):", $t7} $t7 == $t7; + goto L3; } - // trace_abort($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:240:9+127 - assume {:print "$at(94,8857,8984)"} true; - assume {:print "$track_abort(23,1):", $t6} $t6 == $t6; + // $t10 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:561:33+1 + assume {:print "$at(101,21427,21428)"} true; + $t10 := 0; + assume $IsValid'u64'($t10); + + // $t11 := pack coin::Coin<#0>($t10) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:561:19+17 + $t11 := $1_coin_Coin'$1_aptos_coin_AptosCoin'($t10); - // $t4 := move($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:240:9+127 - $t4 := $t6; + // $t12 := false at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:562:21+5 + assume {:print "$at(101,21452,21457)"} true; + $t12 := false; + assume $IsValid'bool'($t12); - // goto L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:240:9+127 - goto L4; + // assume Identical($t13, signer::$address_of($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:461:9+39 + assume {:print "$at(80,22297,22336)"} true; + assume ($t13 == $1_signer_$address_of($t0)); - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:244:44+5 - assume {:print "$at(94,9029,9034)"} true; -L2: + // assume Identical($t14, global($t13)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:462:9+36 + assume {:print "$at(80,22345,22381)"} true; + assume ($t14 == $ResourceValue($1_account_Account_$memory, $t13)); - // $t7 := get_global>($t0) on_abort goto L4 with $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:244:9+13 - assume {:print "$at(94,8994,9007)"} true; - if (!$ResourceExists($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $t0)) { - call $ExecFailureAbort(); - } else { - $t7 := $ResourceValue($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $t0); + // $t15 := account::new_event_handle($t0) on_abort goto L3 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:563:29+48 + assume {:print "$at(101,21487,21535)"} true; + call $t15 := $1_account_new_event_handle'$1_coin_DepositEvent'($t0); + if ($abort_flag) { + assume {:print "$at(101,21487,21535)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(23,29):", $t7} $t7 == $t7; + goto L3; } + + // assume Identical($t16, signer::$address_of($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:461:9+39 + assume {:print "$at(80,22297,22336)"} true; + assume ($t16 == $1_signer_$address_of($t0)); + + // assume Identical($t17, global($t16)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:462:9+36 + assume {:print "$at(80,22345,22381)"} true; + assume ($t17 == $ResourceValue($1_account_Account_$memory, $t16)); + + // $t18 := account::new_event_handle($t0) on_abort goto L3 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:564:30+49 + assume {:print "$at(101,21566,21615)"} true; + call $t18 := $1_account_new_event_handle'$1_coin_WithdrawEvent'($t0); if ($abort_flag) { - assume {:print "$at(94,8994,9007)"} true; - $t4 := $abort_code; - assume {:print "$track_abort(23,1):", $t4} $t4 == $t4; - goto L4; + assume {:print "$at(101,21566,21615)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(23,29):", $t7} $t7 == $t7; + goto L3; } - // $t8 := get_field>.coin($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:244:9+46 - $t8 := $coin#$1_coin_CoinStore'$1_aptos_coin_AptosCoin'($t7); + // $t19 := pack coin::CoinStore<#0>($t11, $t12, $t15, $t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:560:26+253 + assume {:print "$at(101,21373,21626)"} true; + $t19 := $1_coin_CoinStore'$1_aptos_coin_AptosCoin'($t11, $t12, $t15, $t18); - // $t9 := get_field>.value($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:244:9+52 - $t9 := $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($t8); + // trace_local[coin_store]($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:560:13+10 + assume {:print "$track_local(23,29,2):", $t19} $t19 == $t19; - // trace_return[0]($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:244:9+52 - assume {:print "$track_return(23,1,0):", $t9} $t9 == $t9; + // move_to>($t19, $t0) on_abort goto L3 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:566:9+7 + assume {:print "$at(101,21636,21643)"} true; + if ($ResourceExists($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $addr#$signer($t0))) { + call $ExecFailureAbort(); + } else { + $1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory := $ResourceUpdate($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $addr#$signer($t0), $t19); + } + if ($abort_flag) { + assume {:print "$at(101,21636,21643)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(23,29):", $t7} $t7 == $t7; + goto L3; + } - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:245:5+1 - assume {:print "$at(94,9051,9052)"} true; -L3: + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:567:5+1 + assume {:print "$at(101,21670,21671)"} true; +L2: - // return $t9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:245:5+1 - assume {:print "$at(94,9051,9052)"} true; - $ret0 := $t9; + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:567:5+1 + assume {:print "$at(101,21670,21671)"} true; return; - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:245:5+1 -L4: + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:567:5+1 +L3: - // abort($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:245:5+1 - assume {:print "$at(94,9051,9052)"} true; - $abort_code := $t4; + // abort($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:567:5+1 + assume {:print "$at(101,21670,21671)"} true; + $abort_code := $t7; $abort_flag := true; return; } -// fun coin::deposit [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:334:5+621 -procedure {:inline 1} $1_coin_deposit'$1_aptos_coin_AptosCoin'(_$t0: int, _$t1: $1_coin_Coin'$1_aptos_coin_AptosCoin') returns () +// struct aptos_coin::AptosCoin at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_coin.move:22:5+27 +type {:datatype} $1_aptos_coin_AptosCoin; +function {:constructor} $1_aptos_coin_AptosCoin($dummy_field: bool): $1_aptos_coin_AptosCoin; +function {:inline} $Update'$1_aptos_coin_AptosCoin'_dummy_field(s: $1_aptos_coin_AptosCoin, x: bool): $1_aptos_coin_AptosCoin { + $1_aptos_coin_AptosCoin(x) +} +function $IsValid'$1_aptos_coin_AptosCoin'(s: $1_aptos_coin_AptosCoin): bool { + $IsValid'bool'($dummy_field#$1_aptos_coin_AptosCoin(s)) +} +function {:inline} $IsEqual'$1_aptos_coin_AptosCoin'(s1: $1_aptos_coin_AptosCoin, s2: $1_aptos_coin_AptosCoin): bool { + s1 == s2 +} +var $1_aptos_coin_AptosCoin_$memory: $Memory $1_aptos_coin_AptosCoin; + +// fun aptos_account::assert_account_exists [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:117:5+136 +procedure {:inline 1} $1_aptos_account_assert_account_exists(_$t0: int) returns () { // declare local variables - var $t2: $Mutation ($1_coin_CoinStore'$1_aptos_coin_AptosCoin'); - var $t3: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; - var $t4: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; - var $t5: bool; - var $t6: int; - var $t7: int; - var $t8: int; - var $t9: $Mutation ($1_coin_CoinStore'$1_aptos_coin_AptosCoin'); - var $t10: bool; - var $t11: bool; - var $t12: int; - var $t13: int; - var $t14: $Mutation ($1_event_EventHandle'$1_coin_DepositEvent'); - var $t15: int; - var $t16: $1_coin_DepositEvent; - var $t17: $Mutation ($1_coin_Coin'$1_aptos_coin_AptosCoin'); - var $t18: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t1: bool; + var $t2: int; + var $t3: int; + var $t4: int; var $t0: int; - var $t1: $1_coin_Coin'$1_aptos_coin_AptosCoin'; - var $1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$modifies: [int]bool; - var $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin'': $1_coin_Coin'$1_aptos_coin_AptosCoin'; - var $temp_0'$1_coin_CoinStore'$1_aptos_coin_AptosCoin'': $1_coin_CoinStore'$1_aptos_coin_AptosCoin'; var $temp_0'address': int; $t0 := _$t0; - $t1 := _$t1; // bytecode translation starts here - // assume Identical($t3, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 - assume {:print "$at(95,1664,1763)"} true; - assume ($t3 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); - - // trace_local[account_addr]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:334:5+1 - assume {:print "$at(94,12612,12613)"} true; - assume {:print "$track_local(23,7,0):", $t0} $t0 == $t0; - - // trace_local[coin]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:334:5+1 - assume {:print "$track_local(23,7,1):", $t1} $t1 == $t1; - - // assume Identical($t4, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 - assume {:print "$at(95,1664,1763)"} true; - assume ($t4 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + // trace_local[addr]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:117:5+1 + assume {:print "$at(87,5296,5297)"} true; + assume {:print "$track_local(25,0,0):", $t0} $t0 == $t0; - // $t5 := coin::is_account_registered<#0>($t0) on_abort goto L7 with $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:336:13+45 - assume {:print "$at(94,12736,12781)"} true; - call $t5 := $1_coin_is_account_registered'$1_aptos_coin_AptosCoin'($t0); + // $t1 := account::exists_at($t0) on_abort goto L4 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:118:17+24 + assume {:print "$at(87,5362,5386)"} true; + call $t1 := $1_account_exists_at($t0); if ($abort_flag) { - assume {:print "$at(94,12736,12781)"} true; - $t6 := $abort_code; - assume {:print "$track_abort(23,7):", $t6} $t6 == $t6; - goto L7; + assume {:print "$at(87,5362,5386)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(25,0):", $t2} $t2 == $t2; + goto L4; } - // if ($t5) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:335:9+134 - assume {:print "$at(94,12715,12849)"} true; - if ($t5) { goto L1; } else { goto L0; } + // if ($t1) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:118:9+71 + if ($t1) { goto L1; } else { goto L0; } - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:335:9+134 + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:118:9+71 L1: - // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:335:9+134 - assume {:print "$at(94,12715,12849)"} true; + // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:118:9+71 + assume {:print "$at(87,5354,5425)"} true; goto L2; - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:337:30+25 - assume {:print "$at(94,12812,12837)"} true; + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:118:60+18 L0: - // $t7 := 5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:337:30+25 - assume {:print "$at(94,12812,12837)"} true; - $t7 := 5; - assume $IsValid'u64'($t7); + // $t3 := 1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:118:60+18 + assume {:print "$at(87,5405,5423)"} true; + $t3 := 1; + assume $IsValid'u64'($t3); - // $t8 := error::not_found($t7) on_abort goto L7 with $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:337:13+43 - call $t8 := $1_error_not_found($t7); + // $t4 := error::not_found($t3) on_abort goto L4 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:118:43+36 + call $t4 := $1_error_not_found($t3); if ($abort_flag) { - assume {:print "$at(94,12795,12838)"} true; - $t6 := $abort_code; - assume {:print "$track_abort(23,7):", $t6} $t6 == $t6; - goto L7; + assume {:print "$at(87,5388,5424)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(25,0):", $t2} $t2 == $t2; + goto L4; } - // trace_abort($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:335:9+134 - assume {:print "$at(94,12715,12849)"} true; - assume {:print "$track_abort(23,7):", $t8} $t8 == $t8; + // trace_abort($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:118:9+71 + assume {:print "$at(87,5354,5425)"} true; + assume {:print "$track_abort(25,0):", $t4} $t4 == $t4; - // $t6 := move($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:335:9+134 - $t6 := $t8; + // $t2 := move($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:118:9+71 + $t2 := $t4; - // goto L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:335:9+134 - goto L7; + // goto L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:118:9+71 + goto L4; - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:340:65+12 - assume {:print "$at(94,12916,12928)"} true; + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:118:80+1 L2: - // $t9 := borrow_global>($t0) on_abort goto L7 with $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:340:26+17 - assume {:print "$at(94,12877,12894)"} true; - if (!$ResourceExists($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $t0)) { - call $ExecFailureAbort(); - } else { - $t9 := $Mutation($Global($t0), EmptyVec(), $ResourceValue($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $t0)); - } - if ($abort_flag) { - assume {:print "$at(94,12877,12894)"} true; - $t6 := $abort_code; - assume {:print "$track_abort(23,7):", $t6} $t6 == $t6; - goto L7; - } - - // trace_local[coin_store]($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:340:13+10 - $temp_0'$1_coin_CoinStore'$1_aptos_coin_AptosCoin'' := $Dereference($t9); - assume {:print "$track_local(23,7,2):", $temp_0'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''} $temp_0'$1_coin_CoinStore'$1_aptos_coin_AptosCoin'' == $temp_0'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''; - - // $t10 := get_field>.frozen($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:342:14+17 - assume {:print "$at(94,12961,12978)"} true; - $t10 := $frozen#$1_coin_CoinStore'$1_aptos_coin_AptosCoin'($Dereference($t9)); - - // $t11 := !($t10) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:342:13+1 - call $t11 := $Not($t10); + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:119:5+1 + assume {:print "$at(87,5431,5432)"} true; +L3: - // if ($t11) goto L4 else goto L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:341:9+97 - assume {:print "$at(94,12939,13036)"} true; - if ($t11) { goto L4; } else { goto L3; } + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:119:5+1 + assume {:print "$at(87,5431,5432)"} true; + return; - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:341:9+97 + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:119:5+1 L4: - // goto L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:341:9+97 - assume {:print "$at(94,12939,13036)"} true; - goto L5; + // abort($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:119:5+1 + assume {:print "$at(87,5431,5432)"} true; + $abort_code := $t2; + $abort_flag := true; + return; - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:341:9+97 -L3: +} - // destroy($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:341:9+97 - assume {:print "$at(94,12939,13036)"} true; +// fun aptos_account::assert_account_is_registered_for_apt [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:121:5+221 +procedure {:inline 1} $1_aptos_account_assert_account_is_registered_for_apt(_$t0: int) returns () +{ + // declare local variables + var $t1: int; + var $t2: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t3: bool; + var $t4: int; + var $t5: int; + var $t0: int; + var $temp_0'address': int; + $t0 := _$t0; - // $t12 := 10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:343:38+7 - assume {:print "$at(94,13017,13024)"} true; - $t12 := 10; - assume $IsValid'u64'($t12); + // bytecode translation starts here + // trace_local[addr]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:121:5+1 + assume {:print "$at(87,5438,5439)"} true; + assume {:print "$track_local(25,1,0):", $t0} $t0 == $t0; - // $t13 := error::permission_denied($t12) on_abort goto L7 with $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:343:13+33 - call $t13 := $1_error_permission_denied($t12); + // aptos_account::assert_account_exists($t0) on_abort goto L4 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:122:9+27 + assume {:print "$at(87,5511,5538)"} true; + call $1_aptos_account_assert_account_exists($t0); if ($abort_flag) { - assume {:print "$at(94,12992,13025)"} true; - $t6 := $abort_code; - assume {:print "$track_abort(23,7):", $t6} $t6 == $t6; - goto L7; + assume {:print "$at(87,5511,5538)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(25,1):", $t1} $t1 == $t1; + goto L4; } - // trace_abort($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:341:9+97 - assume {:print "$at(94,12939,13036)"} true; - assume {:print "$track_abort(23,7):", $t13} $t13 == $t13; + // assume Identical($t2, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + assume {:print "$at(102,1664,1763)"} true; + assume ($t2 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); - // $t6 := move($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:341:9+97 - $t6 := $t13; + // $t3 := coin::is_account_registered($t0) on_abort goto L4 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:123:17+44 + assume {:print "$at(87,5556,5600)"} true; + call $t3 := $1_coin_is_account_registered'$1_aptos_coin_AptosCoin'($t0); + if ($abort_flag) { + assume {:print "$at(87,5556,5600)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(25,1):", $t1} $t1 == $t1; + goto L4; + } - // goto L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:341:9+97 - goto L7; + // if ($t3) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:123:9+104 + if ($t3) { goto L1; } else { goto L0; } - // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:347:18+10 - assume {:print "$at(94,13097,13107)"} true; -L5: + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:123:9+104 +L1: - // $t14 := borrow_field>.deposit_events($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:347:13+30 - assume {:print "$at(94,13092,13122)"} true; - $t14 := $ChildMutation($t9, 2, $deposit_events#$1_coin_CoinStore'$1_aptos_coin_AptosCoin'($Dereference($t9))); + // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:123:9+104 + assume {:print "$at(87,5548,5652)"} true; + goto L2; - // $t15 := get_field>.value($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:348:36+10 - assume {:print "$at(94,13159,13169)"} true; - $t15 := $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($t1); + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:123:80+31 +L0: - // $t16 := pack coin::DepositEvent($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:348:13+35 - $t16 := $1_coin_DepositEvent($t15); + // $t4 := 2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:123:80+31 + assume {:print "$at(87,5619,5650)"} true; + $t4 := 2; + assume $IsValid'u64'($t4); - // opaque begin: event::emit_event($t14, $t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:346:9+135 - assume {:print "$at(94,13047,13182)"} true; + // $t5 := error::not_found($t4) on_abort goto L4 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:123:63+49 + call $t5 := $1_error_not_found($t4); + if ($abort_flag) { + assume {:print "$at(87,5602,5651)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(25,1):", $t1} $t1 == $t1; + goto L4; + } - // opaque end: event::emit_event($t14, $t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:346:9+135 + // trace_abort($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:123:9+104 + assume {:print "$at(87,5548,5652)"} true; + assume {:print "$track_abort(25,1):", $t5} $t5 == $t5; - // write_back[Reference($t9).deposit_events (event::EventHandle)]($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:346:9+135 - $t9 := $UpdateMutation($t9, $Update'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''_deposit_events($Dereference($t9), $Dereference($t14))); + // $t1 := move($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:123:9+104 + $t1 := $t5; - // $t17 := borrow_field>.coin($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:351:15+20 - assume {:print "$at(94,13199,13219)"} true; - $t17 := $ChildMutation($t9, 0, $coin#$1_coin_CoinStore'$1_aptos_coin_AptosCoin'($Dereference($t9))); + // goto L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:123:9+104 + goto L4; - // assume Identical($t18, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 - assume {:print "$at(95,1664,1763)"} true; - assume ($t18 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); - - // coin::merge<#0>($t17, $t1) on_abort goto L7 with $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:351:9+33 - assume {:print "$at(94,13193,13226)"} true; - call $t17 := $1_coin_merge'$1_aptos_coin_AptosCoin'($t17, $t1); - if ($abort_flag) { - assume {:print "$at(94,13193,13226)"} true; - $t6 := $abort_code; - assume {:print "$track_abort(23,7):", $t6} $t6 == $t6; - goto L7; - } - - // write_back[Reference($t9).coin (coin::Coin<#0>)]($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:351:9+33 - $t9 := $UpdateMutation($t9, $Update'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''_coin($Dereference($t9), $Dereference($t17))); - - // write_back[coin::CoinStore<#0>@]($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:351:9+33 - $1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory := $ResourceUpdate($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $GlobalLocationAddress($t9), - $Dereference($t9)); + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:123:113+1 +L2: - // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:352:5+1 - assume {:print "$at(94,13232,13233)"} true; -L6: + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:124:5+1 + assume {:print "$at(87,5658,5659)"} true; +L3: - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:352:5+1 - assume {:print "$at(94,13232,13233)"} true; + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:124:5+1 + assume {:print "$at(87,5658,5659)"} true; return; - // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:352:5+1 -L7: + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:124:5+1 +L4: - // abort($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:352:5+1 - assume {:print "$at(94,13232,13233)"} true; - $abort_code := $t6; + // abort($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:124:5+1 + assume {:print "$at(87,5658,5659)"} true; + $abort_code := $t1; $abort_flag := true; return; } -// fun coin::destroy_zero [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:357:5+292 -procedure {:inline 1} $1_coin_destroy_zero'$1_aptos_coin_AptosCoin'(_$t0: $1_coin_Coin'$1_aptos_coin_AptosCoin') returns () -{ - // declare local variables - var $t1: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; - var $t2: $1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'; - var $t3: int; - var $t4: $Mutation ($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'); - var $t5: int; - var $t6: int; - var $t7: bool; - var $t8: int; - var $t9: int; - var $t10: int; - var $t0: $1_coin_Coin'$1_aptos_coin_AptosCoin'; - var $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin'': $1_coin_Coin'$1_aptos_coin_AptosCoin'; - $t0 := _$t0; - - // bytecode translation starts here - // assume Identical($t1, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 - assume {:print "$at(95,1664,1763)"} true; - assume ($t1 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); - - // trace_local[zero_coin]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:357:5+1 - assume {:print "$at(94,13482,13483)"} true; - assume {:print "$track_local(23,11,0):", $t0} $t0 == $t0; - - // assume Identical($t2, pack coin::Ghost$supply<#0>(Sub(select coin::Ghost$supply.v<#0>(global>(0x0)), select coin::Coin.value($t0)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:359:13+61 - assume {:print "$at(94,13572,13633)"} true; - assume ($t2 == $1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'(($v#$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, 0)) - $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($t0)))); - - // assume Identical($t3, 0x0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:359:13+61 - assume ($t3 == 0); - - // $t4 := borrow_global>($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:359:13+61 - if (!$ResourceExists($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $t3)) { - call $ExecFailureAbort(); - } else { - $t4 := $Mutation($Global($t3), EmptyVec(), $ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $t3)); - } - - // write_ref($t4, $t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:359:13+61 - $t4 := $UpdateMutation($t4, $t2); - - // write_back[coin::Ghost$supply<#0>@]($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:359:13+61 - $1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory := $ResourceUpdate($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $GlobalLocationAddress($t4), - $Dereference($t4)); - - // $t5 := unpack coin::Coin<#0>($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:361:13+14 - assume {:print "$at(94,13657,13671)"} true; - $t5 := $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($t0); - - // $t6 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:362:26+1 - assume {:print "$at(94,13710,13711)"} true; - $t6 := 0; - assume $IsValid'u64'($t6); - - // $t7 := ==($t5, $t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:362:23+2 - $t7 := $IsEqual'u64'($t5, $t6); - - // if ($t7) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:362:9+75 - if ($t7) { goto L1; } else { goto L0; } - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:362:9+75 -L1: - - // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:362:9+75 - assume {:print "$at(94,13693,13768)"} true; - goto L2; - - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:362:53+29 -L0: - - // $t8 := 7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:362:53+29 - assume {:print "$at(94,13737,13766)"} true; - $t8 := 7; - assume $IsValid'u64'($t8); - - // $t9 := error::invalid_argument($t8) on_abort goto L4 with $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:362:29+54 - call $t9 := $1_error_invalid_argument($t8); - if ($abort_flag) { - assume {:print "$at(94,13713,13767)"} true; - $t10 := $abort_code; - assume {:print "$track_abort(23,11):", $t10} $t10 == $t10; - goto L4; - } - - // trace_abort($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:362:9+75 - assume {:print "$at(94,13693,13768)"} true; - assume {:print "$track_abort(23,11):", $t9} $t9 == $t9; - - // $t10 := move($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:362:9+75 - $t10 := $t9; - - // goto L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:362:9+75 - goto L4; +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/chain_status.move:35:5+90 +function {:inline} $1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory: $Memory $1_chain_status_GenesisEndMarker): bool { + $ResourceExists($1_chain_status_GenesisEndMarker_$memory, 1) +} - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:362:9+75 -L2: +// struct chain_status::GenesisEndMarker at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/chain_status.move:12:5+34 +type {:datatype} $1_chain_status_GenesisEndMarker; +function {:constructor} $1_chain_status_GenesisEndMarker($dummy_field: bool): $1_chain_status_GenesisEndMarker; +function {:inline} $Update'$1_chain_status_GenesisEndMarker'_dummy_field(s: $1_chain_status_GenesisEndMarker, x: bool): $1_chain_status_GenesisEndMarker { + $1_chain_status_GenesisEndMarker(x) +} +function $IsValid'$1_chain_status_GenesisEndMarker'(s: $1_chain_status_GenesisEndMarker): bool { + $IsValid'bool'($dummy_field#$1_chain_status_GenesisEndMarker(s)) +} +function {:inline} $IsEqual'$1_chain_status_GenesisEndMarker'(s1: $1_chain_status_GenesisEndMarker, s2: $1_chain_status_GenesisEndMarker): bool { + s1 == s2 +} +var $1_chain_status_GenesisEndMarker_$memory: $Memory $1_chain_status_GenesisEndMarker; - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:363:5+1 - assume {:print "$at(94,13773,13774)"} true; -L3: +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:61:5+153 +function {:inline} $1_timestamp_$now_microseconds($1_timestamp_CurrentTimeMicroseconds_$memory: $Memory $1_timestamp_CurrentTimeMicroseconds): int { + $microseconds#$1_timestamp_CurrentTimeMicroseconds($ResourceValue($1_timestamp_CurrentTimeMicroseconds_$memory, 1)) +} - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:363:5+1 - assume {:print "$at(94,13773,13774)"} true; - return; +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:67:5+123 +function {:inline} $1_timestamp_$now_seconds($1_timestamp_CurrentTimeMicroseconds_$memory: $Memory $1_timestamp_CurrentTimeMicroseconds): int { + ($1_timestamp_$now_microseconds($1_timestamp_CurrentTimeMicroseconds_$memory) div 1000000) +} - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:363:5+1 -L4: +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.spec.move:22:10+111 +function {:inline} $1_timestamp_spec_now_microseconds($1_timestamp_CurrentTimeMicroseconds_$memory: $Memory $1_timestamp_CurrentTimeMicroseconds): int { + $microseconds#$1_timestamp_CurrentTimeMicroseconds($ResourceValue($1_timestamp_CurrentTimeMicroseconds_$memory, 1)) +} - // abort($t10) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:363:5+1 - assume {:print "$at(94,13773,13774)"} true; - $abort_code := $t10; - $abort_flag := true; - return; +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.spec.move:26:10+93 +function {:inline} $1_timestamp_spec_now_seconds($1_timestamp_CurrentTimeMicroseconds_$memory: $Memory $1_timestamp_CurrentTimeMicroseconds): int { + ($1_timestamp_spec_now_microseconds($1_timestamp_CurrentTimeMicroseconds_$memory) div 1000000) +} +// struct timestamp::CurrentTimeMicroseconds at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:12:5+73 +type {:datatype} $1_timestamp_CurrentTimeMicroseconds; +function {:constructor} $1_timestamp_CurrentTimeMicroseconds($microseconds: int): $1_timestamp_CurrentTimeMicroseconds; +function {:inline} $Update'$1_timestamp_CurrentTimeMicroseconds'_microseconds(s: $1_timestamp_CurrentTimeMicroseconds, x: int): $1_timestamp_CurrentTimeMicroseconds { + $1_timestamp_CurrentTimeMicroseconds(x) +} +function $IsValid'$1_timestamp_CurrentTimeMicroseconds'(s: $1_timestamp_CurrentTimeMicroseconds): bool { + $IsValid'u64'($microseconds#$1_timestamp_CurrentTimeMicroseconds(s)) +} +function {:inline} $IsEqual'$1_timestamp_CurrentTimeMicroseconds'(s1: $1_timestamp_CurrentTimeMicroseconds, s2: $1_timestamp_CurrentTimeMicroseconds): bool { + s1 == s2 } +var $1_timestamp_CurrentTimeMicroseconds_$memory: $Memory $1_timestamp_CurrentTimeMicroseconds; -// fun coin::extract_all [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:379:5+372 -procedure {:inline 1} $1_coin_extract_all'$1_aptos_coin_AptosCoin'(_$t0: $Mutation ($1_coin_Coin'$1_aptos_coin_AptosCoin')) returns ($ret0: $1_coin_Coin'$1_aptos_coin_AptosCoin', $ret1: $Mutation ($1_coin_Coin'$1_aptos_coin_AptosCoin')) +// fun timestamp::now_microseconds [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:61:5+153 +procedure {:inline 1} $1_timestamp_now_microseconds() returns ($ret0: int) { // declare local variables - var $t1: int; - var $t2: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t0: int; + var $t1: $1_timestamp_CurrentTimeMicroseconds; + var $t2: int; var $t3: int; - var $t4: $1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'; - var $t5: int; - var $t6: $Mutation ($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'); - var $t7: int; - var $t8: $Mutation (int); - var $t9: $1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'; - var $t10: int; - var $t11: $Mutation ($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'); - var $t12: $1_coin_Coin'$1_aptos_coin_AptosCoin'; - var $t0: $Mutation ($1_coin_Coin'$1_aptos_coin_AptosCoin'); - var $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin'': $1_coin_Coin'$1_aptos_coin_AptosCoin'; var $temp_0'u64': int; - $t0 := _$t0; // bytecode translation starts here - // assume Identical($t2, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 - assume {:print "$at(95,1664,1763)"} true; - assume ($t2 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); - - // trace_local[coin]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:379:5+1 - assume {:print "$at(94,14429,14430)"} true; - $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin'' := $Dereference($t0); - assume {:print "$track_local(23,14,0):", $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin''} $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin'' == $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin''; - - // $t3 := get_field>.value($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:380:27+10 - assume {:print "$at(94,14533,14543)"} true; - $t3 := $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($Dereference($t0)); - - // trace_local[total_value]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:380:13+11 - assume {:print "$track_local(23,14,1):", $t3} $t3 == $t3; - - // assume Identical($t4, pack coin::Ghost$supply<#0>(Sub(select coin::Ghost$supply.v<#0>(global>(0x0)), select coin::Coin.value($t0)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:382:13+56 - assume {:print "$at(94,14572,14628)"} true; - assume ($t4 == $1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'(($v#$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, 0)) - $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($Dereference($t0))))); - - // assume Identical($t5, 0x0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:382:13+56 - assume ($t5 == 0); + // $t0 := 0x1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:62:48+16 + assume {:print "$at(150,2511,2527)"} true; + $t0 := 1; + assume $IsValid'address'($t0); - // $t6 := borrow_global>($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:382:13+56 - if (!$ResourceExists($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $t5)) { + // $t1 := get_global($t0) on_abort goto L2 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:62:9+13 + if (!$ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory, $t0)) { call $ExecFailureAbort(); } else { - $t6 := $Mutation($Global($t5), EmptyVec(), $ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $t5)); + $t1 := $ResourceValue($1_timestamp_CurrentTimeMicroseconds_$memory, $t0); } - - // write_ref($t6, $t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:382:13+56 - $t6 := $UpdateMutation($t6, $t4); - - // write_back[coin::Ghost$supply<#0>@]($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:382:13+56 - $1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory := $ResourceUpdate($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $GlobalLocationAddress($t6), - $Dereference($t6)); - - // $t7 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:384:22+1 - assume {:print "$at(94,14661,14662)"} true; - $t7 := 0; - assume $IsValid'u64'($t7); - - // $t8 := borrow_field>.value($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:384:9+10 - $t8 := $ChildMutation($t0, 0, $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($Dereference($t0))); - - // write_ref($t8, $t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:384:9+14 - $t8 := $UpdateMutation($t8, $t7); - - // write_back[Reference($t0).value (u64)]($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:384:9+14 - $t0 := $UpdateMutation($t0, $Update'$1_coin_Coin'$1_aptos_coin_AptosCoin''_value($Dereference($t0), $Dereference($t8))); - - // trace_local[coin]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:384:9+14 - $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin'' := $Dereference($t0); - assume {:print "$track_local(23,14,0):", $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin''} $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin'' == $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin''; - - // assume Identical($t9, pack coin::Ghost$supply<#0>(Add(select coin::Ghost$supply.v<#0>(global>(0x0)), $t3))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:386:13+57 - assume {:print "$at(94,14691,14748)"} true; - assume ($t9 == $1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'(($v#$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, 0)) + $t3))); - - // assume Identical($t10, 0x0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:386:13+57 - assume ($t10 == 0); - - // $t11 := borrow_global>($t10) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:386:13+57 - if (!$ResourceExists($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $t10)) { - call $ExecFailureAbort(); - } else { - $t11 := $Mutation($Global($t10), EmptyVec(), $ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $t10)); + if ($abort_flag) { + assume {:print "$at(150,2472,2485)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(28,0):", $t2} $t2 == $t2; + goto L2; } - // write_ref($t11, $t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:386:13+57 - $t11 := $UpdateMutation($t11, $t9); - - // write_back[coin::Ghost$supply<#0>@]($t11) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:386:13+57 - $1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory := $ResourceUpdate($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $GlobalLocationAddress($t11), - $Dereference($t11)); - - // $t12 := pack coin::Coin<#0>($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:388:9+27 - assume {:print "$at(94,14768,14795)"} true; - $t12 := $1_coin_Coin'$1_aptos_coin_AptosCoin'($t3); - - // trace_return[0]($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:388:9+27 - assume {:print "$track_return(23,14,0):", $t12} $t12 == $t12; + // $t3 := get_field.microseconds($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:62:9+69 + $t3 := $microseconds#$1_timestamp_CurrentTimeMicroseconds($t1); - // trace_local[coin]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:388:9+27 - $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin'' := $Dereference($t0); - assume {:print "$track_local(23,14,0):", $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin''} $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin'' == $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin''; + // trace_return[0]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:62:9+69 + assume {:print "$track_return(28,0,0):", $t3} $t3 == $t3; - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:389:5+1 - assume {:print "$at(94,14800,14801)"} true; + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:63:5+1 + assume {:print "$at(150,2546,2547)"} true; L1: - // return $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:389:5+1 - assume {:print "$at(94,14800,14801)"} true; - $ret0 := $t12; - $ret1 := $t0; + // return $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:63:5+1 + assume {:print "$at(150,2546,2547)"} true; + $ret0 := $t3; return; -} - -// fun coin::is_account_registered [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:255:5+129 -procedure {:inline 1} $1_coin_is_account_registered'$1_aptos_coin_AptosCoin'(_$t0: int) returns ($ret0: bool) -{ - // declare local variables - var $t1: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; - var $t2: bool; - var $t0: int; - var $temp_0'address': int; - var $temp_0'bool': bool; - $t0 := _$t0; - - // bytecode translation starts here - // assume Identical($t1, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 - assume {:print "$at(95,1664,1763)"} true; - assume ($t1 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); - - // trace_local[account_addr]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:255:5+1 - assume {:print "$at(94,9353,9354)"} true; - assume {:print "$track_local(23,21,0):", $t0} $t0 == $t0; - - // $t2 := exists>($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:256:9+6 - assume {:print "$at(94,9435,9441)"} true; - $t2 := $ResourceExists($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $t0); - - // trace_return[0]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:256:9+41 - assume {:print "$track_return(23,21,0):", $t2} $t2 == $t2; - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:257:5+1 - assume {:print "$at(94,9481,9482)"} true; -L1: + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:63:5+1 +L2: - // return $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:257:5+1 - assume {:print "$at(94,9481,9482)"} true; - $ret0 := $t2; + // abort($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:63:5+1 + assume {:print "$at(150,2546,2547)"} true; + $abort_code := $t2; + $abort_flag := true; return; } -// fun coin::merge [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:500:5+469 -procedure {:inline 1} $1_coin_merge'$1_aptos_coin_AptosCoin'(_$t0: $Mutation ($1_coin_Coin'$1_aptos_coin_AptosCoin'), _$t1: $1_coin_Coin'$1_aptos_coin_AptosCoin') returns ($ret0: $Mutation ($1_coin_Coin'$1_aptos_coin_AptosCoin')) +// fun timestamp::now_seconds [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:67:5+123 +procedure {:inline 1} $1_timestamp_now_seconds() returns ($ret0: int) { // declare local variables + var $t0: int; + var $t1: int; var $t2: int; - var $t3: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; - var $t4: $1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'; - var $t5: int; - var $t6: $Mutation ($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'); - var $t7: int; - var $t8: $1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'; - var $t9: int; - var $t10: $Mutation ($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'); - var $t11: int; - var $t12: int; - var $t13: int; - var $t14: $Mutation (int); - var $t0: $Mutation ($1_coin_Coin'$1_aptos_coin_AptosCoin'); - var $t1: $1_coin_Coin'$1_aptos_coin_AptosCoin'; - var $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin'': $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $t3: int; var $temp_0'u64': int; - $t0 := _$t0; - $t1 := _$t1; // bytecode translation starts here - // assume Identical($t3, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 - assume {:print "$at(95,1664,1763)"} true; - assume ($t3 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); - - // trace_local[dst_coin]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:500:5+1 - assume {:print "$at(94,19274,19275)"} true; - $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin'' := $Dereference($t0); - assume {:print "$track_local(23,24,0):", $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin''} $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin'' == $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin''; - - // trace_local[source_coin]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:500:5+1 - assume {:print "$track_local(23,24,1):", $t1} $t1 == $t1; - - // assume Le(Add(select coin::Coin.value($t0), select coin::Coin.value($t1)), 18446744073709551615) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:502:13+53 - assume {:print "$at(94,19390,19443)"} true; - assume (($value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($Dereference($t0)) + $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($t1)) <= 18446744073709551615); - - // assume Identical($t4, pack coin::Ghost$supply<#0>(Sub(select coin::Ghost$supply.v<#0>(global>(0x0)), select coin::Coin.value($t1)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:505:13+63 - assume {:print "$at(94,19482,19545)"} true; - assume ($t4 == $1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'(($v#$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, 0)) - $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($t1)))); + // $t0 := timestamp::now_microseconds() on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:68:9+18 + assume {:print "$at(150,2680,2698)"} true; + call $t0 := $1_timestamp_now_microseconds(); + if ($abort_flag) { + assume {:print "$at(150,2680,2698)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(28,1):", $t1} $t1 == $t1; + goto L2; + } - // assume Identical($t5, 0x0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:505:13+63 - assume ($t5 == 0); + // $t2 := 1000000 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:68:30+23 + $t2 := 1000000; + assume $IsValid'u64'($t2); - // $t6 := borrow_global>($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:505:13+63 - if (!$ResourceExists($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $t5)) { - call $ExecFailureAbort(); - } else { - $t6 := $Mutation($Global($t5), EmptyVec(), $ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $t5)); + // $t3 := /($t0, $t2) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:68:28+1 + call $t3 := $Div($t0, $t2); + if ($abort_flag) { + assume {:print "$at(150,2699,2700)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(28,1):", $t1} $t1 == $t1; + goto L2; } - // write_ref($t6, $t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:505:13+63 - $t6 := $UpdateMutation($t6, $t4); + // trace_return[0]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:68:9+44 + assume {:print "$track_return(28,1,0):", $t3} $t3 == $t3; - // write_back[coin::Ghost$supply<#0>@]($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:505:13+63 - $1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory := $ResourceUpdate($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $GlobalLocationAddress($t6), - $Dereference($t6)); + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:69:5+1 + assume {:print "$at(150,2729,2730)"} true; +L1: - // $t7 := unpack coin::Coin<#0>($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:507:13+14 - assume {:print "$at(94,19569,19583)"} true; - $t7 := $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($t1); + // return $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:69:5+1 + assume {:print "$at(150,2729,2730)"} true; + $ret0 := $t3; + return; - // trace_local[value]($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:507:20+5 - assume {:print "$track_local(23,24,2):", $t7} $t7 == $t7; + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:69:5+1 +L2: - // assume Identical($t8, pack coin::Ghost$supply<#0>(Add(select coin::Ghost$supply.v<#0>(global>(0x0)), $t7))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:509:13+51 - assume {:print "$at(94,19626,19677)"} true; - assume ($t8 == $1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'(($v#$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, 0)) + $t7))); + // abort($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:69:5+1 + assume {:print "$at(150,2729,2730)"} true; + $abort_code := $t1; + $abort_flag := true; + return; - // assume Identical($t9, 0x0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:509:13+51 - assume ($t9 == 0); +} - // $t10 := borrow_global>($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:509:13+51 - if (!$ResourceExists($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $t9)) { - call $ExecFailureAbort(); - } else { - $t10 := $Mutation($Global($t9), EmptyVec(), $ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $t9)); - } +// struct fixed_point32::FixedPoint32 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/fixed_point32.move:15:5+56 +type {:datatype} $1_fixed_point32_FixedPoint32; +function {:constructor} $1_fixed_point32_FixedPoint32($value: int): $1_fixed_point32_FixedPoint32; +function {:inline} $Update'$1_fixed_point32_FixedPoint32'_value(s: $1_fixed_point32_FixedPoint32, x: int): $1_fixed_point32_FixedPoint32 { + $1_fixed_point32_FixedPoint32(x) +} +function $IsValid'$1_fixed_point32_FixedPoint32'(s: $1_fixed_point32_FixedPoint32): bool { + $IsValid'u64'($value#$1_fixed_point32_FixedPoint32(s)) +} +function {:inline} $IsEqual'$1_fixed_point32_FixedPoint32'(s1: $1_fixed_point32_FixedPoint32, s2: $1_fixed_point32_FixedPoint32): bool { + s1 == s2 +} - // write_ref($t10, $t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:509:13+51 - $t10 := $UpdateMutation($t10, $t8); +// struct staking_config::StakingConfig at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/configs/staking_config.move:49:5+1753 +type {:datatype} $1_staking_config_StakingConfig; +function {:constructor} $1_staking_config_StakingConfig($minimum_stake: int, $maximum_stake: int, $recurring_lockup_duration_secs: int, $allow_validator_set_change: bool, $rewards_rate: int, $rewards_rate_denominator: int, $voting_power_increase_limit: int): $1_staking_config_StakingConfig; +function {:inline} $Update'$1_staking_config_StakingConfig'_minimum_stake(s: $1_staking_config_StakingConfig, x: int): $1_staking_config_StakingConfig { + $1_staking_config_StakingConfig(x, $maximum_stake#$1_staking_config_StakingConfig(s), $recurring_lockup_duration_secs#$1_staking_config_StakingConfig(s), $allow_validator_set_change#$1_staking_config_StakingConfig(s), $rewards_rate#$1_staking_config_StakingConfig(s), $rewards_rate_denominator#$1_staking_config_StakingConfig(s), $voting_power_increase_limit#$1_staking_config_StakingConfig(s)) +} +function {:inline} $Update'$1_staking_config_StakingConfig'_maximum_stake(s: $1_staking_config_StakingConfig, x: int): $1_staking_config_StakingConfig { + $1_staking_config_StakingConfig($minimum_stake#$1_staking_config_StakingConfig(s), x, $recurring_lockup_duration_secs#$1_staking_config_StakingConfig(s), $allow_validator_set_change#$1_staking_config_StakingConfig(s), $rewards_rate#$1_staking_config_StakingConfig(s), $rewards_rate_denominator#$1_staking_config_StakingConfig(s), $voting_power_increase_limit#$1_staking_config_StakingConfig(s)) +} +function {:inline} $Update'$1_staking_config_StakingConfig'_recurring_lockup_duration_secs(s: $1_staking_config_StakingConfig, x: int): $1_staking_config_StakingConfig { + $1_staking_config_StakingConfig($minimum_stake#$1_staking_config_StakingConfig(s), $maximum_stake#$1_staking_config_StakingConfig(s), x, $allow_validator_set_change#$1_staking_config_StakingConfig(s), $rewards_rate#$1_staking_config_StakingConfig(s), $rewards_rate_denominator#$1_staking_config_StakingConfig(s), $voting_power_increase_limit#$1_staking_config_StakingConfig(s)) +} +function {:inline} $Update'$1_staking_config_StakingConfig'_allow_validator_set_change(s: $1_staking_config_StakingConfig, x: bool): $1_staking_config_StakingConfig { + $1_staking_config_StakingConfig($minimum_stake#$1_staking_config_StakingConfig(s), $maximum_stake#$1_staking_config_StakingConfig(s), $recurring_lockup_duration_secs#$1_staking_config_StakingConfig(s), x, $rewards_rate#$1_staking_config_StakingConfig(s), $rewards_rate_denominator#$1_staking_config_StakingConfig(s), $voting_power_increase_limit#$1_staking_config_StakingConfig(s)) +} +function {:inline} $Update'$1_staking_config_StakingConfig'_rewards_rate(s: $1_staking_config_StakingConfig, x: int): $1_staking_config_StakingConfig { + $1_staking_config_StakingConfig($minimum_stake#$1_staking_config_StakingConfig(s), $maximum_stake#$1_staking_config_StakingConfig(s), $recurring_lockup_duration_secs#$1_staking_config_StakingConfig(s), $allow_validator_set_change#$1_staking_config_StakingConfig(s), x, $rewards_rate_denominator#$1_staking_config_StakingConfig(s), $voting_power_increase_limit#$1_staking_config_StakingConfig(s)) +} +function {:inline} $Update'$1_staking_config_StakingConfig'_rewards_rate_denominator(s: $1_staking_config_StakingConfig, x: int): $1_staking_config_StakingConfig { + $1_staking_config_StakingConfig($minimum_stake#$1_staking_config_StakingConfig(s), $maximum_stake#$1_staking_config_StakingConfig(s), $recurring_lockup_duration_secs#$1_staking_config_StakingConfig(s), $allow_validator_set_change#$1_staking_config_StakingConfig(s), $rewards_rate#$1_staking_config_StakingConfig(s), x, $voting_power_increase_limit#$1_staking_config_StakingConfig(s)) +} +function {:inline} $Update'$1_staking_config_StakingConfig'_voting_power_increase_limit(s: $1_staking_config_StakingConfig, x: int): $1_staking_config_StakingConfig { + $1_staking_config_StakingConfig($minimum_stake#$1_staking_config_StakingConfig(s), $maximum_stake#$1_staking_config_StakingConfig(s), $recurring_lockup_duration_secs#$1_staking_config_StakingConfig(s), $allow_validator_set_change#$1_staking_config_StakingConfig(s), $rewards_rate#$1_staking_config_StakingConfig(s), $rewards_rate_denominator#$1_staking_config_StakingConfig(s), x) +} +function $IsValid'$1_staking_config_StakingConfig'(s: $1_staking_config_StakingConfig): bool { + $IsValid'u64'($minimum_stake#$1_staking_config_StakingConfig(s)) + && $IsValid'u64'($maximum_stake#$1_staking_config_StakingConfig(s)) + && $IsValid'u64'($recurring_lockup_duration_secs#$1_staking_config_StakingConfig(s)) + && $IsValid'bool'($allow_validator_set_change#$1_staking_config_StakingConfig(s)) + && $IsValid'u64'($rewards_rate#$1_staking_config_StakingConfig(s)) + && $IsValid'u64'($rewards_rate_denominator#$1_staking_config_StakingConfig(s)) + && $IsValid'u64'($voting_power_increase_limit#$1_staking_config_StakingConfig(s)) +} +function {:inline} $IsEqual'$1_staking_config_StakingConfig'(s1: $1_staking_config_StakingConfig, s2: $1_staking_config_StakingConfig): bool { + s1 == s2 +} +var $1_staking_config_StakingConfig_$memory: $Memory $1_staking_config_StakingConfig; - // write_back[coin::Ghost$supply<#0>@]($t10) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:509:13+51 - $1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory := $ResourceUpdate($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $GlobalLocationAddress($t10), - $Dereference($t10)); +// fun staking_config::get [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/configs/staking_config.move:169:5+118 +procedure {:inline 1} $1_staking_config_get() returns ($ret0: $1_staking_config_StakingConfig) +{ + // declare local variables + var $t0: int; + var $t1: $1_staking_config_StakingConfig; + var $t2: int; + var $temp_0'$1_staking_config_StakingConfig': $1_staking_config_StakingConfig; - // $t11 := get_field>.value($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:511:26+14 - assume {:print "$at(94,19714,19728)"} true; - $t11 := $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($Dereference($t0)); + // bytecode translation starts here + // $t0 := 0x1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/configs/staking_config.move:170:39+16 + assume {:print "$at(109,8290,8306)"} true; + $t0 := 1; + assume $IsValid'address'($t0); - // $t12 := +($t11, $t7) on_abort goto L2 with $t13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:511:41+1 - call $t12 := $AddU64($t11, $t7); + // $t1 := get_global($t0) on_abort goto L2 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/configs/staking_config.move:170:10+13 + if (!$ResourceExists($1_staking_config_StakingConfig_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t1 := $ResourceValue($1_staking_config_StakingConfig_$memory, $t0); + } if ($abort_flag) { - assume {:print "$at(94,19729,19730)"} true; - $t13 := $abort_code; - assume {:print "$track_abort(23,24):", $t13} $t13 == $t13; + assume {:print "$at(109,8261,8274)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(35,2):", $t2} $t2 == $t2; goto L2; } - // $t14 := borrow_field>.value($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:511:9+14 - $t14 := $ChildMutation($t0, 0, $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($Dereference($t0))); - - // write_ref($t14, $t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:511:9+39 - $t14 := $UpdateMutation($t14, $t12); - - // write_back[Reference($t0).value (u64)]($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:511:9+39 - $t0 := $UpdateMutation($t0, $Update'$1_coin_Coin'$1_aptos_coin_AptosCoin''_value($Dereference($t0), $Dereference($t14))); - - // trace_local[dst_coin]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:511:9+39 - $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin'' := $Dereference($t0); - assume {:print "$track_local(23,24,0):", $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin''} $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin'' == $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin''; - - // trace_local[dst_coin]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:511:48+1 - $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin'' := $Dereference($t0); - assume {:print "$track_local(23,24,0):", $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin''} $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin'' == $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin''; + // trace_return[0]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/configs/staking_config.move:170:9+47 + assume {:print "$track_return(35,2,0):", $t1} $t1 == $t1; - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:512:5+1 - assume {:print "$at(94,19742,19743)"} true; + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/configs/staking_config.move:171:5+1 + assume {:print "$at(109,8312,8313)"} true; L1: - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:512:5+1 - assume {:print "$at(94,19742,19743)"} true; - $ret0 := $t0; + // return $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/configs/staking_config.move:171:5+1 + assume {:print "$at(109,8312,8313)"} true; + $ret0 := $t1; return; - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:512:5+1 + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/configs/staking_config.move:171:5+1 L2: - // abort($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:512:5+1 - assume {:print "$at(94,19742,19743)"} true; - $abort_code := $t13; + // abort($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/configs/staking_config.move:171:5+1 + assume {:print "$at(109,8312,8313)"} true; + $abort_code := $t2; $abort_flag := true; return; } -// fun coin::register [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:538:5+664 -procedure {:inline 1} $1_coin_register'$1_aptos_coin_AptosCoin'(_$t0: $signer) returns () +// fun staking_config::get_recurring_lockup_duration [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/configs/staking_config.move:185:5+123 +procedure {:inline 1} $1_staking_config_get_recurring_lockup_duration(_$t0: $1_staking_config_StakingConfig) returns ($ret0: int) { // declare local variables var $t1: int; - var $t2: $1_coin_CoinStore'$1_aptos_coin_AptosCoin'; - var $t3: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; - var $t4: int; - var $t5: $1_account_Account; - var $t6: int; - var $t7: int; - var $t8: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; - var $t9: bool; - var $t10: int; - var $t11: $1_coin_Coin'$1_aptos_coin_AptosCoin'; - var $t12: bool; - var $t13: int; - var $t14: $1_account_Account; - var $t15: $1_event_EventHandle'$1_coin_DepositEvent'; - var $t16: int; - var $t17: $1_account_Account; - var $t18: $1_event_EventHandle'$1_coin_WithdrawEvent'; - var $t19: $1_coin_CoinStore'$1_aptos_coin_AptosCoin'; - var $t0: $signer; - var $temp_0'$1_coin_CoinStore'$1_aptos_coin_AptosCoin'': $1_coin_CoinStore'$1_aptos_coin_AptosCoin'; - var $temp_0'address': int; - var $temp_0'signer': $signer; + var $t0: $1_staking_config_StakingConfig; + var $temp_0'$1_staking_config_StakingConfig': $1_staking_config_StakingConfig; + var $temp_0'u64': int; $t0 := _$t0; // bytecode translation starts here - // assume Identical($t3, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 - assume {:print "$at(95,1664,1763)"} true; - assume ($t3 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + // trace_local[config]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/configs/staking_config.move:185:5+1 + assume {:print "$at(109,8826,8827)"} true; + assume {:print "$track_local(35,4,0):", $t0} $t0 == $t0; - // assume Identical($t4, signer::$address_of($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:342:9+47 - assume {:print "$at(95,14541,14588)"} true; - assume ($t4 == $1_signer_$address_of($t0)); + // $t1 := get_field.recurring_lockup_duration_secs($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/configs/staking_config.move:186:9+37 + assume {:print "$at(109,8906,8943)"} true; + $t1 := $recurring_lockup_duration_secs#$1_staking_config_StakingConfig($t0); - // assume Identical($t5, global($t4)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:343:9+49 - assume {:print "$at(95,14597,14646)"} true; - assume ($t5 == $ResourceValue($1_account_Account_$memory, $t4)); + // trace_return[0]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/configs/staking_config.move:186:9+37 + assume {:print "$track_return(35,4,0):", $t1} $t1 == $t1; - // trace_local[account]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:538:5+1 - assume {:print "$at(94,20583,20584)"} true; - assume {:print "$track_local(23,28,0):", $t0} $t0 == $t0; + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/configs/staking_config.move:187:5+1 + assume {:print "$at(109,8948,8949)"} true; +L1: - // $t6 := signer::address_of($t0) on_abort goto L3 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:539:28+27 - assume {:print "$at(94,20660,20687)"} true; - call $t6 := $1_signer_address_of($t0); - if ($abort_flag) { - assume {:print "$at(94,20660,20687)"} true; - $t7 := $abort_code; - assume {:print "$track_abort(23,28):", $t7} $t7 == $t7; - goto L3; - } + // return $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/configs/staking_config.move:187:5+1 + assume {:print "$at(109,8948,8949)"} true; + $ret0 := $t1; + return; - // trace_local[account_addr]($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:539:13+12 - assume {:print "$track_local(23,28,1):", $t6} $t6 == $t6; +} - // assume Identical($t8, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 - assume {:print "$at(95,1664,1763)"} true; - assume ($t8 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:400:5+89 +function {:inline} $1_stake_$stake_pool_exists($1_stake_StakePool_$memory: $Memory $1_stake_StakePool, addr: int): bool { + $ResourceExists($1_stake_StakePool_$memory, addr) +} - // $t9 := coin::is_account_registered<#0>($t6) on_abort goto L3 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:541:13+45 - assume {:print "$at(94,20788,20833)"} true; - call $t9 := $1_coin_is_account_registered'$1_aptos_coin_AptosCoin'($t6); - if ($abort_flag) { - assume {:print "$at(94,20788,20833)"} true; - $t7 := $abort_code; - assume {:print "$track_abort(23,28):", $t7} $t7 == $t7; - goto L3; - } +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:16:10+500 +function {:inline} $1_stake_validator_set_is_valid($1_stake_StakePool_$memory: $Memory $1_stake_StakePool, $1_stake_ValidatorConfig_$memory: $Memory $1_stake_ValidatorConfig, $1_stake_ValidatorPerformance_$memory: $Memory $1_stake_ValidatorPerformance, $1_stake_ValidatorSet_$memory: $Memory $1_stake_ValidatorSet): bool { + (var validator_set := $ResourceValue($1_stake_ValidatorSet_$memory, 1); (((($1_stake_spec_validators_are_initialized($1_stake_StakePool_$memory, $1_stake_ValidatorConfig_$memory, $active_validators#$1_stake_ValidatorSet(validator_set)) && $1_stake_spec_validators_are_initialized($1_stake_StakePool_$memory, $1_stake_ValidatorConfig_$memory, $pending_inactive#$1_stake_ValidatorSet(validator_set))) && $1_stake_spec_validators_are_initialized($1_stake_StakePool_$memory, $1_stake_ValidatorConfig_$memory, $pending_active#$1_stake_ValidatorSet(validator_set))) && $1_stake_spec_validator_indices_are_valid($1_stake_ValidatorConfig_$memory, $1_stake_ValidatorPerformance_$memory, $active_validators#$1_stake_ValidatorSet(validator_set))) && $1_stake_spec_validator_indices_are_valid($1_stake_ValidatorConfig_$memory, $1_stake_ValidatorPerformance_$memory, $pending_inactive#$1_stake_ValidatorSet(validator_set)))) +} - // if ($t9) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:541:9+81 - if ($t9) { goto L1; } else { goto L0; } +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:306:10+241 +function {:inline} $1_stake_spec_validators_are_initialized($1_stake_StakePool_$memory: $Memory $1_stake_StakePool, $1_stake_ValidatorConfig_$memory: $Memory $1_stake_ValidatorConfig, validators: Vec ($1_stake_ValidatorInfo)): bool { + (var $range_0 := $Range(0, LenVec(validators)); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var i := $i_1; + (($1_stake_spec_has_stake_pool($1_stake_StakePool_$memory, $addr#$1_stake_ValidatorInfo(ReadVec(validators, i))) && $1_stake_spec_has_validator_config($1_stake_ValidatorConfig_$memory, $addr#$1_stake_ValidatorInfo(ReadVec(validators, i)))))))) +} - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:542:13+6 - assume {:print "$at(94,20849,20855)"} true; -L1: +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:313:10+234 +function {:inline} $1_stake_spec_validator_indices_are_valid($1_stake_ValidatorConfig_$memory: $Memory $1_stake_ValidatorConfig, $1_stake_ValidatorPerformance_$memory: $Memory $1_stake_ValidatorPerformance, validators: Vec ($1_stake_ValidatorInfo)): bool { + (var $range_2 := $Range(0, LenVec(validators)); (forall $i_3: int :: $InRange($range_2, $i_3) ==> (var i := $i_3; + (($validator_index#$1_stake_ValidatorConfig($ResourceValue($1_stake_ValidatorConfig_$memory, $addr#$1_stake_ValidatorInfo(ReadVec(validators, i)))) < $1_stake_spec_validator_index_upper_bound($1_stake_ValidatorPerformance_$memory)))))) +} - // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:542:13+6 - assume {:print "$at(94,20849,20855)"} true; - goto L2; +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:319:10+122 +function {:inline} $1_stake_spec_validator_index_upper_bound($1_stake_ValidatorPerformance_$memory: $Memory $1_stake_ValidatorPerformance): int { + LenVec($validators#$1_stake_ValidatorPerformance($ResourceValue($1_stake_ValidatorPerformance_$memory, 1))) +} - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:545:42+12 - assume {:print "$at(94,20909,20921)"} true; -L0: +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:323:10+78 +function {:inline} $1_stake_spec_has_stake_pool($1_stake_StakePool_$memory: $Memory $1_stake_StakePool, a: int): bool { + $ResourceExists($1_stake_StakePool_$memory, a) +} - // account::register_coin<#0>($t6) on_abort goto L3 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:545:9+46 - assume {:print "$at(94,20876,20922)"} true; - call $1_account_register_coin'$1_aptos_coin_AptosCoin'($t6); - if ($abort_flag) { - assume {:print "$at(94,20876,20922)"} true; - $t7 := $abort_code; - assume {:print "$track_abort(23,28):", $t7} $t7 == $t7; - goto L3; - } +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:327:10+90 +function {:inline} $1_stake_spec_has_validator_config($1_stake_ValidatorConfig_$memory: $Memory $1_stake_ValidatorConfig, a: int): bool { + $ResourceExists($1_stake_ValidatorConfig_$memory, a) +} - // $t10 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:547:33+1 - assume {:print "$at(94,21003,21004)"} true; - $t10 := 0; - assume $IsValid'u64'($t10); +// struct stake::AddStakeEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:210:5+102 +type {:datatype} $1_stake_AddStakeEvent; +function {:constructor} $1_stake_AddStakeEvent($pool_address: int, $amount_added: int): $1_stake_AddStakeEvent; +function {:inline} $Update'$1_stake_AddStakeEvent'_pool_address(s: $1_stake_AddStakeEvent, x: int): $1_stake_AddStakeEvent { + $1_stake_AddStakeEvent(x, $amount_added#$1_stake_AddStakeEvent(s)) +} +function {:inline} $Update'$1_stake_AddStakeEvent'_amount_added(s: $1_stake_AddStakeEvent, x: int): $1_stake_AddStakeEvent { + $1_stake_AddStakeEvent($pool_address#$1_stake_AddStakeEvent(s), x) +} +function $IsValid'$1_stake_AddStakeEvent'(s: $1_stake_AddStakeEvent): bool { + $IsValid'address'($pool_address#$1_stake_AddStakeEvent(s)) + && $IsValid'u64'($amount_added#$1_stake_AddStakeEvent(s)) +} +function {:inline} $IsEqual'$1_stake_AddStakeEvent'(s1: $1_stake_AddStakeEvent, s2: $1_stake_AddStakeEvent): bool { + s1 == s2 +} - // $t11 := pack coin::Coin<#0>($t10) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:547:19+17 - $t11 := $1_coin_Coin'$1_aptos_coin_AptosCoin'($t10); +// struct stake::DistributeRewardsEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:244:5+113 +type {:datatype} $1_stake_DistributeRewardsEvent; +function {:constructor} $1_stake_DistributeRewardsEvent($pool_address: int, $rewards_amount: int): $1_stake_DistributeRewardsEvent; +function {:inline} $Update'$1_stake_DistributeRewardsEvent'_pool_address(s: $1_stake_DistributeRewardsEvent, x: int): $1_stake_DistributeRewardsEvent { + $1_stake_DistributeRewardsEvent(x, $rewards_amount#$1_stake_DistributeRewardsEvent(s)) +} +function {:inline} $Update'$1_stake_DistributeRewardsEvent'_rewards_amount(s: $1_stake_DistributeRewardsEvent, x: int): $1_stake_DistributeRewardsEvent { + $1_stake_DistributeRewardsEvent($pool_address#$1_stake_DistributeRewardsEvent(s), x) +} +function $IsValid'$1_stake_DistributeRewardsEvent'(s: $1_stake_DistributeRewardsEvent): bool { + $IsValid'address'($pool_address#$1_stake_DistributeRewardsEvent(s)) + && $IsValid'u64'($rewards_amount#$1_stake_DistributeRewardsEvent(s)) +} +function {:inline} $IsEqual'$1_stake_DistributeRewardsEvent'(s1: $1_stake_DistributeRewardsEvent, s2: $1_stake_DistributeRewardsEvent): bool { + s1 == s2 +} - // $t12 := false at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:548:21+5 - assume {:print "$at(94,21028,21033)"} true; - $t12 := false; - assume $IsValid'bool'($t12); +// struct stake::IncreaseLockupEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:234:5+153 +type {:datatype} $1_stake_IncreaseLockupEvent; +function {:constructor} $1_stake_IncreaseLockupEvent($pool_address: int, $old_locked_until_secs: int, $new_locked_until_secs: int): $1_stake_IncreaseLockupEvent; +function {:inline} $Update'$1_stake_IncreaseLockupEvent'_pool_address(s: $1_stake_IncreaseLockupEvent, x: int): $1_stake_IncreaseLockupEvent { + $1_stake_IncreaseLockupEvent(x, $old_locked_until_secs#$1_stake_IncreaseLockupEvent(s), $new_locked_until_secs#$1_stake_IncreaseLockupEvent(s)) +} +function {:inline} $Update'$1_stake_IncreaseLockupEvent'_old_locked_until_secs(s: $1_stake_IncreaseLockupEvent, x: int): $1_stake_IncreaseLockupEvent { + $1_stake_IncreaseLockupEvent($pool_address#$1_stake_IncreaseLockupEvent(s), x, $new_locked_until_secs#$1_stake_IncreaseLockupEvent(s)) +} +function {:inline} $Update'$1_stake_IncreaseLockupEvent'_new_locked_until_secs(s: $1_stake_IncreaseLockupEvent, x: int): $1_stake_IncreaseLockupEvent { + $1_stake_IncreaseLockupEvent($pool_address#$1_stake_IncreaseLockupEvent(s), $old_locked_until_secs#$1_stake_IncreaseLockupEvent(s), x) +} +function $IsValid'$1_stake_IncreaseLockupEvent'(s: $1_stake_IncreaseLockupEvent): bool { + $IsValid'address'($pool_address#$1_stake_IncreaseLockupEvent(s)) + && $IsValid'u64'($old_locked_until_secs#$1_stake_IncreaseLockupEvent(s)) + && $IsValid'u64'($new_locked_until_secs#$1_stake_IncreaseLockupEvent(s)) +} +function {:inline} $IsEqual'$1_stake_IncreaseLockupEvent'(s1: $1_stake_IncreaseLockupEvent, s2: $1_stake_IncreaseLockupEvent): bool { + s1 == s2 +} - // assume Identical($t13, signer::$address_of($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:444:9+39 - assume {:print "$at(73,21650,21689)"} true; - assume ($t13 == $1_signer_$address_of($t0)); - - // assume Identical($t14, global($t13)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:445:9+36 - assume {:print "$at(73,21698,21734)"} true; - assume ($t14 == $ResourceValue($1_account_Account_$memory, $t13)); - - // $t15 := account::new_event_handle($t0) on_abort goto L3 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:549:29+48 - assume {:print "$at(94,21063,21111)"} true; - call $t15 := $1_account_new_event_handle'$1_coin_DepositEvent'($t0); - if ($abort_flag) { - assume {:print "$at(94,21063,21111)"} true; - $t7 := $abort_code; - assume {:print "$track_abort(23,28):", $t7} $t7 == $t7; - goto L3; - } - - // assume Identical($t16, signer::$address_of($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:444:9+39 - assume {:print "$at(73,21650,21689)"} true; - assume ($t16 == $1_signer_$address_of($t0)); - - // assume Identical($t17, global($t16)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:445:9+36 - assume {:print "$at(73,21698,21734)"} true; - assume ($t17 == $ResourceValue($1_account_Account_$memory, $t16)); - - // $t18 := account::new_event_handle($t0) on_abort goto L3 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:550:30+49 - assume {:print "$at(94,21142,21191)"} true; - call $t18 := $1_account_new_event_handle'$1_coin_WithdrawEvent'($t0); - if ($abort_flag) { - assume {:print "$at(94,21142,21191)"} true; - $t7 := $abort_code; - assume {:print "$track_abort(23,28):", $t7} $t7 == $t7; - goto L3; - } - - // $t19 := pack coin::CoinStore<#0>($t11, $t12, $t15, $t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:546:26+253 - assume {:print "$at(94,20949,21202)"} true; - $t19 := $1_coin_CoinStore'$1_aptos_coin_AptosCoin'($t11, $t12, $t15, $t18); - - // trace_local[coin_store]($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:546:13+10 - assume {:print "$track_local(23,28,2):", $t19} $t19 == $t19; - - // move_to>($t19, $t0) on_abort goto L3 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:552:9+7 - assume {:print "$at(94,21212,21219)"} true; - if ($ResourceExists($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $addr#$signer($t0))) { - call $ExecFailureAbort(); - } else { - $1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory := $ResourceUpdate($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $addr#$signer($t0), $t19); - } - if ($abort_flag) { - assume {:print "$at(94,21212,21219)"} true; - $t7 := $abort_code; - assume {:print "$track_abort(23,28):", $t7} $t7 == $t7; - goto L3; - } - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:553:5+1 - assume {:print "$at(94,21246,21247)"} true; -L2: - - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:553:5+1 - assume {:print "$at(94,21246,21247)"} true; - return; - - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:553:5+1 -L3: - - // abort($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:553:5+1 - assume {:print "$at(94,21246,21247)"} true; - $abort_code := $t7; - $abort_flag := true; - return; +// struct stake::IndividualValidatorPerformance at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:191:5+127 +type {:datatype} $1_stake_IndividualValidatorPerformance; +function {:constructor} $1_stake_IndividualValidatorPerformance($successful_proposals: int, $failed_proposals: int): $1_stake_IndividualValidatorPerformance; +function {:inline} $Update'$1_stake_IndividualValidatorPerformance'_successful_proposals(s: $1_stake_IndividualValidatorPerformance, x: int): $1_stake_IndividualValidatorPerformance { + $1_stake_IndividualValidatorPerformance(x, $failed_proposals#$1_stake_IndividualValidatorPerformance(s)) +} +function {:inline} $Update'$1_stake_IndividualValidatorPerformance'_failed_proposals(s: $1_stake_IndividualValidatorPerformance, x: int): $1_stake_IndividualValidatorPerformance { + $1_stake_IndividualValidatorPerformance($successful_proposals#$1_stake_IndividualValidatorPerformance(s), x) +} +function $IsValid'$1_stake_IndividualValidatorPerformance'(s: $1_stake_IndividualValidatorPerformance): bool { + $IsValid'u64'($successful_proposals#$1_stake_IndividualValidatorPerformance(s)) + && $IsValid'u64'($failed_proposals#$1_stake_IndividualValidatorPerformance(s)) +} +function {:inline} $IsEqual'$1_stake_IndividualValidatorPerformance'(s1: $1_stake_IndividualValidatorPerformance, s2: $1_stake_IndividualValidatorPerformance): bool { + s1 == s2 +} +// struct stake::JoinValidatorSetEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:240:5+83 +type {:datatype} $1_stake_JoinValidatorSetEvent; +function {:constructor} $1_stake_JoinValidatorSetEvent($pool_address: int): $1_stake_JoinValidatorSetEvent; +function {:inline} $Update'$1_stake_JoinValidatorSetEvent'_pool_address(s: $1_stake_JoinValidatorSetEvent, x: int): $1_stake_JoinValidatorSetEvent { + $1_stake_JoinValidatorSetEvent(x) } - -// fun coin::withdraw [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:571:5+697 -procedure {:inline 1} $1_coin_withdraw'$1_aptos_coin_AptosCoin'(_$t0: $signer, _$t1: int) returns ($ret0: $1_coin_Coin'$1_aptos_coin_AptosCoin') -{ - // declare local variables - var $t2: int; - var $t3: $Mutation ($1_coin_CoinStore'$1_aptos_coin_AptosCoin'); - var $t4: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; - var $t5: int; - var $t6: $1_coin_CoinStore'$1_aptos_coin_AptosCoin'; - var $t7: int; - var $t8: int; - var $t9: $1_coin_CoinStore'$1_aptos_coin_AptosCoin'; - var $t10: int; - var $t11: int; - var $t12: int; - var $t13: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; - var $t14: bool; - var $t15: int; - var $t16: int; - var $t17: $Mutation ($1_coin_CoinStore'$1_aptos_coin_AptosCoin'); - var $t18: bool; - var $t19: bool; - var $t20: int; - var $t21: int; - var $t22: $Mutation ($1_event_EventHandle'$1_coin_WithdrawEvent'); - var $t23: $1_coin_WithdrawEvent; - var $t24: $Mutation ($1_coin_Coin'$1_aptos_coin_AptosCoin'); - var $t25: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; - var $t26: $1_coin_Coin'$1_aptos_coin_AptosCoin'; - var $t0: $signer; - var $t1: int; - var $1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$modifies: [int]bool; - var $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin'': $1_coin_Coin'$1_aptos_coin_AptosCoin'; - var $temp_0'$1_coin_CoinStore'$1_aptos_coin_AptosCoin'': $1_coin_CoinStore'$1_aptos_coin_AptosCoin'; - var $temp_0'address': int; - var $temp_0'signer': $signer; - var $temp_0'u64': int; - $t0 := _$t0; - $t1 := _$t1; - - // bytecode translation starts here - // assume Identical($t4, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 - assume {:print "$at(95,1664,1763)"} true; - assume ($t4 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); - - // assume Identical($t5, signer::$address_of($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:384:9+47 - assume {:print "$at(95,16622,16669)"} true; - assume ($t5 == $1_signer_$address_of($t0)); - - // assume Identical($t6, global>($t5)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:385:9+59 - assume {:print "$at(95,16678,16737)"} true; - assume ($t6 == $ResourceValue($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $t5)); - - // assume Identical($t7, select coin::Coin.value(select coin::CoinStore.coin($t6))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:386:9+36 - assume {:print "$at(95,16746,16782)"} true; - assume ($t7 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($coin#$1_coin_CoinStore'$1_aptos_coin_AptosCoin'($t6))); - - // assume Identical($t8, signer::$address_of($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:394:9+47 - assume {:print "$at(95,17076,17123)"} true; - assume ($t8 == $1_signer_$address_of($t0)); - - // assume Identical($t9, global>($t8)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:395:9+59 - assume {:print "$at(95,17132,17191)"} true; - assume ($t9 == $ResourceValue($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $t8)); - - // assume Identical($t10, select coin::Coin.value(select coin::CoinStore.coin($t9))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:396:9+36 - assume {:print "$at(95,17200,17236)"} true; - assume ($t10 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($coin#$1_coin_CoinStore'$1_aptos_coin_AptosCoin'($t9))); - - // trace_local[account]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:571:5+1 - assume {:print "$at(94,21754,21755)"} true; - assume {:print "$track_local(23,35,0):", $t0} $t0 == $t0; - - // trace_local[amount]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:571:5+1 - assume {:print "$track_local(23,35,1):", $t1} $t1 == $t1; - - // $t11 := signer::address_of($t0) on_abort goto L7 with $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:575:28+27 - assume {:print "$at(94,21902,21929)"} true; - call $t11 := $1_signer_address_of($t0); - if ($abort_flag) { - assume {:print "$at(94,21902,21929)"} true; - $t12 := $abort_code; - assume {:print "$track_abort(23,35):", $t12} $t12 == $t12; - goto L7; - } - - // trace_local[account_addr]($t11) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:575:13+12 - assume {:print "$track_local(23,35,2):", $t11} $t11 == $t11; - - // assume Identical($t13, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 - assume {:print "$at(95,1664,1763)"} true; - assume ($t13 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); - - // $t14 := coin::is_account_registered<#0>($t11) on_abort goto L7 with $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:577:13+45 - assume {:print "$at(94,21960,22005)"} true; - call $t14 := $1_coin_is_account_registered'$1_aptos_coin_AptosCoin'($t11); - if ($abort_flag) { - assume {:print "$at(94,21960,22005)"} true; - $t12 := $abort_code; - assume {:print "$track_abort(23,35):", $t12} $t12 == $t12; - goto L7; - } - - // if ($t14) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:576:9+134 - assume {:print "$at(94,21939,22073)"} true; - if ($t14) { goto L1; } else { goto L0; } - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:576:9+134 -L1: - - // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:576:9+134 - assume {:print "$at(94,21939,22073)"} true; - goto L2; - - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:578:30+25 - assume {:print "$at(94,22036,22061)"} true; -L0: - - // $t15 := 5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:578:30+25 - assume {:print "$at(94,22036,22061)"} true; - $t15 := 5; - assume $IsValid'u64'($t15); - - // $t16 := error::not_found($t15) on_abort goto L7 with $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:578:13+43 - call $t16 := $1_error_not_found($t15); - if ($abort_flag) { - assume {:print "$at(94,22019,22062)"} true; - $t12 := $abort_code; - assume {:print "$track_abort(23,35):", $t12} $t12 == $t12; - goto L7; - } - - // trace_abort($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:576:9+134 - assume {:print "$at(94,21939,22073)"} true; - assume {:print "$track_abort(23,35):", $t16} $t16 == $t16; - - // $t12 := move($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:576:9+134 - $t12 := $t16; - - // goto L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:576:9+134 - goto L7; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:581:65+12 - assume {:print "$at(94,22140,22152)"} true; -L2: - - // $t17 := borrow_global>($t11) on_abort goto L7 with $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:581:26+17 - assume {:print "$at(94,22101,22118)"} true; - if (!$ResourceExists($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $t11)) { - call $ExecFailureAbort(); - } else { - $t17 := $Mutation($Global($t11), EmptyVec(), $ResourceValue($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $t11)); - } - if ($abort_flag) { - assume {:print "$at(94,22101,22118)"} true; - $t12 := $abort_code; - assume {:print "$track_abort(23,35):", $t12} $t12 == $t12; - goto L7; - } - - // trace_local[coin_store]($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:581:13+10 - $temp_0'$1_coin_CoinStore'$1_aptos_coin_AptosCoin'' := $Dereference($t17); - assume {:print "$track_local(23,35,3):", $temp_0'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''} $temp_0'$1_coin_CoinStore'$1_aptos_coin_AptosCoin'' == $temp_0'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''; - - // $t18 := get_field>.frozen($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:583:14+17 - assume {:print "$at(94,22185,22202)"} true; - $t18 := $frozen#$1_coin_CoinStore'$1_aptos_coin_AptosCoin'($Dereference($t17)); - - // $t19 := !($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:583:13+1 - call $t19 := $Not($t18); - - // if ($t19) goto L4 else goto L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:582:9+97 - assume {:print "$at(94,22163,22260)"} true; - if ($t19) { goto L4; } else { goto L3; } - - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:582:9+97 -L4: - - // goto L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:582:9+97 - assume {:print "$at(94,22163,22260)"} true; - goto L5; - - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:582:9+97 -L3: - - // destroy($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:582:9+97 - assume {:print "$at(94,22163,22260)"} true; - - // $t20 := 10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:584:38+7 - assume {:print "$at(94,22241,22248)"} true; - $t20 := 10; - assume $IsValid'u64'($t20); - - // $t21 := error::permission_denied($t20) on_abort goto L7 with $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:584:13+33 - call $t21 := $1_error_permission_denied($t20); - if ($abort_flag) { - assume {:print "$at(94,22216,22249)"} true; - $t12 := $abort_code; - assume {:print "$track_abort(23,35):", $t12} $t12 == $t12; - goto L7; - } - - // trace_abort($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:582:9+97 - assume {:print "$at(94,22163,22260)"} true; - assume {:print "$track_abort(23,35):", $t21} $t21 == $t21; - - // $t12 := move($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:582:9+97 - $t12 := $t21; - - // goto L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:582:9+97 - goto L7; - - // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:588:18+10 - assume {:print "$at(94,22322,22332)"} true; -L5: - - // $t22 := borrow_field>.withdraw_events($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:588:13+31 - assume {:print "$at(94,22317,22348)"} true; - $t22 := $ChildMutation($t17, 3, $withdraw_events#$1_coin_CoinStore'$1_aptos_coin_AptosCoin'($Dereference($t17))); - - // $t23 := pack coin::WithdrawEvent($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:589:13+24 - assume {:print "$at(94,22362,22386)"} true; - $t23 := $1_coin_WithdrawEvent($t1); - - // opaque begin: event::emit_event($t22, $t23) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:587:9+126 - assume {:print "$at(94,22271,22397)"} true; - - // opaque end: event::emit_event($t22, $t23) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:587:9+126 - - // write_back[Reference($t17).withdraw_events (event::EventHandle)]($t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:587:9+126 - $t17 := $UpdateMutation($t17, $Update'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''_withdraw_events($Dereference($t17), $Dereference($t22))); - - // $t24 := borrow_field>.coin($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:592:17+20 - assume {:print "$at(94,22416,22436)"} true; - $t24 := $ChildMutation($t17, 0, $coin#$1_coin_CoinStore'$1_aptos_coin_AptosCoin'($Dereference($t17))); - - // assume Identical($t25, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 - assume {:print "$at(95,1664,1763)"} true; - assume ($t25 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); - - // $t26 := coin::extract<#0>($t24, $t1) on_abort goto L7 with $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:592:9+37 - assume {:print "$at(94,22408,22445)"} true; - call $t26,$t24 := $1_coin_extract'$1_aptos_coin_AptosCoin'($t24, $t1); - if ($abort_flag) { - assume {:print "$at(94,22408,22445)"} true; - $t12 := $abort_code; - assume {:print "$track_abort(23,35):", $t12} $t12 == $t12; - goto L7; - } - - // write_back[Reference($t17).coin (coin::Coin<#0>)]($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:592:9+37 - $t17 := $UpdateMutation($t17, $Update'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''_coin($Dereference($t17), $Dereference($t24))); - - // write_back[coin::CoinStore<#0>@]($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:592:9+37 - $1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory := $ResourceUpdate($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $GlobalLocationAddress($t17), - $Dereference($t17)); - - // trace_return[0]($t26) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:592:9+37 - assume {:print "$track_return(23,35,0):", $t26} $t26 == $t26; - - // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:593:5+1 - assume {:print "$at(94,22450,22451)"} true; -L6: - - // return $t26 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:593:5+1 - assume {:print "$at(94,22450,22451)"} true; - $ret0 := $t26; - return; - - // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:593:5+1 -L7: - - // abort($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:593:5+1 - assume {:print "$at(94,22450,22451)"} true; - $abort_code := $t12; - $abort_flag := true; - return; - +function $IsValid'$1_stake_JoinValidatorSetEvent'(s: $1_stake_JoinValidatorSetEvent): bool { + $IsValid'address'($pool_address#$1_stake_JoinValidatorSetEvent(s)) } - -// fun coin::zero [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:596:5+193 -procedure {:inline 1} $1_coin_zero'$1_aptos_coin_AptosCoin'() returns ($ret0: $1_coin_Coin'$1_aptos_coin_AptosCoin') -{ - // declare local variables - var $t0: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; - var $t1: $1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'; - var $t2: int; - var $t3: $Mutation ($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'); - var $t4: int; - var $t5: $1_coin_Coin'$1_aptos_coin_AptosCoin'; - var $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin'': $1_coin_Coin'$1_aptos_coin_AptosCoin'; - - // bytecode translation starts here - // assume Identical($t0, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 - assume {:print "$at(95,1664,1763)"} true; - assume ($t0 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); - - // assume Identical($t1, pack coin::Ghost$supply<#0>(Add(select coin::Ghost$supply.v<#0>(global>(0x0)), 0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:598:13+47 - assume {:print "$at(94,22589,22636)"} true; - assume ($t1 == $1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'(($v#$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, 0)) + 0))); - - // assume Identical($t2, 0x0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:598:13+47 - assume ($t2 == 0); - - // $t3 := borrow_global>($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:598:13+47 - if (!$ResourceExists($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $t2)) { - call $ExecFailureAbort(); - } else { - $t3 := $Mutation($Global($t2), EmptyVec(), $ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $t2)); - } - - // write_ref($t3, $t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:598:13+47 - $t3 := $UpdateMutation($t3, $t1); - - // write_back[coin::Ghost$supply<#0>@]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:598:13+47 - $1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory := $ResourceUpdate($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $GlobalLocationAddress($t3), - $Dereference($t3)); - - // $t4 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:601:20+1 - assume {:print "$at(94,22692,22693)"} true; - $t4 := 0; - assume $IsValid'u64'($t4); - - // $t5 := pack coin::Coin<#0>($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:600:9+47 - assume {:print "$at(94,22656,22703)"} true; - $t5 := $1_coin_Coin'$1_aptos_coin_AptosCoin'($t4); - - // trace_return[0]($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:600:9+47 - assume {:print "$track_return(23,36,0):", $t5} $t5 == $t5; - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:603:5+1 - assume {:print "$at(94,22708,22709)"} true; -L1: - - // return $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:603:5+1 - assume {:print "$at(94,22708,22709)"} true; - $ret0 := $t5; - return; - +function {:inline} $IsEqual'$1_stake_JoinValidatorSetEvent'(s1: $1_stake_JoinValidatorSetEvent, s2: $1_stake_JoinValidatorSetEvent): bool { + s1 == s2 } -// struct aptos_coin::AptosCoin at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_coin.move:22:5+27 -type {:datatype} $1_aptos_coin_AptosCoin; -function {:constructor} $1_aptos_coin_AptosCoin($dummy_field: bool): $1_aptos_coin_AptosCoin; -function {:inline} $Update'$1_aptos_coin_AptosCoin'_dummy_field(s: $1_aptos_coin_AptosCoin, x: bool): $1_aptos_coin_AptosCoin { - $1_aptos_coin_AptosCoin(x) +// struct stake::LeaveValidatorSetEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:259:5+84 +type {:datatype} $1_stake_LeaveValidatorSetEvent; +function {:constructor} $1_stake_LeaveValidatorSetEvent($pool_address: int): $1_stake_LeaveValidatorSetEvent; +function {:inline} $Update'$1_stake_LeaveValidatorSetEvent'_pool_address(s: $1_stake_LeaveValidatorSetEvent, x: int): $1_stake_LeaveValidatorSetEvent { + $1_stake_LeaveValidatorSetEvent(x) } -function $IsValid'$1_aptos_coin_AptosCoin'(s: $1_aptos_coin_AptosCoin): bool { - $IsValid'bool'($dummy_field#$1_aptos_coin_AptosCoin(s)) +function $IsValid'$1_stake_LeaveValidatorSetEvent'(s: $1_stake_LeaveValidatorSetEvent): bool { + $IsValid'address'($pool_address#$1_stake_LeaveValidatorSetEvent(s)) } -function {:inline} $IsEqual'$1_aptos_coin_AptosCoin'(s1: $1_aptos_coin_AptosCoin, s2: $1_aptos_coin_AptosCoin): bool { +function {:inline} $IsEqual'$1_stake_LeaveValidatorSetEvent'(s1: $1_stake_LeaveValidatorSetEvent, s2: $1_stake_LeaveValidatorSetEvent): bool { s1 == s2 } -var $1_aptos_coin_AptosCoin_$memory: $Memory $1_aptos_coin_AptosCoin; -// struct aptos_account::DirectCoinTransferConfigUpdatedEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:34:5+109 -type {:datatype} $1_aptos_account_DirectCoinTransferConfigUpdatedEvent; -function {:constructor} $1_aptos_account_DirectCoinTransferConfigUpdatedEvent($new_allow_direct_transfers: bool): $1_aptos_account_DirectCoinTransferConfigUpdatedEvent; -function {:inline} $Update'$1_aptos_account_DirectCoinTransferConfigUpdatedEvent'_new_allow_direct_transfers(s: $1_aptos_account_DirectCoinTransferConfigUpdatedEvent, x: bool): $1_aptos_account_DirectCoinTransferConfigUpdatedEvent { - $1_aptos_account_DirectCoinTransferConfigUpdatedEvent(x) +// struct stake::OwnerCapability at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:100:5+76 +type {:datatype} $1_stake_OwnerCapability; +function {:constructor} $1_stake_OwnerCapability($pool_address: int): $1_stake_OwnerCapability; +function {:inline} $Update'$1_stake_OwnerCapability'_pool_address(s: $1_stake_OwnerCapability, x: int): $1_stake_OwnerCapability { + $1_stake_OwnerCapability(x) } -function $IsValid'$1_aptos_account_DirectCoinTransferConfigUpdatedEvent'(s: $1_aptos_account_DirectCoinTransferConfigUpdatedEvent): bool { - $IsValid'bool'($new_allow_direct_transfers#$1_aptos_account_DirectCoinTransferConfigUpdatedEvent(s)) +function $IsValid'$1_stake_OwnerCapability'(s: $1_stake_OwnerCapability): bool { + $IsValid'address'($pool_address#$1_stake_OwnerCapability(s)) } -function {:inline} $IsEqual'$1_aptos_account_DirectCoinTransferConfigUpdatedEvent'(s1: $1_aptos_account_DirectCoinTransferConfigUpdatedEvent, s2: $1_aptos_account_DirectCoinTransferConfigUpdatedEvent): bool { +function {:inline} $IsEqual'$1_stake_OwnerCapability'(s1: $1_stake_OwnerCapability, s2: $1_stake_OwnerCapability): bool { s1 == s2 } +var $1_stake_OwnerCapability_$memory: $Memory $1_stake_OwnerCapability; -// struct aptos_account::DirectTransferConfig at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:28:5+177 -type {:datatype} $1_aptos_account_DirectTransferConfig; -function {:constructor} $1_aptos_account_DirectTransferConfig($allow_arbitrary_coin_transfers: bool, $update_coin_transfer_events: $1_event_EventHandle'$1_aptos_account_DirectCoinTransferConfigUpdatedEvent'): $1_aptos_account_DirectTransferConfig; -function {:inline} $Update'$1_aptos_account_DirectTransferConfig'_allow_arbitrary_coin_transfers(s: $1_aptos_account_DirectTransferConfig, x: bool): $1_aptos_account_DirectTransferConfig { - $1_aptos_account_DirectTransferConfig(x, $update_coin_transfer_events#$1_aptos_account_DirectTransferConfig(s)) +// struct stake::ReactivateStakeEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:215:5+103 +type {:datatype} $1_stake_ReactivateStakeEvent; +function {:constructor} $1_stake_ReactivateStakeEvent($pool_address: int, $amount: int): $1_stake_ReactivateStakeEvent; +function {:inline} $Update'$1_stake_ReactivateStakeEvent'_pool_address(s: $1_stake_ReactivateStakeEvent, x: int): $1_stake_ReactivateStakeEvent { + $1_stake_ReactivateStakeEvent(x, $amount#$1_stake_ReactivateStakeEvent(s)) } -function {:inline} $Update'$1_aptos_account_DirectTransferConfig'_update_coin_transfer_events(s: $1_aptos_account_DirectTransferConfig, x: $1_event_EventHandle'$1_aptos_account_DirectCoinTransferConfigUpdatedEvent'): $1_aptos_account_DirectTransferConfig { - $1_aptos_account_DirectTransferConfig($allow_arbitrary_coin_transfers#$1_aptos_account_DirectTransferConfig(s), x) +function {:inline} $Update'$1_stake_ReactivateStakeEvent'_amount(s: $1_stake_ReactivateStakeEvent, x: int): $1_stake_ReactivateStakeEvent { + $1_stake_ReactivateStakeEvent($pool_address#$1_stake_ReactivateStakeEvent(s), x) } -function $IsValid'$1_aptos_account_DirectTransferConfig'(s: $1_aptos_account_DirectTransferConfig): bool { - $IsValid'bool'($allow_arbitrary_coin_transfers#$1_aptos_account_DirectTransferConfig(s)) - && $IsValid'$1_event_EventHandle'$1_aptos_account_DirectCoinTransferConfigUpdatedEvent''($update_coin_transfer_events#$1_aptos_account_DirectTransferConfig(s)) +function $IsValid'$1_stake_ReactivateStakeEvent'(s: $1_stake_ReactivateStakeEvent): bool { + $IsValid'address'($pool_address#$1_stake_ReactivateStakeEvent(s)) + && $IsValid'u64'($amount#$1_stake_ReactivateStakeEvent(s)) } -function {:inline} $IsEqual'$1_aptos_account_DirectTransferConfig'(s1: $1_aptos_account_DirectTransferConfig, s2: $1_aptos_account_DirectTransferConfig): bool { +function {:inline} $IsEqual'$1_stake_ReactivateStakeEvent'(s1: $1_stake_ReactivateStakeEvent, s2: $1_stake_ReactivateStakeEvent): bool { s1 == s2 } -var $1_aptos_account_DirectTransferConfig_$memory: $Memory $1_aptos_account_DirectTransferConfig; - -// fun aptos_account::create_account [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:42:5+158 -procedure {:inline 1} $1_aptos_account_create_account(_$t0: int) returns () -{ - // declare local variables - var $t1: $signer; - var $t2: Vec (int); - var $t3: $signer; - var $t4: int; - var $t5: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; - var $t6: int; - var $t7: $1_account_Account; - var $t0: int; - var $temp_0'address': int; - var $temp_0'signer': $signer; - $t0 := _$t0; - // bytecode translation starts here - // trace_local[auth_key]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:42:5+1 - assume {:print "$at(80,1826,1827)"} true; - assume {:print "$track_local(25,5,0):", $t0} $t0 == $t0; - - // assume Identical($t2, bcs::$to_bytes
($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:34:9+45 - assume {:print "$at(73,1495,1540)"} true; - assume ($t2 == $1_bcs_$to_bytes'address'($t0)); - - // $t3 := account::create_account($t0) on_abort goto L2 with $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:43:22+33 - assume {:print "$at(80,1900,1933)"} true; - call $t3 := $1_account_create_account($t0); - if ($abort_flag) { - assume {:print "$at(80,1900,1933)"} true; - $t4 := $abort_code; - assume {:print "$track_abort(25,5):", $t4} $t4 == $t4; - goto L2; - } - - // trace_local[signer]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:43:13+6 - assume {:print "$track_local(25,5,1):", $t3} $t3 == $t3; - - // assume Identical($t5, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 - assume {:print "$at(95,1664,1763)"} true; - assume ($t5 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); - - // assume Identical($t6, signer::$address_of($t3)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:342:9+47 - assume {:print "$at(95,14541,14588)"} true; - assume ($t6 == $1_signer_$address_of($t3)); +// struct stake::RegisterValidatorCandidateEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:200:5+93 +type {:datatype} $1_stake_RegisterValidatorCandidateEvent; +function {:constructor} $1_stake_RegisterValidatorCandidateEvent($pool_address: int): $1_stake_RegisterValidatorCandidateEvent; +function {:inline} $Update'$1_stake_RegisterValidatorCandidateEvent'_pool_address(s: $1_stake_RegisterValidatorCandidateEvent, x: int): $1_stake_RegisterValidatorCandidateEvent { + $1_stake_RegisterValidatorCandidateEvent(x) +} +function $IsValid'$1_stake_RegisterValidatorCandidateEvent'(s: $1_stake_RegisterValidatorCandidateEvent): bool { + $IsValid'address'($pool_address#$1_stake_RegisterValidatorCandidateEvent(s)) +} +function {:inline} $IsEqual'$1_stake_RegisterValidatorCandidateEvent'(s1: $1_stake_RegisterValidatorCandidateEvent, s2: $1_stake_RegisterValidatorCandidateEvent): bool { + s1 == s2 +} - // assume Identical($t7, global($t6)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:343:9+49 - assume {:print "$at(95,14597,14646)"} true; - assume ($t7 == $ResourceValue($1_account_Account_$memory, $t6)); +// struct stake::RotateConsensusKeyEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:220:5+169 +type {:datatype} $1_stake_RotateConsensusKeyEvent; +function {:constructor} $1_stake_RotateConsensusKeyEvent($pool_address: int, $old_consensus_pubkey: Vec (int), $new_consensus_pubkey: Vec (int)): $1_stake_RotateConsensusKeyEvent; +function {:inline} $Update'$1_stake_RotateConsensusKeyEvent'_pool_address(s: $1_stake_RotateConsensusKeyEvent, x: int): $1_stake_RotateConsensusKeyEvent { + $1_stake_RotateConsensusKeyEvent(x, $old_consensus_pubkey#$1_stake_RotateConsensusKeyEvent(s), $new_consensus_pubkey#$1_stake_RotateConsensusKeyEvent(s)) +} +function {:inline} $Update'$1_stake_RotateConsensusKeyEvent'_old_consensus_pubkey(s: $1_stake_RotateConsensusKeyEvent, x: Vec (int)): $1_stake_RotateConsensusKeyEvent { + $1_stake_RotateConsensusKeyEvent($pool_address#$1_stake_RotateConsensusKeyEvent(s), x, $new_consensus_pubkey#$1_stake_RotateConsensusKeyEvent(s)) +} +function {:inline} $Update'$1_stake_RotateConsensusKeyEvent'_new_consensus_pubkey(s: $1_stake_RotateConsensusKeyEvent, x: Vec (int)): $1_stake_RotateConsensusKeyEvent { + $1_stake_RotateConsensusKeyEvent($pool_address#$1_stake_RotateConsensusKeyEvent(s), $old_consensus_pubkey#$1_stake_RotateConsensusKeyEvent(s), x) +} +function $IsValid'$1_stake_RotateConsensusKeyEvent'(s: $1_stake_RotateConsensusKeyEvent): bool { + $IsValid'address'($pool_address#$1_stake_RotateConsensusKeyEvent(s)) + && $IsValid'vec'u8''($old_consensus_pubkey#$1_stake_RotateConsensusKeyEvent(s)) + && $IsValid'vec'u8''($new_consensus_pubkey#$1_stake_RotateConsensusKeyEvent(s)) +} +function {:inline} $IsEqual'$1_stake_RotateConsensusKeyEvent'(s1: $1_stake_RotateConsensusKeyEvent, s2: $1_stake_RotateConsensusKeyEvent): bool { + $IsEqual'address'($pool_address#$1_stake_RotateConsensusKeyEvent(s1), $pool_address#$1_stake_RotateConsensusKeyEvent(s2)) + && $IsEqual'vec'u8''($old_consensus_pubkey#$1_stake_RotateConsensusKeyEvent(s1), $old_consensus_pubkey#$1_stake_RotateConsensusKeyEvent(s2)) + && $IsEqual'vec'u8''($new_consensus_pubkey#$1_stake_RotateConsensusKeyEvent(s1), $new_consensus_pubkey#$1_stake_RotateConsensusKeyEvent(s2))} - // coin::register($t3) on_abort goto L2 with $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:44:9+34 - assume {:print "$at(80,1943,1977)"} true; - call $1_coin_register'$1_aptos_coin_AptosCoin'($t3); - if ($abort_flag) { - assume {:print "$at(80,1943,1977)"} true; - $t4 := $abort_code; - assume {:print "$track_abort(25,5):", $t4} $t4 == $t4; - goto L2; - } +// struct stake::SetOperatorEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:204:5+140 +type {:datatype} $1_stake_SetOperatorEvent; +function {:constructor} $1_stake_SetOperatorEvent($pool_address: int, $old_operator: int, $new_operator: int): $1_stake_SetOperatorEvent; +function {:inline} $Update'$1_stake_SetOperatorEvent'_pool_address(s: $1_stake_SetOperatorEvent, x: int): $1_stake_SetOperatorEvent { + $1_stake_SetOperatorEvent(x, $old_operator#$1_stake_SetOperatorEvent(s), $new_operator#$1_stake_SetOperatorEvent(s)) +} +function {:inline} $Update'$1_stake_SetOperatorEvent'_old_operator(s: $1_stake_SetOperatorEvent, x: int): $1_stake_SetOperatorEvent { + $1_stake_SetOperatorEvent($pool_address#$1_stake_SetOperatorEvent(s), x, $new_operator#$1_stake_SetOperatorEvent(s)) +} +function {:inline} $Update'$1_stake_SetOperatorEvent'_new_operator(s: $1_stake_SetOperatorEvent, x: int): $1_stake_SetOperatorEvent { + $1_stake_SetOperatorEvent($pool_address#$1_stake_SetOperatorEvent(s), $old_operator#$1_stake_SetOperatorEvent(s), x) +} +function $IsValid'$1_stake_SetOperatorEvent'(s: $1_stake_SetOperatorEvent): bool { + $IsValid'address'($pool_address#$1_stake_SetOperatorEvent(s)) + && $IsValid'address'($old_operator#$1_stake_SetOperatorEvent(s)) + && $IsValid'address'($new_operator#$1_stake_SetOperatorEvent(s)) +} +function {:inline} $IsEqual'$1_stake_SetOperatorEvent'(s1: $1_stake_SetOperatorEvent, s2: $1_stake_SetOperatorEvent): bool { + s1 == s2 +} - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:45:5+1 - assume {:print "$at(80,1983,1984)"} true; -L1: +// struct stake::StakePool at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:115:5+1829 +type {:datatype} $1_stake_StakePool; +function {:constructor} $1_stake_StakePool($active: $1_coin_Coin'$1_aptos_coin_AptosCoin', $inactive: $1_coin_Coin'$1_aptos_coin_AptosCoin', $pending_active: $1_coin_Coin'$1_aptos_coin_AptosCoin', $pending_inactive: $1_coin_Coin'$1_aptos_coin_AptosCoin', $locked_until_secs: int, $operator_address: int, $delegated_voter: int, $initialize_validator_events: $1_event_EventHandle'$1_stake_RegisterValidatorCandidateEvent', $set_operator_events: $1_event_EventHandle'$1_stake_SetOperatorEvent', $add_stake_events: $1_event_EventHandle'$1_stake_AddStakeEvent', $reactivate_stake_events: $1_event_EventHandle'$1_stake_ReactivateStakeEvent', $rotate_consensus_key_events: $1_event_EventHandle'$1_stake_RotateConsensusKeyEvent', $update_network_and_fullnode_addresses_events: $1_event_EventHandle'$1_stake_UpdateNetworkAndFullnodeAddressesEvent', $increase_lockup_events: $1_event_EventHandle'$1_stake_IncreaseLockupEvent', $join_validator_set_events: $1_event_EventHandle'$1_stake_JoinValidatorSetEvent', $distribute_rewards_events: $1_event_EventHandle'$1_stake_DistributeRewardsEvent', $unlock_stake_events: $1_event_EventHandle'$1_stake_UnlockStakeEvent', $withdraw_stake_events: $1_event_EventHandle'$1_stake_WithdrawStakeEvent', $leave_validator_set_events: $1_event_EventHandle'$1_stake_LeaveValidatorSetEvent'): $1_stake_StakePool; +function {:inline} $Update'$1_stake_StakePool'_active(s: $1_stake_StakePool, x: $1_coin_Coin'$1_aptos_coin_AptosCoin'): $1_stake_StakePool { + $1_stake_StakePool(x, $inactive#$1_stake_StakePool(s), $pending_active#$1_stake_StakePool(s), $pending_inactive#$1_stake_StakePool(s), $locked_until_secs#$1_stake_StakePool(s), $operator_address#$1_stake_StakePool(s), $delegated_voter#$1_stake_StakePool(s), $initialize_validator_events#$1_stake_StakePool(s), $set_operator_events#$1_stake_StakePool(s), $add_stake_events#$1_stake_StakePool(s), $reactivate_stake_events#$1_stake_StakePool(s), $rotate_consensus_key_events#$1_stake_StakePool(s), $update_network_and_fullnode_addresses_events#$1_stake_StakePool(s), $increase_lockup_events#$1_stake_StakePool(s), $join_validator_set_events#$1_stake_StakePool(s), $distribute_rewards_events#$1_stake_StakePool(s), $unlock_stake_events#$1_stake_StakePool(s), $withdraw_stake_events#$1_stake_StakePool(s), $leave_validator_set_events#$1_stake_StakePool(s)) +} +function {:inline} $Update'$1_stake_StakePool'_inactive(s: $1_stake_StakePool, x: $1_coin_Coin'$1_aptos_coin_AptosCoin'): $1_stake_StakePool { + $1_stake_StakePool($active#$1_stake_StakePool(s), x, $pending_active#$1_stake_StakePool(s), $pending_inactive#$1_stake_StakePool(s), $locked_until_secs#$1_stake_StakePool(s), $operator_address#$1_stake_StakePool(s), $delegated_voter#$1_stake_StakePool(s), $initialize_validator_events#$1_stake_StakePool(s), $set_operator_events#$1_stake_StakePool(s), $add_stake_events#$1_stake_StakePool(s), $reactivate_stake_events#$1_stake_StakePool(s), $rotate_consensus_key_events#$1_stake_StakePool(s), $update_network_and_fullnode_addresses_events#$1_stake_StakePool(s), $increase_lockup_events#$1_stake_StakePool(s), $join_validator_set_events#$1_stake_StakePool(s), $distribute_rewards_events#$1_stake_StakePool(s), $unlock_stake_events#$1_stake_StakePool(s), $withdraw_stake_events#$1_stake_StakePool(s), $leave_validator_set_events#$1_stake_StakePool(s)) +} +function {:inline} $Update'$1_stake_StakePool'_pending_active(s: $1_stake_StakePool, x: $1_coin_Coin'$1_aptos_coin_AptosCoin'): $1_stake_StakePool { + $1_stake_StakePool($active#$1_stake_StakePool(s), $inactive#$1_stake_StakePool(s), x, $pending_inactive#$1_stake_StakePool(s), $locked_until_secs#$1_stake_StakePool(s), $operator_address#$1_stake_StakePool(s), $delegated_voter#$1_stake_StakePool(s), $initialize_validator_events#$1_stake_StakePool(s), $set_operator_events#$1_stake_StakePool(s), $add_stake_events#$1_stake_StakePool(s), $reactivate_stake_events#$1_stake_StakePool(s), $rotate_consensus_key_events#$1_stake_StakePool(s), $update_network_and_fullnode_addresses_events#$1_stake_StakePool(s), $increase_lockup_events#$1_stake_StakePool(s), $join_validator_set_events#$1_stake_StakePool(s), $distribute_rewards_events#$1_stake_StakePool(s), $unlock_stake_events#$1_stake_StakePool(s), $withdraw_stake_events#$1_stake_StakePool(s), $leave_validator_set_events#$1_stake_StakePool(s)) +} +function {:inline} $Update'$1_stake_StakePool'_pending_inactive(s: $1_stake_StakePool, x: $1_coin_Coin'$1_aptos_coin_AptosCoin'): $1_stake_StakePool { + $1_stake_StakePool($active#$1_stake_StakePool(s), $inactive#$1_stake_StakePool(s), $pending_active#$1_stake_StakePool(s), x, $locked_until_secs#$1_stake_StakePool(s), $operator_address#$1_stake_StakePool(s), $delegated_voter#$1_stake_StakePool(s), $initialize_validator_events#$1_stake_StakePool(s), $set_operator_events#$1_stake_StakePool(s), $add_stake_events#$1_stake_StakePool(s), $reactivate_stake_events#$1_stake_StakePool(s), $rotate_consensus_key_events#$1_stake_StakePool(s), $update_network_and_fullnode_addresses_events#$1_stake_StakePool(s), $increase_lockup_events#$1_stake_StakePool(s), $join_validator_set_events#$1_stake_StakePool(s), $distribute_rewards_events#$1_stake_StakePool(s), $unlock_stake_events#$1_stake_StakePool(s), $withdraw_stake_events#$1_stake_StakePool(s), $leave_validator_set_events#$1_stake_StakePool(s)) +} +function {:inline} $Update'$1_stake_StakePool'_locked_until_secs(s: $1_stake_StakePool, x: int): $1_stake_StakePool { + $1_stake_StakePool($active#$1_stake_StakePool(s), $inactive#$1_stake_StakePool(s), $pending_active#$1_stake_StakePool(s), $pending_inactive#$1_stake_StakePool(s), x, $operator_address#$1_stake_StakePool(s), $delegated_voter#$1_stake_StakePool(s), $initialize_validator_events#$1_stake_StakePool(s), $set_operator_events#$1_stake_StakePool(s), $add_stake_events#$1_stake_StakePool(s), $reactivate_stake_events#$1_stake_StakePool(s), $rotate_consensus_key_events#$1_stake_StakePool(s), $update_network_and_fullnode_addresses_events#$1_stake_StakePool(s), $increase_lockup_events#$1_stake_StakePool(s), $join_validator_set_events#$1_stake_StakePool(s), $distribute_rewards_events#$1_stake_StakePool(s), $unlock_stake_events#$1_stake_StakePool(s), $withdraw_stake_events#$1_stake_StakePool(s), $leave_validator_set_events#$1_stake_StakePool(s)) +} +function {:inline} $Update'$1_stake_StakePool'_operator_address(s: $1_stake_StakePool, x: int): $1_stake_StakePool { + $1_stake_StakePool($active#$1_stake_StakePool(s), $inactive#$1_stake_StakePool(s), $pending_active#$1_stake_StakePool(s), $pending_inactive#$1_stake_StakePool(s), $locked_until_secs#$1_stake_StakePool(s), x, $delegated_voter#$1_stake_StakePool(s), $initialize_validator_events#$1_stake_StakePool(s), $set_operator_events#$1_stake_StakePool(s), $add_stake_events#$1_stake_StakePool(s), $reactivate_stake_events#$1_stake_StakePool(s), $rotate_consensus_key_events#$1_stake_StakePool(s), $update_network_and_fullnode_addresses_events#$1_stake_StakePool(s), $increase_lockup_events#$1_stake_StakePool(s), $join_validator_set_events#$1_stake_StakePool(s), $distribute_rewards_events#$1_stake_StakePool(s), $unlock_stake_events#$1_stake_StakePool(s), $withdraw_stake_events#$1_stake_StakePool(s), $leave_validator_set_events#$1_stake_StakePool(s)) +} +function {:inline} $Update'$1_stake_StakePool'_delegated_voter(s: $1_stake_StakePool, x: int): $1_stake_StakePool { + $1_stake_StakePool($active#$1_stake_StakePool(s), $inactive#$1_stake_StakePool(s), $pending_active#$1_stake_StakePool(s), $pending_inactive#$1_stake_StakePool(s), $locked_until_secs#$1_stake_StakePool(s), $operator_address#$1_stake_StakePool(s), x, $initialize_validator_events#$1_stake_StakePool(s), $set_operator_events#$1_stake_StakePool(s), $add_stake_events#$1_stake_StakePool(s), $reactivate_stake_events#$1_stake_StakePool(s), $rotate_consensus_key_events#$1_stake_StakePool(s), $update_network_and_fullnode_addresses_events#$1_stake_StakePool(s), $increase_lockup_events#$1_stake_StakePool(s), $join_validator_set_events#$1_stake_StakePool(s), $distribute_rewards_events#$1_stake_StakePool(s), $unlock_stake_events#$1_stake_StakePool(s), $withdraw_stake_events#$1_stake_StakePool(s), $leave_validator_set_events#$1_stake_StakePool(s)) +} +function {:inline} $Update'$1_stake_StakePool'_initialize_validator_events(s: $1_stake_StakePool, x: $1_event_EventHandle'$1_stake_RegisterValidatorCandidateEvent'): $1_stake_StakePool { + $1_stake_StakePool($active#$1_stake_StakePool(s), $inactive#$1_stake_StakePool(s), $pending_active#$1_stake_StakePool(s), $pending_inactive#$1_stake_StakePool(s), $locked_until_secs#$1_stake_StakePool(s), $operator_address#$1_stake_StakePool(s), $delegated_voter#$1_stake_StakePool(s), x, $set_operator_events#$1_stake_StakePool(s), $add_stake_events#$1_stake_StakePool(s), $reactivate_stake_events#$1_stake_StakePool(s), $rotate_consensus_key_events#$1_stake_StakePool(s), $update_network_and_fullnode_addresses_events#$1_stake_StakePool(s), $increase_lockup_events#$1_stake_StakePool(s), $join_validator_set_events#$1_stake_StakePool(s), $distribute_rewards_events#$1_stake_StakePool(s), $unlock_stake_events#$1_stake_StakePool(s), $withdraw_stake_events#$1_stake_StakePool(s), $leave_validator_set_events#$1_stake_StakePool(s)) +} +function {:inline} $Update'$1_stake_StakePool'_set_operator_events(s: $1_stake_StakePool, x: $1_event_EventHandle'$1_stake_SetOperatorEvent'): $1_stake_StakePool { + $1_stake_StakePool($active#$1_stake_StakePool(s), $inactive#$1_stake_StakePool(s), $pending_active#$1_stake_StakePool(s), $pending_inactive#$1_stake_StakePool(s), $locked_until_secs#$1_stake_StakePool(s), $operator_address#$1_stake_StakePool(s), $delegated_voter#$1_stake_StakePool(s), $initialize_validator_events#$1_stake_StakePool(s), x, $add_stake_events#$1_stake_StakePool(s), $reactivate_stake_events#$1_stake_StakePool(s), $rotate_consensus_key_events#$1_stake_StakePool(s), $update_network_and_fullnode_addresses_events#$1_stake_StakePool(s), $increase_lockup_events#$1_stake_StakePool(s), $join_validator_set_events#$1_stake_StakePool(s), $distribute_rewards_events#$1_stake_StakePool(s), $unlock_stake_events#$1_stake_StakePool(s), $withdraw_stake_events#$1_stake_StakePool(s), $leave_validator_set_events#$1_stake_StakePool(s)) +} +function {:inline} $Update'$1_stake_StakePool'_add_stake_events(s: $1_stake_StakePool, x: $1_event_EventHandle'$1_stake_AddStakeEvent'): $1_stake_StakePool { + $1_stake_StakePool($active#$1_stake_StakePool(s), $inactive#$1_stake_StakePool(s), $pending_active#$1_stake_StakePool(s), $pending_inactive#$1_stake_StakePool(s), $locked_until_secs#$1_stake_StakePool(s), $operator_address#$1_stake_StakePool(s), $delegated_voter#$1_stake_StakePool(s), $initialize_validator_events#$1_stake_StakePool(s), $set_operator_events#$1_stake_StakePool(s), x, $reactivate_stake_events#$1_stake_StakePool(s), $rotate_consensus_key_events#$1_stake_StakePool(s), $update_network_and_fullnode_addresses_events#$1_stake_StakePool(s), $increase_lockup_events#$1_stake_StakePool(s), $join_validator_set_events#$1_stake_StakePool(s), $distribute_rewards_events#$1_stake_StakePool(s), $unlock_stake_events#$1_stake_StakePool(s), $withdraw_stake_events#$1_stake_StakePool(s), $leave_validator_set_events#$1_stake_StakePool(s)) +} +function {:inline} $Update'$1_stake_StakePool'_reactivate_stake_events(s: $1_stake_StakePool, x: $1_event_EventHandle'$1_stake_ReactivateStakeEvent'): $1_stake_StakePool { + $1_stake_StakePool($active#$1_stake_StakePool(s), $inactive#$1_stake_StakePool(s), $pending_active#$1_stake_StakePool(s), $pending_inactive#$1_stake_StakePool(s), $locked_until_secs#$1_stake_StakePool(s), $operator_address#$1_stake_StakePool(s), $delegated_voter#$1_stake_StakePool(s), $initialize_validator_events#$1_stake_StakePool(s), $set_operator_events#$1_stake_StakePool(s), $add_stake_events#$1_stake_StakePool(s), x, $rotate_consensus_key_events#$1_stake_StakePool(s), $update_network_and_fullnode_addresses_events#$1_stake_StakePool(s), $increase_lockup_events#$1_stake_StakePool(s), $join_validator_set_events#$1_stake_StakePool(s), $distribute_rewards_events#$1_stake_StakePool(s), $unlock_stake_events#$1_stake_StakePool(s), $withdraw_stake_events#$1_stake_StakePool(s), $leave_validator_set_events#$1_stake_StakePool(s)) +} +function {:inline} $Update'$1_stake_StakePool'_rotate_consensus_key_events(s: $1_stake_StakePool, x: $1_event_EventHandle'$1_stake_RotateConsensusKeyEvent'): $1_stake_StakePool { + $1_stake_StakePool($active#$1_stake_StakePool(s), $inactive#$1_stake_StakePool(s), $pending_active#$1_stake_StakePool(s), $pending_inactive#$1_stake_StakePool(s), $locked_until_secs#$1_stake_StakePool(s), $operator_address#$1_stake_StakePool(s), $delegated_voter#$1_stake_StakePool(s), $initialize_validator_events#$1_stake_StakePool(s), $set_operator_events#$1_stake_StakePool(s), $add_stake_events#$1_stake_StakePool(s), $reactivate_stake_events#$1_stake_StakePool(s), x, $update_network_and_fullnode_addresses_events#$1_stake_StakePool(s), $increase_lockup_events#$1_stake_StakePool(s), $join_validator_set_events#$1_stake_StakePool(s), $distribute_rewards_events#$1_stake_StakePool(s), $unlock_stake_events#$1_stake_StakePool(s), $withdraw_stake_events#$1_stake_StakePool(s), $leave_validator_set_events#$1_stake_StakePool(s)) +} +function {:inline} $Update'$1_stake_StakePool'_update_network_and_fullnode_addresses_events(s: $1_stake_StakePool, x: $1_event_EventHandle'$1_stake_UpdateNetworkAndFullnodeAddressesEvent'): $1_stake_StakePool { + $1_stake_StakePool($active#$1_stake_StakePool(s), $inactive#$1_stake_StakePool(s), $pending_active#$1_stake_StakePool(s), $pending_inactive#$1_stake_StakePool(s), $locked_until_secs#$1_stake_StakePool(s), $operator_address#$1_stake_StakePool(s), $delegated_voter#$1_stake_StakePool(s), $initialize_validator_events#$1_stake_StakePool(s), $set_operator_events#$1_stake_StakePool(s), $add_stake_events#$1_stake_StakePool(s), $reactivate_stake_events#$1_stake_StakePool(s), $rotate_consensus_key_events#$1_stake_StakePool(s), x, $increase_lockup_events#$1_stake_StakePool(s), $join_validator_set_events#$1_stake_StakePool(s), $distribute_rewards_events#$1_stake_StakePool(s), $unlock_stake_events#$1_stake_StakePool(s), $withdraw_stake_events#$1_stake_StakePool(s), $leave_validator_set_events#$1_stake_StakePool(s)) +} +function {:inline} $Update'$1_stake_StakePool'_increase_lockup_events(s: $1_stake_StakePool, x: $1_event_EventHandle'$1_stake_IncreaseLockupEvent'): $1_stake_StakePool { + $1_stake_StakePool($active#$1_stake_StakePool(s), $inactive#$1_stake_StakePool(s), $pending_active#$1_stake_StakePool(s), $pending_inactive#$1_stake_StakePool(s), $locked_until_secs#$1_stake_StakePool(s), $operator_address#$1_stake_StakePool(s), $delegated_voter#$1_stake_StakePool(s), $initialize_validator_events#$1_stake_StakePool(s), $set_operator_events#$1_stake_StakePool(s), $add_stake_events#$1_stake_StakePool(s), $reactivate_stake_events#$1_stake_StakePool(s), $rotate_consensus_key_events#$1_stake_StakePool(s), $update_network_and_fullnode_addresses_events#$1_stake_StakePool(s), x, $join_validator_set_events#$1_stake_StakePool(s), $distribute_rewards_events#$1_stake_StakePool(s), $unlock_stake_events#$1_stake_StakePool(s), $withdraw_stake_events#$1_stake_StakePool(s), $leave_validator_set_events#$1_stake_StakePool(s)) +} +function {:inline} $Update'$1_stake_StakePool'_join_validator_set_events(s: $1_stake_StakePool, x: $1_event_EventHandle'$1_stake_JoinValidatorSetEvent'): $1_stake_StakePool { + $1_stake_StakePool($active#$1_stake_StakePool(s), $inactive#$1_stake_StakePool(s), $pending_active#$1_stake_StakePool(s), $pending_inactive#$1_stake_StakePool(s), $locked_until_secs#$1_stake_StakePool(s), $operator_address#$1_stake_StakePool(s), $delegated_voter#$1_stake_StakePool(s), $initialize_validator_events#$1_stake_StakePool(s), $set_operator_events#$1_stake_StakePool(s), $add_stake_events#$1_stake_StakePool(s), $reactivate_stake_events#$1_stake_StakePool(s), $rotate_consensus_key_events#$1_stake_StakePool(s), $update_network_and_fullnode_addresses_events#$1_stake_StakePool(s), $increase_lockup_events#$1_stake_StakePool(s), x, $distribute_rewards_events#$1_stake_StakePool(s), $unlock_stake_events#$1_stake_StakePool(s), $withdraw_stake_events#$1_stake_StakePool(s), $leave_validator_set_events#$1_stake_StakePool(s)) +} +function {:inline} $Update'$1_stake_StakePool'_distribute_rewards_events(s: $1_stake_StakePool, x: $1_event_EventHandle'$1_stake_DistributeRewardsEvent'): $1_stake_StakePool { + $1_stake_StakePool($active#$1_stake_StakePool(s), $inactive#$1_stake_StakePool(s), $pending_active#$1_stake_StakePool(s), $pending_inactive#$1_stake_StakePool(s), $locked_until_secs#$1_stake_StakePool(s), $operator_address#$1_stake_StakePool(s), $delegated_voter#$1_stake_StakePool(s), $initialize_validator_events#$1_stake_StakePool(s), $set_operator_events#$1_stake_StakePool(s), $add_stake_events#$1_stake_StakePool(s), $reactivate_stake_events#$1_stake_StakePool(s), $rotate_consensus_key_events#$1_stake_StakePool(s), $update_network_and_fullnode_addresses_events#$1_stake_StakePool(s), $increase_lockup_events#$1_stake_StakePool(s), $join_validator_set_events#$1_stake_StakePool(s), x, $unlock_stake_events#$1_stake_StakePool(s), $withdraw_stake_events#$1_stake_StakePool(s), $leave_validator_set_events#$1_stake_StakePool(s)) +} +function {:inline} $Update'$1_stake_StakePool'_unlock_stake_events(s: $1_stake_StakePool, x: $1_event_EventHandle'$1_stake_UnlockStakeEvent'): $1_stake_StakePool { + $1_stake_StakePool($active#$1_stake_StakePool(s), $inactive#$1_stake_StakePool(s), $pending_active#$1_stake_StakePool(s), $pending_inactive#$1_stake_StakePool(s), $locked_until_secs#$1_stake_StakePool(s), $operator_address#$1_stake_StakePool(s), $delegated_voter#$1_stake_StakePool(s), $initialize_validator_events#$1_stake_StakePool(s), $set_operator_events#$1_stake_StakePool(s), $add_stake_events#$1_stake_StakePool(s), $reactivate_stake_events#$1_stake_StakePool(s), $rotate_consensus_key_events#$1_stake_StakePool(s), $update_network_and_fullnode_addresses_events#$1_stake_StakePool(s), $increase_lockup_events#$1_stake_StakePool(s), $join_validator_set_events#$1_stake_StakePool(s), $distribute_rewards_events#$1_stake_StakePool(s), x, $withdraw_stake_events#$1_stake_StakePool(s), $leave_validator_set_events#$1_stake_StakePool(s)) +} +function {:inline} $Update'$1_stake_StakePool'_withdraw_stake_events(s: $1_stake_StakePool, x: $1_event_EventHandle'$1_stake_WithdrawStakeEvent'): $1_stake_StakePool { + $1_stake_StakePool($active#$1_stake_StakePool(s), $inactive#$1_stake_StakePool(s), $pending_active#$1_stake_StakePool(s), $pending_inactive#$1_stake_StakePool(s), $locked_until_secs#$1_stake_StakePool(s), $operator_address#$1_stake_StakePool(s), $delegated_voter#$1_stake_StakePool(s), $initialize_validator_events#$1_stake_StakePool(s), $set_operator_events#$1_stake_StakePool(s), $add_stake_events#$1_stake_StakePool(s), $reactivate_stake_events#$1_stake_StakePool(s), $rotate_consensus_key_events#$1_stake_StakePool(s), $update_network_and_fullnode_addresses_events#$1_stake_StakePool(s), $increase_lockup_events#$1_stake_StakePool(s), $join_validator_set_events#$1_stake_StakePool(s), $distribute_rewards_events#$1_stake_StakePool(s), $unlock_stake_events#$1_stake_StakePool(s), x, $leave_validator_set_events#$1_stake_StakePool(s)) +} +function {:inline} $Update'$1_stake_StakePool'_leave_validator_set_events(s: $1_stake_StakePool, x: $1_event_EventHandle'$1_stake_LeaveValidatorSetEvent'): $1_stake_StakePool { + $1_stake_StakePool($active#$1_stake_StakePool(s), $inactive#$1_stake_StakePool(s), $pending_active#$1_stake_StakePool(s), $pending_inactive#$1_stake_StakePool(s), $locked_until_secs#$1_stake_StakePool(s), $operator_address#$1_stake_StakePool(s), $delegated_voter#$1_stake_StakePool(s), $initialize_validator_events#$1_stake_StakePool(s), $set_operator_events#$1_stake_StakePool(s), $add_stake_events#$1_stake_StakePool(s), $reactivate_stake_events#$1_stake_StakePool(s), $rotate_consensus_key_events#$1_stake_StakePool(s), $update_network_and_fullnode_addresses_events#$1_stake_StakePool(s), $increase_lockup_events#$1_stake_StakePool(s), $join_validator_set_events#$1_stake_StakePool(s), $distribute_rewards_events#$1_stake_StakePool(s), $unlock_stake_events#$1_stake_StakePool(s), $withdraw_stake_events#$1_stake_StakePool(s), x) +} +function $IsValid'$1_stake_StakePool'(s: $1_stake_StakePool): bool { + $IsValid'$1_coin_Coin'$1_aptos_coin_AptosCoin''($active#$1_stake_StakePool(s)) + && $IsValid'$1_coin_Coin'$1_aptos_coin_AptosCoin''($inactive#$1_stake_StakePool(s)) + && $IsValid'$1_coin_Coin'$1_aptos_coin_AptosCoin''($pending_active#$1_stake_StakePool(s)) + && $IsValid'$1_coin_Coin'$1_aptos_coin_AptosCoin''($pending_inactive#$1_stake_StakePool(s)) + && $IsValid'u64'($locked_until_secs#$1_stake_StakePool(s)) + && $IsValid'address'($operator_address#$1_stake_StakePool(s)) + && $IsValid'address'($delegated_voter#$1_stake_StakePool(s)) + && $IsValid'$1_event_EventHandle'$1_stake_RegisterValidatorCandidateEvent''($initialize_validator_events#$1_stake_StakePool(s)) + && $IsValid'$1_event_EventHandle'$1_stake_SetOperatorEvent''($set_operator_events#$1_stake_StakePool(s)) + && $IsValid'$1_event_EventHandle'$1_stake_AddStakeEvent''($add_stake_events#$1_stake_StakePool(s)) + && $IsValid'$1_event_EventHandle'$1_stake_ReactivateStakeEvent''($reactivate_stake_events#$1_stake_StakePool(s)) + && $IsValid'$1_event_EventHandle'$1_stake_RotateConsensusKeyEvent''($rotate_consensus_key_events#$1_stake_StakePool(s)) + && $IsValid'$1_event_EventHandle'$1_stake_UpdateNetworkAndFullnodeAddressesEvent''($update_network_and_fullnode_addresses_events#$1_stake_StakePool(s)) + && $IsValid'$1_event_EventHandle'$1_stake_IncreaseLockupEvent''($increase_lockup_events#$1_stake_StakePool(s)) + && $IsValid'$1_event_EventHandle'$1_stake_JoinValidatorSetEvent''($join_validator_set_events#$1_stake_StakePool(s)) + && $IsValid'$1_event_EventHandle'$1_stake_DistributeRewardsEvent''($distribute_rewards_events#$1_stake_StakePool(s)) + && $IsValid'$1_event_EventHandle'$1_stake_UnlockStakeEvent''($unlock_stake_events#$1_stake_StakePool(s)) + && $IsValid'$1_event_EventHandle'$1_stake_WithdrawStakeEvent''($withdraw_stake_events#$1_stake_StakePool(s)) + && $IsValid'$1_event_EventHandle'$1_stake_LeaveValidatorSetEvent''($leave_validator_set_events#$1_stake_StakePool(s)) +} +function {:inline} $IsEqual'$1_stake_StakePool'(s1: $1_stake_StakePool, s2: $1_stake_StakePool): bool { + s1 == s2 +} +var $1_stake_StakePool_$memory: $Memory $1_stake_StakePool; - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:45:5+1 - assume {:print "$at(80,1983,1984)"} true; - return; +// struct stake::UnlockStakeEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:249:5+108 +type {:datatype} $1_stake_UnlockStakeEvent; +function {:constructor} $1_stake_UnlockStakeEvent($pool_address: int, $amount_unlocked: int): $1_stake_UnlockStakeEvent; +function {:inline} $Update'$1_stake_UnlockStakeEvent'_pool_address(s: $1_stake_UnlockStakeEvent, x: int): $1_stake_UnlockStakeEvent { + $1_stake_UnlockStakeEvent(x, $amount_unlocked#$1_stake_UnlockStakeEvent(s)) +} +function {:inline} $Update'$1_stake_UnlockStakeEvent'_amount_unlocked(s: $1_stake_UnlockStakeEvent, x: int): $1_stake_UnlockStakeEvent { + $1_stake_UnlockStakeEvent($pool_address#$1_stake_UnlockStakeEvent(s), x) +} +function $IsValid'$1_stake_UnlockStakeEvent'(s: $1_stake_UnlockStakeEvent): bool { + $IsValid'address'($pool_address#$1_stake_UnlockStakeEvent(s)) + && $IsValid'u64'($amount_unlocked#$1_stake_UnlockStakeEvent(s)) +} +function {:inline} $IsEqual'$1_stake_UnlockStakeEvent'(s1: $1_stake_UnlockStakeEvent, s2: $1_stake_UnlockStakeEvent): bool { + s1 == s2 +} - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:45:5+1 -L2: +// struct stake::UpdateNetworkAndFullnodeAddressesEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:226:5+274 +type {:datatype} $1_stake_UpdateNetworkAndFullnodeAddressesEvent; +function {:constructor} $1_stake_UpdateNetworkAndFullnodeAddressesEvent($pool_address: int, $old_network_addresses: Vec (int), $new_network_addresses: Vec (int), $old_fullnode_addresses: Vec (int), $new_fullnode_addresses: Vec (int)): $1_stake_UpdateNetworkAndFullnodeAddressesEvent; +function {:inline} $Update'$1_stake_UpdateNetworkAndFullnodeAddressesEvent'_pool_address(s: $1_stake_UpdateNetworkAndFullnodeAddressesEvent, x: int): $1_stake_UpdateNetworkAndFullnodeAddressesEvent { + $1_stake_UpdateNetworkAndFullnodeAddressesEvent(x, $old_network_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s), $new_network_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s), $old_fullnode_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s), $new_fullnode_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s)) +} +function {:inline} $Update'$1_stake_UpdateNetworkAndFullnodeAddressesEvent'_old_network_addresses(s: $1_stake_UpdateNetworkAndFullnodeAddressesEvent, x: Vec (int)): $1_stake_UpdateNetworkAndFullnodeAddressesEvent { + $1_stake_UpdateNetworkAndFullnodeAddressesEvent($pool_address#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s), x, $new_network_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s), $old_fullnode_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s), $new_fullnode_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s)) +} +function {:inline} $Update'$1_stake_UpdateNetworkAndFullnodeAddressesEvent'_new_network_addresses(s: $1_stake_UpdateNetworkAndFullnodeAddressesEvent, x: Vec (int)): $1_stake_UpdateNetworkAndFullnodeAddressesEvent { + $1_stake_UpdateNetworkAndFullnodeAddressesEvent($pool_address#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s), $old_network_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s), x, $old_fullnode_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s), $new_fullnode_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s)) +} +function {:inline} $Update'$1_stake_UpdateNetworkAndFullnodeAddressesEvent'_old_fullnode_addresses(s: $1_stake_UpdateNetworkAndFullnodeAddressesEvent, x: Vec (int)): $1_stake_UpdateNetworkAndFullnodeAddressesEvent { + $1_stake_UpdateNetworkAndFullnodeAddressesEvent($pool_address#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s), $old_network_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s), $new_network_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s), x, $new_fullnode_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s)) +} +function {:inline} $Update'$1_stake_UpdateNetworkAndFullnodeAddressesEvent'_new_fullnode_addresses(s: $1_stake_UpdateNetworkAndFullnodeAddressesEvent, x: Vec (int)): $1_stake_UpdateNetworkAndFullnodeAddressesEvent { + $1_stake_UpdateNetworkAndFullnodeAddressesEvent($pool_address#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s), $old_network_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s), $new_network_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s), $old_fullnode_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s), x) +} +function $IsValid'$1_stake_UpdateNetworkAndFullnodeAddressesEvent'(s: $1_stake_UpdateNetworkAndFullnodeAddressesEvent): bool { + $IsValid'address'($pool_address#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s)) + && $IsValid'vec'u8''($old_network_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s)) + && $IsValid'vec'u8''($new_network_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s)) + && $IsValid'vec'u8''($old_fullnode_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s)) + && $IsValid'vec'u8''($new_fullnode_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s)) +} +function {:inline} $IsEqual'$1_stake_UpdateNetworkAndFullnodeAddressesEvent'(s1: $1_stake_UpdateNetworkAndFullnodeAddressesEvent, s2: $1_stake_UpdateNetworkAndFullnodeAddressesEvent): bool { + $IsEqual'address'($pool_address#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s1), $pool_address#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s2)) + && $IsEqual'vec'u8''($old_network_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s1), $old_network_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s2)) + && $IsEqual'vec'u8''($new_network_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s1), $new_network_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s2)) + && $IsEqual'vec'u8''($old_fullnode_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s1), $old_fullnode_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s2)) + && $IsEqual'vec'u8''($new_fullnode_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s1), $new_fullnode_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s2))} - // abort($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:45:5+1 - assume {:print "$at(80,1983,1984)"} true; - $abort_code := $t4; - $abort_flag := true; - return; +// struct stake::ValidatorConfig at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:151:5+372 +type {:datatype} $1_stake_ValidatorConfig; +function {:constructor} $1_stake_ValidatorConfig($consensus_pubkey: Vec (int), $network_addresses: Vec (int), $fullnode_addresses: Vec (int), $validator_index: int): $1_stake_ValidatorConfig; +function {:inline} $Update'$1_stake_ValidatorConfig'_consensus_pubkey(s: $1_stake_ValidatorConfig, x: Vec (int)): $1_stake_ValidatorConfig { + $1_stake_ValidatorConfig(x, $network_addresses#$1_stake_ValidatorConfig(s), $fullnode_addresses#$1_stake_ValidatorConfig(s), $validator_index#$1_stake_ValidatorConfig(s)) +} +function {:inline} $Update'$1_stake_ValidatorConfig'_network_addresses(s: $1_stake_ValidatorConfig, x: Vec (int)): $1_stake_ValidatorConfig { + $1_stake_ValidatorConfig($consensus_pubkey#$1_stake_ValidatorConfig(s), x, $fullnode_addresses#$1_stake_ValidatorConfig(s), $validator_index#$1_stake_ValidatorConfig(s)) +} +function {:inline} $Update'$1_stake_ValidatorConfig'_fullnode_addresses(s: $1_stake_ValidatorConfig, x: Vec (int)): $1_stake_ValidatorConfig { + $1_stake_ValidatorConfig($consensus_pubkey#$1_stake_ValidatorConfig(s), $network_addresses#$1_stake_ValidatorConfig(s), x, $validator_index#$1_stake_ValidatorConfig(s)) +} +function {:inline} $Update'$1_stake_ValidatorConfig'_validator_index(s: $1_stake_ValidatorConfig, x: int): $1_stake_ValidatorConfig { + $1_stake_ValidatorConfig($consensus_pubkey#$1_stake_ValidatorConfig(s), $network_addresses#$1_stake_ValidatorConfig(s), $fullnode_addresses#$1_stake_ValidatorConfig(s), x) +} +function $IsValid'$1_stake_ValidatorConfig'(s: $1_stake_ValidatorConfig): bool { + $IsValid'vec'u8''($consensus_pubkey#$1_stake_ValidatorConfig(s)) + && $IsValid'vec'u8''($network_addresses#$1_stake_ValidatorConfig(s)) + && $IsValid'vec'u8''($fullnode_addresses#$1_stake_ValidatorConfig(s)) + && $IsValid'u64'($validator_index#$1_stake_ValidatorConfig(s)) +} +function {:inline} $IsEqual'$1_stake_ValidatorConfig'(s1: $1_stake_ValidatorConfig, s2: $1_stake_ValidatorConfig): bool { + $IsEqual'vec'u8''($consensus_pubkey#$1_stake_ValidatorConfig(s1), $consensus_pubkey#$1_stake_ValidatorConfig(s2)) + && $IsEqual'vec'u8''($network_addresses#$1_stake_ValidatorConfig(s1), $network_addresses#$1_stake_ValidatorConfig(s2)) + && $IsEqual'vec'u8''($fullnode_addresses#$1_stake_ValidatorConfig(s1), $fullnode_addresses#$1_stake_ValidatorConfig(s2)) + && $IsEqual'u64'($validator_index#$1_stake_ValidatorConfig(s1), $validator_index#$1_stake_ValidatorConfig(s2))} +var $1_stake_ValidatorConfig_$memory: $Memory $1_stake_ValidatorConfig; +// struct stake::ValidatorInfo at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:161:5+133 +type {:datatype} $1_stake_ValidatorInfo; +function {:constructor} $1_stake_ValidatorInfo($addr: int, $voting_power: int, $config: $1_stake_ValidatorConfig): $1_stake_ValidatorInfo; +function {:inline} $Update'$1_stake_ValidatorInfo'_addr(s: $1_stake_ValidatorInfo, x: int): $1_stake_ValidatorInfo { + $1_stake_ValidatorInfo(x, $voting_power#$1_stake_ValidatorInfo(s), $config#$1_stake_ValidatorInfo(s)) +} +function {:inline} $Update'$1_stake_ValidatorInfo'_voting_power(s: $1_stake_ValidatorInfo, x: int): $1_stake_ValidatorInfo { + $1_stake_ValidatorInfo($addr#$1_stake_ValidatorInfo(s), x, $config#$1_stake_ValidatorInfo(s)) +} +function {:inline} $Update'$1_stake_ValidatorInfo'_config(s: $1_stake_ValidatorInfo, x: $1_stake_ValidatorConfig): $1_stake_ValidatorInfo { + $1_stake_ValidatorInfo($addr#$1_stake_ValidatorInfo(s), $voting_power#$1_stake_ValidatorInfo(s), x) +} +function $IsValid'$1_stake_ValidatorInfo'(s: $1_stake_ValidatorInfo): bool { + $IsValid'address'($addr#$1_stake_ValidatorInfo(s)) + && $IsValid'u64'($voting_power#$1_stake_ValidatorInfo(s)) + && $IsValid'$1_stake_ValidatorConfig'($config#$1_stake_ValidatorInfo(s)) } +function {:inline} $IsEqual'$1_stake_ValidatorInfo'(s1: $1_stake_ValidatorInfo, s2: $1_stake_ValidatorInfo): bool { + $IsEqual'address'($addr#$1_stake_ValidatorInfo(s1), $addr#$1_stake_ValidatorInfo(s2)) + && $IsEqual'u64'($voting_power#$1_stake_ValidatorInfo(s1), $voting_power#$1_stake_ValidatorInfo(s2)) + && $IsEqual'$1_stake_ValidatorConfig'($config#$1_stake_ValidatorInfo(s1), $config#$1_stake_ValidatorInfo(s2))} -// fun aptos_account::assert_account_exists [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:117:5+136 -procedure {:inline 1} $1_aptos_account_assert_account_exists(_$t0: int) returns () -{ +// struct stake::ValidatorPerformance at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:196:5+103 +type {:datatype} $1_stake_ValidatorPerformance; +function {:constructor} $1_stake_ValidatorPerformance($validators: Vec ($1_stake_IndividualValidatorPerformance)): $1_stake_ValidatorPerformance; +function {:inline} $Update'$1_stake_ValidatorPerformance'_validators(s: $1_stake_ValidatorPerformance, x: Vec ($1_stake_IndividualValidatorPerformance)): $1_stake_ValidatorPerformance { + $1_stake_ValidatorPerformance(x) +} +function $IsValid'$1_stake_ValidatorPerformance'(s: $1_stake_ValidatorPerformance): bool { + $IsValid'vec'$1_stake_IndividualValidatorPerformance''($validators#$1_stake_ValidatorPerformance(s)) +} +function {:inline} $IsEqual'$1_stake_ValidatorPerformance'(s1: $1_stake_ValidatorPerformance, s2: $1_stake_ValidatorPerformance): bool { + $IsEqual'vec'$1_stake_IndividualValidatorPerformance''($validators#$1_stake_ValidatorPerformance(s1), $validators#$1_stake_ValidatorPerformance(s2))} +var $1_stake_ValidatorPerformance_$memory: $Memory $1_stake_ValidatorPerformance; + +// struct stake::ValidatorSet at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:171:5+558 +type {:datatype} $1_stake_ValidatorSet; +function {:constructor} $1_stake_ValidatorSet($consensus_scheme: int, $active_validators: Vec ($1_stake_ValidatorInfo), $pending_inactive: Vec ($1_stake_ValidatorInfo), $pending_active: Vec ($1_stake_ValidatorInfo), $total_voting_power: int, $total_joining_power: int): $1_stake_ValidatorSet; +function {:inline} $Update'$1_stake_ValidatorSet'_consensus_scheme(s: $1_stake_ValidatorSet, x: int): $1_stake_ValidatorSet { + $1_stake_ValidatorSet(x, $active_validators#$1_stake_ValidatorSet(s), $pending_inactive#$1_stake_ValidatorSet(s), $pending_active#$1_stake_ValidatorSet(s), $total_voting_power#$1_stake_ValidatorSet(s), $total_joining_power#$1_stake_ValidatorSet(s)) +} +function {:inline} $Update'$1_stake_ValidatorSet'_active_validators(s: $1_stake_ValidatorSet, x: Vec ($1_stake_ValidatorInfo)): $1_stake_ValidatorSet { + $1_stake_ValidatorSet($consensus_scheme#$1_stake_ValidatorSet(s), x, $pending_inactive#$1_stake_ValidatorSet(s), $pending_active#$1_stake_ValidatorSet(s), $total_voting_power#$1_stake_ValidatorSet(s), $total_joining_power#$1_stake_ValidatorSet(s)) +} +function {:inline} $Update'$1_stake_ValidatorSet'_pending_inactive(s: $1_stake_ValidatorSet, x: Vec ($1_stake_ValidatorInfo)): $1_stake_ValidatorSet { + $1_stake_ValidatorSet($consensus_scheme#$1_stake_ValidatorSet(s), $active_validators#$1_stake_ValidatorSet(s), x, $pending_active#$1_stake_ValidatorSet(s), $total_voting_power#$1_stake_ValidatorSet(s), $total_joining_power#$1_stake_ValidatorSet(s)) +} +function {:inline} $Update'$1_stake_ValidatorSet'_pending_active(s: $1_stake_ValidatorSet, x: Vec ($1_stake_ValidatorInfo)): $1_stake_ValidatorSet { + $1_stake_ValidatorSet($consensus_scheme#$1_stake_ValidatorSet(s), $active_validators#$1_stake_ValidatorSet(s), $pending_inactive#$1_stake_ValidatorSet(s), x, $total_voting_power#$1_stake_ValidatorSet(s), $total_joining_power#$1_stake_ValidatorSet(s)) +} +function {:inline} $Update'$1_stake_ValidatorSet'_total_voting_power(s: $1_stake_ValidatorSet, x: int): $1_stake_ValidatorSet { + $1_stake_ValidatorSet($consensus_scheme#$1_stake_ValidatorSet(s), $active_validators#$1_stake_ValidatorSet(s), $pending_inactive#$1_stake_ValidatorSet(s), $pending_active#$1_stake_ValidatorSet(s), x, $total_joining_power#$1_stake_ValidatorSet(s)) +} +function {:inline} $Update'$1_stake_ValidatorSet'_total_joining_power(s: $1_stake_ValidatorSet, x: int): $1_stake_ValidatorSet { + $1_stake_ValidatorSet($consensus_scheme#$1_stake_ValidatorSet(s), $active_validators#$1_stake_ValidatorSet(s), $pending_inactive#$1_stake_ValidatorSet(s), $pending_active#$1_stake_ValidatorSet(s), $total_voting_power#$1_stake_ValidatorSet(s), x) +} +function $IsValid'$1_stake_ValidatorSet'(s: $1_stake_ValidatorSet): bool { + $IsValid'u8'($consensus_scheme#$1_stake_ValidatorSet(s)) + && $IsValid'vec'$1_stake_ValidatorInfo''($active_validators#$1_stake_ValidatorSet(s)) + && $IsValid'vec'$1_stake_ValidatorInfo''($pending_inactive#$1_stake_ValidatorSet(s)) + && $IsValid'vec'$1_stake_ValidatorInfo''($pending_active#$1_stake_ValidatorSet(s)) + && $IsValid'u128'($total_voting_power#$1_stake_ValidatorSet(s)) + && $IsValid'u128'($total_joining_power#$1_stake_ValidatorSet(s)) +} +function {:inline} $IsEqual'$1_stake_ValidatorSet'(s1: $1_stake_ValidatorSet, s2: $1_stake_ValidatorSet): bool { + $IsEqual'u8'($consensus_scheme#$1_stake_ValidatorSet(s1), $consensus_scheme#$1_stake_ValidatorSet(s2)) + && $IsEqual'vec'$1_stake_ValidatorInfo''($active_validators#$1_stake_ValidatorSet(s1), $active_validators#$1_stake_ValidatorSet(s2)) + && $IsEqual'vec'$1_stake_ValidatorInfo''($pending_inactive#$1_stake_ValidatorSet(s1), $pending_inactive#$1_stake_ValidatorSet(s2)) + && $IsEqual'vec'$1_stake_ValidatorInfo''($pending_active#$1_stake_ValidatorSet(s1), $pending_active#$1_stake_ValidatorSet(s2)) + && $IsEqual'u128'($total_voting_power#$1_stake_ValidatorSet(s1), $total_voting_power#$1_stake_ValidatorSet(s2)) + && $IsEqual'u128'($total_joining_power#$1_stake_ValidatorSet(s1), $total_joining_power#$1_stake_ValidatorSet(s2))} +var $1_stake_ValidatorSet_$memory: $Memory $1_stake_ValidatorSet; + +// struct stake::WithdrawStakeEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:254:5+111 +type {:datatype} $1_stake_WithdrawStakeEvent; +function {:constructor} $1_stake_WithdrawStakeEvent($pool_address: int, $amount_withdrawn: int): $1_stake_WithdrawStakeEvent; +function {:inline} $Update'$1_stake_WithdrawStakeEvent'_pool_address(s: $1_stake_WithdrawStakeEvent, x: int): $1_stake_WithdrawStakeEvent { + $1_stake_WithdrawStakeEvent(x, $amount_withdrawn#$1_stake_WithdrawStakeEvent(s)) +} +function {:inline} $Update'$1_stake_WithdrawStakeEvent'_amount_withdrawn(s: $1_stake_WithdrawStakeEvent, x: int): $1_stake_WithdrawStakeEvent { + $1_stake_WithdrawStakeEvent($pool_address#$1_stake_WithdrawStakeEvent(s), x) +} +function $IsValid'$1_stake_WithdrawStakeEvent'(s: $1_stake_WithdrawStakeEvent): bool { + $IsValid'address'($pool_address#$1_stake_WithdrawStakeEvent(s)) + && $IsValid'u64'($amount_withdrawn#$1_stake_WithdrawStakeEvent(s)) +} +function {:inline} $IsEqual'$1_stake_WithdrawStakeEvent'(s1: $1_stake_WithdrawStakeEvent, s2: $1_stake_WithdrawStakeEvent): bool { + s1 == s2 +} + +// fun stake::assert_stake_pool_exists [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:1319:5+162 +procedure {:inline 1} $1_stake_assert_stake_pool_exists(_$t0: int) returns () +{ // declare local variables var $t1: bool; var $t2: int; @@ -15180,17924 +13460,4061 @@ procedure {:inline 1} $1_aptos_account_assert_account_exists(_$t0: int) returns $t0 := _$t0; // bytecode translation starts here - // trace_local[addr]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:117:5+1 - assume {:print "$at(80,5296,5297)"} true; - assume {:print "$track_local(25,0,0):", $t0} $t0 == $t0; + // trace_local[pool_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:1319:5+1 + assume {:print "$at(138,62960,62961)"} true; + assume {:print "$track_local(38,5,0):", $t0} $t0 == $t0; - // $t1 := account::exists_at($t0) on_abort goto L4 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:118:17+24 - assume {:print "$at(80,5362,5386)"} true; - call $t1 := $1_account_exists_at($t0); + // $t1 := stake::stake_pool_exists($t0) on_abort goto L4 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:1320:17+31 + assume {:print "$at(138,63030,63061)"} true; + call $t1 := $1_stake_stake_pool_exists($t0); if ($abort_flag) { - assume {:print "$at(80,5362,5386)"} true; + assume {:print "$at(138,63030,63061)"} true; $t2 := $abort_code; - assume {:print "$track_abort(25,0):", $t2} $t2 == $t2; + assume {:print "$track_abort(38,5):", $t2} $t2 == $t2; goto L4; } - // if ($t1) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:118:9+71 + // if ($t1) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:1320:9+93 if ($t1) { goto L1; } else { goto L0; } - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:118:9+71 + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:1320:9+93 L1: - // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:118:9+71 - assume {:print "$at(80,5354,5425)"} true; + // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:1320:9+93 + assume {:print "$at(138,63022,63115)"} true; goto L2; - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:118:60+18 + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:1320:74+26 L0: - // $t3 := 1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:118:60+18 - assume {:print "$at(80,5405,5423)"} true; - $t3 := 1; + // $t3 := 14 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:1320:74+26 + assume {:print "$at(138,63087,63113)"} true; + $t3 := 14; assume $IsValid'u64'($t3); - // $t4 := error::not_found($t3) on_abort goto L4 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:118:43+36 - call $t4 := $1_error_not_found($t3); + // $t4 := error::invalid_argument($t3) on_abort goto L4 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:1320:50+51 + call $t4 := $1_error_invalid_argument($t3); if ($abort_flag) { - assume {:print "$at(80,5388,5424)"} true; + assume {:print "$at(138,63063,63114)"} true; $t2 := $abort_code; - assume {:print "$track_abort(25,0):", $t2} $t2 == $t2; + assume {:print "$track_abort(38,5):", $t2} $t2 == $t2; goto L4; } - // trace_abort($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:118:9+71 - assume {:print "$at(80,5354,5425)"} true; - assume {:print "$track_abort(25,0):", $t4} $t4 == $t4; + // trace_abort($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:1320:9+93 + assume {:print "$at(138,63022,63115)"} true; + assume {:print "$track_abort(38,5):", $t4} $t4 == $t4; - // $t2 := move($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:118:9+71 + // $t2 := move($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:1320:9+93 $t2 := $t4; - // goto L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:118:9+71 + // goto L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:1320:9+93 goto L4; - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:118:80+1 + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:1320:102+1 L2: - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:119:5+1 - assume {:print "$at(80,5431,5432)"} true; + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:1321:5+1 + assume {:print "$at(138,63121,63122)"} true; L3: - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:119:5+1 - assume {:print "$at(80,5431,5432)"} true; + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:1321:5+1 + assume {:print "$at(138,63121,63122)"} true; return; - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:119:5+1 + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:1321:5+1 L4: - // abort($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:119:5+1 - assume {:print "$at(80,5431,5432)"} true; + // abort($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:1321:5+1 + assume {:print "$at(138,63121,63122)"} true; $abort_code := $t2; $abort_flag := true; return; } -// fun aptos_account::assert_account_is_registered_for_apt [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:121:5+221 -procedure {:inline 1} $1_aptos_account_assert_account_is_registered_for_apt(_$t0: int) returns () +// fun stake::get_delegated_voter [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:359:5+200 +procedure {:inline 1} $1_stake_get_delegated_voter(_$t0: int) returns ($ret0: int) { // declare local variables var $t1: int; - var $t2: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; - var $t3: bool; - var $t4: int; - var $t5: int; + var $t2: $1_stake_StakePool; + var $t3: int; var $t0: int; var $temp_0'address': int; $t0 := _$t0; // bytecode translation starts here - // trace_local[addr]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:121:5+1 - assume {:print "$at(80,5438,5439)"} true; - assume {:print "$track_local(25,1,0):", $t0} $t0 == $t0; + // trace_local[pool_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:359:5+1 + assume {:print "$at(138,16317,16318)"} true; + assume {:print "$track_local(38,16,0):", $t0} $t0 == $t0; - // aptos_account::assert_account_exists($t0) on_abort goto L4 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:122:9+27 - assume {:print "$at(80,5511,5538)"} true; - call $1_aptos_account_assert_account_exists($t0); + // stake::assert_stake_pool_exists($t0) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:360:9+38 + assume {:print "$at(138,16409,16447)"} true; + call $1_stake_assert_stake_pool_exists($t0); if ($abort_flag) { - assume {:print "$at(80,5511,5538)"} true; + assume {:print "$at(138,16409,16447)"} true; $t1 := $abort_code; - assume {:print "$track_abort(25,1):", $t1} $t1 == $t1; - goto L4; + assume {:print "$track_abort(38,16):", $t1} $t1 == $t1; + goto L2; } - // assume Identical($t2, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 - assume {:print "$at(95,1664,1763)"} true; - assume ($t2 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); - - // $t3 := coin::is_account_registered($t0) on_abort goto L4 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:123:17+44 - assume {:print "$at(80,5556,5600)"} true; - call $t3 := $1_coin_is_account_registered'$1_aptos_coin_AptosCoin'($t0); - if ($abort_flag) { - assume {:print "$at(80,5556,5600)"} true; - $t1 := $abort_code; - assume {:print "$track_abort(25,1):", $t1} $t1 == $t1; - goto L4; + // $t2 := get_global($t0) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:361:9+13 + assume {:print "$at(138,16457,16470)"} true; + if (!$ResourceExists($1_stake_StakePool_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t2 := $ResourceValue($1_stake_StakePool_$memory, $t0); } - - // if ($t3) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:123:9+104 - if ($t3) { goto L1; } else { goto L0; } - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:123:9+104 -L1: - - // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:123:9+104 - assume {:print "$at(80,5548,5652)"} true; - goto L2; - - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:123:80+31 -L0: - - // $t4 := 2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:123:80+31 - assume {:print "$at(80,5619,5650)"} true; - $t4 := 2; - assume $IsValid'u64'($t4); - - // $t5 := error::not_found($t4) on_abort goto L4 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:123:63+49 - call $t5 := $1_error_not_found($t4); if ($abort_flag) { - assume {:print "$at(80,5602,5651)"} true; + assume {:print "$at(138,16457,16470)"} true; $t1 := $abort_code; - assume {:print "$track_abort(25,1):", $t1} $t1 == $t1; - goto L4; + assume {:print "$track_abort(38,16):", $t1} $t1 == $t1; + goto L2; } - // trace_abort($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:123:9+104 - assume {:print "$at(80,5548,5652)"} true; - assume {:print "$track_abort(25,1):", $t5} $t5 == $t5; - - // $t1 := move($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:123:9+104 - $t1 := $t5; - - // goto L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:123:9+104 - goto L4; + // $t3 := get_field.delegated_voter($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:361:9+54 + $t3 := $delegated_voter#$1_stake_StakePool($t2); - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:123:113+1 -L2: + // trace_return[0]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:361:9+54 + assume {:print "$track_return(38,16,0):", $t3} $t3 == $t3; - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:124:5+1 - assume {:print "$at(80,5658,5659)"} true; -L3: + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:362:5+1 + assume {:print "$at(138,16516,16517)"} true; +L1: - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:124:5+1 - assume {:print "$at(80,5658,5659)"} true; + // return $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:362:5+1 + assume {:print "$at(138,16516,16517)"} true; + $ret0 := $t3; return; - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:124:5+1 -L4: + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:362:5+1 +L2: - // abort($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:124:5+1 - assume {:print "$at(80,5658,5659)"} true; + // abort($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:362:5+1 + assume {:print "$at(138,16516,16517)"} true; $abort_code := $t1; $abort_flag := true; return; } -// fun aptos_account::can_receive_direct_coin_transfers [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:157:5+244 -procedure {:inline 1} $1_aptos_account_can_receive_direct_coin_transfers(_$t0: int) returns ($ret0: bool) +// fun stake::get_lockup_secs [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:294:5+194 +procedure {:inline 1} $1_stake_get_lockup_secs(_$t0: int) returns ($ret0: int) { // declare local variables - var $t1: bool; - var $t2: bool; - var $t3: bool; - var $t4: bool; - var $t5: $1_aptos_account_DirectTransferConfig; - var $t6: int; + var $t1: int; + var $t2: $1_stake_StakePool; + var $t3: int; var $t0: int; var $temp_0'address': int; - var $temp_0'bool': bool; + var $temp_0'u64': int; $t0 := _$t0; // bytecode translation starts here - // trace_local[account]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:157:5+1 - assume {:print "$at(80,7365,7366)"} true; - assume {:print "$track_local(25,4,0):", $t0} $t0 == $t0; - - // $t2 := exists($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:158:10+6 - assume {:print "$at(80,7475,7481)"} true; - $t2 := $ResourceExists($1_aptos_account_DirectTransferConfig_$memory, $t0); - - // $t3 := !($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:158:9+1 - call $t3 := $Not($t2); - - // if ($t3) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:158:9+129 - if ($t3) { goto L1; } else { goto L0; } - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:158:9+129 -L1: - - // $t4 := true at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:158:9+129 - assume {:print "$at(80,7474,7603)"} true; - $t4 := true; - assume $IsValid'bool'($t4); - - // $t1 := $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:158:9+129 - $t1 := $t4; - - // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:158:9+129 - goto L2; + // trace_local[pool_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:294:5+1 + assume {:print "$at(138,13232,13233)"} true; + assume {:print "$track_local(38,17,0):", $t0} $t0 == $t0; - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:159:49+7 - assume {:print "$at(80,7564,7571)"} true; -L0: + // stake::assert_stake_pool_exists($t0) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:295:9+38 + assume {:print "$at(138,13316,13354)"} true; + call $1_stake_assert_stake_pool_exists($t0); + if ($abort_flag) { + assume {:print "$at(138,13316,13354)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(38,17):", $t1} $t1 == $t1; + goto L2; + } - // $t5 := get_global($t0) on_abort goto L4 with $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:159:13+13 - assume {:print "$at(80,7528,7541)"} true; - if (!$ResourceExists($1_aptos_account_DirectTransferConfig_$memory, $t0)) { + // $t2 := get_global($t0) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:296:9+13 + assume {:print "$at(138,13364,13377)"} true; + if (!$ResourceExists($1_stake_StakePool_$memory, $t0)) { call $ExecFailureAbort(); } else { - $t5 := $ResourceValue($1_aptos_account_DirectTransferConfig_$memory, $t0); + $t2 := $ResourceValue($1_stake_StakePool_$memory, $t0); } if ($abort_flag) { - assume {:print "$at(80,7528,7541)"} true; - $t6 := $abort_code; - assume {:print "$track_abort(25,4):", $t6} $t6 == $t6; - goto L4; + assume {:print "$at(138,13364,13377)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(38,17):", $t1} $t1 == $t1; + goto L2; } - // $t1 := get_field.allow_arbitrary_coin_transfers($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:159:13+75 - $t1 := $allow_arbitrary_coin_transfers#$1_aptos_account_DirectTransferConfig($t5); - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:158:9+129 - assume {:print "$at(80,7474,7603)"} true; -L2: + // $t3 := get_field.locked_until_secs($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:296:9+56 + $t3 := $locked_until_secs#$1_stake_StakePool($t2); - // trace_return[0]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:158:9+129 - assume {:print "$at(80,7474,7603)"} true; - assume {:print "$track_return(25,4,0):", $t1} $t1 == $t1; + // trace_return[0]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:296:9+56 + assume {:print "$track_return(38,17,0):", $t3} $t3 == $t3; - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:160:5+1 - assume {:print "$at(80,7608,7609)"} true; -L3: + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:297:5+1 + assume {:print "$at(138,13425,13426)"} true; +L1: - // return $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:160:5+1 - assume {:print "$at(80,7608,7609)"} true; - $ret0 := $t1; + // return $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:297:5+1 + assume {:print "$at(138,13425,13426)"} true; + $ret0 := $t3; return; - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:160:5+1 -L4: + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:297:5+1 +L2: - // abort($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:160:5+1 - assume {:print "$at(80,7608,7609)"} true; - $abort_code := $t6; + // abort($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:297:5+1 + assume {:print "$at(138,13425,13426)"} true; + $abort_code := $t1; $abort_flag := true; return; } -// fun aptos_account::deposit_coins [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:98:5+820 -procedure {:inline 1} $1_aptos_account_deposit_coins'$1_aptos_coin_AptosCoin'(_$t0: int, _$t1: $1_coin_Coin'$1_aptos_coin_AptosCoin') returns () +// fun stake::get_stake [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:315:5+425 +procedure {:inline 1} $1_stake_get_stake(_$t0: int) returns ($ret0: int, $ret1: int, $ret2: int, $ret3: int) { // declare local variables - var $t2: $signer; - var $t3: $1_account_Account; - var $t4: bool; - var $t5: int; - var $t6: bool; - var $t7: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; - var $t8: bool; - var $t9: bool; - var $t10: bool; - var $t11: int; + var $t1: $1_stake_StakePool; + var $t2: int; + var $t3: $1_stake_StakePool; + var $t4: $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $t5: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t6: int; + var $t7: $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $t8: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t9: int; + var $t10: $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $t11: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; var $t12: int; - var $t13: $signer; + var $t13: $1_coin_Coin'$1_aptos_coin_AptosCoin'; var $t14: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; var $t15: int; - var $t16: $1_account_Account; - var $t17: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; var $t0: int; - var $t1: $1_coin_Coin'$1_aptos_coin_AptosCoin'; - var $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin'': $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $temp_0'$1_stake_StakePool': $1_stake_StakePool; var $temp_0'address': int; + var $temp_0'u64': int; $t0 := _$t0; - $t1 := _$t1; // bytecode translation starts here - // assume Identical($t3, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.spec.move:200:9+39 - assume {:print "$at(81,9368,9407)"} true; - assume ($t3 == $ResourceValue($1_account_Account_$memory, $t0)); - - // trace_local[to]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:98:5+1 - assume {:print "$at(80,4470,4471)"} true; - assume {:print "$track_local(25,6,0):", $t0} $t0 == $t0; + // trace_local[pool_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:315:5+1 + assume {:print "$at(138,14196,14197)"} true; + assume {:print "$track_local(38,22,0):", $t0} $t0 == $t0; - // trace_local[coins]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:98:5+1 - assume {:print "$track_local(25,6,1):", $t1} $t1 == $t1; + // stake::assert_stake_pool_exists($t0) on_abort goto L2 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:316:9+38 + assume {:print "$at(138,14291,14329)"} true; + call $1_stake_assert_stake_pool_exists($t0); + if ($abort_flag) { + assume {:print "$at(138,14291,14329)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(38,22):", $t2} $t2 == $t2; + goto L2; + } - // $t4 := account::exists_at($t0) on_abort goto L8 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:99:14+22 - assume {:print "$at(80,4586,4608)"} true; - call $t4 := $1_account_exists_at($t0); + // $t3 := get_global($t0) on_abort goto L2 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:317:26+13 + assume {:print "$at(138,14356,14369)"} true; + if (!$ResourceExists($1_stake_StakePool_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t3 := $ResourceValue($1_stake_StakePool_$memory, $t0); + } if ($abort_flag) { - assume {:print "$at(80,4586,4608)"} true; - $t5 := $abort_code; - assume {:print "$track_abort(25,6):", $t5} $t5 == $t5; - goto L8; + assume {:print "$at(138,14356,14369)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(38,22):", $t2} $t2 == $t2; + goto L2; } - // $t6 := !($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:99:13+1 - call $t6 := $Not($t4); + // trace_local[stake_pool]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:317:13+10 + assume {:print "$track_local(38,22,1):", $t3} $t3 == $t3; - // if ($t6) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:99:9+351 - if ($t6) { goto L1; } else { goto L0; } + // $t4 := get_field.active($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:319:25+18 + assume {:print "$at(138,14430,14448)"} true; + $t4 := $active#$1_stake_StakePool($t3); - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:100:28+2 - assume {:print "$at(80,4639,4641)"} true; -L1: + // assume Identical($t5, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + assume {:print "$at(102,1664,1763)"} true; + assume ($t5 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); - // aptos_account::create_account($t0) on_abort goto L8 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:100:13+18 - assume {:print "$at(80,4624,4642)"} true; - call $1_aptos_account_create_account($t0); + // $t6 := coin::value($t4) on_abort goto L2 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:319:13+31 + assume {:print "$at(138,14418,14449)"} true; + call $t6 := $1_coin_value'$1_aptos_coin_AptosCoin'($t4); if ($abort_flag) { - assume {:print "$at(80,4624,4642)"} true; - $t5 := $abort_code; - assume {:print "$track_abort(25,6):", $t5} $t5 == $t5; - goto L8; + assume {:print "$at(138,14418,14449)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(38,22):", $t2} $t2 == $t2; + goto L2; } - // assert coin::$is_account_registered($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:102:17+50 - assume {:print "$at(80,4679,4729)"} true; - assert {:msg "assert_failed(80,4679,4729): unknown assertion failed"} - $1_coin_$is_account_registered'$1_aptos_coin_AptosCoin'($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $t0); + // $t7 := get_field.inactive($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:320:25+20 + assume {:print "$at(138,14475,14495)"} true; + $t7 := $inactive#$1_stake_StakePool($t3); - // assume Implies(Eq(type_info::$type_of<#0>(), type_info::$type_of()), coin::$is_account_registered<#0>($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:103:17+161 - assume {:print "$at(80,4746,4907)"} true; - assume ($IsEqual'$1_type_info_TypeInfo'($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)), $1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9))) ==> $1_coin_$is_account_registered'$1_aptos_coin_AptosCoin'($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $t0)); + // assume Identical($t8, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + assume {:print "$at(102,1664,1763)"} true; + assume ($t8 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:107:52+2 - assume {:print "$at(80,4985,4987)"} true; -L0: + // $t9 := coin::value($t7) on_abort goto L2 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:320:13+33 + assume {:print "$at(138,14463,14496)"} true; + call $t9 := $1_coin_value'$1_aptos_coin_AptosCoin'($t7); + if ($abort_flag) { + assume {:print "$at(138,14463,14496)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(38,22):", $t2} $t2 == $t2; + goto L2; + } + + // $t10 := get_field.pending_active($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:321:25+26 + assume {:print "$at(138,14522,14548)"} true; + $t10 := $pending_active#$1_stake_StakePool($t3); - // assume Identical($t7, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 - assume {:print "$at(95,1664,1763)"} true; - assume ($t7 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + // assume Identical($t11, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + assume {:print "$at(102,1664,1763)"} true; + assume ($t11 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); - // $t8 := coin::is_account_registered<#0>($t0) on_abort goto L8 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:107:14+41 - assume {:print "$at(80,4947,4988)"} true; - call $t8 := $1_coin_is_account_registered'$1_aptos_coin_AptosCoin'($t0); + // $t12 := coin::value($t10) on_abort goto L2 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:321:13+39 + assume {:print "$at(138,14510,14549)"} true; + call $t12 := $1_coin_value'$1_aptos_coin_AptosCoin'($t10); if ($abort_flag) { - assume {:print "$at(80,4947,4988)"} true; - $t5 := $abort_code; - assume {:print "$track_abort(25,6):", $t5} $t5 == $t5; - goto L8; + assume {:print "$at(138,14510,14549)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(38,22):", $t2} $t2 == $t2; + goto L2; } - // $t9 := !($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:107:13+1 - call $t9 := $Not($t8); - - // if ($t9) goto L3 else goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:107:9+298 - if ($t9) { goto L3; } else { goto L2; } + // $t13 := get_field.pending_inactive($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:322:25+28 + assume {:print "$at(138,14575,14603)"} true; + $t13 := $pending_inactive#$1_stake_StakePool($t3); - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:109:51+2 - assume {:print "$at(80,5063,5065)"} true; -L3: + // assume Identical($t14, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + assume {:print "$at(102,1664,1763)"} true; + assume ($t14 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); - // $t10 := aptos_account::can_receive_direct_coin_transfers($t0) on_abort goto L8 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:109:17+37 - assume {:print "$at(80,5029,5066)"} true; - call $t10 := $1_aptos_account_can_receive_direct_coin_transfers($t0); + // $t15 := coin::value($t13) on_abort goto L2 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:322:13+41 + assume {:print "$at(138,14563,14604)"} true; + call $t15 := $1_coin_value'$1_aptos_coin_AptosCoin'($t13); if ($abort_flag) { - assume {:print "$at(80,5029,5066)"} true; - $t5 := $abort_code; - assume {:print "$track_abort(25,6):", $t5} $t5 == $t5; - goto L8; + assume {:print "$at(138,14563,14604)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(38,22):", $t2} $t2 == $t2; + goto L2; } - // if ($t10) goto L5 else goto L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:108:13+167 - assume {:print "$at(80,5004,5171)"} true; - if ($t10) { goto L5; } else { goto L4; } + // trace_return[0]($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:318:9+211 + assume {:print "$at(138,14404,14615)"} true; + assume {:print "$track_return(38,22,0):", $t6} $t6 == $t6; - // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:108:13+167 -L5: + // trace_return[1]($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:318:9+211 + assume {:print "$track_return(38,22,1):", $t9} $t9 == $t9; - // goto L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:108:13+167 - assume {:print "$at(80,5004,5171)"} true; - goto L6; + // trace_return[2]($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:318:9+211 + assume {:print "$track_return(38,22,2):", $t12} $t12 == $t12; - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:110:42+46 - assume {:print "$at(80,5109,5155)"} true; -L4: + // trace_return[3]($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:318:9+211 + assume {:print "$track_return(38,22,3):", $t15} $t15 == $t15; - // $t11 := 3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:110:42+46 - assume {:print "$at(80,5109,5155)"} true; - $t11 := 3; - assume $IsValid'u64'($t11); + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:324:5+1 + assume {:print "$at(138,14620,14621)"} true; +L1: - // $t12 := error::permission_denied($t11) on_abort goto L8 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:110:17+72 - call $t12 := $1_error_permission_denied($t11); - if ($abort_flag) { - assume {:print "$at(80,5084,5156)"} true; - $t5 := $abort_code; - assume {:print "$track_abort(25,6):", $t5} $t5 == $t5; - goto L8; - } + // return ($t6, $t9, $t12, $t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:324:5+1 + assume {:print "$at(138,14620,14621)"} true; + $ret0 := $t6; + $ret1 := $t9; + $ret2 := $t12; + $ret3 := $t15; + return; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:324:5+1 +L2: - // trace_abort($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:108:13+167 - assume {:print "$at(80,5004,5171)"} true; - assume {:print "$track_abort(25,6):", $t12} $t12 == $t12; + // abort($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:324:5+1 + assume {:print "$at(138,14620,14621)"} true; + $abort_code := $t2; + $abort_flag := true; + return; - // $t5 := move($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:108:13+167 - $t5 := $t12; +} - // goto L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:108:13+167 - goto L8; +// fun stake::increase_lockup_with_cap [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:763:5+905 +procedure {:inline 1} $1_stake_increase_lockup_with_cap(_$t0: $1_stake_OwnerCapability) returns () +{ + // declare local variables + var $t1: $1_staking_config_StakingConfig; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: $Mutation ($1_stake_StakePool); + var $t6: $1_staking_config_StakingConfig; + var $t7: int; + var $t8: $1_stake_StakePool; + var $t9: int; + var $t10: int; + var $t11: int; + var $t12: int; + var $t13: $1_staking_config_StakingConfig; + var $t14: $Mutation ($1_stake_StakePool); + var $t15: int; + var $t16: int; + var $t17: int; + var $t18: int; + var $t19: bool; + var $t20: int; + var $t21: int; + var $t22: $Mutation (int); + var $t23: $Mutation ($1_event_EventHandle'$1_stake_IncreaseLockupEvent'); + var $t24: $1_stake_IncreaseLockupEvent; + var $t0: $1_stake_OwnerCapability; + var $1_stake_StakePool_$modifies: [int]bool; + var $temp_0'$1_stake_OwnerCapability': $1_stake_OwnerCapability; + var $temp_0'$1_stake_StakePool': $1_stake_StakePool; + var $temp_0'$1_staking_config_StakingConfig': $1_staking_config_StakingConfig; + var $temp_0'address': int; + var $temp_0'u64': int; + $t0 := _$t0; - // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:112:53+2 - assume {:print "$at(80,5225,5227)"} true; -L6: + // bytecode translation starts here + // assume Identical($t6, global(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:67:9+69 + assume {:print "$at(139,3047,3116)"} true; + assume ($t6 == $ResourceValue($1_staking_config_StakingConfig_$memory, 1)); - // $t13 := opaque begin: create_signer::create_signer($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:112:39+17 - assume {:print "$at(80,5211,5228)"} true; + // assume Identical($t7, select stake::OwnerCapability.pool_address($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:68:9+42 + assume {:print "$at(139,3125,3167)"} true; + assume ($t7 == $pool_address#$1_stake_OwnerCapability($t0)); - // assume WellFormed($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:112:39+17 - assume $IsValid'signer'($t13) && $1_signer_is_txn_signer($t13) && $1_signer_is_txn_signer_addr($addr#$signer($t13)); + // assume Identical($t8, global($t7)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:69:9+53 + assume {:print "$at(139,3176,3229)"} true; + assume ($t8 == $ResourceValue($1_stake_StakePool_$memory, $t7)); - // assume Eq
(signer::$address_of($t13), $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:112:39+17 - assume $IsEqual'address'($1_signer_$address_of($t13), $t0); + // assume Identical($t9, timestamp::spec_now_seconds()) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:71:9+48 + assume {:print "$at(139,3301,3349)"} true; + assume ($t9 == $1_timestamp_spec_now_seconds($1_timestamp_CurrentTimeMicroseconds_$memory)); - // $t13 := opaque end: create_signer::create_signer($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:112:39+17 + // assume Identical($t10, select staking_config::StakingConfig.recurring_lockup_duration_secs($t6)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:72:9+51 + assume {:print "$at(139,3358,3409)"} true; + assume ($t10 == $recurring_lockup_duration_secs#$1_staking_config_StakingConfig($t6)); - // assume Identical($t14, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 - assume {:print "$at(95,1664,1763)"} true; - assume ($t14 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + // trace_local[owner_cap]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:763:5+1 + assume {:print "$at(138,35298,35299)"} true; + assume {:print "$track_local(38,27,0):", $t0} $t0 == $t0; - // assume Identical($t15, signer::$address_of($t13)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:342:9+47 - assume {:print "$at(95,14541,14588)"} true; - assume ($t15 == $1_signer_$address_of($t13)); + // $t11 := get_field.pool_address($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:764:28+22 + assume {:print "$at(138,35411,35433)"} true; + $t11 := $pool_address#$1_stake_OwnerCapability($t0); - // assume Identical($t16, global($t15)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:343:9+49 - assume {:print "$at(95,14597,14646)"} true; - assume ($t16 == $ResourceValue($1_account_Account_$memory, $t15)); + // trace_local[pool_address]($t11) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:764:13+12 + assume {:print "$track_local(38,27,4):", $t11} $t11 == $t11; - // coin::register<#0>($t13) on_abort goto L8 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:112:13+44 - assume {:print "$at(80,5185,5229)"} true; - call $1_coin_register'$1_aptos_coin_AptosCoin'($t13); + // stake::assert_stake_pool_exists($t11) on_abort goto L4 with $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:765:9+38 + assume {:print "$at(138,35443,35481)"} true; + call $1_stake_assert_stake_pool_exists($t11); if ($abort_flag) { - assume {:print "$at(80,5185,5229)"} true; - $t5 := $abort_code; - assume {:print "$track_abort(25,6):", $t5} $t5 == $t5; - goto L8; + assume {:print "$at(138,35443,35481)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(38,27):", $t12} $t12 == $t12; + goto L4; } - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:114:33+2 - assume {:print "$at(80,5274,5276)"} true; -L2: + // $t13 := staking_config::get() on_abort goto L4 with $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:766:22+21 + assume {:print "$at(138,35504,35525)"} true; + call $t13 := $1_staking_config_get(); + if ($abort_flag) { + assume {:print "$at(138,35504,35525)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(38,27):", $t12} $t12 == $t12; + goto L4; + } - // assume Identical($t17, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 - assume {:print "$at(95,1664,1763)"} true; - assume ($t17 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + // trace_local[config]($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:766:13+6 + assume {:print "$track_local(38,27,1):", $t13} $t13 == $t13; - // coin::deposit<#0>($t0, $t1) on_abort goto L8 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:114:9+34 - assume {:print "$at(80,5250,5284)"} true; - call $1_coin_deposit'$1_aptos_coin_AptosCoin'($t0, $t1); + // $t14 := borrow_global($t11) on_abort goto L4 with $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:768:26+17 + assume {:print "$at(138,35553,35570)"} true; + if (!$ResourceExists($1_stake_StakePool_$memory, $t11)) { + call $ExecFailureAbort(); + } else { + $t14 := $Mutation($Global($t11), EmptyVec(), $ResourceValue($1_stake_StakePool_$memory, $t11)); + } if ($abort_flag) { - assume {:print "$at(80,5250,5284)"} true; - $t5 := $abort_code; - assume {:print "$track_abort(25,6):", $t5} $t5 == $t5; - goto L8; + assume {:print "$at(138,35553,35570)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(38,27):", $t12} $t12 == $t12; + goto L4; } - // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:115:5+1 - assume {:print "$at(80,5289,5290)"} true; -L7: + // trace_local[stake_pool]($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:768:13+10 + $temp_0'$1_stake_StakePool' := $Dereference($t14); + assume {:print "$track_local(38,27,5):", $temp_0'$1_stake_StakePool'} $temp_0'$1_stake_StakePool' == $temp_0'$1_stake_StakePool'; - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:115:5+1 - assume {:print "$at(80,5289,5290)"} true; - return; + // $t15 := get_field.locked_until_secs($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:769:37+28 + assume {:print "$at(138,35633,35661)"} true; + $t15 := $locked_until_secs#$1_stake_StakePool($Dereference($t14)); - // label L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:115:5+1 -L8: + // trace_local[old_locked_until_secs]($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:769:13+21 + assume {:print "$track_local(38,27,3):", $t15} $t15 == $t15; - // abort($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:115:5+1 - assume {:print "$at(80,5289,5290)"} true; - $abort_code := $t5; - $abort_flag := true; - return; + // $t16 := timestamp::now_seconds() on_abort goto L4 with $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:770:37+24 + assume {:print "$at(138,35699,35723)"} true; + call $t16 := $1_timestamp_now_seconds(); + if ($abort_flag) { + assume {:print "$at(138,35699,35723)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(38,27):", $t12} $t12 == $t12; + goto L4; + } -} + // $t17 := staking_config::get_recurring_lockup_duration($t13) on_abort goto L4 with $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:770:64+54 + call $t17 := $1_staking_config_get_recurring_lockup_duration($t13); + if ($abort_flag) { + assume {:print "$at(138,35726,35780)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(38,27):", $t12} $t12 == $t12; + goto L4; + } -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/chain_status.move:35:5+90 -function {:inline} $1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory: $Memory $1_chain_status_GenesisEndMarker): bool { - $ResourceExists($1_chain_status_GenesisEndMarker_$memory, 1) -} + // $t18 := +($t16, $t17) on_abort goto L4 with $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:770:62+1 + call $t18 := $AddU64($t16, $t17); + if ($abort_flag) { + assume {:print "$at(138,35724,35725)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(38,27):", $t12} $t12 == $t12; + goto L4; + } -// struct chain_status::GenesisEndMarker at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/chain_status.move:12:5+34 -type {:datatype} $1_chain_status_GenesisEndMarker; -function {:constructor} $1_chain_status_GenesisEndMarker($dummy_field: bool): $1_chain_status_GenesisEndMarker; -function {:inline} $Update'$1_chain_status_GenesisEndMarker'_dummy_field(s: $1_chain_status_GenesisEndMarker, x: bool): $1_chain_status_GenesisEndMarker { - $1_chain_status_GenesisEndMarker(x) -} -function $IsValid'$1_chain_status_GenesisEndMarker'(s: $1_chain_status_GenesisEndMarker): bool { - $IsValid'bool'($dummy_field#$1_chain_status_GenesisEndMarker(s)) -} -function {:inline} $IsEqual'$1_chain_status_GenesisEndMarker'(s1: $1_chain_status_GenesisEndMarker, s2: $1_chain_status_GenesisEndMarker): bool { - s1 == s2 -} -var $1_chain_status_GenesisEndMarker_$memory: $Memory $1_chain_status_GenesisEndMarker; + // trace_local[new_locked_until_secs]($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:770:13+21 + assume {:print "$track_local(38,27,2):", $t18} $t18 == $t18; -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:61:5+153 -function {:inline} $1_timestamp_$now_microseconds($1_timestamp_CurrentTimeMicroseconds_$memory: $Memory $1_timestamp_CurrentTimeMicroseconds): int { - $microseconds#$1_timestamp_CurrentTimeMicroseconds($ResourceValue($1_timestamp_CurrentTimeMicroseconds_$memory, 1)) -} + // $t19 := <($t15, $t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:771:39+1 + assume {:print "$at(138,35820,35821)"} true; + call $t19 := $Lt($t15, $t18); -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:67:5+123 -function {:inline} $1_timestamp_$now_seconds($1_timestamp_CurrentTimeMicroseconds_$memory: $Memory $1_timestamp_CurrentTimeMicroseconds): int { - ($1_timestamp_$now_microseconds($1_timestamp_CurrentTimeMicroseconds_$memory) div 1000000) -} + // if ($t19) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:771:9+96 + if ($t19) { goto L1; } else { goto L0; } -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.spec.move:22:10+111 -function {:inline} $1_timestamp_spec_now_microseconds($1_timestamp_CurrentTimeMicroseconds_$memory: $Memory $1_timestamp_CurrentTimeMicroseconds): int { - $microseconds#$1_timestamp_CurrentTimeMicroseconds($ResourceValue($1_timestamp_CurrentTimeMicroseconds_$memory, 1)) -} + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:771:9+96 +L1: -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.spec.move:26:10+93 -function {:inline} $1_timestamp_spec_now_seconds($1_timestamp_CurrentTimeMicroseconds_$memory: $Memory $1_timestamp_CurrentTimeMicroseconds): int { - ($1_timestamp_spec_now_microseconds($1_timestamp_CurrentTimeMicroseconds_$memory) div 1000000) -} + // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:771:9+96 + assume {:print "$at(138,35790,35886)"} true; + goto L2; -// struct timestamp::CurrentTimeMicroseconds at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:12:5+73 -type {:datatype} $1_timestamp_CurrentTimeMicroseconds; -function {:constructor} $1_timestamp_CurrentTimeMicroseconds($microseconds: int): $1_timestamp_CurrentTimeMicroseconds; -function {:inline} $Update'$1_timestamp_CurrentTimeMicroseconds'_microseconds(s: $1_timestamp_CurrentTimeMicroseconds, x: int): $1_timestamp_CurrentTimeMicroseconds { - $1_timestamp_CurrentTimeMicroseconds(x) -} -function $IsValid'$1_timestamp_CurrentTimeMicroseconds'(s: $1_timestamp_CurrentTimeMicroseconds): bool { - $IsValid'u64'($microseconds#$1_timestamp_CurrentTimeMicroseconds(s)) -} -function {:inline} $IsEqual'$1_timestamp_CurrentTimeMicroseconds'(s1: $1_timestamp_CurrentTimeMicroseconds, s2: $1_timestamp_CurrentTimeMicroseconds): bool { - s1 == s2 -} -var $1_timestamp_CurrentTimeMicroseconds_$memory: $Memory $1_timestamp_CurrentTimeMicroseconds; + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:771:9+96 +L0: -// fun timestamp::now_microseconds [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:61:5+153 -procedure {:inline 1} $1_timestamp_now_microseconds() returns ($ret0: int) -{ - // declare local variables - var $t0: int; - var $t1: $1_timestamp_CurrentTimeMicroseconds; - var $t2: int; - var $t3: int; - var $temp_0'u64': int; + // destroy($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:771:9+96 + assume {:print "$at(138,35790,35886)"} true; - // bytecode translation starts here - // $t0 := 0x1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:62:48+16 - assume {:print "$at(143,2511,2527)"} true; - $t0 := 1; - assume $IsValid'address'($t0); + // $t20 := 18 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:771:88+15 + $t20 := 18; + assume $IsValid'u64'($t20); - // $t1 := get_global($t0) on_abort goto L2 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:62:9+13 - if (!$ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory, $t0)) { - call $ExecFailureAbort(); - } else { - $t1 := $ResourceValue($1_timestamp_CurrentTimeMicroseconds_$memory, $t0); - } + // $t21 := error::invalid_argument($t20) on_abort goto L4 with $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:771:64+40 + call $t21 := $1_error_invalid_argument($t20); if ($abort_flag) { - assume {:print "$at(143,2472,2485)"} true; - $t2 := $abort_code; - assume {:print "$track_abort(28,0):", $t2} $t2 == $t2; - goto L2; + assume {:print "$at(138,35845,35885)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(38,27):", $t12} $t12 == $t12; + goto L4; } - // $t3 := get_field.microseconds($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:62:9+69 - $t3 := $microseconds#$1_timestamp_CurrentTimeMicroseconds($t1); + // trace_abort($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:771:9+96 + assume {:print "$at(138,35790,35886)"} true; + assume {:print "$track_abort(38,27):", $t21} $t21 == $t21; - // trace_return[0]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:62:9+69 - assume {:print "$track_return(28,0,0):", $t3} $t3 == $t3; + // $t12 := move($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:771:9+96 + $t12 := $t21; - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:63:5+1 - assume {:print "$at(143,2546,2547)"} true; -L1: + // goto L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:771:9+96 + goto L4; - // return $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:63:5+1 - assume {:print "$at(143,2546,2547)"} true; - $ret0 := $t3; + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:772:40+21 + assume {:print "$at(138,35927,35948)"} true; +L2: + + // $t22 := borrow_field.locked_until_secs($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:772:9+28 + assume {:print "$at(138,35896,35924)"} true; + $t22 := $ChildMutation($t14, 4, $locked_until_secs#$1_stake_StakePool($Dereference($t14))); + + // write_ref($t22, $t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:772:9+52 + $t22 := $UpdateMutation($t22, $t18); + + // write_back[Reference($t14).locked_until_secs (u64)]($t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:772:9+52 + $t14 := $UpdateMutation($t14, $Update'$1_stake_StakePool'_locked_until_secs($Dereference($t14), $Dereference($t22))); + + // $t23 := borrow_field.increase_lockup_events($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:775:13+38 + assume {:print "$at(138,35990,36028)"} true; + $t23 := $ChildMutation($t14, 13, $increase_lockup_events#$1_stake_StakePool($Dereference($t14))); + + // $t24 := pack stake::IncreaseLockupEvent($t11, $t15, $t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:776:13+143 + assume {:print "$at(138,36042,36185)"} true; + $t24 := $1_stake_IncreaseLockupEvent($t11, $t15, $t18); + + // opaque begin: event::emit_event($t23, $t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:774:9+237 + assume {:print "$at(138,35959,36196)"} true; + + // opaque end: event::emit_event($t23, $t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:774:9+237 + + // write_back[Reference($t14).increase_lockup_events (event::EventHandle)]($t23) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:774:9+237 + $t14 := $UpdateMutation($t14, $Update'$1_stake_StakePool'_increase_lockup_events($Dereference($t14), $Dereference($t23))); + + // write_back[stake::StakePool@]($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:774:9+237 + $1_stake_StakePool_$memory := $ResourceUpdate($1_stake_StakePool_$memory, $GlobalLocationAddress($t14), + $Dereference($t14)); + + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:782:5+1 + assume {:print "$at(138,36202,36203)"} true; +L3: + + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:782:5+1 + assume {:print "$at(138,36202,36203)"} true; return; - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:63:5+1 -L2: + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:782:5+1 +L4: - // abort($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:63:5+1 - assume {:print "$at(143,2546,2547)"} true; - $abort_code := $t2; + // abort($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:782:5+1 + assume {:print "$at(138,36202,36203)"} true; + $abort_code := $t12; $abort_flag := true; return; } -// fun timestamp::now_seconds [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:67:5+123 -procedure {:inline 1} $1_timestamp_now_seconds() returns ($ret0: int) +// fun stake::set_delegated_voter_with_cap [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:601:5+331 +procedure {:inline 1} $1_stake_set_delegated_voter_with_cap(_$t0: $1_stake_OwnerCapability, _$t1: int) returns () { // declare local variables - var $t0: int; - var $t1: int; var $t2: int; - var $t3: int; - var $temp_0'u64': int; + var $t3: $Mutation ($1_stake_StakePool); + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: $Mutation ($1_stake_StakePool); + var $t8: $Mutation (int); + var $t0: $1_stake_OwnerCapability; + var $t1: int; + var $1_stake_StakePool_$modifies: [int]bool; + var $temp_0'$1_stake_OwnerCapability': $1_stake_OwnerCapability; + var $temp_0'$1_stake_StakePool': $1_stake_StakePool; + var $temp_0'address': int; + $t0 := _$t0; + $t1 := _$t1; // bytecode translation starts here - // $t0 := timestamp::now_microseconds() on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:68:9+18 - assume {:print "$at(143,2680,2698)"} true; - call $t0 := $1_timestamp_now_microseconds(); + // assume Identical($t4, select stake::OwnerCapability.pool_address($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:136:9+42 + assume {:print "$at(139,6139,6181)"} true; + assume ($t4 == $pool_address#$1_stake_OwnerCapability($t0)); + + // trace_local[owner_cap]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:601:5+1 + assume {:print "$at(138,27301,27302)"} true; + assume {:print "$track_local(38,44,0):", $t0} $t0 == $t0; + + // trace_local[new_voter]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:601:5+1 + assume {:print "$track_local(38,44,1):", $t1} $t1 == $t1; + + // $t5 := get_field.pool_address($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:602:28+22 + assume {:print "$at(138,27438,27460)"} true; + $t5 := $pool_address#$1_stake_OwnerCapability($t0); + + // trace_local[pool_address]($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:602:13+12 + assume {:print "$track_local(38,44,2):", $t5} $t5 == $t5; + + // stake::assert_stake_pool_exists($t5) on_abort goto L2 with $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:603:9+38 + assume {:print "$at(138,27470,27508)"} true; + call $1_stake_assert_stake_pool_exists($t5); if ($abort_flag) { - assume {:print "$at(143,2680,2698)"} true; - $t1 := $abort_code; - assume {:print "$track_abort(28,1):", $t1} $t1 == $t1; + assume {:print "$at(138,27470,27508)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(38,44):", $t6} $t6 == $t6; goto L2; } - // $t2 := 1000000 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:68:30+23 - $t2 := 1000000; - assume $IsValid'u64'($t2); - - // $t3 := /($t0, $t2) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:68:28+1 - call $t3 := $Div($t0, $t2); + // $t7 := borrow_global($t5) on_abort goto L2 with $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:604:26+17 + assume {:print "$at(138,27535,27552)"} true; + if (!$ResourceExists($1_stake_StakePool_$memory, $t5)) { + call $ExecFailureAbort(); + } else { + $t7 := $Mutation($Global($t5), EmptyVec(), $ResourceValue($1_stake_StakePool_$memory, $t5)); + } if ($abort_flag) { - assume {:print "$at(143,2699,2700)"} true; - $t1 := $abort_code; - assume {:print "$track_abort(28,1):", $t1} $t1 == $t1; + assume {:print "$at(138,27535,27552)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(38,44):", $t6} $t6 == $t6; goto L2; } - // trace_return[0]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:68:9+44 - assume {:print "$track_return(28,1,0):", $t3} $t3 == $t3; + // trace_local[stake_pool]($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:604:13+10 + $temp_0'$1_stake_StakePool' := $Dereference($t7); + assume {:print "$track_local(38,44,3):", $temp_0'$1_stake_StakePool'} $temp_0'$1_stake_StakePool' == $temp_0'$1_stake_StakePool'; - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:69:5+1 - assume {:print "$at(143,2729,2730)"} true; + // $t8 := borrow_field.delegated_voter($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:605:9+26 + assume {:print "$at(138,27587,27613)"} true; + $t8 := $ChildMutation($t7, 6, $delegated_voter#$1_stake_StakePool($Dereference($t7))); + + // write_ref($t8, $t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:605:9+38 + $t8 := $UpdateMutation($t8, $t1); + + // write_back[Reference($t7).delegated_voter (address)]($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:605:9+38 + $t7 := $UpdateMutation($t7, $Update'$1_stake_StakePool'_delegated_voter($Dereference($t7), $Dereference($t8))); + + // write_back[stake::StakePool@]($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:605:9+38 + $1_stake_StakePool_$memory := $ResourceUpdate($1_stake_StakePool_$memory, $GlobalLocationAddress($t7), + $Dereference($t7)); + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:606:5+1 + assume {:print "$at(138,27631,27632)"} true; L1: - // return $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:69:5+1 - assume {:print "$at(143,2729,2730)"} true; - $ret0 := $t3; + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:606:5+1 + assume {:print "$at(138,27631,27632)"} true; return; - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:69:5+1 + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:606:5+1 L2: - // abort($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:69:5+1 - assume {:print "$at(143,2729,2730)"} true; - $abort_code := $t1; + // abort($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:606:5+1 + assume {:print "$at(138,27631,27632)"} true; + $abort_code := $t6; $abort_flag := true; return; } -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/fixed_point32.move:55:10+109 -function {:inline} $1_fixed_point32_spec_multiply_u64(val: int, multiplier: $1_fixed_point32_FixedPoint32): int { - $shr((val * $value#$1_fixed_point32_FixedPoint32(multiplier)), 32) -} +// fun stake::stake_pool_exists [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:400:5+89 +procedure {:inline 1} $1_stake_stake_pool_exists(_$t0: int) returns ($ret0: bool) +{ + // declare local variables + var $t1: bool; + var $t0: int; + var $temp_0'address': int; + var $temp_0'bool': bool; + $t0 := _$t0; -// struct fixed_point32::FixedPoint32 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/fixed_point32.move:15:5+56 -type {:datatype} $1_fixed_point32_FixedPoint32; -function {:constructor} $1_fixed_point32_FixedPoint32($value: int): $1_fixed_point32_FixedPoint32; -function {:inline} $Update'$1_fixed_point32_FixedPoint32'_value(s: $1_fixed_point32_FixedPoint32, x: int): $1_fixed_point32_FixedPoint32 { - $1_fixed_point32_FixedPoint32(x) -} -function $IsValid'$1_fixed_point32_FixedPoint32'(s: $1_fixed_point32_FixedPoint32): bool { - $IsValid'u64'($value#$1_fixed_point32_FixedPoint32(s)) -} -function {:inline} $IsEqual'$1_fixed_point32_FixedPoint32'(s1: $1_fixed_point32_FixedPoint32, s2: $1_fixed_point32_FixedPoint32): bool { - s1 == s2 -} + // bytecode translation starts here + // trace_local[addr]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:400:5+1 + assume {:print "$at(138,18212,18213)"} true; + assume {:print "$track_local(38,47,0):", $t0} $t0 == $t0; + + // $t1 := exists($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:401:9+6 + assume {:print "$at(138,18272,18278)"} true; + $t1 := $ResourceExists($1_stake_StakePool_$memory, $t0); + + // trace_return[0]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:401:9+23 + assume {:print "$track_return(38,47,0):", $t1} $t1 == $t1; + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:402:5+1 + assume {:print "$at(138,18300,18301)"} true; +L1: + + // return $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:402:5+1 + assume {:print "$at(138,18300,18301)"} true; + $ret0 := $t1; + return; -// struct staking_config::StakingConfig at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/configs/staking_config.move:49:5+1753 -type {:datatype} $1_staking_config_StakingConfig; -function {:constructor} $1_staking_config_StakingConfig($minimum_stake: int, $maximum_stake: int, $recurring_lockup_duration_secs: int, $allow_validator_set_change: bool, $rewards_rate: int, $rewards_rate_denominator: int, $voting_power_increase_limit: int): $1_staking_config_StakingConfig; -function {:inline} $Update'$1_staking_config_StakingConfig'_minimum_stake(s: $1_staking_config_StakingConfig, x: int): $1_staking_config_StakingConfig { - $1_staking_config_StakingConfig(x, $maximum_stake#$1_staking_config_StakingConfig(s), $recurring_lockup_duration_secs#$1_staking_config_StakingConfig(s), $allow_validator_set_change#$1_staking_config_StakingConfig(s), $rewards_rate#$1_staking_config_StakingConfig(s), $rewards_rate_denominator#$1_staking_config_StakingConfig(s), $voting_power_increase_limit#$1_staking_config_StakingConfig(s)) } -function {:inline} $Update'$1_staking_config_StakingConfig'_maximum_stake(s: $1_staking_config_StakingConfig, x: int): $1_staking_config_StakingConfig { - $1_staking_config_StakingConfig($minimum_stake#$1_staking_config_StakingConfig(s), x, $recurring_lockup_duration_secs#$1_staking_config_StakingConfig(s), $allow_validator_set_change#$1_staking_config_StakingConfig(s), $rewards_rate#$1_staking_config_StakingConfig(s), $rewards_rate_denominator#$1_staking_config_StakingConfig(s), $voting_power_increase_limit#$1_staking_config_StakingConfig(s)) + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/hash.spec.move:7:9+50 +function $1_aptos_hash_spec_keccak256(bytes: Vec (int)): Vec (int); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_aptos_hash_spec_keccak256(bytes); +$IsValid'vec'u8''($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/hash.spec.move:12:9+58 +function $1_aptos_hash_spec_sha2_512_internal(bytes: Vec (int)): Vec (int); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_aptos_hash_spec_sha2_512_internal(bytes); +$IsValid'vec'u8''($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/hash.spec.move:17:9+58 +function $1_aptos_hash_spec_sha3_512_internal(bytes: Vec (int)): Vec (int); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_aptos_hash_spec_sha3_512_internal(bytes); +$IsValid'vec'u8''($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/hash.spec.move:22:9+59 +function $1_aptos_hash_spec_ripemd160_internal(bytes: Vec (int)): Vec (int); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_aptos_hash_spec_ripemd160_internal(bytes); +$IsValid'vec'u8''($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/hash.spec.move:27:9+61 +function $1_aptos_hash_spec_blake2b_256_internal(bytes: Vec (int)): Vec (int); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_aptos_hash_spec_blake2b_256_internal(bytes); +$IsValid'vec'u8''($$res))); + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/reconfiguration.move:154:5+155 +function {:inline} $1_reconfiguration_$last_reconfiguration_time($1_reconfiguration_Configuration_$memory: $Memory $1_reconfiguration_Configuration): int { + $last_reconfiguration_time#$1_reconfiguration_Configuration($ResourceValue($1_reconfiguration_Configuration_$memory, 1)) } -function {:inline} $Update'$1_staking_config_StakingConfig'_recurring_lockup_duration_secs(s: $1_staking_config_StakingConfig, x: int): $1_staking_config_StakingConfig { - $1_staking_config_StakingConfig($minimum_stake#$1_staking_config_StakingConfig(s), $maximum_stake#$1_staking_config_StakingConfig(s), x, $allow_validator_set_change#$1_staking_config_StakingConfig(s), $rewards_rate#$1_staking_config_StakingConfig(s), $rewards_rate_denominator#$1_staking_config_StakingConfig(s), $voting_power_increase_limit#$1_staking_config_StakingConfig(s)) + +// struct reconfiguration::Configuration at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/reconfiguration.move:33:5+306 +type {:datatype} $1_reconfiguration_Configuration; +function {:constructor} $1_reconfiguration_Configuration($epoch: int, $last_reconfiguration_time: int, $events: $1_event_EventHandle'$1_reconfiguration_NewEpochEvent'): $1_reconfiguration_Configuration; +function {:inline} $Update'$1_reconfiguration_Configuration'_epoch(s: $1_reconfiguration_Configuration, x: int): $1_reconfiguration_Configuration { + $1_reconfiguration_Configuration(x, $last_reconfiguration_time#$1_reconfiguration_Configuration(s), $events#$1_reconfiguration_Configuration(s)) } -function {:inline} $Update'$1_staking_config_StakingConfig'_allow_validator_set_change(s: $1_staking_config_StakingConfig, x: bool): $1_staking_config_StakingConfig { - $1_staking_config_StakingConfig($minimum_stake#$1_staking_config_StakingConfig(s), $maximum_stake#$1_staking_config_StakingConfig(s), $recurring_lockup_duration_secs#$1_staking_config_StakingConfig(s), x, $rewards_rate#$1_staking_config_StakingConfig(s), $rewards_rate_denominator#$1_staking_config_StakingConfig(s), $voting_power_increase_limit#$1_staking_config_StakingConfig(s)) +function {:inline} $Update'$1_reconfiguration_Configuration'_last_reconfiguration_time(s: $1_reconfiguration_Configuration, x: int): $1_reconfiguration_Configuration { + $1_reconfiguration_Configuration($epoch#$1_reconfiguration_Configuration(s), x, $events#$1_reconfiguration_Configuration(s)) } -function {:inline} $Update'$1_staking_config_StakingConfig'_rewards_rate(s: $1_staking_config_StakingConfig, x: int): $1_staking_config_StakingConfig { - $1_staking_config_StakingConfig($minimum_stake#$1_staking_config_StakingConfig(s), $maximum_stake#$1_staking_config_StakingConfig(s), $recurring_lockup_duration_secs#$1_staking_config_StakingConfig(s), $allow_validator_set_change#$1_staking_config_StakingConfig(s), x, $rewards_rate_denominator#$1_staking_config_StakingConfig(s), $voting_power_increase_limit#$1_staking_config_StakingConfig(s)) +function {:inline} $Update'$1_reconfiguration_Configuration'_events(s: $1_reconfiguration_Configuration, x: $1_event_EventHandle'$1_reconfiguration_NewEpochEvent'): $1_reconfiguration_Configuration { + $1_reconfiguration_Configuration($epoch#$1_reconfiguration_Configuration(s), $last_reconfiguration_time#$1_reconfiguration_Configuration(s), x) } -function {:inline} $Update'$1_staking_config_StakingConfig'_rewards_rate_denominator(s: $1_staking_config_StakingConfig, x: int): $1_staking_config_StakingConfig { - $1_staking_config_StakingConfig($minimum_stake#$1_staking_config_StakingConfig(s), $maximum_stake#$1_staking_config_StakingConfig(s), $recurring_lockup_duration_secs#$1_staking_config_StakingConfig(s), $allow_validator_set_change#$1_staking_config_StakingConfig(s), $rewards_rate#$1_staking_config_StakingConfig(s), x, $voting_power_increase_limit#$1_staking_config_StakingConfig(s)) +function $IsValid'$1_reconfiguration_Configuration'(s: $1_reconfiguration_Configuration): bool { + $IsValid'u64'($epoch#$1_reconfiguration_Configuration(s)) + && $IsValid'u64'($last_reconfiguration_time#$1_reconfiguration_Configuration(s)) + && $IsValid'$1_event_EventHandle'$1_reconfiguration_NewEpochEvent''($events#$1_reconfiguration_Configuration(s)) } -function {:inline} $Update'$1_staking_config_StakingConfig'_voting_power_increase_limit(s: $1_staking_config_StakingConfig, x: int): $1_staking_config_StakingConfig { - $1_staking_config_StakingConfig($minimum_stake#$1_staking_config_StakingConfig(s), $maximum_stake#$1_staking_config_StakingConfig(s), $recurring_lockup_duration_secs#$1_staking_config_StakingConfig(s), $allow_validator_set_change#$1_staking_config_StakingConfig(s), $rewards_rate#$1_staking_config_StakingConfig(s), $rewards_rate_denominator#$1_staking_config_StakingConfig(s), x) +function {:inline} $IsEqual'$1_reconfiguration_Configuration'(s1: $1_reconfiguration_Configuration, s2: $1_reconfiguration_Configuration): bool { + s1 == s2 } -function $IsValid'$1_staking_config_StakingConfig'(s: $1_staking_config_StakingConfig): bool { - $IsValid'u64'($minimum_stake#$1_staking_config_StakingConfig(s)) - && $IsValid'u64'($maximum_stake#$1_staking_config_StakingConfig(s)) - && $IsValid'u64'($recurring_lockup_duration_secs#$1_staking_config_StakingConfig(s)) - && $IsValid'bool'($allow_validator_set_change#$1_staking_config_StakingConfig(s)) - && $IsValid'u64'($rewards_rate#$1_staking_config_StakingConfig(s)) - && $IsValid'u64'($rewards_rate_denominator#$1_staking_config_StakingConfig(s)) - && $IsValid'u64'($voting_power_increase_limit#$1_staking_config_StakingConfig(s)) +var $1_reconfiguration_Configuration_$memory: $Memory $1_reconfiguration_Configuration; + +// struct reconfiguration::NewEpochEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/reconfiguration.move:28:5+64 +type {:datatype} $1_reconfiguration_NewEpochEvent; +function {:constructor} $1_reconfiguration_NewEpochEvent($epoch: int): $1_reconfiguration_NewEpochEvent; +function {:inline} $Update'$1_reconfiguration_NewEpochEvent'_epoch(s: $1_reconfiguration_NewEpochEvent, x: int): $1_reconfiguration_NewEpochEvent { + $1_reconfiguration_NewEpochEvent(x) } -function {:inline} $IsEqual'$1_staking_config_StakingConfig'(s1: $1_staking_config_StakingConfig, s2: $1_staking_config_StakingConfig): bool { +function $IsValid'$1_reconfiguration_NewEpochEvent'(s: $1_reconfiguration_NewEpochEvent): bool { + $IsValid'u64'($epoch#$1_reconfiguration_NewEpochEvent(s)) +} +function {:inline} $IsEqual'$1_reconfiguration_NewEpochEvent'(s1: $1_reconfiguration_NewEpochEvent, s2: $1_reconfiguration_NewEpochEvent): bool { s1 == s2 } -var $1_staking_config_StakingConfig_$memory: $Memory $1_staking_config_StakingConfig; -// fun staking_config::get [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/configs/staking_config.move:169:5+118 -procedure {:inline 1} $1_staking_config_get() returns ($ret0: $1_staking_config_StakingConfig) +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:38:10+241 +function {:inline} $1_pool_u64_spec_shares(pool: $1_pool_u64_Pool, shareholder: int): int { + (if ($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool(pool), shareholder)) then ($1_simple_map_spec_get'address_u64'($shares#$1_pool_u64_Pool(pool), shareholder)) else (0)) +} + +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:129:10+265 +function {:inline} $1_pool_u64_spec_shares_to_amount_with_total_coins(pool: $1_pool_u64_Pool, shares: int, total_coins: int): int { + (if (($IsEqual'u64'($total_coins#$1_pool_u64_Pool(pool), 0) || $IsEqual'u64'($total_shares#$1_pool_u64_Pool(pool), 0))) then (0) else (((shares * total_coins) div $total_shares#$1_pool_u64_Pool(pool)))) +} + +// struct pool_u64::Pool at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:38:5+449 +type {:datatype} $1_pool_u64_Pool; +function {:constructor} $1_pool_u64_Pool($shareholders_limit: int, $total_coins: int, $total_shares: int, $shares: Table int (int), $shareholders: Vec (int), $scaling_factor: int): $1_pool_u64_Pool; +function {:inline} $Update'$1_pool_u64_Pool'_shareholders_limit(s: $1_pool_u64_Pool, x: int): $1_pool_u64_Pool { + $1_pool_u64_Pool(x, $total_coins#$1_pool_u64_Pool(s), $total_shares#$1_pool_u64_Pool(s), $shares#$1_pool_u64_Pool(s), $shareholders#$1_pool_u64_Pool(s), $scaling_factor#$1_pool_u64_Pool(s)) +} +function {:inline} $Update'$1_pool_u64_Pool'_total_coins(s: $1_pool_u64_Pool, x: int): $1_pool_u64_Pool { + $1_pool_u64_Pool($shareholders_limit#$1_pool_u64_Pool(s), x, $total_shares#$1_pool_u64_Pool(s), $shares#$1_pool_u64_Pool(s), $shareholders#$1_pool_u64_Pool(s), $scaling_factor#$1_pool_u64_Pool(s)) +} +function {:inline} $Update'$1_pool_u64_Pool'_total_shares(s: $1_pool_u64_Pool, x: int): $1_pool_u64_Pool { + $1_pool_u64_Pool($shareholders_limit#$1_pool_u64_Pool(s), $total_coins#$1_pool_u64_Pool(s), x, $shares#$1_pool_u64_Pool(s), $shareholders#$1_pool_u64_Pool(s), $scaling_factor#$1_pool_u64_Pool(s)) +} +function {:inline} $Update'$1_pool_u64_Pool'_shares(s: $1_pool_u64_Pool, x: Table int (int)): $1_pool_u64_Pool { + $1_pool_u64_Pool($shareholders_limit#$1_pool_u64_Pool(s), $total_coins#$1_pool_u64_Pool(s), $total_shares#$1_pool_u64_Pool(s), x, $shareholders#$1_pool_u64_Pool(s), $scaling_factor#$1_pool_u64_Pool(s)) +} +function {:inline} $Update'$1_pool_u64_Pool'_shareholders(s: $1_pool_u64_Pool, x: Vec (int)): $1_pool_u64_Pool { + $1_pool_u64_Pool($shareholders_limit#$1_pool_u64_Pool(s), $total_coins#$1_pool_u64_Pool(s), $total_shares#$1_pool_u64_Pool(s), $shares#$1_pool_u64_Pool(s), x, $scaling_factor#$1_pool_u64_Pool(s)) +} +function {:inline} $Update'$1_pool_u64_Pool'_scaling_factor(s: $1_pool_u64_Pool, x: int): $1_pool_u64_Pool { + $1_pool_u64_Pool($shareholders_limit#$1_pool_u64_Pool(s), $total_coins#$1_pool_u64_Pool(s), $total_shares#$1_pool_u64_Pool(s), $shares#$1_pool_u64_Pool(s), $shareholders#$1_pool_u64_Pool(s), x) +} +function $IsValid'$1_pool_u64_Pool'(s: $1_pool_u64_Pool): bool { + $IsValid'u64'($shareholders_limit#$1_pool_u64_Pool(s)) + && $IsValid'u64'($total_coins#$1_pool_u64_Pool(s)) + && $IsValid'u64'($total_shares#$1_pool_u64_Pool(s)) + && $IsValid'$1_simple_map_SimpleMap'address_u64''($shares#$1_pool_u64_Pool(s)) + && $IsValid'vec'address''($shareholders#$1_pool_u64_Pool(s)) + && $IsValid'u64'($scaling_factor#$1_pool_u64_Pool(s)) +} +function {:inline} $IsEqual'$1_pool_u64_Pool'(s1: $1_pool_u64_Pool, s2: $1_pool_u64_Pool): bool { + $IsEqual'u64'($shareholders_limit#$1_pool_u64_Pool(s1), $shareholders_limit#$1_pool_u64_Pool(s2)) + && $IsEqual'u64'($total_coins#$1_pool_u64_Pool(s1), $total_coins#$1_pool_u64_Pool(s2)) + && $IsEqual'u64'($total_shares#$1_pool_u64_Pool(s1), $total_shares#$1_pool_u64_Pool(s2)) + && $IsEqual'$1_simple_map_SimpleMap'address_u64''($shares#$1_pool_u64_Pool(s1), $shares#$1_pool_u64_Pool(s2)) + && $IsEqual'vec'address''($shareholders#$1_pool_u64_Pool(s1), $shareholders#$1_pool_u64_Pool(s2)) + && $IsEqual'u64'($scaling_factor#$1_pool_u64_Pool(s1), $scaling_factor#$1_pool_u64_Pool(s2))} + +// fun pool_u64::contains [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:98:5+129 +procedure {:inline 1} $1_pool_u64_contains(_$t0: $1_pool_u64_Pool, _$t1: int) returns ($ret0: bool) { // declare local variables - var $t0: int; - var $t1: $1_staking_config_StakingConfig; - var $t2: int; - var $temp_0'$1_staking_config_StakingConfig': $1_staking_config_StakingConfig; + var $t2: Table int (int); + var $t3: bool; + var $t4: int; + var $t0: $1_pool_u64_Pool; + var $t1: int; + var $temp_0'$1_pool_u64_Pool': $1_pool_u64_Pool; + var $temp_0'address': int; + var $temp_0'bool': bool; + $t0 := _$t0; + $t1 := _$t1; // bytecode translation starts here - // $t0 := 0x1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/configs/staking_config.move:170:39+16 - assume {:print "$at(102,8264,8280)"} true; - $t0 := 1; - assume $IsValid'address'($t0); + // trace_local[pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:98:5+1 + assume {:print "$at(65,3815,3816)"} true; + assume {:print "$track_local(57,5,0):", $t0} $t0 == $t0; - // $t1 := get_global($t0) on_abort goto L2 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/configs/staking_config.move:170:10+13 - if (!$ResourceExists($1_staking_config_StakingConfig_$memory, $t0)) { - call $ExecFailureAbort(); - } else { - $t1 := $ResourceValue($1_staking_config_StakingConfig_$memory, $t0); - } + // trace_local[shareholder]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:98:5+1 + assume {:print "$track_local(57,5,1):", $t1} $t1 == $t1; + + // $t2 := get_field.shares($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:99:34+12 + assume {:print "$at(65,3911,3923)"} true; + $t2 := $shares#$1_pool_u64_Pool($t0); + + // $t3 := simple_map::contains_key($t2, $t1) on_abort goto L2 with $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:99:9+52 + call $t3 := $1_simple_map_contains_key'address_u64'($t2, $t1); if ($abort_flag) { - assume {:print "$at(102,8235,8248)"} true; - $t2 := $abort_code; - assume {:print "$track_abort(35,2):", $t2} $t2 == $t2; + assume {:print "$at(65,3886,3938)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(57,5):", $t4} $t4 == $t4; goto L2; } - // trace_return[0]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/configs/staking_config.move:170:9+47 - assume {:print "$track_return(35,2,0):", $t1} $t1 == $t1; + // trace_return[0]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:99:9+52 + assume {:print "$track_return(57,5,0):", $t3} $t3 == $t3; - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/configs/staking_config.move:171:5+1 - assume {:print "$at(102,8286,8287)"} true; + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:100:5+1 + assume {:print "$at(65,3943,3944)"} true; L1: - // return $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/configs/staking_config.move:171:5+1 - assume {:print "$at(102,8286,8287)"} true; - $ret0 := $t1; + // return $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:100:5+1 + assume {:print "$at(65,3943,3944)"} true; + $ret0 := $t3; return; - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/configs/staking_config.move:171:5+1 + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:100:5+1 L2: - // abort($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/configs/staking_config.move:171:5+1 - assume {:print "$at(102,8286,8287)"} true; - $abort_code := $t2; + // abort($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:100:5+1 + assume {:print "$at(65,3943,3944)"} true; + $abort_code := $t4; $abort_flag := true; return; } -// fun staking_config::get_recurring_lockup_duration [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/configs/staking_config.move:185:5+123 -procedure {:inline 1} $1_staking_config_get_recurring_lockup_duration(_$t0: $1_staking_config_StakingConfig) returns ($ret0: int) +// fun pool_u64::to_u128 [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:266:5+57 +procedure {:inline 1} $1_pool_u64_to_u128(_$t0: int) returns ($ret0: int) { // declare local variables var $t1: int; - var $t0: $1_staking_config_StakingConfig; - var $temp_0'$1_staking_config_StakingConfig': $1_staking_config_StakingConfig; + var $t2: int; + var $t0: int; + var $temp_0'u128': int; var $temp_0'u64': int; $t0 := _$t0; // bytecode translation starts here - // trace_local[config]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/configs/staking_config.move:185:5+1 - assume {:print "$at(102,8800,8801)"} true; - assume {:print "$track_local(35,4,0):", $t0} $t0 == $t0; + // trace_local[num]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:266:5+1 + assume {:print "$at(65,11617,11618)"} true; + assume {:print "$track_local(57,18,0):", $t0} $t0 == $t0; - // $t1 := get_field.recurring_lockup_duration_secs($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/configs/staking_config.move:186:9+37 - assume {:print "$at(102,8880,8917)"} true; - $t1 := $recurring_lockup_duration_secs#$1_staking_config_StakingConfig($t0); + // $t1 := (u128)($t0) on_abort goto L2 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:267:9+13 + assume {:print "$at(65,11655,11668)"} true; + call $t1 := $CastU128($t0); + if ($abort_flag) { + assume {:print "$at(65,11655,11668)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(57,18):", $t2} $t2 == $t2; + goto L2; + } - // trace_return[0]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/configs/staking_config.move:186:9+37 - assume {:print "$track_return(35,4,0):", $t1} $t1 == $t1; + // trace_return[0]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:267:9+13 + assume {:print "$track_return(57,18,0):", $t1} $t1 == $t1; - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/configs/staking_config.move:187:5+1 - assume {:print "$at(102,8922,8923)"} true; + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:268:5+1 + assume {:print "$at(65,11673,11674)"} true; L1: - // return $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/configs/staking_config.move:187:5+1 - assume {:print "$at(102,8922,8923)"} true; + // return $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:268:5+1 + assume {:print "$at(65,11673,11674)"} true; $ret0 := $t1; return; -} + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:268:5+1 +L2: + + // abort($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:268:5+1 + assume {:print "$at(65,11673,11674)"} true; + $abort_code := $t2; + $abort_flag := true; + return; -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/math64.move:17:5+71 -function {:inline} $1_math64_$min(a: int, b: int): int { - (if ((a < b)) then (a) else (b)) } -// fun math64::min [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/math64.move:17:5+71 -procedure {:inline 1} $1_math64_min(_$t0: int, _$t1: int) returns ($ret0: int) +// fun pool_u64::multiply_then_divide [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:261:5+167 +procedure {:inline 1} $1_pool_u64_multiply_then_divide(_$t0: $1_pool_u64_Pool, _$t1: int, _$t2: int, _$t3: int) returns ($ret0: int) { // declare local variables - var $t2: int; - var $t3: bool; - var $t0: int; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: int; + var $t0: $1_pool_u64_Pool; var $t1: int; + var $t2: int; + var $t3: int; + var $temp_0'$1_pool_u64_Pool': $1_pool_u64_Pool; var $temp_0'u64': int; $t0 := _$t0; $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; // bytecode translation starts here - // trace_local[a]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/math64.move:17:5+1 - assume {:print "$at(54,467,468)"} true; - assume {:print "$track_local(36,6,0):", $t0} $t0 == $t0; + // trace_local[_pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:261:5+1 + assume {:print "$at(65,11444,11445)"} true; + assume {:print "$track_local(57,10,0):", $t0} $t0 == $t0; - // trace_local[b]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/math64.move:17:5+1 - assume {:print "$track_local(36,6,1):", $t1} $t1 == $t1; + // trace_local[x]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:261:5+1 + assume {:print "$track_local(57,10,1):", $t1} $t1 == $t1; - // $t3 := <($t0, $t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/math64.move:18:15+1 - assume {:print "$at(54,519,520)"} true; - call $t3 := $Lt($t0, $t1); + // trace_local[y]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:261:5+1 + assume {:print "$track_local(57,10,2):", $t2} $t2 == $t2; - // if ($t3) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/math64.move:18:9+19 - if ($t3) { goto L1; } else { goto L0; } + // trace_local[z]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:261:5+1 + assume {:print "$track_local(57,10,3):", $t3} $t3 == $t3; - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/math64.move:18:20+1 -L1: + // $t4 := pool_u64::to_u128($t1) on_abort goto L2 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:262:23+10 + assume {:print "$at(65,11543,11553)"} true; + call $t4 := $1_pool_u64_to_u128($t1); + if ($abort_flag) { + assume {:print "$at(65,11543,11553)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(57,10):", $t5} $t5 == $t5; + goto L2; + } - // $t2 := $t0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/math64.move:18:9+19 - assume {:print "$at(54,513,532)"} true; - $t2 := $t0; + // $t6 := pool_u64::to_u128($t2) on_abort goto L2 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:262:36+10 + call $t6 := $1_pool_u64_to_u128($t2); + if ($abort_flag) { + assume {:print "$at(65,11556,11566)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(57,10):", $t5} $t5 == $t5; + goto L2; + } - // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/math64.move:18:9+19 - goto L2; + // $t7 := *($t4, $t6) on_abort goto L2 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:262:34+1 + call $t7 := $MulU128($t4, $t6); + if ($abort_flag) { + assume {:print "$at(65,11554,11555)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(57,10):", $t5} $t5 == $t5; + goto L2; + } - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/math64.move:18:27+1 -L0: + // $t8 := pool_u64::to_u128($t3) on_abort goto L2 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:262:50+10 + call $t8 := $1_pool_u64_to_u128($t3); + if ($abort_flag) { + assume {:print "$at(65,11570,11580)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(57,10):", $t5} $t5 == $t5; + goto L2; + } - // $t2 := $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/math64.move:18:9+19 - assume {:print "$at(54,513,532)"} true; - $t2 := $t1; + // $t9 := /($t7, $t8) on_abort goto L2 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:262:48+1 + call $t9 := $Div($t7, $t8); + if ($abort_flag) { + assume {:print "$at(65,11568,11569)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(57,10):", $t5} $t5 == $t5; + goto L2; + } - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/math64.move:18:9+19 -L2: + // $t10 := (u64)($t9) on_abort goto L2 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:263:9+15 + assume {:print "$at(65,11590,11605)"} true; + call $t10 := $CastU64($t9); + if ($abort_flag) { + assume {:print "$at(65,11590,11605)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(57,10):", $t5} $t5 == $t5; + goto L2; + } - // trace_return[0]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/math64.move:18:9+19 - assume {:print "$at(54,513,532)"} true; - assume {:print "$track_return(36,6,0):", $t2} $t2 == $t2; + // trace_return[0]($t10) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:263:9+15 + assume {:print "$track_return(57,10,0):", $t10} $t10 == $t10; - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/math64.move:19:5+1 - assume {:print "$at(54,537,538)"} true; -L3: + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:264:5+1 + assume {:print "$at(65,11610,11611)"} true; +L1: - // return $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/math64.move:19:5+1 - assume {:print "$at(54,537,538)"} true; - $ret0 := $t2; + // return $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:264:5+1 + assume {:print "$at(65,11610,11611)"} true; + $ret0 := $t10; return; -} + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:264:5+1 +L2: -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:400:5+89 -function {:inline} $1_stake_$stake_pool_exists($1_stake_StakePool_$memory: $Memory $1_stake_StakePool, addr: int): bool { - $ResourceExists($1_stake_StakePool_$memory, addr) -} + // abort($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:264:5+1 + assume {:print "$at(65,11610,11611)"} true; + $abort_code := $t5; + $abort_flag := true; + return; -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:16:10+500 -function {:inline} $1_stake_validator_set_is_valid($1_stake_StakePool_$memory: $Memory $1_stake_StakePool, $1_stake_ValidatorConfig_$memory: $Memory $1_stake_ValidatorConfig, $1_stake_ValidatorPerformance_$memory: $Memory $1_stake_ValidatorPerformance, $1_stake_ValidatorSet_$memory: $Memory $1_stake_ValidatorSet): bool { - (var validator_set := $ResourceValue($1_stake_ValidatorSet_$memory, 1); (((($1_stake_spec_validators_are_initialized($1_stake_StakePool_$memory, $1_stake_ValidatorConfig_$memory, $active_validators#$1_stake_ValidatorSet(validator_set)) && $1_stake_spec_validators_are_initialized($1_stake_StakePool_$memory, $1_stake_ValidatorConfig_$memory, $pending_inactive#$1_stake_ValidatorSet(validator_set))) && $1_stake_spec_validators_are_initialized($1_stake_StakePool_$memory, $1_stake_ValidatorConfig_$memory, $pending_active#$1_stake_ValidatorSet(validator_set))) && $1_stake_spec_validator_indices_are_valid($1_stake_ValidatorConfig_$memory, $1_stake_ValidatorPerformance_$memory, $active_validators#$1_stake_ValidatorSet(validator_set))) && $1_stake_spec_validator_indices_are_valid($1_stake_ValidatorConfig_$memory, $1_stake_ValidatorPerformance_$memory, $pending_inactive#$1_stake_ValidatorSet(validator_set)))) } -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:306:10+241 -function {:inline} $1_stake_spec_validators_are_initialized($1_stake_StakePool_$memory: $Memory $1_stake_StakePool, $1_stake_ValidatorConfig_$memory: $Memory $1_stake_ValidatorConfig, validators: Vec ($1_stake_ValidatorInfo)): bool { - (var $range_0 := $Range(0, LenVec(validators)); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var i := $i_1; - (($1_stake_spec_has_stake_pool($1_stake_StakePool_$memory, $addr#$1_stake_ValidatorInfo(ReadVec(validators, i))) && $1_stake_spec_has_validator_config($1_stake_ValidatorConfig_$memory, $addr#$1_stake_ValidatorInfo(ReadVec(validators, i)))))))) -} +// fun pool_u64::shareholders [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:118:5+87 +procedure {:inline 1} $1_pool_u64_shareholders(_$t0: $1_pool_u64_Pool) returns ($ret0: Vec (int)) +{ + // declare local variables + var $t1: Vec (int); + var $t0: $1_pool_u64_Pool; + var $temp_0'$1_pool_u64_Pool': $1_pool_u64_Pool; + var $temp_0'vec'address'': Vec (int); + $t0 := _$t0; -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:313:10+234 -function {:inline} $1_stake_spec_validator_indices_are_valid($1_stake_ValidatorConfig_$memory: $Memory $1_stake_ValidatorConfig, $1_stake_ValidatorPerformance_$memory: $Memory $1_stake_ValidatorPerformance, validators: Vec ($1_stake_ValidatorInfo)): bool { - (var $range_2 := $Range(0, LenVec(validators)); (forall $i_3: int :: $InRange($range_2, $i_3) ==> (var i := $i_3; - (($validator_index#$1_stake_ValidatorConfig($ResourceValue($1_stake_ValidatorConfig_$memory, $addr#$1_stake_ValidatorInfo(ReadVec(validators, i)))) < $1_stake_spec_validator_index_upper_bound($1_stake_ValidatorPerformance_$memory)))))) -} + // bytecode translation starts here + // trace_local[pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:118:5+1 + assume {:print "$at(65,4511,4512)"} true; + assume {:print "$track_local(57,13,0):", $t0} $t0 == $t0; -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:319:10+122 -function {:inline} $1_stake_spec_validator_index_upper_bound($1_stake_ValidatorPerformance_$memory: $Memory $1_stake_ValidatorPerformance): int { - LenVec($validators#$1_stake_ValidatorPerformance($ResourceValue($1_stake_ValidatorPerformance_$memory, 1))) -} + // $t1 := get_field.shareholders($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:119:9+17 + assume {:print "$at(65,4575,4592)"} true; + $t1 := $shareholders#$1_pool_u64_Pool($t0); -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:323:10+78 -function {:inline} $1_stake_spec_has_stake_pool($1_stake_StakePool_$memory: $Memory $1_stake_StakePool, a: int): bool { - $ResourceExists($1_stake_StakePool_$memory, a) -} + // trace_return[0]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:119:9+17 + assume {:print "$track_return(57,13,0):", $t1} $t1 == $t1; -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:327:10+90 -function {:inline} $1_stake_spec_has_validator_config($1_stake_ValidatorConfig_$memory: $Memory $1_stake_ValidatorConfig, a: int): bool { - $ResourceExists($1_stake_ValidatorConfig_$memory, a) -} + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:120:5+1 + assume {:print "$at(65,4597,4598)"} true; +L1: -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:340:10+148 -function {:inline} $1_stake_spec_contains(validators: Vec ($1_stake_ValidatorInfo), addr: int): bool { - (var $range_4 := $Range(0, LenVec(validators)); (exists $i_5: int :: $InRange($range_4, $i_5) && (var i := $i_5; - ($IsEqual'address'($addr#$1_stake_ValidatorInfo(ReadVec(validators, i)), addr))))) -} + // return $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:120:5+1 + assume {:print "$at(65,4597,4598)"} true; + $ret0 := $t1; + return; -// struct stake::AddStakeEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:210:5+102 -type {:datatype} $1_stake_AddStakeEvent; -function {:constructor} $1_stake_AddStakeEvent($pool_address: int, $amount_added: int): $1_stake_AddStakeEvent; -function {:inline} $Update'$1_stake_AddStakeEvent'_pool_address(s: $1_stake_AddStakeEvent, x: int): $1_stake_AddStakeEvent { - $1_stake_AddStakeEvent(x, $amount_added#$1_stake_AddStakeEvent(s)) -} -function {:inline} $Update'$1_stake_AddStakeEvent'_amount_added(s: $1_stake_AddStakeEvent, x: int): $1_stake_AddStakeEvent { - $1_stake_AddStakeEvent($pool_address#$1_stake_AddStakeEvent(s), x) -} -function $IsValid'$1_stake_AddStakeEvent'(s: $1_stake_AddStakeEvent): bool { - $IsValid'address'($pool_address#$1_stake_AddStakeEvent(s)) - && $IsValid'u64'($amount_added#$1_stake_AddStakeEvent(s)) -} -function {:inline} $IsEqual'$1_stake_AddStakeEvent'(s1: $1_stake_AddStakeEvent, s2: $1_stake_AddStakeEvent): bool { - s1 == s2 } -// struct stake::DistributeRewardsEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:244:5+113 -type {:datatype} $1_stake_DistributeRewardsEvent; -function {:constructor} $1_stake_DistributeRewardsEvent($pool_address: int, $rewards_amount: int): $1_stake_DistributeRewardsEvent; -function {:inline} $Update'$1_stake_DistributeRewardsEvent'_pool_address(s: $1_stake_DistributeRewardsEvent, x: int): $1_stake_DistributeRewardsEvent { - $1_stake_DistributeRewardsEvent(x, $rewards_amount#$1_stake_DistributeRewardsEvent(s)) -} -function {:inline} $Update'$1_stake_DistributeRewardsEvent'_rewards_amount(s: $1_stake_DistributeRewardsEvent, x: int): $1_stake_DistributeRewardsEvent { - $1_stake_DistributeRewardsEvent($pool_address#$1_stake_DistributeRewardsEvent(s), x) -} -function $IsValid'$1_stake_DistributeRewardsEvent'(s: $1_stake_DistributeRewardsEvent): bool { - $IsValid'address'($pool_address#$1_stake_DistributeRewardsEvent(s)) - && $IsValid'u64'($rewards_amount#$1_stake_DistributeRewardsEvent(s)) -} -function {:inline} $IsEqual'$1_stake_DistributeRewardsEvent'(s1: $1_stake_DistributeRewardsEvent, s2: $1_stake_DistributeRewardsEvent): bool { - s1 == s2 -} +// fun pool_u64::shares [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:103:5+209 +procedure {:inline 1} $1_pool_u64_shares(_$t0: $1_pool_u64_Pool, _$t1: int) returns ($ret0: int) +{ + // declare local variables + var $t2: int; + var $t3: bool; + var $t4: int; + var $t5: Table int (int); + var $t6: int; + var $t0: $1_pool_u64_Pool; + var $t1: int; + var $temp_0'$1_pool_u64_Pool': $1_pool_u64_Pool; + var $temp_0'address': int; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; -// struct stake::IncreaseLockupEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:234:5+153 -type {:datatype} $1_stake_IncreaseLockupEvent; -function {:constructor} $1_stake_IncreaseLockupEvent($pool_address: int, $old_locked_until_secs: int, $new_locked_until_secs: int): $1_stake_IncreaseLockupEvent; -function {:inline} $Update'$1_stake_IncreaseLockupEvent'_pool_address(s: $1_stake_IncreaseLockupEvent, x: int): $1_stake_IncreaseLockupEvent { - $1_stake_IncreaseLockupEvent(x, $old_locked_until_secs#$1_stake_IncreaseLockupEvent(s), $new_locked_until_secs#$1_stake_IncreaseLockupEvent(s)) -} -function {:inline} $Update'$1_stake_IncreaseLockupEvent'_old_locked_until_secs(s: $1_stake_IncreaseLockupEvent, x: int): $1_stake_IncreaseLockupEvent { - $1_stake_IncreaseLockupEvent($pool_address#$1_stake_IncreaseLockupEvent(s), x, $new_locked_until_secs#$1_stake_IncreaseLockupEvent(s)) -} -function {:inline} $Update'$1_stake_IncreaseLockupEvent'_new_locked_until_secs(s: $1_stake_IncreaseLockupEvent, x: int): $1_stake_IncreaseLockupEvent { - $1_stake_IncreaseLockupEvent($pool_address#$1_stake_IncreaseLockupEvent(s), $old_locked_until_secs#$1_stake_IncreaseLockupEvent(s), x) -} -function $IsValid'$1_stake_IncreaseLockupEvent'(s: $1_stake_IncreaseLockupEvent): bool { - $IsValid'address'($pool_address#$1_stake_IncreaseLockupEvent(s)) - && $IsValid'u64'($old_locked_until_secs#$1_stake_IncreaseLockupEvent(s)) - && $IsValid'u64'($new_locked_until_secs#$1_stake_IncreaseLockupEvent(s)) -} -function {:inline} $IsEqual'$1_stake_IncreaseLockupEvent'(s1: $1_stake_IncreaseLockupEvent, s2: $1_stake_IncreaseLockupEvent): bool { - s1 == s2 -} + // bytecode translation starts here + // trace_local[pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:103:5+1 + assume {:print "$at(65,4014,4015)"} true; + assume {:print "$track_local(57,15,0):", $t0} $t0 == $t0; -// struct stake::IndividualValidatorPerformance at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:191:5+127 -type {:datatype} $1_stake_IndividualValidatorPerformance; -function {:constructor} $1_stake_IndividualValidatorPerformance($successful_proposals: int, $failed_proposals: int): $1_stake_IndividualValidatorPerformance; -function {:inline} $Update'$1_stake_IndividualValidatorPerformance'_successful_proposals(s: $1_stake_IndividualValidatorPerformance, x: int): $1_stake_IndividualValidatorPerformance { - $1_stake_IndividualValidatorPerformance(x, $failed_proposals#$1_stake_IndividualValidatorPerformance(s)) -} -function {:inline} $Update'$1_stake_IndividualValidatorPerformance'_failed_proposals(s: $1_stake_IndividualValidatorPerformance, x: int): $1_stake_IndividualValidatorPerformance { - $1_stake_IndividualValidatorPerformance($successful_proposals#$1_stake_IndividualValidatorPerformance(s), x) -} -function $IsValid'$1_stake_IndividualValidatorPerformance'(s: $1_stake_IndividualValidatorPerformance): bool { - $IsValid'u64'($successful_proposals#$1_stake_IndividualValidatorPerformance(s)) - && $IsValid'u64'($failed_proposals#$1_stake_IndividualValidatorPerformance(s)) -} -function {:inline} $IsEqual'$1_stake_IndividualValidatorPerformance'(s1: $1_stake_IndividualValidatorPerformance, s2: $1_stake_IndividualValidatorPerformance): bool { - s1 == s2 -} + // trace_local[shareholder]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:103:5+1 + assume {:print "$track_local(57,15,1):", $t1} $t1 == $t1; -// struct stake::JoinValidatorSetEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:240:5+83 -type {:datatype} $1_stake_JoinValidatorSetEvent; -function {:constructor} $1_stake_JoinValidatorSetEvent($pool_address: int): $1_stake_JoinValidatorSetEvent; -function {:inline} $Update'$1_stake_JoinValidatorSetEvent'_pool_address(s: $1_stake_JoinValidatorSetEvent, x: int): $1_stake_JoinValidatorSetEvent { - $1_stake_JoinValidatorSetEvent(x) -} -function $IsValid'$1_stake_JoinValidatorSetEvent'(s: $1_stake_JoinValidatorSetEvent): bool { - $IsValid'address'($pool_address#$1_stake_JoinValidatorSetEvent(s)) -} -function {:inline} $IsEqual'$1_stake_JoinValidatorSetEvent'(s1: $1_stake_JoinValidatorSetEvent, s2: $1_stake_JoinValidatorSetEvent): bool { - s1 == s2 -} + // $t3 := pool_u64::contains($t0, $t1) on_abort goto L4 with $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:104:13+27 + assume {:print "$at(65,4086,4113)"} true; + call $t3 := $1_pool_u64_contains($t0, $t1); + if ($abort_flag) { + assume {:print "$at(65,4086,4113)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(57,15):", $t4} $t4 == $t4; + goto L4; + } -// struct stake::LeaveValidatorSetEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:259:5+84 -type {:datatype} $1_stake_LeaveValidatorSetEvent; -function {:constructor} $1_stake_LeaveValidatorSetEvent($pool_address: int): $1_stake_LeaveValidatorSetEvent; -function {:inline} $Update'$1_stake_LeaveValidatorSetEvent'_pool_address(s: $1_stake_LeaveValidatorSetEvent, x: int): $1_stake_LeaveValidatorSetEvent { - $1_stake_LeaveValidatorSetEvent(x) -} -function $IsValid'$1_stake_LeaveValidatorSetEvent'(s: $1_stake_LeaveValidatorSetEvent): bool { - $IsValid'address'($pool_address#$1_stake_LeaveValidatorSetEvent(s)) -} -function {:inline} $IsEqual'$1_stake_LeaveValidatorSetEvent'(s1: $1_stake_LeaveValidatorSetEvent, s2: $1_stake_LeaveValidatorSetEvent): bool { - s1 == s2 -} + // if ($t3) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:104:9+135 + if ($t3) { goto L1; } else { goto L0; } -// struct stake::OwnerCapability at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:100:5+76 -type {:datatype} $1_stake_OwnerCapability; -function {:constructor} $1_stake_OwnerCapability($pool_address: int): $1_stake_OwnerCapability; -function {:inline} $Update'$1_stake_OwnerCapability'_pool_address(s: $1_stake_OwnerCapability, x: int): $1_stake_OwnerCapability { - $1_stake_OwnerCapability(x) -} -function $IsValid'$1_stake_OwnerCapability'(s: $1_stake_OwnerCapability): bool { - $IsValid'address'($pool_address#$1_stake_OwnerCapability(s)) -} -function {:inline} $IsEqual'$1_stake_OwnerCapability'(s1: $1_stake_OwnerCapability, s2: $1_stake_OwnerCapability): bool { - s1 == s2 -} -var $1_stake_OwnerCapability_$memory: $Memory $1_stake_OwnerCapability; + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:105:34+4 + assume {:print "$at(65,4150,4154)"} true; +L1: -// struct stake::ReactivateStakeEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:215:5+103 -type {:datatype} $1_stake_ReactivateStakeEvent; -function {:constructor} $1_stake_ReactivateStakeEvent($pool_address: int, $amount: int): $1_stake_ReactivateStakeEvent; -function {:inline} $Update'$1_stake_ReactivateStakeEvent'_pool_address(s: $1_stake_ReactivateStakeEvent, x: int): $1_stake_ReactivateStakeEvent { - $1_stake_ReactivateStakeEvent(x, $amount#$1_stake_ReactivateStakeEvent(s)) -} -function {:inline} $Update'$1_stake_ReactivateStakeEvent'_amount(s: $1_stake_ReactivateStakeEvent, x: int): $1_stake_ReactivateStakeEvent { - $1_stake_ReactivateStakeEvent($pool_address#$1_stake_ReactivateStakeEvent(s), x) -} -function $IsValid'$1_stake_ReactivateStakeEvent'(s: $1_stake_ReactivateStakeEvent): bool { - $IsValid'address'($pool_address#$1_stake_ReactivateStakeEvent(s)) - && $IsValid'u64'($amount#$1_stake_ReactivateStakeEvent(s)) -} -function {:inline} $IsEqual'$1_stake_ReactivateStakeEvent'(s1: $1_stake_ReactivateStakeEvent, s2: $1_stake_ReactivateStakeEvent): bool { - s1 == s2 -} + // $t5 := get_field.shares($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:105:33+12 + assume {:print "$at(65,4149,4161)"} true; + $t5 := $shares#$1_pool_u64_Pool($t0); -// struct stake::RegisterValidatorCandidateEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:200:5+93 -type {:datatype} $1_stake_RegisterValidatorCandidateEvent; -function {:constructor} $1_stake_RegisterValidatorCandidateEvent($pool_address: int): $1_stake_RegisterValidatorCandidateEvent; -function {:inline} $Update'$1_stake_RegisterValidatorCandidateEvent'_pool_address(s: $1_stake_RegisterValidatorCandidateEvent, x: int): $1_stake_RegisterValidatorCandidateEvent { - $1_stake_RegisterValidatorCandidateEvent(x) -} -function $IsValid'$1_stake_RegisterValidatorCandidateEvent'(s: $1_stake_RegisterValidatorCandidateEvent): bool { - $IsValid'address'($pool_address#$1_stake_RegisterValidatorCandidateEvent(s)) -} -function {:inline} $IsEqual'$1_stake_RegisterValidatorCandidateEvent'(s1: $1_stake_RegisterValidatorCandidateEvent, s2: $1_stake_RegisterValidatorCandidateEvent): bool { - s1 == s2 -} + // $t2 := simple_map::borrow($t5, $t1) on_abort goto L4 with $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:105:14+46 + call $t2 := $1_simple_map_borrow'address_u64'($t5, $t1); + if ($abort_flag) { + assume {:print "$at(65,4130,4176)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(57,15):", $t4} $t4 == $t4; + goto L4; + } -// struct stake::RotateConsensusKeyEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:220:5+169 -type {:datatype} $1_stake_RotateConsensusKeyEvent; -function {:constructor} $1_stake_RotateConsensusKeyEvent($pool_address: int, $old_consensus_pubkey: Vec (int), $new_consensus_pubkey: Vec (int)): $1_stake_RotateConsensusKeyEvent; -function {:inline} $Update'$1_stake_RotateConsensusKeyEvent'_pool_address(s: $1_stake_RotateConsensusKeyEvent, x: int): $1_stake_RotateConsensusKeyEvent { - $1_stake_RotateConsensusKeyEvent(x, $old_consensus_pubkey#$1_stake_RotateConsensusKeyEvent(s), $new_consensus_pubkey#$1_stake_RotateConsensusKeyEvent(s)) -} -function {:inline} $Update'$1_stake_RotateConsensusKeyEvent'_old_consensus_pubkey(s: $1_stake_RotateConsensusKeyEvent, x: Vec (int)): $1_stake_RotateConsensusKeyEvent { - $1_stake_RotateConsensusKeyEvent($pool_address#$1_stake_RotateConsensusKeyEvent(s), x, $new_consensus_pubkey#$1_stake_RotateConsensusKeyEvent(s)) -} -function {:inline} $Update'$1_stake_RotateConsensusKeyEvent'_new_consensus_pubkey(s: $1_stake_RotateConsensusKeyEvent, x: Vec (int)): $1_stake_RotateConsensusKeyEvent { - $1_stake_RotateConsensusKeyEvent($pool_address#$1_stake_RotateConsensusKeyEvent(s), $old_consensus_pubkey#$1_stake_RotateConsensusKeyEvent(s), x) -} -function $IsValid'$1_stake_RotateConsensusKeyEvent'(s: $1_stake_RotateConsensusKeyEvent): bool { - $IsValid'address'($pool_address#$1_stake_RotateConsensusKeyEvent(s)) - && $IsValid'vec'u8''($old_consensus_pubkey#$1_stake_RotateConsensusKeyEvent(s)) - && $IsValid'vec'u8''($new_consensus_pubkey#$1_stake_RotateConsensusKeyEvent(s)) -} -function {:inline} $IsEqual'$1_stake_RotateConsensusKeyEvent'(s1: $1_stake_RotateConsensusKeyEvent, s2: $1_stake_RotateConsensusKeyEvent): bool { - $IsEqual'address'($pool_address#$1_stake_RotateConsensusKeyEvent(s1), $pool_address#$1_stake_RotateConsensusKeyEvent(s2)) - && $IsEqual'vec'u8''($old_consensus_pubkey#$1_stake_RotateConsensusKeyEvent(s1), $old_consensus_pubkey#$1_stake_RotateConsensusKeyEvent(s2)) - && $IsEqual'vec'u8''($new_consensus_pubkey#$1_stake_RotateConsensusKeyEvent(s1), $new_consensus_pubkey#$1_stake_RotateConsensusKeyEvent(s2))} + // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:104:9+135 + assume {:print "$at(65,4082,4217)"} true; + goto L2; + + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:104:9+135 +L0: + + // $t6 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:107:13+1 + assume {:print "$at(65,4206,4207)"} true; + $t6 := 0; + assume $IsValid'u64'($t6); + + // $t2 := $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:104:9+135 + assume {:print "$at(65,4082,4217)"} true; + $t2 := $t6; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:104:9+135 +L2: + + // trace_return[0]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:104:9+135 + assume {:print "$at(65,4082,4217)"} true; + assume {:print "$track_return(57,15,0):", $t2} $t2 == $t2; + + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:109:5+1 + assume {:print "$at(65,4222,4223)"} true; +L3: + + // return $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:109:5+1 + assume {:print "$at(65,4222,4223)"} true; + $ret0 := $t2; + return; + + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:109:5+1 +L4: + + // abort($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:109:5+1 + assume {:print "$at(65,4222,4223)"} true; + $abort_code := $t4; + $abort_flag := true; + return; -// struct stake::SetOperatorEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:204:5+140 -type {:datatype} $1_stake_SetOperatorEvent; -function {:constructor} $1_stake_SetOperatorEvent($pool_address: int, $old_operator: int, $new_operator: int): $1_stake_SetOperatorEvent; -function {:inline} $Update'$1_stake_SetOperatorEvent'_pool_address(s: $1_stake_SetOperatorEvent, x: int): $1_stake_SetOperatorEvent { - $1_stake_SetOperatorEvent(x, $old_operator#$1_stake_SetOperatorEvent(s), $new_operator#$1_stake_SetOperatorEvent(s)) -} -function {:inline} $Update'$1_stake_SetOperatorEvent'_old_operator(s: $1_stake_SetOperatorEvent, x: int): $1_stake_SetOperatorEvent { - $1_stake_SetOperatorEvent($pool_address#$1_stake_SetOperatorEvent(s), x, $new_operator#$1_stake_SetOperatorEvent(s)) -} -function {:inline} $Update'$1_stake_SetOperatorEvent'_new_operator(s: $1_stake_SetOperatorEvent, x: int): $1_stake_SetOperatorEvent { - $1_stake_SetOperatorEvent($pool_address#$1_stake_SetOperatorEvent(s), $old_operator#$1_stake_SetOperatorEvent(s), x) -} -function $IsValid'$1_stake_SetOperatorEvent'(s: $1_stake_SetOperatorEvent): bool { - $IsValid'address'($pool_address#$1_stake_SetOperatorEvent(s)) - && $IsValid'address'($old_operator#$1_stake_SetOperatorEvent(s)) - && $IsValid'address'($new_operator#$1_stake_SetOperatorEvent(s)) } -function {:inline} $IsEqual'$1_stake_SetOperatorEvent'(s1: $1_stake_SetOperatorEvent, s2: $1_stake_SetOperatorEvent): bool { - s1 == s2 + +// fun pool_u64::shares_to_amount_with_total_coins [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:249:5+601 +procedure {:inline 1} $1_pool_u64_shares_to_amount_with_total_coins(_$t0: $1_pool_u64_Pool, _$t1: int, _$t2: int) returns ($ret0: int) +{ + // declare local variables + var $t3: bool; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: bool; + var $t8: bool; + var $t9: int; + var $t10: int; + var $t11: int; + var $t12: int; + var $t13: int; + var $t0: $1_pool_u64_Pool; + var $t1: int; + var $t2: int; + var $temp_0'$1_pool_u64_Pool': $1_pool_u64_Pool; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // bytecode translation starts here + // trace_local[pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:249:5+1 + assume {:print "$at(65,10837,10838)"} true; + assume {:print "$track_local(57,17,0):", $t0} $t0 == $t0; + + // trace_local[shares]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:249:5+1 + assume {:print "$track_local(57,17,1):", $t1} $t1 == $t1; + + // trace_local[total_coins]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:249:5+1 + assume {:print "$track_local(57,17,2):", $t2} $t2 == $t2; + + // $t5 := get_field.total_coins($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:251:13+16 + assume {:print "$at(65,11004,11020)"} true; + $t5 := $total_coins#$1_pool_u64_Pool($t0); + + // $t6 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:251:33+1 + $t6 := 0; + assume $IsValid'u64'($t6); + + // $t7 := ==($t5, $t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:251:30+2 + $t7 := $IsEqual'u64'($t5, $t6); + + // if ($t7) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:251:13+47 + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:251:13+47 +L1: + + // $t8 := true at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:251:13+47 + assume {:print "$at(65,11004,11051)"} true; + $t8 := true; + assume $IsValid'bool'($t8); + + // $t3 := $t8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:251:13+47 + $t3 := $t8; + + // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:251:13+47 + goto L2; + + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:251:38+4 +L0: + + // $t9 := get_field.total_shares($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:251:38+17 + assume {:print "$at(65,11029,11046)"} true; + $t9 := $total_shares#$1_pool_u64_Pool($t0); + + // $t10 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:251:59+1 + $t10 := 0; + assume $IsValid'u64'($t10); + + // $t3 := ==($t9, $t10) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:251:56+2 + $t3 := $IsEqual'u64'($t9, $t10); + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:251:13+47 +L2: + + // if ($t3) goto L4 else goto L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:251:9+432 + assume {:print "$at(65,11000,11432)"} true; + if ($t3) { goto L4; } else { goto L3; } + + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:251:9+432 +L4: + + // $t11 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:252:13+1 + assume {:print "$at(65,11067,11068)"} true; + $t11 := 0; + assume $IsValid'u64'($t11); + + // $t4 := $t11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:251:9+432 + assume {:print "$at(65,11000,11432)"} true; + $t4 := $t11; + + // goto L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:251:9+432 + goto L5; + + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:257:34+4 + assume {:print "$at(65,11377,11381)"} true; +L3: + + // $t12 := get_field.total_shares($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:257:61+17 + assume {:print "$at(65,11404,11421)"} true; + $t12 := $total_shares#$1_pool_u64_Pool($t0); + + // $t4 := pool_u64::multiply_then_divide($t0, $t1, $t2, $t12) on_abort goto L7 with $t13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:257:13+66 + call $t4 := $1_pool_u64_multiply_then_divide($t0, $t1, $t2, $t12); + if ($abort_flag) { + assume {:print "$at(65,11356,11422)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(57,17):", $t13} $t13 == $t13; + goto L7; + } + + // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:251:9+432 + assume {:print "$at(65,11000,11432)"} true; +L5: + + // trace_return[0]($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:251:9+432 + assume {:print "$at(65,11000,11432)"} true; + assume {:print "$track_return(57,17,0):", $t4} $t4 == $t4; + + // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:259:5+1 + assume {:print "$at(65,11437,11438)"} true; +L6: + + // return $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:259:5+1 + assume {:print "$at(65,11437,11438)"} true; + $ret0 := $t4; + return; + + // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:259:5+1 +L7: + + // abort($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:259:5+1 + assume {:print "$at(65,11437,11438)"} true; + $abort_code := $t13; + $abort_flag := true; + return; + } -// struct stake::StakePool at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:115:5+1829 -type {:datatype} $1_stake_StakePool; -function {:constructor} $1_stake_StakePool($active: $1_coin_Coin'$1_aptos_coin_AptosCoin', $inactive: $1_coin_Coin'$1_aptos_coin_AptosCoin', $pending_active: $1_coin_Coin'$1_aptos_coin_AptosCoin', $pending_inactive: $1_coin_Coin'$1_aptos_coin_AptosCoin', $locked_until_secs: int, $operator_address: int, $delegated_voter: int, $initialize_validator_events: $1_event_EventHandle'$1_stake_RegisterValidatorCandidateEvent', $set_operator_events: $1_event_EventHandle'$1_stake_SetOperatorEvent', $add_stake_events: $1_event_EventHandle'$1_stake_AddStakeEvent', $reactivate_stake_events: $1_event_EventHandle'$1_stake_ReactivateStakeEvent', $rotate_consensus_key_events: $1_event_EventHandle'$1_stake_RotateConsensusKeyEvent', $update_network_and_fullnode_addresses_events: $1_event_EventHandle'$1_stake_UpdateNetworkAndFullnodeAddressesEvent', $increase_lockup_events: $1_event_EventHandle'$1_stake_IncreaseLockupEvent', $join_validator_set_events: $1_event_EventHandle'$1_stake_JoinValidatorSetEvent', $distribute_rewards_events: $1_event_EventHandle'$1_stake_DistributeRewardsEvent', $unlock_stake_events: $1_event_EventHandle'$1_stake_UnlockStakeEvent', $withdraw_stake_events: $1_event_EventHandle'$1_stake_WithdrawStakeEvent', $leave_validator_set_events: $1_event_EventHandle'$1_stake_LeaveValidatorSetEvent'): $1_stake_StakePool; -function {:inline} $Update'$1_stake_StakePool'_active(s: $1_stake_StakePool, x: $1_coin_Coin'$1_aptos_coin_AptosCoin'): $1_stake_StakePool { - $1_stake_StakePool(x, $inactive#$1_stake_StakePool(s), $pending_active#$1_stake_StakePool(s), $pending_inactive#$1_stake_StakePool(s), $locked_until_secs#$1_stake_StakePool(s), $operator_address#$1_stake_StakePool(s), $delegated_voter#$1_stake_StakePool(s), $initialize_validator_events#$1_stake_StakePool(s), $set_operator_events#$1_stake_StakePool(s), $add_stake_events#$1_stake_StakePool(s), $reactivate_stake_events#$1_stake_StakePool(s), $rotate_consensus_key_events#$1_stake_StakePool(s), $update_network_and_fullnode_addresses_events#$1_stake_StakePool(s), $increase_lockup_events#$1_stake_StakePool(s), $join_validator_set_events#$1_stake_StakePool(s), $distribute_rewards_events#$1_stake_StakePool(s), $unlock_stake_events#$1_stake_StakePool(s), $withdraw_stake_events#$1_stake_StakePool(s), $leave_validator_set_events#$1_stake_StakePool(s)) +// struct staking_contract::AddStakeEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:129:5+122 +type {:datatype} $1_staking_contract_AddStakeEvent; +function {:constructor} $1_staking_contract_AddStakeEvent($operator: int, $pool_address: int, $amount: int): $1_staking_contract_AddStakeEvent; +function {:inline} $Update'$1_staking_contract_AddStakeEvent'_operator(s: $1_staking_contract_AddStakeEvent, x: int): $1_staking_contract_AddStakeEvent { + $1_staking_contract_AddStakeEvent(x, $pool_address#$1_staking_contract_AddStakeEvent(s), $amount#$1_staking_contract_AddStakeEvent(s)) } -function {:inline} $Update'$1_stake_StakePool'_inactive(s: $1_stake_StakePool, x: $1_coin_Coin'$1_aptos_coin_AptosCoin'): $1_stake_StakePool { - $1_stake_StakePool($active#$1_stake_StakePool(s), x, $pending_active#$1_stake_StakePool(s), $pending_inactive#$1_stake_StakePool(s), $locked_until_secs#$1_stake_StakePool(s), $operator_address#$1_stake_StakePool(s), $delegated_voter#$1_stake_StakePool(s), $initialize_validator_events#$1_stake_StakePool(s), $set_operator_events#$1_stake_StakePool(s), $add_stake_events#$1_stake_StakePool(s), $reactivate_stake_events#$1_stake_StakePool(s), $rotate_consensus_key_events#$1_stake_StakePool(s), $update_network_and_fullnode_addresses_events#$1_stake_StakePool(s), $increase_lockup_events#$1_stake_StakePool(s), $join_validator_set_events#$1_stake_StakePool(s), $distribute_rewards_events#$1_stake_StakePool(s), $unlock_stake_events#$1_stake_StakePool(s), $withdraw_stake_events#$1_stake_StakePool(s), $leave_validator_set_events#$1_stake_StakePool(s)) +function {:inline} $Update'$1_staking_contract_AddStakeEvent'_pool_address(s: $1_staking_contract_AddStakeEvent, x: int): $1_staking_contract_AddStakeEvent { + $1_staking_contract_AddStakeEvent($operator#$1_staking_contract_AddStakeEvent(s), x, $amount#$1_staking_contract_AddStakeEvent(s)) } -function {:inline} $Update'$1_stake_StakePool'_pending_active(s: $1_stake_StakePool, x: $1_coin_Coin'$1_aptos_coin_AptosCoin'): $1_stake_StakePool { - $1_stake_StakePool($active#$1_stake_StakePool(s), $inactive#$1_stake_StakePool(s), x, $pending_inactive#$1_stake_StakePool(s), $locked_until_secs#$1_stake_StakePool(s), $operator_address#$1_stake_StakePool(s), $delegated_voter#$1_stake_StakePool(s), $initialize_validator_events#$1_stake_StakePool(s), $set_operator_events#$1_stake_StakePool(s), $add_stake_events#$1_stake_StakePool(s), $reactivate_stake_events#$1_stake_StakePool(s), $rotate_consensus_key_events#$1_stake_StakePool(s), $update_network_and_fullnode_addresses_events#$1_stake_StakePool(s), $increase_lockup_events#$1_stake_StakePool(s), $join_validator_set_events#$1_stake_StakePool(s), $distribute_rewards_events#$1_stake_StakePool(s), $unlock_stake_events#$1_stake_StakePool(s), $withdraw_stake_events#$1_stake_StakePool(s), $leave_validator_set_events#$1_stake_StakePool(s)) +function {:inline} $Update'$1_staking_contract_AddStakeEvent'_amount(s: $1_staking_contract_AddStakeEvent, x: int): $1_staking_contract_AddStakeEvent { + $1_staking_contract_AddStakeEvent($operator#$1_staking_contract_AddStakeEvent(s), $pool_address#$1_staking_contract_AddStakeEvent(s), x) } -function {:inline} $Update'$1_stake_StakePool'_pending_inactive(s: $1_stake_StakePool, x: $1_coin_Coin'$1_aptos_coin_AptosCoin'): $1_stake_StakePool { - $1_stake_StakePool($active#$1_stake_StakePool(s), $inactive#$1_stake_StakePool(s), $pending_active#$1_stake_StakePool(s), x, $locked_until_secs#$1_stake_StakePool(s), $operator_address#$1_stake_StakePool(s), $delegated_voter#$1_stake_StakePool(s), $initialize_validator_events#$1_stake_StakePool(s), $set_operator_events#$1_stake_StakePool(s), $add_stake_events#$1_stake_StakePool(s), $reactivate_stake_events#$1_stake_StakePool(s), $rotate_consensus_key_events#$1_stake_StakePool(s), $update_network_and_fullnode_addresses_events#$1_stake_StakePool(s), $increase_lockup_events#$1_stake_StakePool(s), $join_validator_set_events#$1_stake_StakePool(s), $distribute_rewards_events#$1_stake_StakePool(s), $unlock_stake_events#$1_stake_StakePool(s), $withdraw_stake_events#$1_stake_StakePool(s), $leave_validator_set_events#$1_stake_StakePool(s)) +function $IsValid'$1_staking_contract_AddStakeEvent'(s: $1_staking_contract_AddStakeEvent): bool { + $IsValid'address'($operator#$1_staking_contract_AddStakeEvent(s)) + && $IsValid'address'($pool_address#$1_staking_contract_AddStakeEvent(s)) + && $IsValid'u64'($amount#$1_staking_contract_AddStakeEvent(s)) } -function {:inline} $Update'$1_stake_StakePool'_locked_until_secs(s: $1_stake_StakePool, x: int): $1_stake_StakePool { - $1_stake_StakePool($active#$1_stake_StakePool(s), $inactive#$1_stake_StakePool(s), $pending_active#$1_stake_StakePool(s), $pending_inactive#$1_stake_StakePool(s), x, $operator_address#$1_stake_StakePool(s), $delegated_voter#$1_stake_StakePool(s), $initialize_validator_events#$1_stake_StakePool(s), $set_operator_events#$1_stake_StakePool(s), $add_stake_events#$1_stake_StakePool(s), $reactivate_stake_events#$1_stake_StakePool(s), $rotate_consensus_key_events#$1_stake_StakePool(s), $update_network_and_fullnode_addresses_events#$1_stake_StakePool(s), $increase_lockup_events#$1_stake_StakePool(s), $join_validator_set_events#$1_stake_StakePool(s), $distribute_rewards_events#$1_stake_StakePool(s), $unlock_stake_events#$1_stake_StakePool(s), $withdraw_stake_events#$1_stake_StakePool(s), $leave_validator_set_events#$1_stake_StakePool(s)) +function {:inline} $IsEqual'$1_staking_contract_AddStakeEvent'(s1: $1_staking_contract_AddStakeEvent, s2: $1_staking_contract_AddStakeEvent): bool { + s1 == s2 } -function {:inline} $Update'$1_stake_StakePool'_operator_address(s: $1_stake_StakePool, x: int): $1_stake_StakePool { - $1_stake_StakePool($active#$1_stake_StakePool(s), $inactive#$1_stake_StakePool(s), $pending_active#$1_stake_StakePool(s), $pending_inactive#$1_stake_StakePool(s), $locked_until_secs#$1_stake_StakePool(s), x, $delegated_voter#$1_stake_StakePool(s), $initialize_validator_events#$1_stake_StakePool(s), $set_operator_events#$1_stake_StakePool(s), $add_stake_events#$1_stake_StakePool(s), $reactivate_stake_events#$1_stake_StakePool(s), $rotate_consensus_key_events#$1_stake_StakePool(s), $update_network_and_fullnode_addresses_events#$1_stake_StakePool(s), $increase_lockup_events#$1_stake_StakePool(s), $join_validator_set_events#$1_stake_StakePool(s), $distribute_rewards_events#$1_stake_StakePool(s), $unlock_stake_events#$1_stake_StakePool(s), $withdraw_stake_events#$1_stake_StakePool(s), $leave_validator_set_events#$1_stake_StakePool(s)) + +// struct staking_contract::UnlockStakeEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:142:5+156 +type {:datatype} $1_staking_contract_UnlockStakeEvent; +function {:constructor} $1_staking_contract_UnlockStakeEvent($operator: int, $pool_address: int, $amount: int, $commission_paid: int): $1_staking_contract_UnlockStakeEvent; +function {:inline} $Update'$1_staking_contract_UnlockStakeEvent'_operator(s: $1_staking_contract_UnlockStakeEvent, x: int): $1_staking_contract_UnlockStakeEvent { + $1_staking_contract_UnlockStakeEvent(x, $pool_address#$1_staking_contract_UnlockStakeEvent(s), $amount#$1_staking_contract_UnlockStakeEvent(s), $commission_paid#$1_staking_contract_UnlockStakeEvent(s)) } -function {:inline} $Update'$1_stake_StakePool'_delegated_voter(s: $1_stake_StakePool, x: int): $1_stake_StakePool { - $1_stake_StakePool($active#$1_stake_StakePool(s), $inactive#$1_stake_StakePool(s), $pending_active#$1_stake_StakePool(s), $pending_inactive#$1_stake_StakePool(s), $locked_until_secs#$1_stake_StakePool(s), $operator_address#$1_stake_StakePool(s), x, $initialize_validator_events#$1_stake_StakePool(s), $set_operator_events#$1_stake_StakePool(s), $add_stake_events#$1_stake_StakePool(s), $reactivate_stake_events#$1_stake_StakePool(s), $rotate_consensus_key_events#$1_stake_StakePool(s), $update_network_and_fullnode_addresses_events#$1_stake_StakePool(s), $increase_lockup_events#$1_stake_StakePool(s), $join_validator_set_events#$1_stake_StakePool(s), $distribute_rewards_events#$1_stake_StakePool(s), $unlock_stake_events#$1_stake_StakePool(s), $withdraw_stake_events#$1_stake_StakePool(s), $leave_validator_set_events#$1_stake_StakePool(s)) +function {:inline} $Update'$1_staking_contract_UnlockStakeEvent'_pool_address(s: $1_staking_contract_UnlockStakeEvent, x: int): $1_staking_contract_UnlockStakeEvent { + $1_staking_contract_UnlockStakeEvent($operator#$1_staking_contract_UnlockStakeEvent(s), x, $amount#$1_staking_contract_UnlockStakeEvent(s), $commission_paid#$1_staking_contract_UnlockStakeEvent(s)) } -function {:inline} $Update'$1_stake_StakePool'_initialize_validator_events(s: $1_stake_StakePool, x: $1_event_EventHandle'$1_stake_RegisterValidatorCandidateEvent'): $1_stake_StakePool { - $1_stake_StakePool($active#$1_stake_StakePool(s), $inactive#$1_stake_StakePool(s), $pending_active#$1_stake_StakePool(s), $pending_inactive#$1_stake_StakePool(s), $locked_until_secs#$1_stake_StakePool(s), $operator_address#$1_stake_StakePool(s), $delegated_voter#$1_stake_StakePool(s), x, $set_operator_events#$1_stake_StakePool(s), $add_stake_events#$1_stake_StakePool(s), $reactivate_stake_events#$1_stake_StakePool(s), $rotate_consensus_key_events#$1_stake_StakePool(s), $update_network_and_fullnode_addresses_events#$1_stake_StakePool(s), $increase_lockup_events#$1_stake_StakePool(s), $join_validator_set_events#$1_stake_StakePool(s), $distribute_rewards_events#$1_stake_StakePool(s), $unlock_stake_events#$1_stake_StakePool(s), $withdraw_stake_events#$1_stake_StakePool(s), $leave_validator_set_events#$1_stake_StakePool(s)) +function {:inline} $Update'$1_staking_contract_UnlockStakeEvent'_amount(s: $1_staking_contract_UnlockStakeEvent, x: int): $1_staking_contract_UnlockStakeEvent { + $1_staking_contract_UnlockStakeEvent($operator#$1_staking_contract_UnlockStakeEvent(s), $pool_address#$1_staking_contract_UnlockStakeEvent(s), x, $commission_paid#$1_staking_contract_UnlockStakeEvent(s)) } -function {:inline} $Update'$1_stake_StakePool'_set_operator_events(s: $1_stake_StakePool, x: $1_event_EventHandle'$1_stake_SetOperatorEvent'): $1_stake_StakePool { - $1_stake_StakePool($active#$1_stake_StakePool(s), $inactive#$1_stake_StakePool(s), $pending_active#$1_stake_StakePool(s), $pending_inactive#$1_stake_StakePool(s), $locked_until_secs#$1_stake_StakePool(s), $operator_address#$1_stake_StakePool(s), $delegated_voter#$1_stake_StakePool(s), $initialize_validator_events#$1_stake_StakePool(s), x, $add_stake_events#$1_stake_StakePool(s), $reactivate_stake_events#$1_stake_StakePool(s), $rotate_consensus_key_events#$1_stake_StakePool(s), $update_network_and_fullnode_addresses_events#$1_stake_StakePool(s), $increase_lockup_events#$1_stake_StakePool(s), $join_validator_set_events#$1_stake_StakePool(s), $distribute_rewards_events#$1_stake_StakePool(s), $unlock_stake_events#$1_stake_StakePool(s), $withdraw_stake_events#$1_stake_StakePool(s), $leave_validator_set_events#$1_stake_StakePool(s)) +function {:inline} $Update'$1_staking_contract_UnlockStakeEvent'_commission_paid(s: $1_staking_contract_UnlockStakeEvent, x: int): $1_staking_contract_UnlockStakeEvent { + $1_staking_contract_UnlockStakeEvent($operator#$1_staking_contract_UnlockStakeEvent(s), $pool_address#$1_staking_contract_UnlockStakeEvent(s), $amount#$1_staking_contract_UnlockStakeEvent(s), x) } -function {:inline} $Update'$1_stake_StakePool'_add_stake_events(s: $1_stake_StakePool, x: $1_event_EventHandle'$1_stake_AddStakeEvent'): $1_stake_StakePool { - $1_stake_StakePool($active#$1_stake_StakePool(s), $inactive#$1_stake_StakePool(s), $pending_active#$1_stake_StakePool(s), $pending_inactive#$1_stake_StakePool(s), $locked_until_secs#$1_stake_StakePool(s), $operator_address#$1_stake_StakePool(s), $delegated_voter#$1_stake_StakePool(s), $initialize_validator_events#$1_stake_StakePool(s), $set_operator_events#$1_stake_StakePool(s), x, $reactivate_stake_events#$1_stake_StakePool(s), $rotate_consensus_key_events#$1_stake_StakePool(s), $update_network_and_fullnode_addresses_events#$1_stake_StakePool(s), $increase_lockup_events#$1_stake_StakePool(s), $join_validator_set_events#$1_stake_StakePool(s), $distribute_rewards_events#$1_stake_StakePool(s), $unlock_stake_events#$1_stake_StakePool(s), $withdraw_stake_events#$1_stake_StakePool(s), $leave_validator_set_events#$1_stake_StakePool(s)) +function $IsValid'$1_staking_contract_UnlockStakeEvent'(s: $1_staking_contract_UnlockStakeEvent): bool { + $IsValid'address'($operator#$1_staking_contract_UnlockStakeEvent(s)) + && $IsValid'address'($pool_address#$1_staking_contract_UnlockStakeEvent(s)) + && $IsValid'u64'($amount#$1_staking_contract_UnlockStakeEvent(s)) + && $IsValid'u64'($commission_paid#$1_staking_contract_UnlockStakeEvent(s)) } -function {:inline} $Update'$1_stake_StakePool'_reactivate_stake_events(s: $1_stake_StakePool, x: $1_event_EventHandle'$1_stake_ReactivateStakeEvent'): $1_stake_StakePool { - $1_stake_StakePool($active#$1_stake_StakePool(s), $inactive#$1_stake_StakePool(s), $pending_active#$1_stake_StakePool(s), $pending_inactive#$1_stake_StakePool(s), $locked_until_secs#$1_stake_StakePool(s), $operator_address#$1_stake_StakePool(s), $delegated_voter#$1_stake_StakePool(s), $initialize_validator_events#$1_stake_StakePool(s), $set_operator_events#$1_stake_StakePool(s), $add_stake_events#$1_stake_StakePool(s), x, $rotate_consensus_key_events#$1_stake_StakePool(s), $update_network_and_fullnode_addresses_events#$1_stake_StakePool(s), $increase_lockup_events#$1_stake_StakePool(s), $join_validator_set_events#$1_stake_StakePool(s), $distribute_rewards_events#$1_stake_StakePool(s), $unlock_stake_events#$1_stake_StakePool(s), $withdraw_stake_events#$1_stake_StakePool(s), $leave_validator_set_events#$1_stake_StakePool(s)) +function {:inline} $IsEqual'$1_staking_contract_UnlockStakeEvent'(s1: $1_staking_contract_UnlockStakeEvent, s2: $1_staking_contract_UnlockStakeEvent): bool { + s1 == s2 } -function {:inline} $Update'$1_stake_StakePool'_rotate_consensus_key_events(s: $1_stake_StakePool, x: $1_event_EventHandle'$1_stake_RotateConsensusKeyEvent'): $1_stake_StakePool { - $1_stake_StakePool($active#$1_stake_StakePool(s), $inactive#$1_stake_StakePool(s), $pending_active#$1_stake_StakePool(s), $pending_inactive#$1_stake_StakePool(s), $locked_until_secs#$1_stake_StakePool(s), $operator_address#$1_stake_StakePool(s), $delegated_voter#$1_stake_StakePool(s), $initialize_validator_events#$1_stake_StakePool(s), $set_operator_events#$1_stake_StakePool(s), $add_stake_events#$1_stake_StakePool(s), $reactivate_stake_events#$1_stake_StakePool(s), x, $update_network_and_fullnode_addresses_events#$1_stake_StakePool(s), $increase_lockup_events#$1_stake_StakePool(s), $join_validator_set_events#$1_stake_StakePool(s), $distribute_rewards_events#$1_stake_StakePool(s), $unlock_stake_events#$1_stake_StakePool(s), $withdraw_stake_events#$1_stake_StakePool(s), $leave_validator_set_events#$1_stake_StakePool(s)) + +// struct staking_contract::AddDistributionEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:155:5+130 +type {:datatype} $1_staking_contract_AddDistributionEvent; +function {:constructor} $1_staking_contract_AddDistributionEvent($operator: int, $pool_address: int, $amount: int): $1_staking_contract_AddDistributionEvent; +function {:inline} $Update'$1_staking_contract_AddDistributionEvent'_operator(s: $1_staking_contract_AddDistributionEvent, x: int): $1_staking_contract_AddDistributionEvent { + $1_staking_contract_AddDistributionEvent(x, $pool_address#$1_staking_contract_AddDistributionEvent(s), $amount#$1_staking_contract_AddDistributionEvent(s)) } -function {:inline} $Update'$1_stake_StakePool'_update_network_and_fullnode_addresses_events(s: $1_stake_StakePool, x: $1_event_EventHandle'$1_stake_UpdateNetworkAndFullnodeAddressesEvent'): $1_stake_StakePool { - $1_stake_StakePool($active#$1_stake_StakePool(s), $inactive#$1_stake_StakePool(s), $pending_active#$1_stake_StakePool(s), $pending_inactive#$1_stake_StakePool(s), $locked_until_secs#$1_stake_StakePool(s), $operator_address#$1_stake_StakePool(s), $delegated_voter#$1_stake_StakePool(s), $initialize_validator_events#$1_stake_StakePool(s), $set_operator_events#$1_stake_StakePool(s), $add_stake_events#$1_stake_StakePool(s), $reactivate_stake_events#$1_stake_StakePool(s), $rotate_consensus_key_events#$1_stake_StakePool(s), x, $increase_lockup_events#$1_stake_StakePool(s), $join_validator_set_events#$1_stake_StakePool(s), $distribute_rewards_events#$1_stake_StakePool(s), $unlock_stake_events#$1_stake_StakePool(s), $withdraw_stake_events#$1_stake_StakePool(s), $leave_validator_set_events#$1_stake_StakePool(s)) +function {:inline} $Update'$1_staking_contract_AddDistributionEvent'_pool_address(s: $1_staking_contract_AddDistributionEvent, x: int): $1_staking_contract_AddDistributionEvent { + $1_staking_contract_AddDistributionEvent($operator#$1_staking_contract_AddDistributionEvent(s), x, $amount#$1_staking_contract_AddDistributionEvent(s)) } -function {:inline} $Update'$1_stake_StakePool'_increase_lockup_events(s: $1_stake_StakePool, x: $1_event_EventHandle'$1_stake_IncreaseLockupEvent'): $1_stake_StakePool { - $1_stake_StakePool($active#$1_stake_StakePool(s), $inactive#$1_stake_StakePool(s), $pending_active#$1_stake_StakePool(s), $pending_inactive#$1_stake_StakePool(s), $locked_until_secs#$1_stake_StakePool(s), $operator_address#$1_stake_StakePool(s), $delegated_voter#$1_stake_StakePool(s), $initialize_validator_events#$1_stake_StakePool(s), $set_operator_events#$1_stake_StakePool(s), $add_stake_events#$1_stake_StakePool(s), $reactivate_stake_events#$1_stake_StakePool(s), $rotate_consensus_key_events#$1_stake_StakePool(s), $update_network_and_fullnode_addresses_events#$1_stake_StakePool(s), x, $join_validator_set_events#$1_stake_StakePool(s), $distribute_rewards_events#$1_stake_StakePool(s), $unlock_stake_events#$1_stake_StakePool(s), $withdraw_stake_events#$1_stake_StakePool(s), $leave_validator_set_events#$1_stake_StakePool(s)) +function {:inline} $Update'$1_staking_contract_AddDistributionEvent'_amount(s: $1_staking_contract_AddDistributionEvent, x: int): $1_staking_contract_AddDistributionEvent { + $1_staking_contract_AddDistributionEvent($operator#$1_staking_contract_AddDistributionEvent(s), $pool_address#$1_staking_contract_AddDistributionEvent(s), x) } -function {:inline} $Update'$1_stake_StakePool'_join_validator_set_events(s: $1_stake_StakePool, x: $1_event_EventHandle'$1_stake_JoinValidatorSetEvent'): $1_stake_StakePool { - $1_stake_StakePool($active#$1_stake_StakePool(s), $inactive#$1_stake_StakePool(s), $pending_active#$1_stake_StakePool(s), $pending_inactive#$1_stake_StakePool(s), $locked_until_secs#$1_stake_StakePool(s), $operator_address#$1_stake_StakePool(s), $delegated_voter#$1_stake_StakePool(s), $initialize_validator_events#$1_stake_StakePool(s), $set_operator_events#$1_stake_StakePool(s), $add_stake_events#$1_stake_StakePool(s), $reactivate_stake_events#$1_stake_StakePool(s), $rotate_consensus_key_events#$1_stake_StakePool(s), $update_network_and_fullnode_addresses_events#$1_stake_StakePool(s), $increase_lockup_events#$1_stake_StakePool(s), x, $distribute_rewards_events#$1_stake_StakePool(s), $unlock_stake_events#$1_stake_StakePool(s), $withdraw_stake_events#$1_stake_StakePool(s), $leave_validator_set_events#$1_stake_StakePool(s)) +function $IsValid'$1_staking_contract_AddDistributionEvent'(s: $1_staking_contract_AddDistributionEvent): bool { + $IsValid'address'($operator#$1_staking_contract_AddDistributionEvent(s)) + && $IsValid'address'($pool_address#$1_staking_contract_AddDistributionEvent(s)) + && $IsValid'u64'($amount#$1_staking_contract_AddDistributionEvent(s)) } -function {:inline} $Update'$1_stake_StakePool'_distribute_rewards_events(s: $1_stake_StakePool, x: $1_event_EventHandle'$1_stake_DistributeRewardsEvent'): $1_stake_StakePool { - $1_stake_StakePool($active#$1_stake_StakePool(s), $inactive#$1_stake_StakePool(s), $pending_active#$1_stake_StakePool(s), $pending_inactive#$1_stake_StakePool(s), $locked_until_secs#$1_stake_StakePool(s), $operator_address#$1_stake_StakePool(s), $delegated_voter#$1_stake_StakePool(s), $initialize_validator_events#$1_stake_StakePool(s), $set_operator_events#$1_stake_StakePool(s), $add_stake_events#$1_stake_StakePool(s), $reactivate_stake_events#$1_stake_StakePool(s), $rotate_consensus_key_events#$1_stake_StakePool(s), $update_network_and_fullnode_addresses_events#$1_stake_StakePool(s), $increase_lockup_events#$1_stake_StakePool(s), $join_validator_set_events#$1_stake_StakePool(s), x, $unlock_stake_events#$1_stake_StakePool(s), $withdraw_stake_events#$1_stake_StakePool(s), $leave_validator_set_events#$1_stake_StakePool(s)) +function {:inline} $IsEqual'$1_staking_contract_AddDistributionEvent'(s1: $1_staking_contract_AddDistributionEvent, s2: $1_staking_contract_AddDistributionEvent): bool { + s1 == s2 } -function {:inline} $Update'$1_stake_StakePool'_unlock_stake_events(s: $1_stake_StakePool, x: $1_event_EventHandle'$1_stake_UnlockStakeEvent'): $1_stake_StakePool { - $1_stake_StakePool($active#$1_stake_StakePool(s), $inactive#$1_stake_StakePool(s), $pending_active#$1_stake_StakePool(s), $pending_inactive#$1_stake_StakePool(s), $locked_until_secs#$1_stake_StakePool(s), $operator_address#$1_stake_StakePool(s), $delegated_voter#$1_stake_StakePool(s), $initialize_validator_events#$1_stake_StakePool(s), $set_operator_events#$1_stake_StakePool(s), $add_stake_events#$1_stake_StakePool(s), $reactivate_stake_events#$1_stake_StakePool(s), $rotate_consensus_key_events#$1_stake_StakePool(s), $update_network_and_fullnode_addresses_events#$1_stake_StakePool(s), $increase_lockup_events#$1_stake_StakePool(s), $join_validator_set_events#$1_stake_StakePool(s), $distribute_rewards_events#$1_stake_StakePool(s), x, $withdraw_stake_events#$1_stake_StakePool(s), $leave_validator_set_events#$1_stake_StakePool(s)) + +// struct staking_contract::CreateStakingContractEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:109:5+199 +type {:datatype} $1_staking_contract_CreateStakingContractEvent; +function {:constructor} $1_staking_contract_CreateStakingContractEvent($operator: int, $voter: int, $pool_address: int, $principal: int, $commission_percentage: int): $1_staking_contract_CreateStakingContractEvent; +function {:inline} $Update'$1_staking_contract_CreateStakingContractEvent'_operator(s: $1_staking_contract_CreateStakingContractEvent, x: int): $1_staking_contract_CreateStakingContractEvent { + $1_staking_contract_CreateStakingContractEvent(x, $voter#$1_staking_contract_CreateStakingContractEvent(s), $pool_address#$1_staking_contract_CreateStakingContractEvent(s), $principal#$1_staking_contract_CreateStakingContractEvent(s), $commission_percentage#$1_staking_contract_CreateStakingContractEvent(s)) } -function {:inline} $Update'$1_stake_StakePool'_withdraw_stake_events(s: $1_stake_StakePool, x: $1_event_EventHandle'$1_stake_WithdrawStakeEvent'): $1_stake_StakePool { - $1_stake_StakePool($active#$1_stake_StakePool(s), $inactive#$1_stake_StakePool(s), $pending_active#$1_stake_StakePool(s), $pending_inactive#$1_stake_StakePool(s), $locked_until_secs#$1_stake_StakePool(s), $operator_address#$1_stake_StakePool(s), $delegated_voter#$1_stake_StakePool(s), $initialize_validator_events#$1_stake_StakePool(s), $set_operator_events#$1_stake_StakePool(s), $add_stake_events#$1_stake_StakePool(s), $reactivate_stake_events#$1_stake_StakePool(s), $rotate_consensus_key_events#$1_stake_StakePool(s), $update_network_and_fullnode_addresses_events#$1_stake_StakePool(s), $increase_lockup_events#$1_stake_StakePool(s), $join_validator_set_events#$1_stake_StakePool(s), $distribute_rewards_events#$1_stake_StakePool(s), $unlock_stake_events#$1_stake_StakePool(s), x, $leave_validator_set_events#$1_stake_StakePool(s)) +function {:inline} $Update'$1_staking_contract_CreateStakingContractEvent'_voter(s: $1_staking_contract_CreateStakingContractEvent, x: int): $1_staking_contract_CreateStakingContractEvent { + $1_staking_contract_CreateStakingContractEvent($operator#$1_staking_contract_CreateStakingContractEvent(s), x, $pool_address#$1_staking_contract_CreateStakingContractEvent(s), $principal#$1_staking_contract_CreateStakingContractEvent(s), $commission_percentage#$1_staking_contract_CreateStakingContractEvent(s)) } -function {:inline} $Update'$1_stake_StakePool'_leave_validator_set_events(s: $1_stake_StakePool, x: $1_event_EventHandle'$1_stake_LeaveValidatorSetEvent'): $1_stake_StakePool { - $1_stake_StakePool($active#$1_stake_StakePool(s), $inactive#$1_stake_StakePool(s), $pending_active#$1_stake_StakePool(s), $pending_inactive#$1_stake_StakePool(s), $locked_until_secs#$1_stake_StakePool(s), $operator_address#$1_stake_StakePool(s), $delegated_voter#$1_stake_StakePool(s), $initialize_validator_events#$1_stake_StakePool(s), $set_operator_events#$1_stake_StakePool(s), $add_stake_events#$1_stake_StakePool(s), $reactivate_stake_events#$1_stake_StakePool(s), $rotate_consensus_key_events#$1_stake_StakePool(s), $update_network_and_fullnode_addresses_events#$1_stake_StakePool(s), $increase_lockup_events#$1_stake_StakePool(s), $join_validator_set_events#$1_stake_StakePool(s), $distribute_rewards_events#$1_stake_StakePool(s), $unlock_stake_events#$1_stake_StakePool(s), $withdraw_stake_events#$1_stake_StakePool(s), x) +function {:inline} $Update'$1_staking_contract_CreateStakingContractEvent'_pool_address(s: $1_staking_contract_CreateStakingContractEvent, x: int): $1_staking_contract_CreateStakingContractEvent { + $1_staking_contract_CreateStakingContractEvent($operator#$1_staking_contract_CreateStakingContractEvent(s), $voter#$1_staking_contract_CreateStakingContractEvent(s), x, $principal#$1_staking_contract_CreateStakingContractEvent(s), $commission_percentage#$1_staking_contract_CreateStakingContractEvent(s)) } -function $IsValid'$1_stake_StakePool'(s: $1_stake_StakePool): bool { - $IsValid'$1_coin_Coin'$1_aptos_coin_AptosCoin''($active#$1_stake_StakePool(s)) - && $IsValid'$1_coin_Coin'$1_aptos_coin_AptosCoin''($inactive#$1_stake_StakePool(s)) - && $IsValid'$1_coin_Coin'$1_aptos_coin_AptosCoin''($pending_active#$1_stake_StakePool(s)) - && $IsValid'$1_coin_Coin'$1_aptos_coin_AptosCoin''($pending_inactive#$1_stake_StakePool(s)) - && $IsValid'u64'($locked_until_secs#$1_stake_StakePool(s)) - && $IsValid'address'($operator_address#$1_stake_StakePool(s)) - && $IsValid'address'($delegated_voter#$1_stake_StakePool(s)) - && $IsValid'$1_event_EventHandle'$1_stake_RegisterValidatorCandidateEvent''($initialize_validator_events#$1_stake_StakePool(s)) - && $IsValid'$1_event_EventHandle'$1_stake_SetOperatorEvent''($set_operator_events#$1_stake_StakePool(s)) - && $IsValid'$1_event_EventHandle'$1_stake_AddStakeEvent''($add_stake_events#$1_stake_StakePool(s)) - && $IsValid'$1_event_EventHandle'$1_stake_ReactivateStakeEvent''($reactivate_stake_events#$1_stake_StakePool(s)) - && $IsValid'$1_event_EventHandle'$1_stake_RotateConsensusKeyEvent''($rotate_consensus_key_events#$1_stake_StakePool(s)) - && $IsValid'$1_event_EventHandle'$1_stake_UpdateNetworkAndFullnodeAddressesEvent''($update_network_and_fullnode_addresses_events#$1_stake_StakePool(s)) - && $IsValid'$1_event_EventHandle'$1_stake_IncreaseLockupEvent''($increase_lockup_events#$1_stake_StakePool(s)) - && $IsValid'$1_event_EventHandle'$1_stake_JoinValidatorSetEvent''($join_validator_set_events#$1_stake_StakePool(s)) - && $IsValid'$1_event_EventHandle'$1_stake_DistributeRewardsEvent''($distribute_rewards_events#$1_stake_StakePool(s)) - && $IsValid'$1_event_EventHandle'$1_stake_UnlockStakeEvent''($unlock_stake_events#$1_stake_StakePool(s)) - && $IsValid'$1_event_EventHandle'$1_stake_WithdrawStakeEvent''($withdraw_stake_events#$1_stake_StakePool(s)) - && $IsValid'$1_event_EventHandle'$1_stake_LeaveValidatorSetEvent''($leave_validator_set_events#$1_stake_StakePool(s)) +function {:inline} $Update'$1_staking_contract_CreateStakingContractEvent'_principal(s: $1_staking_contract_CreateStakingContractEvent, x: int): $1_staking_contract_CreateStakingContractEvent { + $1_staking_contract_CreateStakingContractEvent($operator#$1_staking_contract_CreateStakingContractEvent(s), $voter#$1_staking_contract_CreateStakingContractEvent(s), $pool_address#$1_staking_contract_CreateStakingContractEvent(s), x, $commission_percentage#$1_staking_contract_CreateStakingContractEvent(s)) } -function {:inline} $IsEqual'$1_stake_StakePool'(s1: $1_stake_StakePool, s2: $1_stake_StakePool): bool { +function {:inline} $Update'$1_staking_contract_CreateStakingContractEvent'_commission_percentage(s: $1_staking_contract_CreateStakingContractEvent, x: int): $1_staking_contract_CreateStakingContractEvent { + $1_staking_contract_CreateStakingContractEvent($operator#$1_staking_contract_CreateStakingContractEvent(s), $voter#$1_staking_contract_CreateStakingContractEvent(s), $pool_address#$1_staking_contract_CreateStakingContractEvent(s), $principal#$1_staking_contract_CreateStakingContractEvent(s), x) +} +function $IsValid'$1_staking_contract_CreateStakingContractEvent'(s: $1_staking_contract_CreateStakingContractEvent): bool { + $IsValid'address'($operator#$1_staking_contract_CreateStakingContractEvent(s)) + && $IsValid'address'($voter#$1_staking_contract_CreateStakingContractEvent(s)) + && $IsValid'address'($pool_address#$1_staking_contract_CreateStakingContractEvent(s)) + && $IsValid'u64'($principal#$1_staking_contract_CreateStakingContractEvent(s)) + && $IsValid'u64'($commission_percentage#$1_staking_contract_CreateStakingContractEvent(s)) +} +function {:inline} $IsEqual'$1_staking_contract_CreateStakingContractEvent'(s1: $1_staking_contract_CreateStakingContractEvent, s2: $1_staking_contract_CreateStakingContractEvent): bool { s1 == s2 } -var $1_stake_StakePool_$memory: $Memory $1_stake_StakePool; -// struct stake::UnlockStakeEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:249:5+108 -type {:datatype} $1_stake_UnlockStakeEvent; -function {:constructor} $1_stake_UnlockStakeEvent($pool_address: int, $amount_unlocked: int): $1_stake_UnlockStakeEvent; -function {:inline} $Update'$1_stake_UnlockStakeEvent'_pool_address(s: $1_stake_UnlockStakeEvent, x: int): $1_stake_UnlockStakeEvent { - $1_stake_UnlockStakeEvent(x, $amount_unlocked#$1_stake_UnlockStakeEvent(s)) +// struct staking_contract::DistributeEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:161:5+153 +type {:datatype} $1_staking_contract_DistributeEvent; +function {:constructor} $1_staking_contract_DistributeEvent($operator: int, $pool_address: int, $recipient: int, $amount: int): $1_staking_contract_DistributeEvent; +function {:inline} $Update'$1_staking_contract_DistributeEvent'_operator(s: $1_staking_contract_DistributeEvent, x: int): $1_staking_contract_DistributeEvent { + $1_staking_contract_DistributeEvent(x, $pool_address#$1_staking_contract_DistributeEvent(s), $recipient#$1_staking_contract_DistributeEvent(s), $amount#$1_staking_contract_DistributeEvent(s)) } -function {:inline} $Update'$1_stake_UnlockStakeEvent'_amount_unlocked(s: $1_stake_UnlockStakeEvent, x: int): $1_stake_UnlockStakeEvent { - $1_stake_UnlockStakeEvent($pool_address#$1_stake_UnlockStakeEvent(s), x) +function {:inline} $Update'$1_staking_contract_DistributeEvent'_pool_address(s: $1_staking_contract_DistributeEvent, x: int): $1_staking_contract_DistributeEvent { + $1_staking_contract_DistributeEvent($operator#$1_staking_contract_DistributeEvent(s), x, $recipient#$1_staking_contract_DistributeEvent(s), $amount#$1_staking_contract_DistributeEvent(s)) } -function $IsValid'$1_stake_UnlockStakeEvent'(s: $1_stake_UnlockStakeEvent): bool { - $IsValid'address'($pool_address#$1_stake_UnlockStakeEvent(s)) - && $IsValid'u64'($amount_unlocked#$1_stake_UnlockStakeEvent(s)) +function {:inline} $Update'$1_staking_contract_DistributeEvent'_recipient(s: $1_staking_contract_DistributeEvent, x: int): $1_staking_contract_DistributeEvent { + $1_staking_contract_DistributeEvent($operator#$1_staking_contract_DistributeEvent(s), $pool_address#$1_staking_contract_DistributeEvent(s), x, $amount#$1_staking_contract_DistributeEvent(s)) } -function {:inline} $IsEqual'$1_stake_UnlockStakeEvent'(s1: $1_stake_UnlockStakeEvent, s2: $1_stake_UnlockStakeEvent): bool { +function {:inline} $Update'$1_staking_contract_DistributeEvent'_amount(s: $1_staking_contract_DistributeEvent, x: int): $1_staking_contract_DistributeEvent { + $1_staking_contract_DistributeEvent($operator#$1_staking_contract_DistributeEvent(s), $pool_address#$1_staking_contract_DistributeEvent(s), $recipient#$1_staking_contract_DistributeEvent(s), x) +} +function $IsValid'$1_staking_contract_DistributeEvent'(s: $1_staking_contract_DistributeEvent): bool { + $IsValid'address'($operator#$1_staking_contract_DistributeEvent(s)) + && $IsValid'address'($pool_address#$1_staking_contract_DistributeEvent(s)) + && $IsValid'address'($recipient#$1_staking_contract_DistributeEvent(s)) + && $IsValid'u64'($amount#$1_staking_contract_DistributeEvent(s)) +} +function {:inline} $IsEqual'$1_staking_contract_DistributeEvent'(s1: $1_staking_contract_DistributeEvent, s2: $1_staking_contract_DistributeEvent): bool { s1 == s2 } -// struct stake::UpdateNetworkAndFullnodeAddressesEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:226:5+274 -type {:datatype} $1_stake_UpdateNetworkAndFullnodeAddressesEvent; -function {:constructor} $1_stake_UpdateNetworkAndFullnodeAddressesEvent($pool_address: int, $old_network_addresses: Vec (int), $new_network_addresses: Vec (int), $old_fullnode_addresses: Vec (int), $new_fullnode_addresses: Vec (int)): $1_stake_UpdateNetworkAndFullnodeAddressesEvent; -function {:inline} $Update'$1_stake_UpdateNetworkAndFullnodeAddressesEvent'_pool_address(s: $1_stake_UpdateNetworkAndFullnodeAddressesEvent, x: int): $1_stake_UpdateNetworkAndFullnodeAddressesEvent { - $1_stake_UpdateNetworkAndFullnodeAddressesEvent(x, $old_network_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s), $new_network_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s), $old_fullnode_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s), $new_fullnode_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s)) +// struct staking_contract::RequestCommissionEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:135:5+177 +type {:datatype} $1_staking_contract_RequestCommissionEvent; +function {:constructor} $1_staking_contract_RequestCommissionEvent($operator: int, $pool_address: int, $accumulated_rewards: int, $commission_amount: int): $1_staking_contract_RequestCommissionEvent; +function {:inline} $Update'$1_staking_contract_RequestCommissionEvent'_operator(s: $1_staking_contract_RequestCommissionEvent, x: int): $1_staking_contract_RequestCommissionEvent { + $1_staking_contract_RequestCommissionEvent(x, $pool_address#$1_staking_contract_RequestCommissionEvent(s), $accumulated_rewards#$1_staking_contract_RequestCommissionEvent(s), $commission_amount#$1_staking_contract_RequestCommissionEvent(s)) } -function {:inline} $Update'$1_stake_UpdateNetworkAndFullnodeAddressesEvent'_old_network_addresses(s: $1_stake_UpdateNetworkAndFullnodeAddressesEvent, x: Vec (int)): $1_stake_UpdateNetworkAndFullnodeAddressesEvent { - $1_stake_UpdateNetworkAndFullnodeAddressesEvent($pool_address#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s), x, $new_network_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s), $old_fullnode_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s), $new_fullnode_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s)) +function {:inline} $Update'$1_staking_contract_RequestCommissionEvent'_pool_address(s: $1_staking_contract_RequestCommissionEvent, x: int): $1_staking_contract_RequestCommissionEvent { + $1_staking_contract_RequestCommissionEvent($operator#$1_staking_contract_RequestCommissionEvent(s), x, $accumulated_rewards#$1_staking_contract_RequestCommissionEvent(s), $commission_amount#$1_staking_contract_RequestCommissionEvent(s)) } -function {:inline} $Update'$1_stake_UpdateNetworkAndFullnodeAddressesEvent'_new_network_addresses(s: $1_stake_UpdateNetworkAndFullnodeAddressesEvent, x: Vec (int)): $1_stake_UpdateNetworkAndFullnodeAddressesEvent { - $1_stake_UpdateNetworkAndFullnodeAddressesEvent($pool_address#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s), $old_network_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s), x, $old_fullnode_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s), $new_fullnode_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s)) +function {:inline} $Update'$1_staking_contract_RequestCommissionEvent'_accumulated_rewards(s: $1_staking_contract_RequestCommissionEvent, x: int): $1_staking_contract_RequestCommissionEvent { + $1_staking_contract_RequestCommissionEvent($operator#$1_staking_contract_RequestCommissionEvent(s), $pool_address#$1_staking_contract_RequestCommissionEvent(s), x, $commission_amount#$1_staking_contract_RequestCommissionEvent(s)) } -function {:inline} $Update'$1_stake_UpdateNetworkAndFullnodeAddressesEvent'_old_fullnode_addresses(s: $1_stake_UpdateNetworkAndFullnodeAddressesEvent, x: Vec (int)): $1_stake_UpdateNetworkAndFullnodeAddressesEvent { - $1_stake_UpdateNetworkAndFullnodeAddressesEvent($pool_address#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s), $old_network_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s), $new_network_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s), x, $new_fullnode_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s)) +function {:inline} $Update'$1_staking_contract_RequestCommissionEvent'_commission_amount(s: $1_staking_contract_RequestCommissionEvent, x: int): $1_staking_contract_RequestCommissionEvent { + $1_staking_contract_RequestCommissionEvent($operator#$1_staking_contract_RequestCommissionEvent(s), $pool_address#$1_staking_contract_RequestCommissionEvent(s), $accumulated_rewards#$1_staking_contract_RequestCommissionEvent(s), x) } -function {:inline} $Update'$1_stake_UpdateNetworkAndFullnodeAddressesEvent'_new_fullnode_addresses(s: $1_stake_UpdateNetworkAndFullnodeAddressesEvent, x: Vec (int)): $1_stake_UpdateNetworkAndFullnodeAddressesEvent { - $1_stake_UpdateNetworkAndFullnodeAddressesEvent($pool_address#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s), $old_network_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s), $new_network_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s), $old_fullnode_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s), x) +function $IsValid'$1_staking_contract_RequestCommissionEvent'(s: $1_staking_contract_RequestCommissionEvent): bool { + $IsValid'address'($operator#$1_staking_contract_RequestCommissionEvent(s)) + && $IsValid'address'($pool_address#$1_staking_contract_RequestCommissionEvent(s)) + && $IsValid'u64'($accumulated_rewards#$1_staking_contract_RequestCommissionEvent(s)) + && $IsValid'u64'($commission_amount#$1_staking_contract_RequestCommissionEvent(s)) } -function $IsValid'$1_stake_UpdateNetworkAndFullnodeAddressesEvent'(s: $1_stake_UpdateNetworkAndFullnodeAddressesEvent): bool { - $IsValid'address'($pool_address#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s)) - && $IsValid'vec'u8''($old_network_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s)) - && $IsValid'vec'u8''($new_network_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s)) - && $IsValid'vec'u8''($old_fullnode_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s)) - && $IsValid'vec'u8''($new_fullnode_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s)) +function {:inline} $IsEqual'$1_staking_contract_RequestCommissionEvent'(s1: $1_staking_contract_RequestCommissionEvent, s2: $1_staking_contract_RequestCommissionEvent): bool { + s1 == s2 } -function {:inline} $IsEqual'$1_stake_UpdateNetworkAndFullnodeAddressesEvent'(s1: $1_stake_UpdateNetworkAndFullnodeAddressesEvent, s2: $1_stake_UpdateNetworkAndFullnodeAddressesEvent): bool { - $IsEqual'address'($pool_address#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s1), $pool_address#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s2)) - && $IsEqual'vec'u8''($old_network_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s1), $old_network_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s2)) - && $IsEqual'vec'u8''($new_network_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s1), $new_network_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s2)) - && $IsEqual'vec'u8''($old_fullnode_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s1), $old_fullnode_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s2)) - && $IsEqual'vec'u8''($new_fullnode_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s1), $new_fullnode_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s2))} -// struct stake::ValidatorConfig at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:151:5+372 -type {:datatype} $1_stake_ValidatorConfig; -function {:constructor} $1_stake_ValidatorConfig($consensus_pubkey: Vec (int), $network_addresses: Vec (int), $fullnode_addresses: Vec (int), $validator_index: int): $1_stake_ValidatorConfig; -function {:inline} $Update'$1_stake_ValidatorConfig'_consensus_pubkey(s: $1_stake_ValidatorConfig, x: Vec (int)): $1_stake_ValidatorConfig { - $1_stake_ValidatorConfig(x, $network_addresses#$1_stake_ValidatorConfig(s), $fullnode_addresses#$1_stake_ValidatorConfig(s), $validator_index#$1_stake_ValidatorConfig(s)) -} -function {:inline} $Update'$1_stake_ValidatorConfig'_network_addresses(s: $1_stake_ValidatorConfig, x: Vec (int)): $1_stake_ValidatorConfig { - $1_stake_ValidatorConfig($consensus_pubkey#$1_stake_ValidatorConfig(s), x, $fullnode_addresses#$1_stake_ValidatorConfig(s), $validator_index#$1_stake_ValidatorConfig(s)) +// struct staking_contract::ResetLockupEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:124:5+105 +type {:datatype} $1_staking_contract_ResetLockupEvent; +function {:constructor} $1_staking_contract_ResetLockupEvent($operator: int, $pool_address: int): $1_staking_contract_ResetLockupEvent; +function {:inline} $Update'$1_staking_contract_ResetLockupEvent'_operator(s: $1_staking_contract_ResetLockupEvent, x: int): $1_staking_contract_ResetLockupEvent { + $1_staking_contract_ResetLockupEvent(x, $pool_address#$1_staking_contract_ResetLockupEvent(s)) } -function {:inline} $Update'$1_stake_ValidatorConfig'_fullnode_addresses(s: $1_stake_ValidatorConfig, x: Vec (int)): $1_stake_ValidatorConfig { - $1_stake_ValidatorConfig($consensus_pubkey#$1_stake_ValidatorConfig(s), $network_addresses#$1_stake_ValidatorConfig(s), x, $validator_index#$1_stake_ValidatorConfig(s)) +function {:inline} $Update'$1_staking_contract_ResetLockupEvent'_pool_address(s: $1_staking_contract_ResetLockupEvent, x: int): $1_staking_contract_ResetLockupEvent { + $1_staking_contract_ResetLockupEvent($operator#$1_staking_contract_ResetLockupEvent(s), x) } -function {:inline} $Update'$1_stake_ValidatorConfig'_validator_index(s: $1_stake_ValidatorConfig, x: int): $1_stake_ValidatorConfig { - $1_stake_ValidatorConfig($consensus_pubkey#$1_stake_ValidatorConfig(s), $network_addresses#$1_stake_ValidatorConfig(s), $fullnode_addresses#$1_stake_ValidatorConfig(s), x) +function $IsValid'$1_staking_contract_ResetLockupEvent'(s: $1_staking_contract_ResetLockupEvent): bool { + $IsValid'address'($operator#$1_staking_contract_ResetLockupEvent(s)) + && $IsValid'address'($pool_address#$1_staking_contract_ResetLockupEvent(s)) } -function $IsValid'$1_stake_ValidatorConfig'(s: $1_stake_ValidatorConfig): bool { - $IsValid'vec'u8''($consensus_pubkey#$1_stake_ValidatorConfig(s)) - && $IsValid'vec'u8''($network_addresses#$1_stake_ValidatorConfig(s)) - && $IsValid'vec'u8''($fullnode_addresses#$1_stake_ValidatorConfig(s)) - && $IsValid'u64'($validator_index#$1_stake_ValidatorConfig(s)) +function {:inline} $IsEqual'$1_staking_contract_ResetLockupEvent'(s1: $1_staking_contract_ResetLockupEvent, s2: $1_staking_contract_ResetLockupEvent): bool { + s1 == s2 } -function {:inline} $IsEqual'$1_stake_ValidatorConfig'(s1: $1_stake_ValidatorConfig, s2: $1_stake_ValidatorConfig): bool { - $IsEqual'vec'u8''($consensus_pubkey#$1_stake_ValidatorConfig(s1), $consensus_pubkey#$1_stake_ValidatorConfig(s2)) - && $IsEqual'vec'u8''($network_addresses#$1_stake_ValidatorConfig(s1), $network_addresses#$1_stake_ValidatorConfig(s2)) - && $IsEqual'vec'u8''($fullnode_addresses#$1_stake_ValidatorConfig(s1), $fullnode_addresses#$1_stake_ValidatorConfig(s2)) - && $IsEqual'u64'($validator_index#$1_stake_ValidatorConfig(s1), $validator_index#$1_stake_ValidatorConfig(s2))} -var $1_stake_ValidatorConfig_$memory: $Memory $1_stake_ValidatorConfig; -// struct stake::ValidatorInfo at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:161:5+133 -type {:datatype} $1_stake_ValidatorInfo; -function {:constructor} $1_stake_ValidatorInfo($addr: int, $voting_power: int, $config: $1_stake_ValidatorConfig): $1_stake_ValidatorInfo; -function {:inline} $Update'$1_stake_ValidatorInfo'_addr(s: $1_stake_ValidatorInfo, x: int): $1_stake_ValidatorInfo { - $1_stake_ValidatorInfo(x, $voting_power#$1_stake_ValidatorInfo(s), $config#$1_stake_ValidatorInfo(s)) +// struct staking_contract::StakingContract at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:68:5+692 +type {:datatype} $1_staking_contract_StakingContract; +function {:constructor} $1_staking_contract_StakingContract($principal: int, $pool_address: int, $owner_cap: $1_stake_OwnerCapability, $commission_percentage: int, $distribution_pool: $1_pool_u64_Pool, $signer_cap: $1_account_SignerCapability): $1_staking_contract_StakingContract; +function {:inline} $Update'$1_staking_contract_StakingContract'_principal(s: $1_staking_contract_StakingContract, x: int): $1_staking_contract_StakingContract { + $1_staking_contract_StakingContract(x, $pool_address#$1_staking_contract_StakingContract(s), $owner_cap#$1_staking_contract_StakingContract(s), $commission_percentage#$1_staking_contract_StakingContract(s), $distribution_pool#$1_staking_contract_StakingContract(s), $signer_cap#$1_staking_contract_StakingContract(s)) } -function {:inline} $Update'$1_stake_ValidatorInfo'_voting_power(s: $1_stake_ValidatorInfo, x: int): $1_stake_ValidatorInfo { - $1_stake_ValidatorInfo($addr#$1_stake_ValidatorInfo(s), x, $config#$1_stake_ValidatorInfo(s)) +function {:inline} $Update'$1_staking_contract_StakingContract'_pool_address(s: $1_staking_contract_StakingContract, x: int): $1_staking_contract_StakingContract { + $1_staking_contract_StakingContract($principal#$1_staking_contract_StakingContract(s), x, $owner_cap#$1_staking_contract_StakingContract(s), $commission_percentage#$1_staking_contract_StakingContract(s), $distribution_pool#$1_staking_contract_StakingContract(s), $signer_cap#$1_staking_contract_StakingContract(s)) } -function {:inline} $Update'$1_stake_ValidatorInfo'_config(s: $1_stake_ValidatorInfo, x: $1_stake_ValidatorConfig): $1_stake_ValidatorInfo { - $1_stake_ValidatorInfo($addr#$1_stake_ValidatorInfo(s), $voting_power#$1_stake_ValidatorInfo(s), x) +function {:inline} $Update'$1_staking_contract_StakingContract'_owner_cap(s: $1_staking_contract_StakingContract, x: $1_stake_OwnerCapability): $1_staking_contract_StakingContract { + $1_staking_contract_StakingContract($principal#$1_staking_contract_StakingContract(s), $pool_address#$1_staking_contract_StakingContract(s), x, $commission_percentage#$1_staking_contract_StakingContract(s), $distribution_pool#$1_staking_contract_StakingContract(s), $signer_cap#$1_staking_contract_StakingContract(s)) } -function $IsValid'$1_stake_ValidatorInfo'(s: $1_stake_ValidatorInfo): bool { - $IsValid'address'($addr#$1_stake_ValidatorInfo(s)) - && $IsValid'u64'($voting_power#$1_stake_ValidatorInfo(s)) - && $IsValid'$1_stake_ValidatorConfig'($config#$1_stake_ValidatorInfo(s)) +function {:inline} $Update'$1_staking_contract_StakingContract'_commission_percentage(s: $1_staking_contract_StakingContract, x: int): $1_staking_contract_StakingContract { + $1_staking_contract_StakingContract($principal#$1_staking_contract_StakingContract(s), $pool_address#$1_staking_contract_StakingContract(s), $owner_cap#$1_staking_contract_StakingContract(s), x, $distribution_pool#$1_staking_contract_StakingContract(s), $signer_cap#$1_staking_contract_StakingContract(s)) } -function {:inline} $IsEqual'$1_stake_ValidatorInfo'(s1: $1_stake_ValidatorInfo, s2: $1_stake_ValidatorInfo): bool { - $IsEqual'address'($addr#$1_stake_ValidatorInfo(s1), $addr#$1_stake_ValidatorInfo(s2)) - && $IsEqual'u64'($voting_power#$1_stake_ValidatorInfo(s1), $voting_power#$1_stake_ValidatorInfo(s2)) - && $IsEqual'$1_stake_ValidatorConfig'($config#$1_stake_ValidatorInfo(s1), $config#$1_stake_ValidatorInfo(s2))} - -// struct stake::ValidatorPerformance at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:196:5+103 -type {:datatype} $1_stake_ValidatorPerformance; -function {:constructor} $1_stake_ValidatorPerformance($validators: Vec ($1_stake_IndividualValidatorPerformance)): $1_stake_ValidatorPerformance; -function {:inline} $Update'$1_stake_ValidatorPerformance'_validators(s: $1_stake_ValidatorPerformance, x: Vec ($1_stake_IndividualValidatorPerformance)): $1_stake_ValidatorPerformance { - $1_stake_ValidatorPerformance(x) +function {:inline} $Update'$1_staking_contract_StakingContract'_distribution_pool(s: $1_staking_contract_StakingContract, x: $1_pool_u64_Pool): $1_staking_contract_StakingContract { + $1_staking_contract_StakingContract($principal#$1_staking_contract_StakingContract(s), $pool_address#$1_staking_contract_StakingContract(s), $owner_cap#$1_staking_contract_StakingContract(s), $commission_percentage#$1_staking_contract_StakingContract(s), x, $signer_cap#$1_staking_contract_StakingContract(s)) } -function $IsValid'$1_stake_ValidatorPerformance'(s: $1_stake_ValidatorPerformance): bool { - $IsValid'vec'$1_stake_IndividualValidatorPerformance''($validators#$1_stake_ValidatorPerformance(s)) +function {:inline} $Update'$1_staking_contract_StakingContract'_signer_cap(s: $1_staking_contract_StakingContract, x: $1_account_SignerCapability): $1_staking_contract_StakingContract { + $1_staking_contract_StakingContract($principal#$1_staking_contract_StakingContract(s), $pool_address#$1_staking_contract_StakingContract(s), $owner_cap#$1_staking_contract_StakingContract(s), $commission_percentage#$1_staking_contract_StakingContract(s), $distribution_pool#$1_staking_contract_StakingContract(s), x) } -function {:inline} $IsEqual'$1_stake_ValidatorPerformance'(s1: $1_stake_ValidatorPerformance, s2: $1_stake_ValidatorPerformance): bool { - $IsEqual'vec'$1_stake_IndividualValidatorPerformance''($validators#$1_stake_ValidatorPerformance(s1), $validators#$1_stake_ValidatorPerformance(s2))} -var $1_stake_ValidatorPerformance_$memory: $Memory $1_stake_ValidatorPerformance; +function $IsValid'$1_staking_contract_StakingContract'(s: $1_staking_contract_StakingContract): bool { + $IsValid'u64'($principal#$1_staking_contract_StakingContract(s)) + && $IsValid'address'($pool_address#$1_staking_contract_StakingContract(s)) + && $IsValid'$1_stake_OwnerCapability'($owner_cap#$1_staking_contract_StakingContract(s)) + && $IsValid'u64'($commission_percentage#$1_staking_contract_StakingContract(s)) + && $IsValid'$1_pool_u64_Pool'($distribution_pool#$1_staking_contract_StakingContract(s)) + && $IsValid'$1_account_SignerCapability'($signer_cap#$1_staking_contract_StakingContract(s)) +} +function {:inline} $IsEqual'$1_staking_contract_StakingContract'(s1: $1_staking_contract_StakingContract, s2: $1_staking_contract_StakingContract): bool { + $IsEqual'u64'($principal#$1_staking_contract_StakingContract(s1), $principal#$1_staking_contract_StakingContract(s2)) + && $IsEqual'address'($pool_address#$1_staking_contract_StakingContract(s1), $pool_address#$1_staking_contract_StakingContract(s2)) + && $IsEqual'$1_stake_OwnerCapability'($owner_cap#$1_staking_contract_StakingContract(s1), $owner_cap#$1_staking_contract_StakingContract(s2)) + && $IsEqual'u64'($commission_percentage#$1_staking_contract_StakingContract(s1), $commission_percentage#$1_staking_contract_StakingContract(s2)) + && $IsEqual'$1_pool_u64_Pool'($distribution_pool#$1_staking_contract_StakingContract(s1), $distribution_pool#$1_staking_contract_StakingContract(s2)) + && $IsEqual'$1_account_SignerCapability'($signer_cap#$1_staking_contract_StakingContract(s1), $signer_cap#$1_staking_contract_StakingContract(s2))} -// struct stake::ValidatorSet at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:171:5+558 -type {:datatype} $1_stake_ValidatorSet; -function {:constructor} $1_stake_ValidatorSet($consensus_scheme: int, $active_validators: Vec ($1_stake_ValidatorInfo), $pending_inactive: Vec ($1_stake_ValidatorInfo), $pending_active: Vec ($1_stake_ValidatorInfo), $total_voting_power: int, $total_joining_power: int): $1_stake_ValidatorSet; -function {:inline} $Update'$1_stake_ValidatorSet'_consensus_scheme(s: $1_stake_ValidatorSet, x: int): $1_stake_ValidatorSet { - $1_stake_ValidatorSet(x, $active_validators#$1_stake_ValidatorSet(s), $pending_inactive#$1_stake_ValidatorSet(s), $pending_active#$1_stake_ValidatorSet(s), $total_voting_power#$1_stake_ValidatorSet(s), $total_joining_power#$1_stake_ValidatorSet(s)) +// struct staking_contract::Store at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:82:5+690 +type {:datatype} $1_staking_contract_Store; +function {:constructor} $1_staking_contract_Store($staking_contracts: Table int ($1_staking_contract_StakingContract), $create_staking_contract_events: $1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent', $update_voter_events: $1_event_EventHandle'$1_staking_contract_UpdateVoterEvent', $reset_lockup_events: $1_event_EventHandle'$1_staking_contract_ResetLockupEvent', $add_stake_events: $1_event_EventHandle'$1_staking_contract_AddStakeEvent', $request_commission_events: $1_event_EventHandle'$1_staking_contract_RequestCommissionEvent', $unlock_stake_events: $1_event_EventHandle'$1_staking_contract_UnlockStakeEvent', $switch_operator_events: $1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent', $add_distribution_events: $1_event_EventHandle'$1_staking_contract_AddDistributionEvent', $distribute_events: $1_event_EventHandle'$1_staking_contract_DistributeEvent'): $1_staking_contract_Store; +function {:inline} $Update'$1_staking_contract_Store'_staking_contracts(s: $1_staking_contract_Store, x: Table int ($1_staking_contract_StakingContract)): $1_staking_contract_Store { + $1_staking_contract_Store(x, $create_staking_contract_events#$1_staking_contract_Store(s), $update_voter_events#$1_staking_contract_Store(s), $reset_lockup_events#$1_staking_contract_Store(s), $add_stake_events#$1_staking_contract_Store(s), $request_commission_events#$1_staking_contract_Store(s), $unlock_stake_events#$1_staking_contract_Store(s), $switch_operator_events#$1_staking_contract_Store(s), $add_distribution_events#$1_staking_contract_Store(s), $distribute_events#$1_staking_contract_Store(s)) } -function {:inline} $Update'$1_stake_ValidatorSet'_active_validators(s: $1_stake_ValidatorSet, x: Vec ($1_stake_ValidatorInfo)): $1_stake_ValidatorSet { - $1_stake_ValidatorSet($consensus_scheme#$1_stake_ValidatorSet(s), x, $pending_inactive#$1_stake_ValidatorSet(s), $pending_active#$1_stake_ValidatorSet(s), $total_voting_power#$1_stake_ValidatorSet(s), $total_joining_power#$1_stake_ValidatorSet(s)) +function {:inline} $Update'$1_staking_contract_Store'_create_staking_contract_events(s: $1_staking_contract_Store, x: $1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent'): $1_staking_contract_Store { + $1_staking_contract_Store($staking_contracts#$1_staking_contract_Store(s), x, $update_voter_events#$1_staking_contract_Store(s), $reset_lockup_events#$1_staking_contract_Store(s), $add_stake_events#$1_staking_contract_Store(s), $request_commission_events#$1_staking_contract_Store(s), $unlock_stake_events#$1_staking_contract_Store(s), $switch_operator_events#$1_staking_contract_Store(s), $add_distribution_events#$1_staking_contract_Store(s), $distribute_events#$1_staking_contract_Store(s)) } -function {:inline} $Update'$1_stake_ValidatorSet'_pending_inactive(s: $1_stake_ValidatorSet, x: Vec ($1_stake_ValidatorInfo)): $1_stake_ValidatorSet { - $1_stake_ValidatorSet($consensus_scheme#$1_stake_ValidatorSet(s), $active_validators#$1_stake_ValidatorSet(s), x, $pending_active#$1_stake_ValidatorSet(s), $total_voting_power#$1_stake_ValidatorSet(s), $total_joining_power#$1_stake_ValidatorSet(s)) +function {:inline} $Update'$1_staking_contract_Store'_update_voter_events(s: $1_staking_contract_Store, x: $1_event_EventHandle'$1_staking_contract_UpdateVoterEvent'): $1_staking_contract_Store { + $1_staking_contract_Store($staking_contracts#$1_staking_contract_Store(s), $create_staking_contract_events#$1_staking_contract_Store(s), x, $reset_lockup_events#$1_staking_contract_Store(s), $add_stake_events#$1_staking_contract_Store(s), $request_commission_events#$1_staking_contract_Store(s), $unlock_stake_events#$1_staking_contract_Store(s), $switch_operator_events#$1_staking_contract_Store(s), $add_distribution_events#$1_staking_contract_Store(s), $distribute_events#$1_staking_contract_Store(s)) } -function {:inline} $Update'$1_stake_ValidatorSet'_pending_active(s: $1_stake_ValidatorSet, x: Vec ($1_stake_ValidatorInfo)): $1_stake_ValidatorSet { - $1_stake_ValidatorSet($consensus_scheme#$1_stake_ValidatorSet(s), $active_validators#$1_stake_ValidatorSet(s), $pending_inactive#$1_stake_ValidatorSet(s), x, $total_voting_power#$1_stake_ValidatorSet(s), $total_joining_power#$1_stake_ValidatorSet(s)) +function {:inline} $Update'$1_staking_contract_Store'_reset_lockup_events(s: $1_staking_contract_Store, x: $1_event_EventHandle'$1_staking_contract_ResetLockupEvent'): $1_staking_contract_Store { + $1_staking_contract_Store($staking_contracts#$1_staking_contract_Store(s), $create_staking_contract_events#$1_staking_contract_Store(s), $update_voter_events#$1_staking_contract_Store(s), x, $add_stake_events#$1_staking_contract_Store(s), $request_commission_events#$1_staking_contract_Store(s), $unlock_stake_events#$1_staking_contract_Store(s), $switch_operator_events#$1_staking_contract_Store(s), $add_distribution_events#$1_staking_contract_Store(s), $distribute_events#$1_staking_contract_Store(s)) } -function {:inline} $Update'$1_stake_ValidatorSet'_total_voting_power(s: $1_stake_ValidatorSet, x: int): $1_stake_ValidatorSet { - $1_stake_ValidatorSet($consensus_scheme#$1_stake_ValidatorSet(s), $active_validators#$1_stake_ValidatorSet(s), $pending_inactive#$1_stake_ValidatorSet(s), $pending_active#$1_stake_ValidatorSet(s), x, $total_joining_power#$1_stake_ValidatorSet(s)) +function {:inline} $Update'$1_staking_contract_Store'_add_stake_events(s: $1_staking_contract_Store, x: $1_event_EventHandle'$1_staking_contract_AddStakeEvent'): $1_staking_contract_Store { + $1_staking_contract_Store($staking_contracts#$1_staking_contract_Store(s), $create_staking_contract_events#$1_staking_contract_Store(s), $update_voter_events#$1_staking_contract_Store(s), $reset_lockup_events#$1_staking_contract_Store(s), x, $request_commission_events#$1_staking_contract_Store(s), $unlock_stake_events#$1_staking_contract_Store(s), $switch_operator_events#$1_staking_contract_Store(s), $add_distribution_events#$1_staking_contract_Store(s), $distribute_events#$1_staking_contract_Store(s)) } -function {:inline} $Update'$1_stake_ValidatorSet'_total_joining_power(s: $1_stake_ValidatorSet, x: int): $1_stake_ValidatorSet { - $1_stake_ValidatorSet($consensus_scheme#$1_stake_ValidatorSet(s), $active_validators#$1_stake_ValidatorSet(s), $pending_inactive#$1_stake_ValidatorSet(s), $pending_active#$1_stake_ValidatorSet(s), $total_voting_power#$1_stake_ValidatorSet(s), x) +function {:inline} $Update'$1_staking_contract_Store'_request_commission_events(s: $1_staking_contract_Store, x: $1_event_EventHandle'$1_staking_contract_RequestCommissionEvent'): $1_staking_contract_Store { + $1_staking_contract_Store($staking_contracts#$1_staking_contract_Store(s), $create_staking_contract_events#$1_staking_contract_Store(s), $update_voter_events#$1_staking_contract_Store(s), $reset_lockup_events#$1_staking_contract_Store(s), $add_stake_events#$1_staking_contract_Store(s), x, $unlock_stake_events#$1_staking_contract_Store(s), $switch_operator_events#$1_staking_contract_Store(s), $add_distribution_events#$1_staking_contract_Store(s), $distribute_events#$1_staking_contract_Store(s)) } -function $IsValid'$1_stake_ValidatorSet'(s: $1_stake_ValidatorSet): bool { - $IsValid'u8'($consensus_scheme#$1_stake_ValidatorSet(s)) - && $IsValid'vec'$1_stake_ValidatorInfo''($active_validators#$1_stake_ValidatorSet(s)) - && $IsValid'vec'$1_stake_ValidatorInfo''($pending_inactive#$1_stake_ValidatorSet(s)) - && $IsValid'vec'$1_stake_ValidatorInfo''($pending_active#$1_stake_ValidatorSet(s)) - && $IsValid'u128'($total_voting_power#$1_stake_ValidatorSet(s)) - && $IsValid'u128'($total_joining_power#$1_stake_ValidatorSet(s)) +function {:inline} $Update'$1_staking_contract_Store'_unlock_stake_events(s: $1_staking_contract_Store, x: $1_event_EventHandle'$1_staking_contract_UnlockStakeEvent'): $1_staking_contract_Store { + $1_staking_contract_Store($staking_contracts#$1_staking_contract_Store(s), $create_staking_contract_events#$1_staking_contract_Store(s), $update_voter_events#$1_staking_contract_Store(s), $reset_lockup_events#$1_staking_contract_Store(s), $add_stake_events#$1_staking_contract_Store(s), $request_commission_events#$1_staking_contract_Store(s), x, $switch_operator_events#$1_staking_contract_Store(s), $add_distribution_events#$1_staking_contract_Store(s), $distribute_events#$1_staking_contract_Store(s)) } -function {:inline} $IsEqual'$1_stake_ValidatorSet'(s1: $1_stake_ValidatorSet, s2: $1_stake_ValidatorSet): bool { - $IsEqual'u8'($consensus_scheme#$1_stake_ValidatorSet(s1), $consensus_scheme#$1_stake_ValidatorSet(s2)) - && $IsEqual'vec'$1_stake_ValidatorInfo''($active_validators#$1_stake_ValidatorSet(s1), $active_validators#$1_stake_ValidatorSet(s2)) - && $IsEqual'vec'$1_stake_ValidatorInfo''($pending_inactive#$1_stake_ValidatorSet(s1), $pending_inactive#$1_stake_ValidatorSet(s2)) - && $IsEqual'vec'$1_stake_ValidatorInfo''($pending_active#$1_stake_ValidatorSet(s1), $pending_active#$1_stake_ValidatorSet(s2)) - && $IsEqual'u128'($total_voting_power#$1_stake_ValidatorSet(s1), $total_voting_power#$1_stake_ValidatorSet(s2)) - && $IsEqual'u128'($total_joining_power#$1_stake_ValidatorSet(s1), $total_joining_power#$1_stake_ValidatorSet(s2))} -var $1_stake_ValidatorSet_$memory: $Memory $1_stake_ValidatorSet; - -// struct stake::WithdrawStakeEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:254:5+111 -type {:datatype} $1_stake_WithdrawStakeEvent; -function {:constructor} $1_stake_WithdrawStakeEvent($pool_address: int, $amount_withdrawn: int): $1_stake_WithdrawStakeEvent; -function {:inline} $Update'$1_stake_WithdrawStakeEvent'_pool_address(s: $1_stake_WithdrawStakeEvent, x: int): $1_stake_WithdrawStakeEvent { - $1_stake_WithdrawStakeEvent(x, $amount_withdrawn#$1_stake_WithdrawStakeEvent(s)) +function {:inline} $Update'$1_staking_contract_Store'_switch_operator_events(s: $1_staking_contract_Store, x: $1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent'): $1_staking_contract_Store { + $1_staking_contract_Store($staking_contracts#$1_staking_contract_Store(s), $create_staking_contract_events#$1_staking_contract_Store(s), $update_voter_events#$1_staking_contract_Store(s), $reset_lockup_events#$1_staking_contract_Store(s), $add_stake_events#$1_staking_contract_Store(s), $request_commission_events#$1_staking_contract_Store(s), $unlock_stake_events#$1_staking_contract_Store(s), x, $add_distribution_events#$1_staking_contract_Store(s), $distribute_events#$1_staking_contract_Store(s)) } -function {:inline} $Update'$1_stake_WithdrawStakeEvent'_amount_withdrawn(s: $1_stake_WithdrawStakeEvent, x: int): $1_stake_WithdrawStakeEvent { - $1_stake_WithdrawStakeEvent($pool_address#$1_stake_WithdrawStakeEvent(s), x) +function {:inline} $Update'$1_staking_contract_Store'_add_distribution_events(s: $1_staking_contract_Store, x: $1_event_EventHandle'$1_staking_contract_AddDistributionEvent'): $1_staking_contract_Store { + $1_staking_contract_Store($staking_contracts#$1_staking_contract_Store(s), $create_staking_contract_events#$1_staking_contract_Store(s), $update_voter_events#$1_staking_contract_Store(s), $reset_lockup_events#$1_staking_contract_Store(s), $add_stake_events#$1_staking_contract_Store(s), $request_commission_events#$1_staking_contract_Store(s), $unlock_stake_events#$1_staking_contract_Store(s), $switch_operator_events#$1_staking_contract_Store(s), x, $distribute_events#$1_staking_contract_Store(s)) } -function $IsValid'$1_stake_WithdrawStakeEvent'(s: $1_stake_WithdrawStakeEvent): bool { - $IsValid'address'($pool_address#$1_stake_WithdrawStakeEvent(s)) - && $IsValid'u64'($amount_withdrawn#$1_stake_WithdrawStakeEvent(s)) +function {:inline} $Update'$1_staking_contract_Store'_distribute_events(s: $1_staking_contract_Store, x: $1_event_EventHandle'$1_staking_contract_DistributeEvent'): $1_staking_contract_Store { + $1_staking_contract_Store($staking_contracts#$1_staking_contract_Store(s), $create_staking_contract_events#$1_staking_contract_Store(s), $update_voter_events#$1_staking_contract_Store(s), $reset_lockup_events#$1_staking_contract_Store(s), $add_stake_events#$1_staking_contract_Store(s), $request_commission_events#$1_staking_contract_Store(s), $unlock_stake_events#$1_staking_contract_Store(s), $switch_operator_events#$1_staking_contract_Store(s), $add_distribution_events#$1_staking_contract_Store(s), x) } -function {:inline} $IsEqual'$1_stake_WithdrawStakeEvent'(s1: $1_stake_WithdrawStakeEvent, s2: $1_stake_WithdrawStakeEvent): bool { - s1 == s2 +function $IsValid'$1_staking_contract_Store'(s: $1_staking_contract_Store): bool { + $IsValid'$1_simple_map_SimpleMap'address_$1_staking_contract_StakingContract''($staking_contracts#$1_staking_contract_Store(s)) + && $IsValid'$1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent''($create_staking_contract_events#$1_staking_contract_Store(s)) + && $IsValid'$1_event_EventHandle'$1_staking_contract_UpdateVoterEvent''($update_voter_events#$1_staking_contract_Store(s)) + && $IsValid'$1_event_EventHandle'$1_staking_contract_ResetLockupEvent''($reset_lockup_events#$1_staking_contract_Store(s)) + && $IsValid'$1_event_EventHandle'$1_staking_contract_AddStakeEvent''($add_stake_events#$1_staking_contract_Store(s)) + && $IsValid'$1_event_EventHandle'$1_staking_contract_RequestCommissionEvent''($request_commission_events#$1_staking_contract_Store(s)) + && $IsValid'$1_event_EventHandle'$1_staking_contract_UnlockStakeEvent''($unlock_stake_events#$1_staking_contract_Store(s)) + && $IsValid'$1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent''($switch_operator_events#$1_staking_contract_Store(s)) + && $IsValid'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent''($add_distribution_events#$1_staking_contract_Store(s)) + && $IsValid'$1_event_EventHandle'$1_staking_contract_DistributeEvent''($distribute_events#$1_staking_contract_Store(s)) } +function {:inline} $IsEqual'$1_staking_contract_Store'(s1: $1_staking_contract_Store, s2: $1_staking_contract_Store): bool { + $IsEqual'$1_simple_map_SimpleMap'address_$1_staking_contract_StakingContract''($staking_contracts#$1_staking_contract_Store(s1), $staking_contracts#$1_staking_contract_Store(s2)) + && $IsEqual'$1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent''($create_staking_contract_events#$1_staking_contract_Store(s1), $create_staking_contract_events#$1_staking_contract_Store(s2)) + && $IsEqual'$1_event_EventHandle'$1_staking_contract_UpdateVoterEvent''($update_voter_events#$1_staking_contract_Store(s1), $update_voter_events#$1_staking_contract_Store(s2)) + && $IsEqual'$1_event_EventHandle'$1_staking_contract_ResetLockupEvent''($reset_lockup_events#$1_staking_contract_Store(s1), $reset_lockup_events#$1_staking_contract_Store(s2)) + && $IsEqual'$1_event_EventHandle'$1_staking_contract_AddStakeEvent''($add_stake_events#$1_staking_contract_Store(s1), $add_stake_events#$1_staking_contract_Store(s2)) + && $IsEqual'$1_event_EventHandle'$1_staking_contract_RequestCommissionEvent''($request_commission_events#$1_staking_contract_Store(s1), $request_commission_events#$1_staking_contract_Store(s2)) + && $IsEqual'$1_event_EventHandle'$1_staking_contract_UnlockStakeEvent''($unlock_stake_events#$1_staking_contract_Store(s1), $unlock_stake_events#$1_staking_contract_Store(s2)) + && $IsEqual'$1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent''($switch_operator_events#$1_staking_contract_Store(s1), $switch_operator_events#$1_staking_contract_Store(s2)) + && $IsEqual'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent''($add_distribution_events#$1_staking_contract_Store(s1), $add_distribution_events#$1_staking_contract_Store(s2)) + && $IsEqual'$1_event_EventHandle'$1_staking_contract_DistributeEvent''($distribute_events#$1_staking_contract_Store(s1), $distribute_events#$1_staking_contract_Store(s2))} +var $1_staking_contract_Store_$memory: $Memory $1_staking_contract_Store; -// fun stake::assert_stake_pool_exists [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:1319:5+162 -procedure {:inline 1} $1_stake_assert_stake_pool_exists(_$t0: int) returns () -{ - // declare local variables - var $t1: bool; - var $t2: int; - var $t3: int; - var $t4: int; - var $t0: int; - var $temp_0'address': int; - $t0 := _$t0; - - // bytecode translation starts here - // trace_local[pool_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:1319:5+1 - assume {:print "$at(131,62960,62961)"} true; - assume {:print "$track_local(38,5,0):", $t0} $t0 == $t0; - - // $t1 := stake::stake_pool_exists($t0) on_abort goto L4 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:1320:17+31 - assume {:print "$at(131,63030,63061)"} true; - call $t1 := $1_stake_stake_pool_exists($t0); - if ($abort_flag) { - assume {:print "$at(131,63030,63061)"} true; - $t2 := $abort_code; - assume {:print "$track_abort(38,5):", $t2} $t2 == $t2; - goto L4; - } - - // if ($t1) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:1320:9+93 - if ($t1) { goto L1; } else { goto L0; } - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:1320:9+93 -L1: - - // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:1320:9+93 - assume {:print "$at(131,63022,63115)"} true; - goto L2; - - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:1320:74+26 -L0: - - // $t3 := 14 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:1320:74+26 - assume {:print "$at(131,63087,63113)"} true; - $t3 := 14; - assume $IsValid'u64'($t3); - - // $t4 := error::invalid_argument($t3) on_abort goto L4 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:1320:50+51 - call $t4 := $1_error_invalid_argument($t3); - if ($abort_flag) { - assume {:print "$at(131,63063,63114)"} true; - $t2 := $abort_code; - assume {:print "$track_abort(38,5):", $t2} $t2 == $t2; - goto L4; - } - - // trace_abort($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:1320:9+93 - assume {:print "$at(131,63022,63115)"} true; - assume {:print "$track_abort(38,5):", $t4} $t4 == $t4; - - // $t2 := move($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:1320:9+93 - $t2 := $t4; - - // goto L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:1320:9+93 - goto L4; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:1320:102+1 -L2: - - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:1321:5+1 - assume {:print "$at(131,63121,63122)"} true; -L3: - - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:1321:5+1 - assume {:print "$at(131,63121,63122)"} true; - return; - - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:1321:5+1 -L4: - - // abort($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:1321:5+1 - assume {:print "$at(131,63121,63122)"} true; - $abort_code := $t2; - $abort_flag := true; - return; - +// struct staking_contract::SwitchOperatorEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:149:5+143 +type {:datatype} $1_staking_contract_SwitchOperatorEvent; +function {:constructor} $1_staking_contract_SwitchOperatorEvent($old_operator: int, $new_operator: int, $pool_address: int): $1_staking_contract_SwitchOperatorEvent; +function {:inline} $Update'$1_staking_contract_SwitchOperatorEvent'_old_operator(s: $1_staking_contract_SwitchOperatorEvent, x: int): $1_staking_contract_SwitchOperatorEvent { + $1_staking_contract_SwitchOperatorEvent(x, $new_operator#$1_staking_contract_SwitchOperatorEvent(s), $pool_address#$1_staking_contract_SwitchOperatorEvent(s)) } - -// fun stake::get_delegated_voter [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:359:5+200 -procedure {:inline 1} $1_stake_get_delegated_voter(_$t0: int) returns ($ret0: int) -{ - // declare local variables - var $t1: int; - var $t2: $1_stake_StakePool; - var $t3: int; - var $t0: int; - var $temp_0'address': int; - $t0 := _$t0; - - // bytecode translation starts here - // trace_local[pool_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:359:5+1 - assume {:print "$at(131,16317,16318)"} true; - assume {:print "$track_local(38,16,0):", $t0} $t0 == $t0; - - // stake::assert_stake_pool_exists($t0) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:360:9+38 - assume {:print "$at(131,16409,16447)"} true; - call $1_stake_assert_stake_pool_exists($t0); - if ($abort_flag) { - assume {:print "$at(131,16409,16447)"} true; - $t1 := $abort_code; - assume {:print "$track_abort(38,16):", $t1} $t1 == $t1; - goto L2; - } - - // $t2 := get_global($t0) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:361:9+13 - assume {:print "$at(131,16457,16470)"} true; - if (!$ResourceExists($1_stake_StakePool_$memory, $t0)) { - call $ExecFailureAbort(); - } else { - $t2 := $ResourceValue($1_stake_StakePool_$memory, $t0); - } - if ($abort_flag) { - assume {:print "$at(131,16457,16470)"} true; - $t1 := $abort_code; - assume {:print "$track_abort(38,16):", $t1} $t1 == $t1; - goto L2; - } - - // $t3 := get_field.delegated_voter($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:361:9+54 - $t3 := $delegated_voter#$1_stake_StakePool($t2); - - // trace_return[0]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:361:9+54 - assume {:print "$track_return(38,16,0):", $t3} $t3 == $t3; - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:362:5+1 - assume {:print "$at(131,16516,16517)"} true; -L1: - - // return $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:362:5+1 - assume {:print "$at(131,16516,16517)"} true; - $ret0 := $t3; - return; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:362:5+1 -L2: - - // abort($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:362:5+1 - assume {:print "$at(131,16516,16517)"} true; - $abort_code := $t1; - $abort_flag := true; - return; - +function {:inline} $Update'$1_staking_contract_SwitchOperatorEvent'_new_operator(s: $1_staking_contract_SwitchOperatorEvent, x: int): $1_staking_contract_SwitchOperatorEvent { + $1_staking_contract_SwitchOperatorEvent($old_operator#$1_staking_contract_SwitchOperatorEvent(s), x, $pool_address#$1_staking_contract_SwitchOperatorEvent(s)) } - -// fun stake::get_lockup_secs [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:294:5+194 -procedure {:inline 1} $1_stake_get_lockup_secs(_$t0: int) returns ($ret0: int) -{ - // declare local variables - var $t1: int; - var $t2: $1_stake_StakePool; - var $t3: int; - var $t0: int; - var $temp_0'address': int; - var $temp_0'u64': int; - $t0 := _$t0; - - // bytecode translation starts here - // trace_local[pool_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:294:5+1 - assume {:print "$at(131,13232,13233)"} true; - assume {:print "$track_local(38,17,0):", $t0} $t0 == $t0; - - // stake::assert_stake_pool_exists($t0) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:295:9+38 - assume {:print "$at(131,13316,13354)"} true; - call $1_stake_assert_stake_pool_exists($t0); - if ($abort_flag) { - assume {:print "$at(131,13316,13354)"} true; - $t1 := $abort_code; - assume {:print "$track_abort(38,17):", $t1} $t1 == $t1; - goto L2; - } - - // $t2 := get_global($t0) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:296:9+13 - assume {:print "$at(131,13364,13377)"} true; - if (!$ResourceExists($1_stake_StakePool_$memory, $t0)) { - call $ExecFailureAbort(); - } else { - $t2 := $ResourceValue($1_stake_StakePool_$memory, $t0); - } - if ($abort_flag) { - assume {:print "$at(131,13364,13377)"} true; - $t1 := $abort_code; - assume {:print "$track_abort(38,17):", $t1} $t1 == $t1; - goto L2; - } - - // $t3 := get_field.locked_until_secs($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:296:9+56 - $t3 := $locked_until_secs#$1_stake_StakePool($t2); - - // trace_return[0]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:296:9+56 - assume {:print "$track_return(38,17,0):", $t3} $t3 == $t3; - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:297:5+1 - assume {:print "$at(131,13425,13426)"} true; -L1: - - // return $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:297:5+1 - assume {:print "$at(131,13425,13426)"} true; - $ret0 := $t3; - return; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:297:5+1 -L2: - - // abort($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:297:5+1 - assume {:print "$at(131,13425,13426)"} true; - $abort_code := $t1; - $abort_flag := true; - return; - +function {:inline} $Update'$1_staking_contract_SwitchOperatorEvent'_pool_address(s: $1_staking_contract_SwitchOperatorEvent, x: int): $1_staking_contract_SwitchOperatorEvent { + $1_staking_contract_SwitchOperatorEvent($old_operator#$1_staking_contract_SwitchOperatorEvent(s), $new_operator#$1_staking_contract_SwitchOperatorEvent(s), x) +} +function $IsValid'$1_staking_contract_SwitchOperatorEvent'(s: $1_staking_contract_SwitchOperatorEvent): bool { + $IsValid'address'($old_operator#$1_staking_contract_SwitchOperatorEvent(s)) + && $IsValid'address'($new_operator#$1_staking_contract_SwitchOperatorEvent(s)) + && $IsValid'address'($pool_address#$1_staking_contract_SwitchOperatorEvent(s)) +} +function {:inline} $IsEqual'$1_staking_contract_SwitchOperatorEvent'(s1: $1_staking_contract_SwitchOperatorEvent, s2: $1_staking_contract_SwitchOperatorEvent): bool { + s1 == s2 } -// fun stake::get_stake [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:315:5+425 -procedure {:inline 1} $1_stake_get_stake(_$t0: int) returns ($ret0: int, $ret1: int, $ret2: int, $ret3: int) -{ - // declare local variables - var $t1: $1_stake_StakePool; - var $t2: int; - var $t3: $1_stake_StakePool; - var $t4: $1_coin_Coin'$1_aptos_coin_AptosCoin'; - var $t5: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; - var $t6: int; - var $t7: $1_coin_Coin'$1_aptos_coin_AptosCoin'; - var $t8: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; - var $t9: int; - var $t10: $1_coin_Coin'$1_aptos_coin_AptosCoin'; - var $t11: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; - var $t12: int; - var $t13: $1_coin_Coin'$1_aptos_coin_AptosCoin'; - var $t14: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; - var $t15: int; - var $t0: int; - var $temp_0'$1_stake_StakePool': $1_stake_StakePool; - var $temp_0'address': int; - var $temp_0'u64': int; - $t0 := _$t0; - - // bytecode translation starts here - // trace_local[pool_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:315:5+1 - assume {:print "$at(131,14196,14197)"} true; - assume {:print "$track_local(38,22,0):", $t0} $t0 == $t0; - - // stake::assert_stake_pool_exists($t0) on_abort goto L2 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:316:9+38 - assume {:print "$at(131,14291,14329)"} true; - call $1_stake_assert_stake_pool_exists($t0); - if ($abort_flag) { - assume {:print "$at(131,14291,14329)"} true; - $t2 := $abort_code; - assume {:print "$track_abort(38,22):", $t2} $t2 == $t2; - goto L2; - } - - // $t3 := get_global($t0) on_abort goto L2 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:317:26+13 - assume {:print "$at(131,14356,14369)"} true; - if (!$ResourceExists($1_stake_StakePool_$memory, $t0)) { - call $ExecFailureAbort(); - } else { - $t3 := $ResourceValue($1_stake_StakePool_$memory, $t0); - } - if ($abort_flag) { - assume {:print "$at(131,14356,14369)"} true; - $t2 := $abort_code; - assume {:print "$track_abort(38,22):", $t2} $t2 == $t2; - goto L2; - } - - // trace_local[stake_pool]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:317:13+10 - assume {:print "$track_local(38,22,1):", $t3} $t3 == $t3; - - // $t4 := get_field.active($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:319:25+18 - assume {:print "$at(131,14430,14448)"} true; - $t4 := $active#$1_stake_StakePool($t3); - - // assume Identical($t5, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 - assume {:print "$at(95,1664,1763)"} true; - assume ($t5 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); - - // $t6 := coin::value($t4) on_abort goto L2 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:319:13+31 - assume {:print "$at(131,14418,14449)"} true; - call $t6 := $1_coin_value'$1_aptos_coin_AptosCoin'($t4); - if ($abort_flag) { - assume {:print "$at(131,14418,14449)"} true; - $t2 := $abort_code; - assume {:print "$track_abort(38,22):", $t2} $t2 == $t2; - goto L2; - } - - // $t7 := get_field.inactive($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:320:25+20 - assume {:print "$at(131,14475,14495)"} true; - $t7 := $inactive#$1_stake_StakePool($t3); - - // assume Identical($t8, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 - assume {:print "$at(95,1664,1763)"} true; - assume ($t8 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); - - // $t9 := coin::value($t7) on_abort goto L2 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:320:13+33 - assume {:print "$at(131,14463,14496)"} true; - call $t9 := $1_coin_value'$1_aptos_coin_AptosCoin'($t7); - if ($abort_flag) { - assume {:print "$at(131,14463,14496)"} true; - $t2 := $abort_code; - assume {:print "$track_abort(38,22):", $t2} $t2 == $t2; - goto L2; - } - - // $t10 := get_field.pending_active($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:321:25+26 - assume {:print "$at(131,14522,14548)"} true; - $t10 := $pending_active#$1_stake_StakePool($t3); - - // assume Identical($t11, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 - assume {:print "$at(95,1664,1763)"} true; - assume ($t11 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); - - // $t12 := coin::value($t10) on_abort goto L2 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:321:13+39 - assume {:print "$at(131,14510,14549)"} true; - call $t12 := $1_coin_value'$1_aptos_coin_AptosCoin'($t10); - if ($abort_flag) { - assume {:print "$at(131,14510,14549)"} true; - $t2 := $abort_code; - assume {:print "$track_abort(38,22):", $t2} $t2 == $t2; - goto L2; - } - - // $t13 := get_field.pending_inactive($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:322:25+28 - assume {:print "$at(131,14575,14603)"} true; - $t13 := $pending_inactive#$1_stake_StakePool($t3); - - // assume Identical($t14, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 - assume {:print "$at(95,1664,1763)"} true; - assume ($t14 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); - - // $t15 := coin::value($t13) on_abort goto L2 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:322:13+41 - assume {:print "$at(131,14563,14604)"} true; - call $t15 := $1_coin_value'$1_aptos_coin_AptosCoin'($t13); - if ($abort_flag) { - assume {:print "$at(131,14563,14604)"} true; - $t2 := $abort_code; - assume {:print "$track_abort(38,22):", $t2} $t2 == $t2; - goto L2; - } - - // trace_return[0]($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:318:9+211 - assume {:print "$at(131,14404,14615)"} true; - assume {:print "$track_return(38,22,0):", $t6} $t6 == $t6; - - // trace_return[1]($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:318:9+211 - assume {:print "$track_return(38,22,1):", $t9} $t9 == $t9; - - // trace_return[2]($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:318:9+211 - assume {:print "$track_return(38,22,2):", $t12} $t12 == $t12; - - // trace_return[3]($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:318:9+211 - assume {:print "$track_return(38,22,3):", $t15} $t15 == $t15; - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:324:5+1 - assume {:print "$at(131,14620,14621)"} true; -L1: - - // return ($t6, $t9, $t12, $t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:324:5+1 - assume {:print "$at(131,14620,14621)"} true; - $ret0 := $t6; - $ret1 := $t9; - $ret2 := $t12; - $ret3 := $t15; - return; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:324:5+1 -L2: - - // abort($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:324:5+1 - assume {:print "$at(131,14620,14621)"} true; - $abort_code := $t2; - $abort_flag := true; - return; - -} - -// fun stake::get_validator_state [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:328:5+652 -procedure {:inline 1} $1_stake_get_validator_state(_$t0: int) returns ($ret0: int) -{ - // declare local variables - var $t1: $1_option_Option'u64'; - var $t2: $1_option_Option'u64'; - var $t3: $1_option_Option'u64'; - var $t4: int; - var $t5: int; - var $t6: int; - var $t7: $1_stake_ValidatorSet; - var $t8: $1_stake_ValidatorSet; - var $t9: int; - var $t10: $1_stake_ValidatorSet; - var $t11: int; - var $t12: Vec ($1_stake_ValidatorInfo); - var $t13: $1_option_Option'u64'; - var $t14: bool; - var $t15: int; - var $t16: Vec ($1_stake_ValidatorInfo); - var $t17: $1_option_Option'u64'; - var $t18: bool; - var $t19: int; - var $t20: Vec ($1_stake_ValidatorInfo); - var $t21: $1_option_Option'u64'; - var $t22: bool; - var $t23: int; - var $t24: int; - var $t0: int; - var $temp_0'$1_stake_ValidatorSet': $1_stake_ValidatorSet; - var $temp_0'address': int; - var $temp_0'u64': int; - $t0 := _$t0; - - // bytecode translation starts here - // assume Identical($t8, global(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:246:9+59 - assume {:print "$at(132,10599,10658)"} true; - assume ($t8 == $ResourceValue($1_stake_ValidatorSet_$memory, 1)); - - // trace_local[pool_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:328:5+1 - assume {:print "$at(131,14678,14679)"} true; - assume {:print "$track_local(38,25,0):", $t0} $t0 == $t0; - - // $t9 := 0x1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:329:57+16 - assume {:print "$at(131,14817,14833)"} true; - $t9 := 1; - assume $IsValid'address'($t9); - - // $t10 := get_global($t9) on_abort goto L10 with $t11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:329:29+13 - if (!$ResourceExists($1_stake_ValidatorSet_$memory, $t9)) { - call $ExecFailureAbort(); - } else { - $t10 := $ResourceValue($1_stake_ValidatorSet_$memory, $t9); - } - if ($abort_flag) { - assume {:print "$at(131,14789,14802)"} true; - $t11 := $abort_code; - assume {:print "$track_abort(38,25):", $t11} $t11 == $t11; - goto L10; - } - - // trace_local[validator_set]($t10) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:329:13+13 - assume {:print "$track_local(38,25,7):", $t10} $t10 == $t10; - - // $t12 := get_field.pending_active($t10) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:330:45+29 - assume {:print "$at(131,14880,14909)"} true; - $t12 := $pending_active#$1_stake_ValidatorSet($t10); - - // $t13 := opaque begin: stake::find_validator($t12, $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:330:30+59 - - // assume And(WellFormed($t13), Le(Len(select option::Option.vec($t13)), 1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:330:30+59 - assume ($IsValid'$1_option_Option'u64''($t13) && (LenVec($vec#$1_option_Option'u64'($t13)) <= 1)); - - // assume Implies(option::$is_none($t13), forall i: Range(0, Len($t12)): Neq
(select stake::ValidatorInfo.addr(Index($t12, i)), $t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:330:30+59 - assume ($1_option_$is_none'u64'($t13) ==> (var $range_0 := $Range(0, LenVec($t12)); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var i := $i_1; - (!$IsEqual'address'($addr#$1_stake_ValidatorInfo(ReadVec($t12, i)), $t0)))))); - - // assume Implies(option::$is_some($t13), Eq
(select stake::ValidatorInfo.addr(Index($t12, option::$borrow($t13))), $t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:330:30+59 - assume ($1_option_$is_some'u64'($t13) ==> $IsEqual'address'($addr#$1_stake_ValidatorInfo(ReadVec($t12, $1_option_$borrow'u64'($t13))), $t0)); - - // assume Implies(option::$is_some($t13), stake::spec_contains($t12, $t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:330:30+59 - assume ($1_option_$is_some'u64'($t13) ==> $1_stake_spec_contains($t12, $t0)); - - // $t13 := opaque end: stake::find_validator($t12, $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:330:30+59 - - // $t14 := opaque begin: option::is_some($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:330:13+77 - - // assume WellFormed($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:330:13+77 - assume $IsValid'bool'($t14); - - // assume Eq($t14, option::spec_is_some($t13)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:330:13+77 - assume $IsEqual'bool'($t14, $1_option_spec_is_some'u64'($t13)); - - // $t14 := opaque end: option::is_some($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:330:13+77 - - // if ($t14) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:330:9+480 - if ($t14) { goto L1; } else { goto L0; } - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:330:9+480 -L1: - - // $t15 := 1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:331:13+31 - assume {:print "$at(131,14941,14972)"} true; - $t15 := 1; - assume $IsValid'u64'($t15); - - // $t6 := $t15 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:330:9+480 - assume {:print "$at(131,14844,15324)"} true; - $t6 := $t15; - - // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:330:9+480 - goto L2; - - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:332:53+13 - assume {:print "$at(131,15025,15038)"} true; -L0: - - // $t16 := get_field.active_validators($t10) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:332:52+32 - assume {:print "$at(131,15024,15056)"} true; - $t16 := $active_validators#$1_stake_ValidatorSet($t10); - - // $t17 := opaque begin: stake::find_validator($t16, $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:332:37+62 - - // assume And(WellFormed($t17), Le(Len(select option::Option.vec($t17)), 1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:332:37+62 - assume ($IsValid'$1_option_Option'u64''($t17) && (LenVec($vec#$1_option_Option'u64'($t17)) <= 1)); - - // assume Implies(option::$is_none($t17), forall i: Range(0, Len($t16)): Neq
(select stake::ValidatorInfo.addr(Index($t16, i)), $t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:332:37+62 - assume ($1_option_$is_none'u64'($t17) ==> (var $range_0 := $Range(0, LenVec($t16)); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var i := $i_1; - (!$IsEqual'address'($addr#$1_stake_ValidatorInfo(ReadVec($t16, i)), $t0)))))); - - // assume Implies(option::$is_some($t17), Eq
(select stake::ValidatorInfo.addr(Index($t16, option::$borrow($t17))), $t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:332:37+62 - assume ($1_option_$is_some'u64'($t17) ==> $IsEqual'address'($addr#$1_stake_ValidatorInfo(ReadVec($t16, $1_option_$borrow'u64'($t17))), $t0)); - - // assume Implies(option::$is_some($t17), stake::spec_contains($t16, $t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:332:37+62 - assume ($1_option_$is_some'u64'($t17) ==> $1_stake_spec_contains($t16, $t0)); - - // $t17 := opaque end: stake::find_validator($t16, $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:332:37+62 - - // $t18 := opaque begin: option::is_some($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:332:20+80 - - // assume WellFormed($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:332:20+80 - assume $IsValid'bool'($t18); - - // assume Eq($t18, option::spec_is_some($t17)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:332:20+80 - assume $IsEqual'bool'($t18, $1_option_spec_is_some'u64'($t17)); - - // $t18 := opaque end: option::is_some($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:332:20+80 - - // if ($t18) goto L4 else goto L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:332:16+336 - if ($t18) { goto L4; } else { goto L3; } - - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:332:16+336 -L4: - - // $t19 := 2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:333:13+23 - assume {:print "$at(131,15088,15111)"} true; - $t19 := 2; - assume $IsValid'u64'($t19); - - // $t5 := $t19 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:332:16+336 - assume {:print "$at(131,14988,15324)"} true; - $t5 := $t19; - - // goto L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:332:16+336 - goto L5; - - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:334:53+13 - assume {:print "$at(131,15164,15177)"} true; -L3: - - // $t20 := get_field.pending_inactive($t10) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:334:52+31 - assume {:print "$at(131,15163,15194)"} true; - $t20 := $pending_inactive#$1_stake_ValidatorSet($t10); - - // $t21 := opaque begin: stake::find_validator($t20, $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:334:37+61 - - // assume And(WellFormed($t21), Le(Len(select option::Option.vec($t21)), 1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:334:37+61 - assume ($IsValid'$1_option_Option'u64''($t21) && (LenVec($vec#$1_option_Option'u64'($t21)) <= 1)); - - // assume Implies(option::$is_none($t21), forall i: Range(0, Len($t20)): Neq
(select stake::ValidatorInfo.addr(Index($t20, i)), $t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:334:37+61 - assume ($1_option_$is_none'u64'($t21) ==> (var $range_0 := $Range(0, LenVec($t20)); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var i := $i_1; - (!$IsEqual'address'($addr#$1_stake_ValidatorInfo(ReadVec($t20, i)), $t0)))))); - - // assume Implies(option::$is_some($t21), Eq
(select stake::ValidatorInfo.addr(Index($t20, option::$borrow($t21))), $t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:334:37+61 - assume ($1_option_$is_some'u64'($t21) ==> $IsEqual'address'($addr#$1_stake_ValidatorInfo(ReadVec($t20, $1_option_$borrow'u64'($t21))), $t0)); - - // assume Implies(option::$is_some($t21), stake::spec_contains($t20, $t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:334:37+61 - assume ($1_option_$is_some'u64'($t21) ==> $1_stake_spec_contains($t20, $t0)); - - // $t21 := opaque end: stake::find_validator($t20, $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:334:37+61 - - // $t22 := opaque begin: option::is_some($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:334:20+79 - - // assume WellFormed($t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:334:20+79 - assume $IsValid'bool'($t22); - - // assume Eq($t22, option::spec_is_some($t21)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:334:20+79 - assume $IsEqual'bool'($t22, $1_option_spec_is_some'u64'($t21)); - - // $t22 := opaque end: option::is_some($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:334:20+79 - - // if ($t22) goto L7 else goto L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:334:16+197 - if ($t22) { goto L7; } else { goto L6; } - - // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:335:13+33 - assume {:print "$at(131,15226,15259)"} true; -L7: - - // $t23 := 3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:335:13+33 - assume {:print "$at(131,15226,15259)"} true; - $t23 := 3; - assume $IsValid'u64'($t23); - - // $t4 := $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:334:16+197 - assume {:print "$at(131,15127,15324)"} true; - $t4 := $t23; - - // goto L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:334:16+197 - goto L8; - - // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:337:13+25 - assume {:print "$at(131,15289,15314)"} true; -L6: - - // $t24 := 4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:337:13+25 - assume {:print "$at(131,15289,15314)"} true; - $t24 := 4; - assume $IsValid'u64'($t24); - - // $t4 := $t24 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:334:16+197 - assume {:print "$at(131,15127,15324)"} true; - $t4 := $t24; - - // label L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:334:16+197 -L8: - - // $t5 := $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:332:16+336 - assume {:print "$at(131,14988,15324)"} true; - $t5 := $t4; - - // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:332:16+336 -L5: - - // $t6 := $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:330:9+480 - assume {:print "$at(131,14844,15324)"} true; - $t6 := $t5; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:330:9+480 -L2: - - // trace_return[0]($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:330:9+480 - assume {:print "$at(131,14844,15324)"} true; - assume {:print "$track_return(38,25,0):", $t6} $t6 == $t6; - - // label L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:339:5+1 - assume {:print "$at(131,15329,15330)"} true; -L9: - - // return $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:339:5+1 - assume {:print "$at(131,15329,15330)"} true; - $ret0 := $t6; - return; - - // label L10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:339:5+1 -L10: - - // abort($t11) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:339:5+1 - assume {:print "$at(131,15329,15330)"} true; - $abort_code := $t11; - $abort_flag := true; - return; - -} - -// fun stake::increase_lockup_with_cap [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:763:5+905 -procedure {:inline 1} $1_stake_increase_lockup_with_cap(_$t0: $1_stake_OwnerCapability) returns () -{ - // declare local variables - var $t1: $1_staking_config_StakingConfig; - var $t2: int; - var $t3: int; - var $t4: int; - var $t5: $Mutation ($1_stake_StakePool); - var $t6: $1_staking_config_StakingConfig; - var $t7: int; - var $t8: $1_stake_StakePool; - var $t9: int; - var $t10: int; - var $t11: int; - var $t12: int; - var $t13: $1_staking_config_StakingConfig; - var $t14: $Mutation ($1_stake_StakePool); - var $t15: int; - var $t16: int; - var $t17: int; - var $t18: int; - var $t19: bool; - var $t20: int; - var $t21: int; - var $t22: $Mutation (int); - var $t23: $Mutation ($1_event_EventHandle'$1_stake_IncreaseLockupEvent'); - var $t24: $1_stake_IncreaseLockupEvent; - var $t0: $1_stake_OwnerCapability; - var $1_stake_StakePool_$modifies: [int]bool; - var $temp_0'$1_stake_OwnerCapability': $1_stake_OwnerCapability; - var $temp_0'$1_stake_StakePool': $1_stake_StakePool; - var $temp_0'$1_staking_config_StakingConfig': $1_staking_config_StakingConfig; - var $temp_0'address': int; - var $temp_0'u64': int; - $t0 := _$t0; - - // bytecode translation starts here - // assume Identical($t6, global(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:67:9+69 - assume {:print "$at(132,3047,3116)"} true; - assume ($t6 == $ResourceValue($1_staking_config_StakingConfig_$memory, 1)); - - // assume Identical($t7, select stake::OwnerCapability.pool_address($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:68:9+42 - assume {:print "$at(132,3125,3167)"} true; - assume ($t7 == $pool_address#$1_stake_OwnerCapability($t0)); - - // assume Identical($t8, global($t7)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:69:9+53 - assume {:print "$at(132,3176,3229)"} true; - assume ($t8 == $ResourceValue($1_stake_StakePool_$memory, $t7)); - - // assume Identical($t9, timestamp::spec_now_seconds()) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:71:9+48 - assume {:print "$at(132,3301,3349)"} true; - assume ($t9 == $1_timestamp_spec_now_seconds($1_timestamp_CurrentTimeMicroseconds_$memory)); - - // assume Identical($t10, select staking_config::StakingConfig.recurring_lockup_duration_secs($t6)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:72:9+51 - assume {:print "$at(132,3358,3409)"} true; - assume ($t10 == $recurring_lockup_duration_secs#$1_staking_config_StakingConfig($t6)); - - // trace_local[owner_cap]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:763:5+1 - assume {:print "$at(131,35298,35299)"} true; - assume {:print "$track_local(38,27,0):", $t0} $t0 == $t0; - - // $t11 := get_field.pool_address($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:764:28+22 - assume {:print "$at(131,35411,35433)"} true; - $t11 := $pool_address#$1_stake_OwnerCapability($t0); - - // trace_local[pool_address]($t11) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:764:13+12 - assume {:print "$track_local(38,27,4):", $t11} $t11 == $t11; - - // stake::assert_stake_pool_exists($t11) on_abort goto L4 with $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:765:9+38 - assume {:print "$at(131,35443,35481)"} true; - call $1_stake_assert_stake_pool_exists($t11); - if ($abort_flag) { - assume {:print "$at(131,35443,35481)"} true; - $t12 := $abort_code; - assume {:print "$track_abort(38,27):", $t12} $t12 == $t12; - goto L4; - } - - // $t13 := staking_config::get() on_abort goto L4 with $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:766:22+21 - assume {:print "$at(131,35504,35525)"} true; - call $t13 := $1_staking_config_get(); - if ($abort_flag) { - assume {:print "$at(131,35504,35525)"} true; - $t12 := $abort_code; - assume {:print "$track_abort(38,27):", $t12} $t12 == $t12; - goto L4; - } - - // trace_local[config]($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:766:13+6 - assume {:print "$track_local(38,27,1):", $t13} $t13 == $t13; - - // $t14 := borrow_global($t11) on_abort goto L4 with $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:768:26+17 - assume {:print "$at(131,35553,35570)"} true; - if (!$ResourceExists($1_stake_StakePool_$memory, $t11)) { - call $ExecFailureAbort(); - } else { - $t14 := $Mutation($Global($t11), EmptyVec(), $ResourceValue($1_stake_StakePool_$memory, $t11)); - } - if ($abort_flag) { - assume {:print "$at(131,35553,35570)"} true; - $t12 := $abort_code; - assume {:print "$track_abort(38,27):", $t12} $t12 == $t12; - goto L4; - } - - // trace_local[stake_pool]($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:768:13+10 - $temp_0'$1_stake_StakePool' := $Dereference($t14); - assume {:print "$track_local(38,27,5):", $temp_0'$1_stake_StakePool'} $temp_0'$1_stake_StakePool' == $temp_0'$1_stake_StakePool'; - - // $t15 := get_field.locked_until_secs($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:769:37+28 - assume {:print "$at(131,35633,35661)"} true; - $t15 := $locked_until_secs#$1_stake_StakePool($Dereference($t14)); - - // trace_local[old_locked_until_secs]($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:769:13+21 - assume {:print "$track_local(38,27,3):", $t15} $t15 == $t15; - - // $t16 := timestamp::now_seconds() on_abort goto L4 with $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:770:37+24 - assume {:print "$at(131,35699,35723)"} true; - call $t16 := $1_timestamp_now_seconds(); - if ($abort_flag) { - assume {:print "$at(131,35699,35723)"} true; - $t12 := $abort_code; - assume {:print "$track_abort(38,27):", $t12} $t12 == $t12; - goto L4; - } - - // $t17 := staking_config::get_recurring_lockup_duration($t13) on_abort goto L4 with $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:770:64+54 - call $t17 := $1_staking_config_get_recurring_lockup_duration($t13); - if ($abort_flag) { - assume {:print "$at(131,35726,35780)"} true; - $t12 := $abort_code; - assume {:print "$track_abort(38,27):", $t12} $t12 == $t12; - goto L4; - } - - // $t18 := +($t16, $t17) on_abort goto L4 with $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:770:62+1 - call $t18 := $AddU64($t16, $t17); - if ($abort_flag) { - assume {:print "$at(131,35724,35725)"} true; - $t12 := $abort_code; - assume {:print "$track_abort(38,27):", $t12} $t12 == $t12; - goto L4; - } - - // trace_local[new_locked_until_secs]($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:770:13+21 - assume {:print "$track_local(38,27,2):", $t18} $t18 == $t18; - - // $t19 := <($t15, $t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:771:39+1 - assume {:print "$at(131,35820,35821)"} true; - call $t19 := $Lt($t15, $t18); - - // if ($t19) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:771:9+96 - if ($t19) { goto L1; } else { goto L0; } - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:771:9+96 -L1: - - // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:771:9+96 - assume {:print "$at(131,35790,35886)"} true; - goto L2; - - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:771:9+96 -L0: - - // destroy($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:771:9+96 - assume {:print "$at(131,35790,35886)"} true; - - // $t20 := 18 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:771:88+15 - $t20 := 18; - assume $IsValid'u64'($t20); - - // $t21 := error::invalid_argument($t20) on_abort goto L4 with $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:771:64+40 - call $t21 := $1_error_invalid_argument($t20); - if ($abort_flag) { - assume {:print "$at(131,35845,35885)"} true; - $t12 := $abort_code; - assume {:print "$track_abort(38,27):", $t12} $t12 == $t12; - goto L4; - } - - // trace_abort($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:771:9+96 - assume {:print "$at(131,35790,35886)"} true; - assume {:print "$track_abort(38,27):", $t21} $t21 == $t21; - - // $t12 := move($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:771:9+96 - $t12 := $t21; - - // goto L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:771:9+96 - goto L4; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:772:40+21 - assume {:print "$at(131,35927,35948)"} true; -L2: - - // $t22 := borrow_field.locked_until_secs($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:772:9+28 - assume {:print "$at(131,35896,35924)"} true; - $t22 := $ChildMutation($t14, 4, $locked_until_secs#$1_stake_StakePool($Dereference($t14))); - - // write_ref($t22, $t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:772:9+52 - $t22 := $UpdateMutation($t22, $t18); - - // write_back[Reference($t14).locked_until_secs (u64)]($t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:772:9+52 - $t14 := $UpdateMutation($t14, $Update'$1_stake_StakePool'_locked_until_secs($Dereference($t14), $Dereference($t22))); - - // $t23 := borrow_field.increase_lockup_events($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:775:13+38 - assume {:print "$at(131,35990,36028)"} true; - $t23 := $ChildMutation($t14, 13, $increase_lockup_events#$1_stake_StakePool($Dereference($t14))); - - // $t24 := pack stake::IncreaseLockupEvent($t11, $t15, $t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:776:13+143 - assume {:print "$at(131,36042,36185)"} true; - $t24 := $1_stake_IncreaseLockupEvent($t11, $t15, $t18); - - // opaque begin: event::emit_event($t23, $t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:774:9+237 - assume {:print "$at(131,35959,36196)"} true; - - // opaque end: event::emit_event($t23, $t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:774:9+237 - - // write_back[Reference($t14).increase_lockup_events (event::EventHandle)]($t23) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:774:9+237 - $t14 := $UpdateMutation($t14, $Update'$1_stake_StakePool'_increase_lockup_events($Dereference($t14), $Dereference($t23))); - - // write_back[stake::StakePool@]($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:774:9+237 - $1_stake_StakePool_$memory := $ResourceUpdate($1_stake_StakePool_$memory, $GlobalLocationAddress($t14), - $Dereference($t14)); - - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:782:5+1 - assume {:print "$at(131,36202,36203)"} true; -L3: - - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:782:5+1 - assume {:print "$at(131,36202,36203)"} true; - return; - - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:782:5+1 -L4: - - // abort($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:782:5+1 - assume {:print "$at(131,36202,36203)"} true; - $abort_code := $t12; - $abort_flag := true; - return; - -} - -// fun stake::set_delegated_voter_with_cap [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:601:5+331 -procedure {:inline 1} $1_stake_set_delegated_voter_with_cap(_$t0: $1_stake_OwnerCapability, _$t1: int) returns () -{ - // declare local variables - var $t2: int; - var $t3: $Mutation ($1_stake_StakePool); - var $t4: int; - var $t5: int; - var $t6: int; - var $t7: $Mutation ($1_stake_StakePool); - var $t8: $Mutation (int); - var $t0: $1_stake_OwnerCapability; - var $t1: int; - var $1_stake_StakePool_$modifies: [int]bool; - var $temp_0'$1_stake_OwnerCapability': $1_stake_OwnerCapability; - var $temp_0'$1_stake_StakePool': $1_stake_StakePool; - var $temp_0'address': int; - $t0 := _$t0; - $t1 := _$t1; - - // bytecode translation starts here - // assume Identical($t4, select stake::OwnerCapability.pool_address($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:136:9+42 - assume {:print "$at(132,6139,6181)"} true; - assume ($t4 == $pool_address#$1_stake_OwnerCapability($t0)); - - // trace_local[owner_cap]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:601:5+1 - assume {:print "$at(131,27301,27302)"} true; - assume {:print "$track_local(38,44,0):", $t0} $t0 == $t0; - - // trace_local[new_voter]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:601:5+1 - assume {:print "$track_local(38,44,1):", $t1} $t1 == $t1; - - // $t5 := get_field.pool_address($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:602:28+22 - assume {:print "$at(131,27438,27460)"} true; - $t5 := $pool_address#$1_stake_OwnerCapability($t0); - - // trace_local[pool_address]($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:602:13+12 - assume {:print "$track_local(38,44,2):", $t5} $t5 == $t5; - - // stake::assert_stake_pool_exists($t5) on_abort goto L2 with $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:603:9+38 - assume {:print "$at(131,27470,27508)"} true; - call $1_stake_assert_stake_pool_exists($t5); - if ($abort_flag) { - assume {:print "$at(131,27470,27508)"} true; - $t6 := $abort_code; - assume {:print "$track_abort(38,44):", $t6} $t6 == $t6; - goto L2; - } - - // $t7 := borrow_global($t5) on_abort goto L2 with $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:604:26+17 - assume {:print "$at(131,27535,27552)"} true; - if (!$ResourceExists($1_stake_StakePool_$memory, $t5)) { - call $ExecFailureAbort(); - } else { - $t7 := $Mutation($Global($t5), EmptyVec(), $ResourceValue($1_stake_StakePool_$memory, $t5)); - } - if ($abort_flag) { - assume {:print "$at(131,27535,27552)"} true; - $t6 := $abort_code; - assume {:print "$track_abort(38,44):", $t6} $t6 == $t6; - goto L2; - } - - // trace_local[stake_pool]($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:604:13+10 - $temp_0'$1_stake_StakePool' := $Dereference($t7); - assume {:print "$track_local(38,44,3):", $temp_0'$1_stake_StakePool'} $temp_0'$1_stake_StakePool' == $temp_0'$1_stake_StakePool'; - - // $t8 := borrow_field.delegated_voter($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:605:9+26 - assume {:print "$at(131,27587,27613)"} true; - $t8 := $ChildMutation($t7, 6, $delegated_voter#$1_stake_StakePool($Dereference($t7))); - - // write_ref($t8, $t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:605:9+38 - $t8 := $UpdateMutation($t8, $t1); - - // write_back[Reference($t7).delegated_voter (address)]($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:605:9+38 - $t7 := $UpdateMutation($t7, $Update'$1_stake_StakePool'_delegated_voter($Dereference($t7), $Dereference($t8))); - - // write_back[stake::StakePool@]($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:605:9+38 - $1_stake_StakePool_$memory := $ResourceUpdate($1_stake_StakePool_$memory, $GlobalLocationAddress($t7), - $Dereference($t7)); - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:606:5+1 - assume {:print "$at(131,27631,27632)"} true; -L1: - - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:606:5+1 - assume {:print "$at(131,27631,27632)"} true; - return; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:606:5+1 -L2: - - // abort($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:606:5+1 - assume {:print "$at(131,27631,27632)"} true; - $abort_code := $t6; - $abort_flag := true; - return; - -} - -// fun stake::set_operator_with_cap [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:575:5+611 -procedure {:inline 1} $1_stake_set_operator_with_cap(_$t0: $1_stake_OwnerCapability, _$t1: int) returns () -{ - // declare local variables - var $t2: int; - var $t3: int; - var $t4: $Mutation ($1_stake_StakePool); - var $t5: int; - var $t6: int; - var $t7: int; - var $t8: $Mutation ($1_stake_StakePool); - var $t9: int; - var $t10: $Mutation (int); - var $t11: $Mutation ($1_event_EventHandle'$1_stake_SetOperatorEvent'); - var $t12: $1_stake_SetOperatorEvent; - var $t0: $1_stake_OwnerCapability; - var $t1: int; - var $1_stake_StakePool_$modifies: [int]bool; - var $temp_0'$1_stake_OwnerCapability': $1_stake_OwnerCapability; - var $temp_0'$1_stake_StakePool': $1_stake_StakePool; - var $temp_0'address': int; - $t0 := _$t0; - $t1 := _$t1; - - // bytecode translation starts here - // assume Identical($t5, select stake::OwnerCapability.pool_address($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:104:9+42 - assume {:print "$at(132,4820,4862)"} true; - assume ($t5 == $pool_address#$1_stake_OwnerCapability($t0)); - - // trace_local[owner_cap]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:575:5+1 - assume {:print "$at(131,26174,26175)"} true; - assume {:print "$track_local(38,46,0):", $t0} $t0 == $t0; - - // trace_local[new_operator]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:575:5+1 - assume {:print "$track_local(38,46,1):", $t1} $t1 == $t1; - - // $t6 := get_field.pool_address($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:576:28+22 - assume {:print "$at(131,26307,26329)"} true; - $t6 := $pool_address#$1_stake_OwnerCapability($t0); - - // trace_local[pool_address]($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:576:13+12 - assume {:print "$track_local(38,46,3):", $t6} $t6 == $t6; - - // stake::assert_stake_pool_exists($t6) on_abort goto L2 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:577:9+38 - assume {:print "$at(131,26339,26377)"} true; - call $1_stake_assert_stake_pool_exists($t6); - if ($abort_flag) { - assume {:print "$at(131,26339,26377)"} true; - $t7 := $abort_code; - assume {:print "$track_abort(38,46):", $t7} $t7 == $t7; - goto L2; - } - - // $t8 := borrow_global($t6) on_abort goto L2 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:578:26+17 - assume {:print "$at(131,26404,26421)"} true; - if (!$ResourceExists($1_stake_StakePool_$memory, $t6)) { - call $ExecFailureAbort(); - } else { - $t8 := $Mutation($Global($t6), EmptyVec(), $ResourceValue($1_stake_StakePool_$memory, $t6)); - } - if ($abort_flag) { - assume {:print "$at(131,26404,26421)"} true; - $t7 := $abort_code; - assume {:print "$track_abort(38,46):", $t7} $t7 == $t7; - goto L2; - } - - // trace_local[stake_pool]($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:578:13+10 - $temp_0'$1_stake_StakePool' := $Dereference($t8); - assume {:print "$track_local(38,46,4):", $temp_0'$1_stake_StakePool'} $temp_0'$1_stake_StakePool' == $temp_0'$1_stake_StakePool'; - - // $t9 := get_field.operator_address($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:579:28+27 - assume {:print "$at(131,26475,26502)"} true; - $t9 := $operator_address#$1_stake_StakePool($Dereference($t8)); - - // trace_local[old_operator]($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:579:13+12 - assume {:print "$track_local(38,46,2):", $t9} $t9 == $t9; - - // $t10 := borrow_field.operator_address($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:580:9+27 - assume {:print "$at(131,26512,26539)"} true; - $t10 := $ChildMutation($t8, 5, $operator_address#$1_stake_StakePool($Dereference($t8))); - - // write_ref($t10, $t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:580:9+42 - $t10 := $UpdateMutation($t10, $t1); - - // write_back[Reference($t8).operator_address (address)]($t10) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:580:9+42 - $t8 := $UpdateMutation($t8, $Update'$1_stake_StakePool'_operator_address($Dereference($t8), $Dereference($t10))); - - // $t11 := borrow_field.set_operator_events($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:583:13+35 - assume {:print "$at(131,26596,26631)"} true; - $t11 := $ChildMutation($t8, 8, $set_operator_events#$1_stake_StakePool($Dereference($t8))); - - // $t12 := pack stake::SetOperatorEvent($t6, $t9, $t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:584:13+122 - assume {:print "$at(131,26645,26767)"} true; - $t12 := $1_stake_SetOperatorEvent($t6, $t9, $t1); - - // opaque begin: event::emit_event($t11, $t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:582:9+213 - assume {:print "$at(131,26565,26778)"} true; - - // opaque end: event::emit_event($t11, $t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:582:9+213 - - // write_back[Reference($t8).set_operator_events (event::EventHandle)]($t11) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:582:9+213 - $t8 := $UpdateMutation($t8, $Update'$1_stake_StakePool'_set_operator_events($Dereference($t8), $Dereference($t11))); - - // write_back[stake::StakePool@]($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:582:9+213 - $1_stake_StakePool_$memory := $ResourceUpdate($1_stake_StakePool_$memory, $GlobalLocationAddress($t8), - $Dereference($t8)); - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:590:5+1 - assume {:print "$at(131,26784,26785)"} true; -L1: - - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:590:5+1 - assume {:print "$at(131,26784,26785)"} true; - return; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:590:5+1 -L2: - - // abort($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:590:5+1 - assume {:print "$at(131,26784,26785)"} true; - $abort_code := $t7; - $abort_flag := true; - return; - -} - -// fun stake::stake_pool_exists [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:400:5+89 -procedure {:inline 1} $1_stake_stake_pool_exists(_$t0: int) returns ($ret0: bool) -{ - // declare local variables - var $t1: bool; - var $t0: int; - var $temp_0'address': int; - var $temp_0'bool': bool; - $t0 := _$t0; - - // bytecode translation starts here - // trace_local[addr]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:400:5+1 - assume {:print "$at(131,18212,18213)"} true; - assume {:print "$track_local(38,47,0):", $t0} $t0 == $t0; - - // $t1 := exists($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:401:9+6 - assume {:print "$at(131,18272,18278)"} true; - $t1 := $ResourceExists($1_stake_StakePool_$memory, $t0); - - // trace_return[0]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:401:9+23 - assume {:print "$track_return(38,47,0):", $t1} $t1 == $t1; - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:402:5+1 - assume {:print "$at(131,18300,18301)"} true; -L1: - - // return $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:402:5+1 - assume {:print "$at(131,18300,18301)"} true; - $ret0 := $t1; - return; - -} - -// fun stake::unlock_with_cap [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:849:5+1066 -procedure {:inline 1} $1_stake_unlock_with_cap(_$t0: int, _$t1: $1_stake_OwnerCapability) returns () -{ - // declare local variables - var $t2: int; - var $t3: int; - var $t4: $Mutation ($1_stake_StakePool); - var $t5: $1_coin_Coin'$1_aptos_coin_AptosCoin'; - var $t6: int; - var $t7: $1_stake_StakePool; - var $t8: int; - var $t9: int; - var $t10: bool; - var $t11: int; - var $t12: int; - var $t13: $Mutation ($1_stake_StakePool); - var $t14: $1_coin_Coin'$1_aptos_coin_AptosCoin'; - var $t15: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; - var $t16: int; - var $t17: int; - var $t18: $Mutation ($1_coin_Coin'$1_aptos_coin_AptosCoin'); - var $t19: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; - var $t20: $1_coin_Coin'$1_aptos_coin_AptosCoin'; - var $t21: $Mutation ($1_coin_Coin'$1_aptos_coin_AptosCoin'); - var $t22: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; - var $t23: $Mutation ($1_event_EventHandle'$1_stake_UnlockStakeEvent'); - var $t24: $1_stake_UnlockStakeEvent; - var $t0: int; - var $t1: $1_stake_OwnerCapability; - var $1_stake_StakePool_$modifies: [int]bool; - var $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin'': $1_coin_Coin'$1_aptos_coin_AptosCoin'; - var $temp_0'$1_stake_OwnerCapability': $1_stake_OwnerCapability; - var $temp_0'$1_stake_StakePool': $1_stake_StakePool; - var $temp_0'address': int; - var $temp_0'u64': int; - $t0 := _$t0; - $t1 := _$t1; - - // bytecode translation starts here - // assume Identical($t6, select stake::OwnerCapability.pool_address($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:56:9+42 - assume {:print "$at(132,2499,2541)"} true; - assume ($t6 == $pool_address#$1_stake_OwnerCapability($t1)); - - // assume Identical($t7, global($t6)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:57:9+53 - assume {:print "$at(132,2550,2603)"} true; - assume ($t7 == $ResourceValue($1_stake_StakePool_$memory, $t6)); - - // assume Identical($t8, math64::$min($t0, select coin::Coin.value(select stake::StakePool.active($t7)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:60:9+76 - assume {:print "$at(132,2725,2801)"} true; - assume ($t8 == $1_math64_$min($t0, $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($active#$1_stake_StakePool($t7)))); - - // trace_local[amount]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:849:5+1 - assume {:print "$at(131,39738,39739)"} true; - assume {:print "$track_local(38,50,0):", $t0} $t0 == $t0; - - // trace_local[owner_cap]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:849:5+1 - assume {:print "$track_local(38,50,1):", $t1} $t1 == $t1; - - // $t9 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:851:23+1 - assume {:print "$at(131,39925,39926)"} true; - $t9 := 0; - assume $IsValid'u64'($t9); - - // $t10 := ==($t0, $t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:851:20+2 - $t10 := $IsEqual'u64'($t0, $t9); - - // if ($t10) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:851:9+47 - if ($t10) { goto L1; } else { goto L0; } - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:852:13+6 - assume {:print "$at(131,39942,39948)"} true; -L1: - - // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:852:13+6 - assume {:print "$at(131,39942,39948)"} true; - goto L2; - - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:857:28+9 - assume {:print "$at(131,40171,40180)"} true; -L0: - - // $t11 := get_field.pool_address($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:857:28+22 - assume {:print "$at(131,40171,40193)"} true; - $t11 := $pool_address#$1_stake_OwnerCapability($t1); - - // trace_local[pool_address]($t11) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:857:13+12 - assume {:print "$track_local(38,50,3):", $t11} $t11 == $t11; - - // stake::assert_stake_pool_exists($t11) on_abort goto L3 with $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:858:9+38 - assume {:print "$at(131,40203,40241)"} true; - call $1_stake_assert_stake_pool_exists($t11); - if ($abort_flag) { - assume {:print "$at(131,40203,40241)"} true; - $t12 := $abort_code; - assume {:print "$track_abort(38,50):", $t12} $t12 == $t12; - goto L3; - } - - // $t13 := borrow_global($t11) on_abort goto L3 with $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:859:26+17 - assume {:print "$at(131,40268,40285)"} true; - if (!$ResourceExists($1_stake_StakePool_$memory, $t11)) { - call $ExecFailureAbort(); - } else { - $t13 := $Mutation($Global($t11), EmptyVec(), $ResourceValue($1_stake_StakePool_$memory, $t11)); - } - if ($abort_flag) { - assume {:print "$at(131,40268,40285)"} true; - $t12 := $abort_code; - assume {:print "$track_abort(38,50):", $t12} $t12 == $t12; - goto L3; - } - - // trace_local[stake_pool]($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:859:13+10 - $temp_0'$1_stake_StakePool' := $Dereference($t13); - assume {:print "$track_local(38,50,4):", $temp_0'$1_stake_StakePool'} $temp_0'$1_stake_StakePool' == $temp_0'$1_stake_StakePool'; - - // $t14 := get_field.active($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:861:46+18 - assume {:print "$at(131,40414,40432)"} true; - $t14 := $active#$1_stake_StakePool($Dereference($t13)); - - // assume Identical($t15, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 - assume {:print "$at(95,1664,1763)"} true; - assume ($t15 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); - - // $t16 := coin::value($t14) on_abort goto L3 with $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:861:34+31 - assume {:print "$at(131,40402,40433)"} true; - call $t16 := $1_coin_value'$1_aptos_coin_AptosCoin'($t14); - if ($abort_flag) { - assume {:print "$at(131,40402,40433)"} true; - $t12 := $abort_code; - assume {:print "$track_abort(38,50):", $t12} $t12 == $t12; - goto L3; - } - - // $t17 := math64::min($t0, $t16) on_abort goto L3 with $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:861:22+44 - call $t17 := $1_math64_min($t0, $t16); - if ($abort_flag) { - assume {:print "$at(131,40390,40434)"} true; - $t12 := $abort_code; - assume {:print "$track_abort(38,50):", $t12} $t12 == $t12; - goto L3; - } - - // trace_local[amount#1]($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:861:13+6 - assume {:print "$track_local(38,50,2):", $t17} $t17 == $t17; - - // $t18 := borrow_field.active($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:862:44+22 - assume {:print "$at(131,40479,40501)"} true; - $t18 := $ChildMutation($t13, 0, $active#$1_stake_StakePool($Dereference($t13))); - - // assume Identical($t19, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 - assume {:print "$at(95,1664,1763)"} true; - assume ($t19 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); - - // $t20 := coin::extract($t18, $t17) on_abort goto L3 with $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:862:30+45 - assume {:print "$at(131,40465,40510)"} true; - call $t20,$t18 := $1_coin_extract'$1_aptos_coin_AptosCoin'($t18, $t17); - if ($abort_flag) { - assume {:print "$at(131,40465,40510)"} true; - $t12 := $abort_code; - assume {:print "$track_abort(38,50):", $t12} $t12 == $t12; - goto L3; - } - - // write_back[Reference($t13).active (coin::Coin)]($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:862:30+45 - $t13 := $UpdateMutation($t13, $Update'$1_stake_StakePool'_active($Dereference($t13), $Dereference($t18))); - - // trace_local[unlocked_stake]($t20) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:862:13+14 - assume {:print "$track_local(38,50,5):", $t20} $t20 == $t20; - - // $t21 := borrow_field.pending_inactive($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:863:32+32 - assume {:print "$at(131,40543,40575)"} true; - $t21 := $ChildMutation($t13, 3, $pending_inactive#$1_stake_StakePool($Dereference($t13))); - - // assume Identical($t22, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 - assume {:print "$at(95,1664,1763)"} true; - assume ($t22 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); - - // coin::merge($t21, $t20) on_abort goto L3 with $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:863:9+72 - assume {:print "$at(131,40520,40592)"} true; - call $t21 := $1_coin_merge'$1_aptos_coin_AptosCoin'($t21, $t20); - if ($abort_flag) { - assume {:print "$at(131,40520,40592)"} true; - $t12 := $abort_code; - assume {:print "$track_abort(38,50):", $t12} $t12 == $t12; - goto L3; - } - - // write_back[Reference($t13).pending_inactive (coin::Coin)]($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:863:9+72 - $t13 := $UpdateMutation($t13, $Update'$1_stake_StakePool'_pending_inactive($Dereference($t13), $Dereference($t21))); - - // $t23 := borrow_field.unlock_stake_events($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:866:13+35 - assume {:print "$at(131,40634,40669)"} true; - $t23 := $ChildMutation($t13, 16, $unlock_stake_events#$1_stake_StakePool($Dereference($t13))); - - // $t24 := pack stake::UnlockStakeEvent($t11, $t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:867:13+103 - assume {:print "$at(131,40683,40786)"} true; - $t24 := $1_stake_UnlockStakeEvent($t11, $t17); - - // opaque begin: event::emit_event($t23, $t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:865:9+194 - assume {:print "$at(131,40603,40797)"} true; - - // opaque end: event::emit_event($t23, $t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:865:9+194 - - // write_back[Reference($t13).unlock_stake_events (event::EventHandle)]($t23) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:865:9+194 - $t13 := $UpdateMutation($t13, $Update'$1_stake_StakePool'_unlock_stake_events($Dereference($t13), $Dereference($t23))); - - // write_back[stake::StakePool@]($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:865:9+194 - $1_stake_StakePool_$memory := $ResourceUpdate($1_stake_StakePool_$memory, $GlobalLocationAddress($t13), - $Dereference($t13)); - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:872:5+1 - assume {:print "$at(131,40803,40804)"} true; -L2: - - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:872:5+1 - assume {:print "$at(131,40803,40804)"} true; - return; - - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:872:5+1 -L3: - - // abort($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:872:5+1 - assume {:print "$at(131,40803,40804)"} true; - $abort_code := $t12; - $abort_flag := true; - return; - -} - -// fun stake::withdraw_with_cap [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:887:5+1450 -procedure {:inline 1} $1_stake_withdraw_with_cap(_$t0: $1_stake_OwnerCapability, _$t1: int) returns ($ret0: $1_coin_Coin'$1_aptos_coin_AptosCoin') -{ - // declare local variables - var $t2: bool; - var $t3: $1_coin_Coin'$1_aptos_coin_AptosCoin'; - var $t4: int; - var $t5: $Mutation ($1_stake_StakePool); - var $t6: int; - var $t7: int; - var $t8: $Mutation ($1_stake_StakePool); - var $t9: $1_stake_ValidatorSet; - var $t10: int; - var $t11: int; - var $t12: bool; - var $t13: int; - var $t14: int; - var $t15: bool; - var $t16: $Mutation ($1_coin_Coin'$1_aptos_coin_AptosCoin'); - var $t17: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; - var $t18: $1_coin_Coin'$1_aptos_coin_AptosCoin'; - var $t19: $Mutation ($1_coin_Coin'$1_aptos_coin_AptosCoin'); - var $t20: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; - var $t21: $1_coin_Coin'$1_aptos_coin_AptosCoin'; - var $t22: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; - var $t23: int; - var $t24: int; - var $t25: int; - var $t26: bool; - var $t27: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; - var $t28: $1_coin_Coin'$1_aptos_coin_AptosCoin'; - var $t29: $1_coin_Coin'$1_aptos_coin_AptosCoin'; - var $t30: $Mutation ($1_event_EventHandle'$1_stake_WithdrawStakeEvent'); - var $t31: $1_stake_WithdrawStakeEvent; - var $t32: $Mutation ($1_coin_Coin'$1_aptos_coin_AptosCoin'); - var $t33: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; - var $t34: $1_coin_Coin'$1_aptos_coin_AptosCoin'; - var $t0: $1_stake_OwnerCapability; - var $t1: int; - var $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin'': $1_coin_Coin'$1_aptos_coin_AptosCoin'; - var $temp_0'$1_stake_OwnerCapability': $1_stake_OwnerCapability; - var $temp_0'$1_stake_StakePool': $1_stake_StakePool; - var $temp_0'address': int; - var $temp_0'u64': int; - $t0 := _$t0; - $t1 := _$t1; - - // bytecode translation starts here - // trace_local[owner_cap]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:887:5+1 - assume {:print "$at(131,41404,41405)"} true; - assume {:print "$track_local(38,56,0):", $t0} $t0 == $t0; - - // trace_local[withdraw_amount]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:887:5+1 - assume {:print "$track_local(38,56,1):", $t1} $t1 == $t1; - - // $t6 := get_field.pool_address($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:891:28+22 - assume {:print "$at(131,41585,41607)"} true; - $t6 := $pool_address#$1_stake_OwnerCapability($t0); - - // trace_local[pool_address]($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:891:13+12 - assume {:print "$track_local(38,56,4):", $t6} $t6 == $t6; - - // stake::assert_stake_pool_exists($t6) on_abort goto L8 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:892:9+38 - assume {:print "$at(131,41617,41655)"} true; - call $1_stake_assert_stake_pool_exists($t6); - if ($abort_flag) { - assume {:print "$at(131,41617,41655)"} true; - $t7 := $abort_code; - assume {:print "$track_abort(38,56):", $t7} $t7 == $t7; - goto L8; - } - - // $t8 := borrow_global($t6) on_abort goto L8 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:893:26+17 - assume {:print "$at(131,41682,41699)"} true; - if (!$ResourceExists($1_stake_StakePool_$memory, $t6)) { - call $ExecFailureAbort(); - } else { - $t8 := $Mutation($Global($t6), EmptyVec(), $ResourceValue($1_stake_StakePool_$memory, $t6)); - } - if ($abort_flag) { - assume {:print "$at(131,41682,41699)"} true; - $t7 := $abort_code; - assume {:print "$track_abort(38,56):", $t7} $t7 == $t7; - goto L8; - } - - // trace_local[stake_pool]($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:893:13+10 - $temp_0'$1_stake_StakePool' := $Dereference($t8); - assume {:print "$track_local(38,56,5):", $temp_0'$1_stake_StakePool'} $temp_0'$1_stake_StakePool' == $temp_0'$1_stake_StakePool'; - - // assume Identical($t9, global(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:246:9+59 - assume {:print "$at(132,10599,10658)"} true; - assume ($t9 == $ResourceValue($1_stake_ValidatorSet_$memory, 1)); - - // $t10 := stake::get_validator_state($t6) on_abort goto L8 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:897:13+33 - assume {:print "$at(131,42040,42073)"} true; - call $t10 := $1_stake_get_validator_state($t6); - if ($abort_flag) { - assume {:print "$at(131,42040,42073)"} true; - $t7 := $abort_code; - assume {:print "$track_abort(38,56):", $t7} $t7 == $t7; - goto L8; - } - - // $t11 := 4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:897:50+25 - $t11 := 4; - assume $IsValid'u64'($t11); - - // $t12 := ==($t10, $t11) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:897:47+2 - $t12 := $IsEqual'u64'($t10, $t11); - - // if ($t12) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:897:13+134 - if ($t12) { goto L1; } else { goto L0; } - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:898:13+24 - assume {:print "$at(131,42118,42142)"} true; -L1: - - // $t13 := timestamp::now_seconds() on_abort goto L8 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:898:13+24 - assume {:print "$at(131,42118,42142)"} true; - call $t13 := $1_timestamp_now_seconds(); - if ($abort_flag) { - assume {:print "$at(131,42118,42142)"} true; - $t7 := $abort_code; - assume {:print "$track_abort(38,56):", $t7} $t7 == $t7; - goto L8; - } - - // $t14 := get_field.locked_until_secs($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:898:41+28 - $t14 := $locked_until_secs#$1_stake_StakePool($Dereference($t8)); - - // $t2 := >=($t13, $t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:898:38+2 - call $t2 := $Ge($t13, $t14); - - // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:897:13+134 - assume {:print "$at(131,42040,42174)"} true; - goto L2; - - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:897:13+134 -L0: - - // $t15 := false at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:897:13+134 - assume {:print "$at(131,42040,42174)"} true; - $t15 := false; - assume $IsValid'bool'($t15); - - // $t2 := $t15 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:897:13+134 - $t2 := $t15; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:897:13+134 -L2: - - // if ($t2) goto L4 else goto L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:897:9+320 - assume {:print "$at(131,42036,42356)"} true; - if ($t2) { goto L4; } else { goto L3; } - - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:899:65+10 - assume {:print "$at(131,42242,42252)"} true; -L4: - - // $t16 := borrow_field.pending_inactive($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:899:60+32 - assume {:print "$at(131,42237,42269)"} true; - $t16 := $ChildMutation($t8, 3, $pending_inactive#$1_stake_StakePool($Dereference($t8))); - - // assume Identical($t17, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 - assume {:print "$at(95,1664,1763)"} true; - assume ($t17 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); - - // $t18 := coin::extract_all($t16) on_abort goto L8 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:899:42+51 - assume {:print "$at(131,42219,42270)"} true; - call $t18,$t16 := $1_coin_extract_all'$1_aptos_coin_AptosCoin'($t16); - if ($abort_flag) { - assume {:print "$at(131,42219,42270)"} true; - $t7 := $abort_code; - assume {:print "$track_abort(38,56):", $t7} $t7 == $t7; - goto L8; - } - - // write_back[Reference($t8).pending_inactive (coin::Coin)]($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:899:42+51 - $t8 := $UpdateMutation($t8, $Update'$1_stake_StakePool'_pending_inactive($Dereference($t8), $Dereference($t16))); - - // trace_local[pending_inactive_stake]($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:899:17+22 - assume {:print "$track_local(38,56,3):", $t18} $t18 == $t18; - - // $t19 := borrow_field.inactive($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:900:25+24 - assume {:print "$at(131,42296,42320)"} true; - $t19 := $ChildMutation($t8, 1, $inactive#$1_stake_StakePool($Dereference($t8))); - - // assume Identical($t20, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 - assume {:print "$at(95,1664,1763)"} true; - assume ($t20 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); - - // coin::merge($t19, $t18) on_abort goto L8 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:900:13+61 - assume {:print "$at(131,42284,42345)"} true; - call $t19 := $1_coin_merge'$1_aptos_coin_AptosCoin'($t19, $t18); - if ($abort_flag) { - assume {:print "$at(131,42284,42345)"} true; - $t7 := $abort_code; - assume {:print "$track_abort(38,56):", $t7} $t7 == $t7; - goto L8; - } - - // write_back[Reference($t8).inactive (coin::Coin)]($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:900:13+61 - $t8 := $UpdateMutation($t8, $Update'$1_stake_StakePool'_inactive($Dereference($t8), $Dereference($t19))); - - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:904:31+15 - assume {:print "$at(131,42445,42460)"} true; -L3: - - // $t21 := get_field.inactive($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:904:60+20 - assume {:print "$at(131,42474,42494)"} true; - $t21 := $inactive#$1_stake_StakePool($Dereference($t8)); - - // assume Identical($t22, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 - assume {:print "$at(95,1664,1763)"} true; - assume ($t22 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); - - // $t23 := coin::value($t21) on_abort goto L8 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:904:48+33 - assume {:print "$at(131,42462,42495)"} true; - call $t23 := $1_coin_value'$1_aptos_coin_AptosCoin'($t21); - if ($abort_flag) { - assume {:print "$at(131,42462,42495)"} true; - $t7 := $abort_code; - assume {:print "$track_abort(38,56):", $t7} $t7 == $t7; - goto L8; - } - - // $t24 := math64::min($t1, $t23) on_abort goto L8 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:904:27+55 - call $t24 := $1_math64_min($t1, $t23); - if ($abort_flag) { - assume {:print "$at(131,42441,42496)"} true; - $t7 := $abort_code; - assume {:print "$track_abort(38,56):", $t7} $t7 == $t7; - goto L8; - } - - // trace_local[withdraw_amount]($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:904:9+15 - assume {:print "$track_local(38,56,1):", $t24} $t24 == $t24; - - // $t25 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:905:32+1 - assume {:print "$at(131,42529,42530)"} true; - $t25 := 0; - assume $IsValid'u64'($t25); - - // $t26 := ==($t24, $t25) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:905:29+2 - $t26 := $IsEqual'u64'($t24, $t25); - - // if ($t26) goto L6 else goto L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:905:9+56 - if ($t26) { goto L6; } else { goto L5; } - - // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:905:35+30 -L6: - - // write_back[stake::StakePool@]($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:905:35+30 - assume {:print "$at(131,42532,42562)"} true; - $1_stake_StakePool_$memory := $ResourceUpdate($1_stake_StakePool_$memory, $GlobalLocationAddress($t8), - $Dereference($t8)); - - // destroy($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:905:35+30 - - // assume Identical($t27, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 - assume {:print "$at(95,1664,1763)"} true; - assume ($t27 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); - - // $t28 := coin::zero() on_abort goto L8 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:905:42+23 - assume {:print "$at(131,42539,42562)"} true; - call $t28 := $1_coin_zero'$1_aptos_coin_AptosCoin'(); - if ($abort_flag) { - assume {:print "$at(131,42539,42562)"} true; - $t7 := $abort_code; - assume {:print "$track_abort(38,56):", $t7} $t7 == $t7; - goto L8; - } - - // trace_return[0]($t28) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:905:35+30 - assume {:print "$track_return(38,56,0):", $t28} $t28 == $t28; - - // $t29 := move($t28) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:905:35+30 - $t29 := $t28; - - // goto L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:905:35+30 - goto L7; - - // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:908:18+10 - assume {:print "$at(131,42609,42619)"} true; -L5: - - // $t30 := borrow_field.withdraw_stake_events($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:908:13+37 - assume {:print "$at(131,42604,42641)"} true; - $t30 := $ChildMutation($t8, 17, $withdraw_stake_events#$1_stake_StakePool($Dereference($t8))); - - // $t31 := pack stake::WithdrawStakeEvent($t6, $t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:909:13+115 - assume {:print "$at(131,42655,42770)"} true; - $t31 := $1_stake_WithdrawStakeEvent($t6, $t24); - - // opaque begin: event::emit_event($t30, $t31) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:907:9+208 - assume {:print "$at(131,42573,42781)"} true; - - // opaque end: event::emit_event($t30, $t31) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:907:9+208 - - // write_back[Reference($t8).withdraw_stake_events (event::EventHandle)]($t30) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:907:9+208 - $t8 := $UpdateMutation($t8, $Update'$1_stake_StakePool'_withdraw_stake_events($Dereference($t8), $Dereference($t30))); - - // $t32 := borrow_field.inactive($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:915:23+24 - assume {:print "$at(131,42806,42830)"} true; - $t32 := $ChildMutation($t8, 1, $inactive#$1_stake_StakePool($Dereference($t8))); - - // assume Identical($t33, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 - assume {:print "$at(95,1664,1763)"} true; - assume ($t33 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); - - // $t34 := coin::extract($t32, $t24) on_abort goto L8 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:915:9+56 - assume {:print "$at(131,42792,42848)"} true; - call $t34,$t32 := $1_coin_extract'$1_aptos_coin_AptosCoin'($t32, $t24); - if ($abort_flag) { - assume {:print "$at(131,42792,42848)"} true; - $t7 := $abort_code; - assume {:print "$track_abort(38,56):", $t7} $t7 == $t7; - goto L8; - } - - // write_back[Reference($t8).inactive (coin::Coin)]($t32) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:915:9+56 - $t8 := $UpdateMutation($t8, $Update'$1_stake_StakePool'_inactive($Dereference($t8), $Dereference($t32))); - - // write_back[stake::StakePool@]($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:915:9+56 - $1_stake_StakePool_$memory := $ResourceUpdate($1_stake_StakePool_$memory, $GlobalLocationAddress($t8), - $Dereference($t8)); - - // trace_return[0]($t34) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:915:9+56 - assume {:print "$track_return(38,56,0):", $t34} $t34 == $t34; - - // $t29 := move($t34) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:915:9+56 - $t29 := $t34; - - // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:916:5+1 - assume {:print "$at(131,42853,42854)"} true; -L7: - - // return $t29 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:916:5+1 - assume {:print "$at(131,42853,42854)"} true; - $ret0 := $t29; - return; - - // label L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:916:5+1 -L8: - - // abort($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:916:5+1 - assume {:print "$at(131,42853,42854)"} true; - $abort_code := $t7; - $abort_flag := true; - return; - -} - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/reconfiguration.move:154:5+155 -function {:inline} $1_reconfiguration_$last_reconfiguration_time($1_reconfiguration_Configuration_$memory: $Memory $1_reconfiguration_Configuration): int { - $last_reconfiguration_time#$1_reconfiguration_Configuration($ResourceValue($1_reconfiguration_Configuration_$memory, 1)) -} - -// struct reconfiguration::Configuration at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/reconfiguration.move:33:5+306 -type {:datatype} $1_reconfiguration_Configuration; -function {:constructor} $1_reconfiguration_Configuration($epoch: int, $last_reconfiguration_time: int, $events: $1_event_EventHandle'$1_reconfiguration_NewEpochEvent'): $1_reconfiguration_Configuration; -function {:inline} $Update'$1_reconfiguration_Configuration'_epoch(s: $1_reconfiguration_Configuration, x: int): $1_reconfiguration_Configuration { - $1_reconfiguration_Configuration(x, $last_reconfiguration_time#$1_reconfiguration_Configuration(s), $events#$1_reconfiguration_Configuration(s)) -} -function {:inline} $Update'$1_reconfiguration_Configuration'_last_reconfiguration_time(s: $1_reconfiguration_Configuration, x: int): $1_reconfiguration_Configuration { - $1_reconfiguration_Configuration($epoch#$1_reconfiguration_Configuration(s), x, $events#$1_reconfiguration_Configuration(s)) -} -function {:inline} $Update'$1_reconfiguration_Configuration'_events(s: $1_reconfiguration_Configuration, x: $1_event_EventHandle'$1_reconfiguration_NewEpochEvent'): $1_reconfiguration_Configuration { - $1_reconfiguration_Configuration($epoch#$1_reconfiguration_Configuration(s), $last_reconfiguration_time#$1_reconfiguration_Configuration(s), x) -} -function $IsValid'$1_reconfiguration_Configuration'(s: $1_reconfiguration_Configuration): bool { - $IsValid'u64'($epoch#$1_reconfiguration_Configuration(s)) - && $IsValid'u64'($last_reconfiguration_time#$1_reconfiguration_Configuration(s)) - && $IsValid'$1_event_EventHandle'$1_reconfiguration_NewEpochEvent''($events#$1_reconfiguration_Configuration(s)) -} -function {:inline} $IsEqual'$1_reconfiguration_Configuration'(s1: $1_reconfiguration_Configuration, s2: $1_reconfiguration_Configuration): bool { - s1 == s2 -} -var $1_reconfiguration_Configuration_$memory: $Memory $1_reconfiguration_Configuration; - -// struct reconfiguration::NewEpochEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/reconfiguration.move:28:5+64 -type {:datatype} $1_reconfiguration_NewEpochEvent; -function {:constructor} $1_reconfiguration_NewEpochEvent($epoch: int): $1_reconfiguration_NewEpochEvent; -function {:inline} $Update'$1_reconfiguration_NewEpochEvent'_epoch(s: $1_reconfiguration_NewEpochEvent, x: int): $1_reconfiguration_NewEpochEvent { - $1_reconfiguration_NewEpochEvent(x) -} -function $IsValid'$1_reconfiguration_NewEpochEvent'(s: $1_reconfiguration_NewEpochEvent): bool { - $IsValid'u64'($epoch#$1_reconfiguration_NewEpochEvent(s)) -} -function {:inline} $IsEqual'$1_reconfiguration_NewEpochEvent'(s1: $1_reconfiguration_NewEpochEvent, s2: $1_reconfiguration_NewEpochEvent): bool { - s1 == s2 -} - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:38:10+241 -function {:inline} $1_pool_u64_spec_shares(pool: $1_pool_u64_Pool, shareholder: int): int { - (if ($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool(pool), shareholder)) then ($1_simple_map_spec_get'address_u64'($shares#$1_pool_u64_Pool(pool), shareholder)) else (0)) -} - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:105:10+310 -function {:inline} $1_pool_u64_spec_amount_to_shares_with_total_coins(pool: $1_pool_u64_Pool, coins_amount: int, total_coins: int): int { - (if (($IsEqual'u64'($total_coins#$1_pool_u64_Pool(pool), 0) || $IsEqual'u64'($total_shares#$1_pool_u64_Pool(pool), 0))) then ((coins_amount * $scaling_factor#$1_pool_u64_Pool(pool))) else (((coins_amount * $total_shares#$1_pool_u64_Pool(pool)) div total_coins))) -} - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:129:10+265 -function {:inline} $1_pool_u64_spec_shares_to_amount_with_total_coins(pool: $1_pool_u64_Pool, shares: int, total_coins: int): int { - (if (($IsEqual'u64'($total_coins#$1_pool_u64_Pool(pool), 0) || $IsEqual'u64'($total_shares#$1_pool_u64_Pool(pool), 0))) then (0) else (((shares * total_coins) div $total_shares#$1_pool_u64_Pool(pool)))) -} - -// struct pool_u64::Pool at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:38:5+449 -type {:datatype} $1_pool_u64_Pool; -function {:constructor} $1_pool_u64_Pool($shareholders_limit: int, $total_coins: int, $total_shares: int, $shares: Table int (int), $shareholders: Vec (int), $scaling_factor: int): $1_pool_u64_Pool; -function {:inline} $Update'$1_pool_u64_Pool'_shareholders_limit(s: $1_pool_u64_Pool, x: int): $1_pool_u64_Pool { - $1_pool_u64_Pool(x, $total_coins#$1_pool_u64_Pool(s), $total_shares#$1_pool_u64_Pool(s), $shares#$1_pool_u64_Pool(s), $shareholders#$1_pool_u64_Pool(s), $scaling_factor#$1_pool_u64_Pool(s)) -} -function {:inline} $Update'$1_pool_u64_Pool'_total_coins(s: $1_pool_u64_Pool, x: int): $1_pool_u64_Pool { - $1_pool_u64_Pool($shareholders_limit#$1_pool_u64_Pool(s), x, $total_shares#$1_pool_u64_Pool(s), $shares#$1_pool_u64_Pool(s), $shareholders#$1_pool_u64_Pool(s), $scaling_factor#$1_pool_u64_Pool(s)) -} -function {:inline} $Update'$1_pool_u64_Pool'_total_shares(s: $1_pool_u64_Pool, x: int): $1_pool_u64_Pool { - $1_pool_u64_Pool($shareholders_limit#$1_pool_u64_Pool(s), $total_coins#$1_pool_u64_Pool(s), x, $shares#$1_pool_u64_Pool(s), $shareholders#$1_pool_u64_Pool(s), $scaling_factor#$1_pool_u64_Pool(s)) -} -function {:inline} $Update'$1_pool_u64_Pool'_shares(s: $1_pool_u64_Pool, x: Table int (int)): $1_pool_u64_Pool { - $1_pool_u64_Pool($shareholders_limit#$1_pool_u64_Pool(s), $total_coins#$1_pool_u64_Pool(s), $total_shares#$1_pool_u64_Pool(s), x, $shareholders#$1_pool_u64_Pool(s), $scaling_factor#$1_pool_u64_Pool(s)) -} -function {:inline} $Update'$1_pool_u64_Pool'_shareholders(s: $1_pool_u64_Pool, x: Vec (int)): $1_pool_u64_Pool { - $1_pool_u64_Pool($shareholders_limit#$1_pool_u64_Pool(s), $total_coins#$1_pool_u64_Pool(s), $total_shares#$1_pool_u64_Pool(s), $shares#$1_pool_u64_Pool(s), x, $scaling_factor#$1_pool_u64_Pool(s)) -} -function {:inline} $Update'$1_pool_u64_Pool'_scaling_factor(s: $1_pool_u64_Pool, x: int): $1_pool_u64_Pool { - $1_pool_u64_Pool($shareholders_limit#$1_pool_u64_Pool(s), $total_coins#$1_pool_u64_Pool(s), $total_shares#$1_pool_u64_Pool(s), $shares#$1_pool_u64_Pool(s), $shareholders#$1_pool_u64_Pool(s), x) -} -function $IsValid'$1_pool_u64_Pool'(s: $1_pool_u64_Pool): bool { - $IsValid'u64'($shareholders_limit#$1_pool_u64_Pool(s)) - && $IsValid'u64'($total_coins#$1_pool_u64_Pool(s)) - && $IsValid'u64'($total_shares#$1_pool_u64_Pool(s)) - && $IsValid'$1_simple_map_SimpleMap'address_u64''($shares#$1_pool_u64_Pool(s)) - && $IsValid'vec'address''($shareholders#$1_pool_u64_Pool(s)) - && $IsValid'u64'($scaling_factor#$1_pool_u64_Pool(s)) -} -function {:inline} $IsEqual'$1_pool_u64_Pool'(s1: $1_pool_u64_Pool, s2: $1_pool_u64_Pool): bool { - $IsEqual'u64'($shareholders_limit#$1_pool_u64_Pool(s1), $shareholders_limit#$1_pool_u64_Pool(s2)) - && $IsEqual'u64'($total_coins#$1_pool_u64_Pool(s1), $total_coins#$1_pool_u64_Pool(s2)) - && $IsEqual'u64'($total_shares#$1_pool_u64_Pool(s1), $total_shares#$1_pool_u64_Pool(s2)) - && $IsEqual'$1_simple_map_SimpleMap'address_u64''($shares#$1_pool_u64_Pool(s1), $shares#$1_pool_u64_Pool(s2)) - && $IsEqual'vec'address''($shareholders#$1_pool_u64_Pool(s1), $shareholders#$1_pool_u64_Pool(s2)) - && $IsEqual'u64'($scaling_factor#$1_pool_u64_Pool(s1), $scaling_factor#$1_pool_u64_Pool(s2))} - -// fun pool_u64::contains [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:91:5+129 -procedure {:inline 1} $1_pool_u64_contains(_$t0: $1_pool_u64_Pool, _$t1: int) returns ($ret0: bool) -{ - // declare local variables - var $t2: Table int (int); - var $t3: bool; - var $t4: int; - var $t0: $1_pool_u64_Pool; - var $t1: int; - var $temp_0'$1_pool_u64_Pool': $1_pool_u64_Pool; - var $temp_0'address': int; - var $temp_0'bool': bool; - $t0 := _$t0; - $t1 := _$t1; - - // bytecode translation starts here - // trace_local[pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:91:5+1 - assume {:print "$at(58,3640,3641)"} true; - assume {:print "$track_local(55,5,0):", $t0} $t0 == $t0; - - // trace_local[shareholder]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:91:5+1 - assume {:print "$track_local(55,5,1):", $t1} $t1 == $t1; - - // $t2 := get_field.shares($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:92:34+12 - assume {:print "$at(58,3736,3748)"} true; - $t2 := $shares#$1_pool_u64_Pool($t0); - - // $t3 := simple_map::contains_key($t2, $t1) on_abort goto L2 with $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:92:9+52 - call $t3 := $1_simple_map_contains_key'address_u64'($t2, $t1); - if ($abort_flag) { - assume {:print "$at(58,3711,3763)"} true; - $t4 := $abort_code; - assume {:print "$track_abort(55,5):", $t4} $t4 == $t4; - goto L2; - } - - // trace_return[0]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:92:9+52 - assume {:print "$track_return(55,5,0):", $t3} $t3 == $t3; - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:93:5+1 - assume {:print "$at(58,3768,3769)"} true; -L1: - - // return $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:93:5+1 - assume {:print "$at(58,3768,3769)"} true; - $ret0 := $t3; - return; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:93:5+1 -L2: - - // abort($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:93:5+1 - assume {:print "$at(58,3768,3769)"} true; - $abort_code := $t4; - $abort_flag := true; - return; - -} - -// fun pool_u64::to_u128 [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:259:5+57 -procedure {:inline 1} $1_pool_u64_to_u128(_$t0: int) returns ($ret0: int) -{ - // declare local variables - var $t1: int; - var $t2: int; - var $t0: int; - var $temp_0'u128': int; - var $temp_0'u64': int; - $t0 := _$t0; - - // bytecode translation starts here - // trace_local[num]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:259:5+1 - assume {:print "$at(58,11442,11443)"} true; - assume {:print "$track_local(55,17,0):", $t0} $t0 == $t0; - - // $t1 := (u128)($t0) on_abort goto L2 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:260:9+13 - assume {:print "$at(58,11480,11493)"} true; - call $t1 := $CastU128($t0); - if ($abort_flag) { - assume {:print "$at(58,11480,11493)"} true; - $t2 := $abort_code; - assume {:print "$track_abort(55,17):", $t2} $t2 == $t2; - goto L2; - } - - // trace_return[0]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:260:9+13 - assume {:print "$track_return(55,17,0):", $t1} $t1 == $t1; - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:261:5+1 - assume {:print "$at(58,11498,11499)"} true; -L1: - - // return $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:261:5+1 - assume {:print "$at(58,11498,11499)"} true; - $ret0 := $t1; - return; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:261:5+1 -L2: - - // abort($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:261:5+1 - assume {:print "$at(58,11498,11499)"} true; - $abort_code := $t2; - $abort_flag := true; - return; - -} - -// fun pool_u64::balance [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:105:5+161 -procedure {:inline 1} $1_pool_u64_balance(_$t0: $1_pool_u64_Pool, _$t1: int) returns ($ret0: int) -{ - // declare local variables - var $t2: int; - var $t3: int; - var $t4: int; - var $t5: int; - var $t6: int; - var $t7: int; - var $t0: $1_pool_u64_Pool; - var $t1: int; - var $temp_0'$1_pool_u64_Pool': $1_pool_u64_Pool; - var $temp_0'address': int; - var $temp_0'u64': int; - $t0 := _$t0; - $t1 := _$t1; - - // bytecode translation starts here - // assume Identical($t3, pool_u64::spec_shares($t0, $t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:53:9+44 - assume {:print "$at(59,1730,1774)"} true; - assume ($t3 == $1_pool_u64_spec_shares($t0, $t1)); - - // assume Identical($t4, select pool_u64::Pool.total_coins($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:54:9+35 - assume {:print "$at(59,1783,1818)"} true; - assume ($t4 == $total_coins#$1_pool_u64_Pool($t0)); - - // trace_local[pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:105:5+1 - assume {:print "$at(58,4118,4119)"} true; - assume {:print "$track_local(55,3,0):", $t0} $t0 == $t0; - - // trace_local[shareholder]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:105:5+1 - assume {:print "$track_local(55,3,1):", $t1} $t1 == $t1; - - // $t5 := pool_u64::shares($t0, $t1) on_abort goto L2 with $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:106:26+25 - assume {:print "$at(58,4204,4229)"} true; - call $t5 := $1_pool_u64_shares($t0, $t1); - if ($abort_flag) { - assume {:print "$at(58,4204,4229)"} true; - $t6 := $abort_code; - assume {:print "$track_abort(55,3):", $t6} $t6 == $t6; - goto L2; - } - - // trace_local[num_shares]($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:106:13+10 - assume {:print "$track_local(55,3,2):", $t5} $t5 == $t5; - - // $t7 := pool_u64::shares_to_amount($t0, $t5) on_abort goto L2 with $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:107:9+34 - assume {:print "$at(58,4239,4273)"} true; - call $t7 := $1_pool_u64_shares_to_amount($t0, $t5); - if ($abort_flag) { - assume {:print "$at(58,4239,4273)"} true; - $t6 := $abort_code; - assume {:print "$track_abort(55,3):", $t6} $t6 == $t6; - goto L2; - } - - // trace_return[0]($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:107:9+34 - assume {:print "$track_return(55,3,0):", $t7} $t7 == $t7; - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:108:5+1 - assume {:print "$at(58,4278,4279)"} true; -L1: - - // return $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:108:5+1 - assume {:print "$at(58,4278,4279)"} true; - $ret0 := $t7; - return; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:108:5+1 -L2: - - // abort($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:108:5+1 - assume {:print "$at(58,4278,4279)"} true; - $abort_code := $t6; - $abort_flag := true; - return; - -} - -// fun pool_u64::add_shares [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:141:5+900 -procedure {:inline 1} $1_pool_u64_add_shares(_$t0: $Mutation ($1_pool_u64_Pool), _$t1: int, _$t2: int) returns ($ret0: int, $ret1: $Mutation ($1_pool_u64_Pool)) -{ - // declare local variables - var $t3: int; - var $t4: int; - var $t5: int; - var $t6: int; - var $t7: $Mutation (int); - var $t8: bool; - var $t9: bool; - var $t10: int; - var $t11: bool; - var $t12: int; - var $t13: $1_pool_u64_Pool; - var $t14: bool; - var $t15: int; - var $t16: $Mutation (Table int (int)); - var $t17: $Mutation (int); - var $t18: int; - var $t19: int; - var $t20: int; - var $t21: bool; - var $t22: int; - var $t23: int; - var $t24: int; - var $t25: int; - var $t26: bool; - var $t27: Vec (int); - var $t28: int; - var $t29: int; - var $t30: bool; - var $t31: int; - var $t32: int; - var $t33: $Mutation (Vec (int)); - var $t34: $Mutation (Table int (int)); - var $t0: $Mutation ($1_pool_u64_Pool); - var $t1: int; - var $t2: int; - var $temp_0'$1_pool_u64_Pool': $1_pool_u64_Pool; - var $temp_0'address': int; - var $temp_0'u64': int; - $t0 := _$t0; - $t1 := _$t1; - $t2 := _$t2; - - // bytecode translation starts here - // assume Identical($t8, simple_map::spec_contains_key(select pool_u64::Pool.shares($t0), $t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:74:9+73 - assume {:print "$at(59,2864,2937)"} true; - assume ($t8 == $1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($Dereference($t0)), $t1)); - - // assume Identical($t9, simple_map::spec_contains_key(select pool_u64::Pool.shares($t0), $t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:83:9+73 - assume {:print "$at(59,3186,3259)"} true; - assume ($t9 == $1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($Dereference($t0)), $t1)); - - // assume Identical($t10, simple_map::spec_get(select pool_u64::Pool.shares($t0), $t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:84:9+68 - assume {:print "$at(59,3268,3336)"} true; - assume ($t10 == $1_simple_map_spec_get'address_u64'($shares#$1_pool_u64_Pool($Dereference($t0)), $t1)); - - // assume Identical($t11, simple_map::spec_contains_key(select pool_u64::Pool.shares($t0), $t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:94:9+73 - assume {:print "$at(59,3636,3709)"} true; - assume ($t11 == $1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($Dereference($t0)), $t1)); - - // assume Identical($t12, simple_map::spec_get(select pool_u64::Pool.shares($t0), $t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:95:9+68 - assume {:print "$at(59,3718,3786)"} true; - assume ($t12 == $1_simple_map_spec_get'address_u64'($shares#$1_pool_u64_Pool($Dereference($t0)), $t1)); - - // trace_local[pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:141:5+1 - assume {:print "$at(58,5643,5644)"} true; - $temp_0'$1_pool_u64_Pool' := $Dereference($t0); - assume {:print "$track_local(55,0,0):", $temp_0'$1_pool_u64_Pool'} $temp_0'$1_pool_u64_Pool' == $temp_0'$1_pool_u64_Pool'; - - // trace_local[shareholder]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:141:5+1 - assume {:print "$track_local(55,0,1):", $t1} $t1 == $t1; - - // trace_local[new_shares]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:141:5+1 - assume {:print "$track_local(55,0,2):", $t2} $t2 == $t2; - - // $t13 := read_ref($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:142:21+19 - assume {:print "$at(58,5741,5760)"} true; - $t13 := $Dereference($t0); - - // $t14 := pool_u64::contains($t13, $t1) on_abort goto L14 with $t15 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:142:13+27 - call $t14 := $1_pool_u64_contains($t13, $t1); - if ($abort_flag) { - assume {:print "$at(58,5733,5760)"} true; - $t15 := $abort_code; - assume {:print "$track_abort(55,0):", $t15} $t15 == $t15; - goto L14; - } - - // if ($t14) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:142:9+808 - if ($t14) { goto L1; } else { goto L0; } - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:143:63+4 - assume {:print "$at(58,5826,5830)"} true; -L1: - - // $t16 := borrow_field.shares($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:143:58+16 - assume {:print "$at(58,5821,5837)"} true; - $t16 := $ChildMutation($t0, 3, $shares#$1_pool_u64_Pool($Dereference($t0))); - - // $t17 := simple_map::borrow_mut($t16, $t1) on_abort goto L14 with $t15 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:143:35+54 - call $t17,$t16 := $1_simple_map_borrow_mut'address_u64'($t16, $t1); - if ($abort_flag) { - assume {:print "$at(58,5798,5852)"} true; - $t15 := $abort_code; - assume {:print "$track_abort(55,0):", $t15} $t15 == $t15; - goto L14; - } - - // trace_local[existing_shares]($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:143:17+15 - $temp_0'u64' := $Dereference($t17); - assume {:print "$track_local(55,0,7):", $temp_0'u64'} $temp_0'u64' == $temp_0'u64'; - - // $t18 := read_ref($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:144:34+16 - assume {:print "$at(58,5887,5903)"} true; - $t18 := $Dereference($t17); - - // trace_local[current_shares]($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:144:17+14 - assume {:print "$track_local(55,0,6):", $t18} $t18 == $t18; - - // $t19 := 18446744073709551615 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:145:21+7 - assume {:print "$at(58,5925,5932)"} true; - $t19 := 18446744073709551615; - assume $IsValid'u64'($t19); - - // $t20 := -($t19, $t18) on_abort goto L14 with $t15 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:145:29+1 - call $t20 := $Sub($t19, $t18); - if ($abort_flag) { - assume {:print "$at(58,5933,5934)"} true; - $t15 := $abort_code; - assume {:print "$track_abort(55,0):", $t15} $t15 == $t15; - goto L14; - } - - // $t21 := >=($t20, $t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:145:46+2 - call $t21 := $Ge($t20, $t2); - - // if ($t21) goto L3 else goto L15 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:145:13+102 - if ($t21) { goto L3; } else { goto L15; } - - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:145:13+102 -L3: - - // goto L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:145:13+102 - assume {:print "$at(58,5917,6019)"} true; - goto L4; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:145:13+102 -L2: - - // trace_local[pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:145:13+102 - assume {:print "$at(58,5917,6019)"} true; - $temp_0'$1_pool_u64_Pool' := $Dereference($t0); - assume {:print "$track_local(55,0,0):", $temp_0'$1_pool_u64_Pool'} $temp_0'$1_pool_u64_Pool' == $temp_0'$1_pool_u64_Pool'; - - // destroy($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:145:13+102 - - // $t22 := 5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:145:85+28 - $t22 := 5; - assume $IsValid'u64'($t22); - - // $t23 := error::invalid_argument($t22) on_abort goto L14 with $t15 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:145:61+53 - call $t23 := $1_error_invalid_argument($t22); - if ($abort_flag) { - assume {:print "$at(58,5965,6018)"} true; - $t15 := $abort_code; - assume {:print "$track_abort(55,0):", $t15} $t15 == $t15; - goto L14; - } - - // trace_abort($t23) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:145:13+102 - assume {:print "$at(58,5917,6019)"} true; - assume {:print "$track_abort(55,0):", $t23} $t23 == $t23; - - // $t15 := move($t23) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:145:13+102 - $t15 := $t23; - - // goto L14 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:145:13+102 - goto L14; - - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:147:32+14 - assume {:print "$at(58,6053,6067)"} true; -L4: - - // $t24 := +($t18, $t2) on_abort goto L14 with $t15 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:147:47+1 - assume {:print "$at(58,6068,6069)"} true; - call $t24 := $AddU64($t18, $t2); - if ($abort_flag) { - assume {:print "$at(58,6068,6069)"} true; - $t15 := $abort_code; - assume {:print "$track_abort(55,0):", $t15} $t15 == $t15; - goto L14; - } - - // write_ref($t17, $t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:147:13+46 - $t17 := $UpdateMutation($t17, $t24); - - // $t5 := read_ref($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:148:13+16 - assume {:print "$at(58,6094,6110)"} true; - $t5 := $Dereference($t17); - - // write_back[Reference($t16)[]]($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:148:13+16 - $t16 := $UpdateMutation($t16, UpdateTable($Dereference($t16), ReadVec(p#$Mutation($t17), LenVec(p#$Mutation($t16))), $Dereference($t17))); - - // write_back[Reference($t0).shares (simple_map::SimpleMap)]($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:148:13+16 - $t0 := $UpdateMutation($t0, $Update'$1_pool_u64_Pool'_shares($Dereference($t0), $Dereference($t16))); - - // trace_local[pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:148:13+16 - $temp_0'$1_pool_u64_Pool' := $Dereference($t0); - assume {:print "$track_local(55,0,0):", $temp_0'$1_pool_u64_Pool'} $temp_0'$1_pool_u64_Pool' == $temp_0'$1_pool_u64_Pool'; - - // goto L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:142:9+808 - assume {:print "$at(58,5729,6537)"} true; - goto L5; - - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:149:20+10 - assume {:print "$at(58,6130,6140)"} true; -L0: - - // $t25 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:149:33+1 - assume {:print "$at(58,6143,6144)"} true; - $t25 := 0; - assume $IsValid'u64'($t25); - - // $t26 := >($t2, $t25) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:149:31+1 - call $t26 := $Gt($t2, $t25); - - // if ($t26) goto L7 else goto L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:149:16+411 - if ($t26) { goto L7; } else { goto L6; } - - // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:151:33+4 - assume {:print "$at(58,6201,6205)"} true; -L7: - - // $t27 := get_field.shareholders($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:151:32+18 - assume {:print "$at(58,6200,6218)"} true; - $t27 := $shareholders#$1_pool_u64_Pool($Dereference($t0)); - - // $t28 := vector::length
($t27) on_abort goto L14 with $t15 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:151:17+34 - call $t28 := $1_vector_length'address'($t27); - if ($abort_flag) { - assume {:print "$at(58,6185,6219)"} true; - $t15 := $abort_code; - assume {:print "$track_abort(55,0):", $t15} $t15 == $t15; - goto L14; - } - - // $t29 := get_field.shareholders_limit($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:151:54+23 - $t29 := $shareholders_limit#$1_pool_u64_Pool($Dereference($t0)); - - // $t30 := <($t28, $t29) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:151:52+1 - call $t30 := $Lt($t28, $t29); - - // if ($t30) goto L9 else goto L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:150:13+162 - assume {:print "$at(58,6160,6322)"} true; - if ($t30) { goto L9; } else { goto L8; } - - // label L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:150:13+162 -L9: - - // goto L10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:150:13+162 - assume {:print "$at(58,6160,6322)"} true; - goto L10; - - // label L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:150:13+162 -L8: - - // pack_ref_deep($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:150:13+162 - assume {:print "$at(58,6160,6322)"} true; - - // destroy($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:150:13+162 - - // $t31 := 2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:152:38+22 - assume {:print "$at(58,6284,6306)"} true; - $t31 := 2; - assume $IsValid'u64'($t31); - - // $t32 := error::invalid_state($t31) on_abort goto L14 with $t15 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:152:17+44 - call $t32 := $1_error_invalid_state($t31); - if ($abort_flag) { - assume {:print "$at(58,6263,6307)"} true; - $t15 := $abort_code; - assume {:print "$track_abort(55,0):", $t15} $t15 == $t15; - goto L14; - } - - // trace_abort($t32) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:150:13+162 - assume {:print "$at(58,6160,6322)"} true; - assume {:print "$track_abort(55,0):", $t32} $t32 == $t32; - - // $t15 := move($t32) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:150:13+162 - $t15 := $t32; - - // goto L14 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:150:13+162 - goto L14; - - // label L10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:155:36+4 - assume {:print "$at(58,6360,6364)"} true; -L10: - - // $t33 := borrow_field.shareholders($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:155:31+22 - assume {:print "$at(58,6355,6377)"} true; - $t33 := $ChildMutation($t0, 4, $shareholders#$1_pool_u64_Pool($Dereference($t0))); - - // vector::push_back
($t33, $t1) on_abort goto L14 with $t15 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:155:13+54 - call $t33 := $1_vector_push_back'address'($t33, $t1); - if ($abort_flag) { - assume {:print "$at(58,6337,6391)"} true; - $t15 := $abort_code; - assume {:print "$track_abort(55,0):", $t15} $t15 == $t15; - goto L14; - } - - // write_back[Reference($t0).shareholders (vector
)]($t33) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:155:13+54 - $t0 := $UpdateMutation($t0, $Update'$1_pool_u64_Pool'_shareholders($Dereference($t0), $Dereference($t33))); - - // trace_local[pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:155:13+54 - $temp_0'$1_pool_u64_Pool' := $Dereference($t0); - assume {:print "$track_local(55,0,0):", $temp_0'$1_pool_u64_Pool'} $temp_0'$1_pool_u64_Pool' == $temp_0'$1_pool_u64_Pool'; - - // $t34 := borrow_field.shares($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:156:29+16 - assume {:print "$at(58,6421,6437)"} true; - $t34 := $ChildMutation($t0, 3, $shares#$1_pool_u64_Pool($Dereference($t0))); - - // simple_map::add($t34, $t1, $t2) on_abort goto L14 with $t15 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:156:13+58 - call $t34 := $1_simple_map_add'address_u64'($t34, $t1, $t2); - if ($abort_flag) { - assume {:print "$at(58,6405,6463)"} true; - $t15 := $abort_code; - assume {:print "$track_abort(55,0):", $t15} $t15 == $t15; - goto L14; - } - - // write_back[Reference($t0).shares (simple_map::SimpleMap)]($t34) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:156:13+58 - $t0 := $UpdateMutation($t0, $Update'$1_pool_u64_Pool'_shares($Dereference($t0), $Dereference($t34))); - - // trace_local[pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:156:13+58 - $temp_0'$1_pool_u64_Pool' := $Dereference($t0); - assume {:print "$track_local(55,0,0):", $temp_0'$1_pool_u64_Pool'} $temp_0'$1_pool_u64_Pool' == $temp_0'$1_pool_u64_Pool'; - - // goto L11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:149:16+411 - assume {:print "$at(58,6126,6537)"} true; - goto L11; - - // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:149:16+411 -L6: - - // destroy($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:149:16+411 - assume {:print "$at(58,6126,6537)"} true; - - // label L11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:149:16+411 -L11: - - // $t5 := $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:142:9+808 - assume {:print "$at(58,5729,6537)"} true; - $t5 := $t2; - - // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:142:9+808 -L5: - - // trace_return[0]($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:142:9+808 - assume {:print "$at(58,5729,6537)"} true; - assume {:print "$track_return(55,0,0):", $t5} $t5 == $t5; - - // trace_local[pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:142:9+808 - $temp_0'$1_pool_u64_Pool' := $Dereference($t0); - assume {:print "$track_local(55,0,0):", $temp_0'$1_pool_u64_Pool'} $temp_0'$1_pool_u64_Pool' == $temp_0'$1_pool_u64_Pool'; - - // pack_ref_deep($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:142:9+808 - - // goto L13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:142:9+808 - goto L13; - - // label L12 at :1:1+10 - assume {:print "$at(1,0,10)"} true; -L12: - - // destroy($t0) at :1:1+10 - assume {:print "$at(1,0,10)"} true; - - // goto L2 at :1:1+10 - goto L2; - - // label L13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:161:5+1 - assume {:print "$at(58,6542,6543)"} true; -L13: - - // return $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:161:5+1 - assume {:print "$at(58,6542,6543)"} true; - $ret0 := $t5; - $ret1 := $t0; - return; - - // label L14 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:161:5+1 -L14: - - // abort($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:161:5+1 - assume {:print "$at(58,6542,6543)"} true; - $abort_code := $t15; - $abort_flag := true; - return; - - // label L15 at :1:1+10 - assume {:print "$at(1,0,10)"} true; -L15: - - // destroy($t16) at :1:1+10 - assume {:print "$at(1,0,10)"} true; - - // goto L12 at :1:1+10 - goto L12; - -} - -// fun pool_u64::amount_to_shares [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:214:5+152 -procedure {:inline 1} $1_pool_u64_amount_to_shares(_$t0: $1_pool_u64_Pool, _$t1: int) returns ($ret0: int) -{ - // declare local variables - var $t2: int; - var $t3: int; - var $t4: int; - var $t0: $1_pool_u64_Pool; - var $t1: int; - var $temp_0'$1_pool_u64_Pool': $1_pool_u64_Pool; - var $temp_0'u64': int; - $t0 := _$t0; - $t1 := _$t1; - - // bytecode translation starts here - // trace_local[pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:214:5+1 - assume {:print "$at(58,8989,8990)"} true; - assume {:print "$track_local(55,1,0):", $t0} $t0 == $t0; - - // trace_local[coins_amount]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:214:5+1 - assume {:print "$track_local(55,1,1):", $t1} $t1 == $t1; - - // $t2 := get_field.total_coins($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:215:63+16 - assume {:print "$at(58,9118,9134)"} true; - $t2 := $total_coins#$1_pool_u64_Pool($t0); - - // $t3 := pool_u64::amount_to_shares_with_total_coins($t0, $t1, $t2) on_abort goto L2 with $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:215:9+71 - call $t3 := $1_pool_u64_amount_to_shares_with_total_coins($t0, $t1, $t2); - if ($abort_flag) { - assume {:print "$at(58,9064,9135)"} true; - $t4 := $abort_code; - assume {:print "$track_abort(55,1):", $t4} $t4 == $t4; - goto L2; - } - - // trace_return[0]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:215:9+71 - assume {:print "$track_return(55,1,0):", $t3} $t3 == $t3; - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:216:5+1 - assume {:print "$at(58,9140,9141)"} true; -L1: - - // return $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:216:5+1 - assume {:print "$at(58,9140,9141)"} true; - $ret0 := $t3; - return; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:216:5+1 -L2: - - // abort($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:216:5+1 - assume {:print "$at(58,9140,9141)"} true; - $abort_code := $t4; - $abort_flag := true; - return; - -} - -// fun pool_u64::amount_to_shares_with_total_coins [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:220:5+904 -procedure {:inline 1} $1_pool_u64_amount_to_shares_with_total_coins(_$t0: $1_pool_u64_Pool, _$t1: int, _$t2: int) returns ($ret0: int) -{ - // declare local variables - var $t3: bool; - var $t4: int; - var $t5: int; - var $t6: int; - var $t7: bool; - var $t8: bool; - var $t9: int; - var $t10: int; - var $t11: int; - var $t12: int; - var $t13: int; - var $t0: $1_pool_u64_Pool; - var $t1: int; - var $t2: int; - var $temp_0'$1_pool_u64_Pool': $1_pool_u64_Pool; - var $temp_0'u64': int; - $t0 := _$t0; - $t1 := _$t1; - $t2 := _$t2; - - // bytecode translation starts here - // trace_local[pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:220:5+1 - assume {:print "$at(58,9317,9318)"} true; - assume {:print "$track_local(55,2,0):", $t0} $t0 == $t0; - - // trace_local[coins_amount]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:220:5+1 - assume {:print "$track_local(55,2,1):", $t1} $t1 == $t1; - - // trace_local[total_coins]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:220:5+1 - assume {:print "$track_local(55,2,2):", $t2} $t2 == $t2; - - // $t5 := get_field.total_coins($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:222:13+16 - assume {:print "$at(58,9502,9518)"} true; - $t5 := $total_coins#$1_pool_u64_Pool($t0); - - // $t6 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:222:33+1 - $t6 := 0; - assume $IsValid'u64'($t6); - - // $t7 := ==($t5, $t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:222:30+2 - $t7 := $IsEqual'u64'($t5, $t6); - - // if ($t7) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:222:13+47 - if ($t7) { goto L1; } else { goto L0; } - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:222:13+47 -L1: - - // $t8 := true at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:222:13+47 - assume {:print "$at(58,9502,9549)"} true; - $t8 := true; - assume $IsValid'bool'($t8); - - // $t3 := $t8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:222:13+47 - $t3 := $t8; - - // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:222:13+47 - goto L2; - - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:222:38+4 -L0: - - // $t9 := get_field.total_shares($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:222:38+17 - assume {:print "$at(58,9527,9544)"} true; - $t9 := $total_shares#$1_pool_u64_Pool($t0); - - // $t10 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:222:59+1 - $t10 := 0; - assume $IsValid'u64'($t10); - - // $t3 := ==($t9, $t10) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:222:56+2 - $t3 := $IsEqual'u64'($t9, $t10); - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:222:13+47 -L2: - - // if ($t3) goto L4 else goto L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:222:9+717 - assume {:print "$at(58,9498,10215)"} true; - if ($t3) { goto L4; } else { goto L3; } - - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:225:13+12 - assume {:print "$at(58,9800,9812)"} true; -L4: - - // $t11 := get_field.scaling_factor($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:225:28+19 - assume {:print "$at(58,9815,9834)"} true; - $t11 := $scaling_factor#$1_pool_u64_Pool($t0); - - // $t4 := *($t1, $t11) on_abort goto L7 with $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:225:26+1 - call $t4 := $MulU64($t1, $t11); - if ($abort_flag) { - assume {:print "$at(58,9813,9814)"} true; - $t12 := $abort_code; - assume {:print "$track_abort(55,2):", $t12} $t12 == $t12; - goto L7; - } - - // goto L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:222:9+717 - assume {:print "$at(58,9498,10215)"} true; - goto L5; - - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:230:34+4 - assume {:print "$at(58,10154,10158)"} true; -L3: - - // $t13 := get_field.total_shares($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:230:54+17 - assume {:print "$at(58,10174,10191)"} true; - $t13 := $total_shares#$1_pool_u64_Pool($t0); - - // $t4 := pool_u64::multiply_then_divide($t0, $t1, $t13, $t2) on_abort goto L7 with $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:230:13+72 - call $t4 := $1_pool_u64_multiply_then_divide($t0, $t1, $t13, $t2); - if ($abort_flag) { - assume {:print "$at(58,10133,10205)"} true; - $t12 := $abort_code; - assume {:print "$track_abort(55,2):", $t12} $t12 == $t12; - goto L7; - } - - // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:222:9+717 - assume {:print "$at(58,9498,10215)"} true; -L5: - - // trace_return[0]($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:222:9+717 - assume {:print "$at(58,9498,10215)"} true; - assume {:print "$track_return(55,2,0):", $t4} $t4 == $t4; - - // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:232:5+1 - assume {:print "$at(58,10220,10221)"} true; -L6: - - // return $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:232:5+1 - assume {:print "$at(58,10220,10221)"} true; - $ret0 := $t4; - return; - - // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:232:5+1 -L7: - - // abort($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:232:5+1 - assume {:print "$at(58,10220,10221)"} true; - $abort_code := $t12; - $abort_flag := true; - return; - -} - -// fun pool_u64::total_coins [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:81:5+73 -procedure {:inline 1} $1_pool_u64_total_coins(_$t0: $1_pool_u64_Pool) returns ($ret0: int) -{ - // declare local variables - var $t1: int; - var $t0: $1_pool_u64_Pool; - var $temp_0'$1_pool_u64_Pool': $1_pool_u64_Pool; - var $temp_0'u64': int; - $t0 := _$t0; - - // bytecode translation starts here - // trace_local[pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:81:5+1 - assume {:print "$at(58,3352,3353)"} true; - assume {:print "$track_local(55,18,0):", $t0} $t0 == $t0; - - // $t1 := get_field.total_coins($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:82:9+16 - assume {:print "$at(58,3403,3419)"} true; - $t1 := $total_coins#$1_pool_u64_Pool($t0); - - // trace_return[0]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:82:9+16 - assume {:print "$track_return(55,18,0):", $t1} $t1 == $t1; - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:83:5+1 - assume {:print "$at(58,3424,3425)"} true; -L1: - - // return $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:83:5+1 - assume {:print "$at(58,3424,3425)"} true; - $ret0 := $t1; - return; - -} - -// fun pool_u64::buy_in [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:126:5+611 -procedure {:inline 1} $1_pool_u64_buy_in(_$t0: $Mutation ($1_pool_u64_Pool), _$t1: int, _$t2: int) returns ($ret0: int, $ret1: $Mutation ($1_pool_u64_Pool)) -{ - // declare local variables - var $t3: int; - var $t4: int; - var $t5: int; - var $t6: bool; - var $t7: int; - var $t8: bool; - var $t9: int; - var $t10: int; - var $t11: bool; - var $t12: int; - var $t13: int; - var $t14: $1_pool_u64_Pool; - var $t15: int; - var $t16: int; - var $t17: int; - var $t18: int; - var $t19: int; - var $t20: bool; - var $t21: int; - var $t22: int; - var $t23: int; - var $t24: int; - var $t25: int; - var $t26: bool; - var $t27: int; - var $t28: int; - var $t29: int; - var $t30: int; - var $t31: $Mutation (int); - var $t32: int; - var $t33: int; - var $t34: $Mutation (int); - var $t35: bool; - var $t36: bool; - var $t37: int; - var $t38: bool; - var $t39: int; - var $t40: int; - var $t0: $Mutation ($1_pool_u64_Pool); - var $t1: int; - var $t2: int; - var $temp_0'$1_pool_u64_Pool': $1_pool_u64_Pool; - var $temp_0'address': int; - var $temp_0'u64': int; - $t0 := _$t0; - $t1 := _$t1; - $t2 := _$t2; - - // bytecode translation starts here - // assume Identical($t5, pool_u64::spec_amount_to_shares_with_total_coins($t0, $t2, select pool_u64::Pool.total_coins($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:60:9+94 - assume {:print "$at(59,2129,2223)"} true; - assume ($t5 == $1_pool_u64_spec_amount_to_shares_with_total_coins($Dereference($t0), $t2, $total_coins#$1_pool_u64_Pool($Dereference($t0)))); - - // assume Identical($t6, simple_map::spec_contains_key(select pool_u64::Pool.shares($t0), $t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:83:9+73 - assume {:print "$at(59,3186,3259)"} true; - assume ($t6 == $1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($Dereference($t0)), $t1)); - - // assume Identical($t7, simple_map::spec_get(select pool_u64::Pool.shares($t0), $t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:84:9+68 - assume {:print "$at(59,3268,3336)"} true; - assume ($t7 == $1_simple_map_spec_get'address_u64'($shares#$1_pool_u64_Pool($Dereference($t0)), $t1)); - - // assume Identical($t8, simple_map::spec_contains_key(select pool_u64::Pool.shares($t0), $t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:94:9+73 - assume {:print "$at(59,3636,3709)"} true; - assume ($t8 == $1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($Dereference($t0)), $t1)); - - // assume Identical($t9, simple_map::spec_get(select pool_u64::Pool.shares($t0), $t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:95:9+68 - assume {:print "$at(59,3718,3786)"} true; - assume ($t9 == $1_simple_map_spec_get'address_u64'($shares#$1_pool_u64_Pool($Dereference($t0)), $t1)); - - // trace_local[pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:126:5+1 - assume {:print "$at(58,4864,4865)"} true; - $temp_0'$1_pool_u64_Pool' := $Dereference($t0); - assume {:print "$track_local(55,4,0):", $temp_0'$1_pool_u64_Pool'} $temp_0'$1_pool_u64_Pool' == $temp_0'$1_pool_u64_Pool'; - - // trace_local[shareholder]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:126:5+1 - assume {:print "$track_local(55,4,1):", $t1} $t1 == $t1; - - // trace_local[coins_amount]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:126:5+1 - assume {:print "$track_local(55,4,2):", $t2} $t2 == $t2; - - // $t10 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:127:29+1 - assume {:print "$at(58,4975,4976)"} true; - $t10 := 0; - assume $IsValid'u64'($t10); - - // $t11 := ==($t2, $t10) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:127:26+2 - $t11 := $IsEqual'u64'($t2, $t10); - - // if ($t11) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:127:9+31 - if ($t11) { goto L1; } else { goto L0; } - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:127:32+8 -L1: - - // destroy($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:127:32+8 - assume {:print "$at(58,4978,4986)"} true; - - // $t12 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:127:39+1 - $t12 := 0; - assume $IsValid'u64'($t12); - - // trace_return[0]($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:127:32+8 - assume {:print "$track_return(55,4,0):", $t12} $t12 == $t12; - - // trace_local[pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:127:32+8 - $temp_0'$1_pool_u64_Pool' := $Dereference($t0); - assume {:print "$track_local(55,4,0):", $temp_0'$1_pool_u64_Pool'} $temp_0'$1_pool_u64_Pool' == $temp_0'$1_pool_u64_Pool'; - - // pack_ref_deep($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:127:32+8 - - // $t13 := move($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:127:32+8 - $t13 := $t12; - - // goto L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:127:32+8 - goto L8; - - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:129:43+4 - assume {:print "$at(58,5031,5035)"} true; -L0: - - // $t14 := read_ref($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:129:42+20 - assume {:print "$at(58,5030,5050)"} true; - $t14 := $Dereference($t0); - - // $t15 := pool_u64::amount_to_shares($t14, $t2) on_abort goto L9 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:129:26+36 - call $t15 := $1_pool_u64_amount_to_shares($t14, $t2); - if ($abort_flag) { - assume {:print "$at(58,5014,5050)"} true; - $t16 := $abort_code; - assume {:print "$track_abort(55,4):", $t16} $t16 == $t16; - goto L9; - } - - // trace_local[new_shares]($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:129:13+10 - assume {:print "$track_local(55,4,4):", $t15} $t15 == $t15; - - // $t17 := 18446744073709551615 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:130:17+7 - assume {:print "$at(58,5068,5075)"} true; - $t17 := 18446744073709551615; - assume $IsValid'u64'($t17); - - // $t18 := get_field.total_coins($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:130:27+16 - $t18 := $total_coins#$1_pool_u64_Pool($Dereference($t0)); - - // $t19 := -($t17, $t18) on_abort goto L9 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:130:25+1 - call $t19 := $Sub($t17, $t18); - if ($abort_flag) { - assume {:print "$at(58,5076,5077)"} true; - $t16 := $abort_code; - assume {:print "$track_abort(55,4):", $t16} $t16 == $t16; - goto L9; - } - - // $t20 := >=($t19, $t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:130:44+2 - call $t20 := $Ge($t19, $t2); - - // if ($t20) goto L3 else goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:130:9+104 - if ($t20) { goto L3; } else { goto L2; } - - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:130:9+104 -L3: - - // goto L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:130:9+104 - assume {:print "$at(58,5060,5164)"} true; - goto L4; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:130:9+104 -L2: - - // pack_ref_deep($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:130:9+104 - assume {:print "$at(58,5060,5164)"} true; - - // destroy($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:130:9+104 - - // $t21 := 6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:130:85+26 - $t21 := 6; - assume $IsValid'u64'($t21); - - // $t22 := error::invalid_argument($t21) on_abort goto L9 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:130:61+51 - call $t22 := $1_error_invalid_argument($t21); - if ($abort_flag) { - assume {:print "$at(58,5112,5163)"} true; - $t16 := $abort_code; - assume {:print "$track_abort(55,4):", $t16} $t16 == $t16; - goto L9; - } - - // trace_abort($t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:130:9+104 - assume {:print "$at(58,5060,5164)"} true; - assume {:print "$track_abort(55,4):", $t22} $t22 == $t22; - - // $t16 := move($t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:130:9+104 - $t16 := $t22; - - // goto L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:130:9+104 - goto L9; - - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:131:17+7 - assume {:print "$at(58,5182,5189)"} true; -L4: - - // $t23 := 18446744073709551615 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:131:17+7 - assume {:print "$at(58,5182,5189)"} true; - $t23 := 18446744073709551615; - assume $IsValid'u64'($t23); - - // $t24 := get_field.total_shares($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:131:27+17 - $t24 := $total_shares#$1_pool_u64_Pool($Dereference($t0)); - - // $t25 := -($t23, $t24) on_abort goto L9 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:131:25+1 - call $t25 := $Sub($t23, $t24); - if ($abort_flag) { - assume {:print "$at(58,5190,5191)"} true; - $t16 := $abort_code; - assume {:print "$track_abort(55,4):", $t16} $t16 == $t16; - goto L9; - } - - // $t26 := >=($t25, $t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:131:45+2 - call $t26 := $Ge($t25, $t15); - - // if ($t26) goto L6 else goto L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:131:9+103 - if ($t26) { goto L6; } else { goto L5; } - - // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:131:9+103 -L6: - - // goto L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:131:9+103 - assume {:print "$at(58,5174,5277)"} true; - goto L7; - - // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:131:9+103 -L5: - - // pack_ref_deep($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:131:9+103 - assume {:print "$at(58,5174,5277)"} true; - - // destroy($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:131:9+103 - - // $t27 := 6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:131:84+26 - $t27 := 6; - assume $IsValid'u64'($t27); - - // $t28 := error::invalid_argument($t27) on_abort goto L9 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:131:60+51 - call $t28 := $1_error_invalid_argument($t27); - if ($abort_flag) { - assume {:print "$at(58,5225,5276)"} true; - $t16 := $abort_code; - assume {:print "$track_abort(55,4):", $t16} $t16 == $t16; - goto L9; - } - - // trace_abort($t28) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:131:9+103 - assume {:print "$at(58,5174,5277)"} true; - assume {:print "$track_abort(55,4):", $t28} $t28 == $t28; - - // $t16 := move($t28) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:131:9+103 - $t16 := $t28; - - // goto L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:131:9+103 - goto L9; - - // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:133:28+4 - assume {:print "$at(58,5307,5311)"} true; -L7: - - // $t29 := get_field.total_coins($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:133:28+16 - assume {:print "$at(58,5307,5323)"} true; - $t29 := $total_coins#$1_pool_u64_Pool($Dereference($t0)); - - // $t30 := +($t29, $t2) on_abort goto L9 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:133:45+1 - call $t30 := $AddU64($t29, $t2); - if ($abort_flag) { - assume {:print "$at(58,5324,5325)"} true; - $t16 := $abort_code; - assume {:print "$track_abort(55,4):", $t16} $t16 == $t16; - goto L9; - } - - // $t31 := borrow_field.total_coins($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:133:9+16 - $t31 := $ChildMutation($t0, 1, $total_coins#$1_pool_u64_Pool($Dereference($t0))); - - // write_ref($t31, $t30) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:133:9+50 - $t31 := $UpdateMutation($t31, $t30); - - // write_back[Reference($t0).total_coins (u64)]($t31) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:133:9+50 - $t0 := $UpdateMutation($t0, $Update'$1_pool_u64_Pool'_total_coins($Dereference($t0), $Dereference($t31))); - - // trace_local[pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:133:9+50 - $temp_0'$1_pool_u64_Pool' := $Dereference($t0); - assume {:print "$track_local(55,4,0):", $temp_0'$1_pool_u64_Pool'} $temp_0'$1_pool_u64_Pool' == $temp_0'$1_pool_u64_Pool'; - - // $t32 := get_field.total_shares($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:134:29+17 - assume {:print "$at(58,5368,5385)"} true; - $t32 := $total_shares#$1_pool_u64_Pool($Dereference($t0)); - - // $t33 := +($t32, $t15) on_abort goto L9 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:134:47+1 - call $t33 := $AddU64($t32, $t15); - if ($abort_flag) { - assume {:print "$at(58,5386,5387)"} true; - $t16 := $abort_code; - assume {:print "$track_abort(55,4):", $t16} $t16 == $t16; - goto L9; - } - - // $t34 := borrow_field.total_shares($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:134:9+17 - $t34 := $ChildMutation($t0, 2, $total_shares#$1_pool_u64_Pool($Dereference($t0))); - - // write_ref($t34, $t33) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:134:9+50 - $t34 := $UpdateMutation($t34, $t33); - - // write_back[Reference($t0).total_shares (u64)]($t34) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:134:9+50 - $t0 := $UpdateMutation($t0, $Update'$1_pool_u64_Pool'_total_shares($Dereference($t0), $Dereference($t34))); - - // trace_local[pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:134:9+50 - $temp_0'$1_pool_u64_Pool' := $Dereference($t0); - assume {:print "$track_local(55,4,0):", $temp_0'$1_pool_u64_Pool'} $temp_0'$1_pool_u64_Pool' == $temp_0'$1_pool_u64_Pool'; - - // assume Identical($t35, simple_map::spec_contains_key(select pool_u64::Pool.shares($t0), $t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:74:9+73 - assume {:print "$at(59,2864,2937)"} true; - assume ($t35 == $1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($Dereference($t0)), $t1)); - - // assume Identical($t36, simple_map::spec_contains_key(select pool_u64::Pool.shares($t0), $t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:83:9+73 - assume {:print "$at(59,3186,3259)"} true; - assume ($t36 == $1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($Dereference($t0)), $t1)); - - // assume Identical($t37, simple_map::spec_get(select pool_u64::Pool.shares($t0), $t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:84:9+68 - assume {:print "$at(59,3268,3336)"} true; - assume ($t37 == $1_simple_map_spec_get'address_u64'($shares#$1_pool_u64_Pool($Dereference($t0)), $t1)); - - // assume Identical($t38, simple_map::spec_contains_key(select pool_u64::Pool.shares($t0), $t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:94:9+73 - assume {:print "$at(59,3636,3709)"} true; - assume ($t38 == $1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($Dereference($t0)), $t1)); - - // assume Identical($t39, simple_map::spec_get(select pool_u64::Pool.shares($t0), $t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:95:9+68 - assume {:print "$at(59,3718,3786)"} true; - assume ($t39 == $1_simple_map_spec_get'address_u64'($shares#$1_pool_u64_Pool($Dereference($t0)), $t1)); - - // $t40 := pool_u64::add_shares($t0, $t1, $t15) on_abort goto L9 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:135:9+41 - assume {:print "$at(58,5408,5449)"} true; - call $t40,$t0 := $1_pool_u64_add_shares($t0, $t1, $t15); - if ($abort_flag) { - assume {:print "$at(58,5408,5449)"} true; - $t16 := $abort_code; - assume {:print "$track_abort(55,4):", $t16} $t16 == $t16; - goto L9; - } - - // destroy($t40) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:135:9+41 - - // trace_return[0]($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:136:9+10 - assume {:print "$at(58,5459,5469)"} true; - assume {:print "$track_return(55,4,0):", $t15} $t15 == $t15; - - // trace_local[pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:136:9+10 - $temp_0'$1_pool_u64_Pool' := $Dereference($t0); - assume {:print "$track_local(55,4,0):", $temp_0'$1_pool_u64_Pool'} $temp_0'$1_pool_u64_Pool' == $temp_0'$1_pool_u64_Pool'; - - // pack_ref_deep($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:136:9+10 - - // $t13 := move($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:136:9+10 - $t13 := $t15; - - // label L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:137:5+1 - assume {:print "$at(58,5474,5475)"} true; -L8: - - // return $t13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:137:5+1 - assume {:print "$at(58,5474,5475)"} true; - $ret0 := $t13; - $ret1 := $t0; - return; - - // label L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:137:5+1 -L9: - - // abort($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:137:5+1 - assume {:print "$at(58,5474,5475)"} true; - $abort_code := $t16; - $abort_flag := true; - return; - -} - -// fun pool_u64::deduct_shares [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:194:5+857 -procedure {:inline 1} $1_pool_u64_deduct_shares(_$t0: $Mutation ($1_pool_u64_Pool), _$t1: int, _$t2: int) returns ($ret0: int, $ret1: $Mutation ($1_pool_u64_Pool)) -{ - // declare local variables - var $t3: int; - var $t4: int; - var $t5: $Mutation (int); - var $t6: int; - var $t7: int; - var $t8: int; - var $t9: int; - var $t10: $1_pool_u64_Pool; - var $t11: bool; - var $t12: int; - var $t13: int; - var $t14: int; - var $t15: $1_pool_u64_Pool; - var $t16: int; - var $t17: bool; - var $t18: int; - var $t19: int; - var $t20: $Mutation (Table int (int)); - var $t21: $Mutation (int); - var $t22: int; - var $t23: int; - var $t24: int; - var $t25: int; - var $t26: bool; - var $t27: Vec (int); - var $t28: bool; - var $t29: int; - var $t30: $Mutation (Vec (int)); - var $t31: int; - var $t32: $Mutation (Table int (int)); - var $t33: int; - var $t34: int; - var $t0: $Mutation ($1_pool_u64_Pool); - var $t1: int; - var $t2: int; - var $temp_0'$1_pool_u64_Pool': $1_pool_u64_Pool; - var $temp_0'address': int; - var $temp_0'u64': int; - $t0 := _$t0; - $t1 := _$t1; - $t2 := _$t2; - - // bytecode translation starts here - // assume Identical($t8, Sub(simple_map::spec_get(select pool_u64::Pool.shares($t0), $t1), $t2)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:173:9+83 - assume {:print "$at(59,7278,7361)"} true; - assume ($t8 == ($1_simple_map_spec_get'address_u64'($shares#$1_pool_u64_Pool($Dereference($t0)), $t1) - $t2)); - - // assume Identical($t9, Sub(simple_map::spec_get(select pool_u64::Pool.shares($t0), $t1), $t2)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:181:9+83 - assume {:print "$at(59,7643,7726)"} true; - assume ($t9 == ($1_simple_map_spec_get'address_u64'($shares#$1_pool_u64_Pool($Dereference($t0)), $t1) - $t2)); - - // trace_local[pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:194:5+1 - assume {:print "$at(58,7989,7990)"} true; - $temp_0'$1_pool_u64_Pool' := $Dereference($t0); - assume {:print "$track_local(55,8,0):", $temp_0'$1_pool_u64_Pool'} $temp_0'$1_pool_u64_Pool' == $temp_0'$1_pool_u64_Pool'; - - // trace_local[shareholder]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:194:5+1 - assume {:print "$track_local(55,8,1):", $t1} $t1 == $t1; - - // trace_local[num_shares]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:194:5+1 - assume {:print "$track_local(55,8,2):", $t2} $t2 == $t2; - - // $t10 := read_ref($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:195:25+19 - assume {:print "$at(58,8094,8113)"} true; - $t10 := $Dereference($t0); - - // $t11 := pool_u64::contains($t10, $t1) on_abort goto L10 with $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:195:17+27 - call $t11 := $1_pool_u64_contains($t10, $t1); - if ($abort_flag) { - assume {:print "$at(58,8086,8113)"} true; - $t12 := $abort_code; - assume {:print "$track_abort(55,8):", $t12} $t12 == $t12; - goto L10; - } - - // if ($t11) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:195:9+85 - if ($t11) { goto L1; } else { goto L0; } - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:195:9+85 -L1: - - // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:195:9+85 - assume {:print "$at(58,8078,8163)"} true; - goto L2; - - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:195:9+85 -L0: - - // pack_ref_deep($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:195:9+85 - assume {:print "$at(58,8078,8163)"} true; - - // destroy($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:195:9+85 - - // $t13 := 1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:195:70+22 - $t13 := 1; - assume $IsValid'u64'($t13); - - // $t14 := error::invalid_argument($t13) on_abort goto L10 with $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:195:46+47 - call $t14 := $1_error_invalid_argument($t13); - if ($abort_flag) { - assume {:print "$at(58,8115,8162)"} true; - $t12 := $abort_code; - assume {:print "$track_abort(55,8):", $t12} $t12 == $t12; - goto L10; - } - - // trace_abort($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:195:9+85 - assume {:print "$at(58,8078,8163)"} true; - assume {:print "$track_abort(55,8):", $t14} $t14 == $t14; - - // $t12 := move($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:195:9+85 - $t12 := $t14; - - // goto L10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:195:9+85 - goto L10; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:196:24+4 - assume {:print "$at(58,8188,8192)"} true; -L2: - - // $t15 := read_ref($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:196:23+19 - assume {:print "$at(58,8187,8206)"} true; - $t15 := $Dereference($t0); - - // $t16 := pool_u64::shares($t15, $t1) on_abort goto L10 with $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:196:17+25 - call $t16 := $1_pool_u64_shares($t15, $t1); - if ($abort_flag) { - assume {:print "$at(58,8181,8206)"} true; - $t12 := $abort_code; - assume {:print "$track_abort(55,8):", $t12} $t12 == $t12; - goto L10; - } - - // $t17 := >=($t16, $t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:196:43+2 - call $t17 := $Ge($t16, $t2); - - // if ($t17) goto L4 else goto L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:196:9+95 - if ($t17) { goto L4; } else { goto L3; } - - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:196:9+95 -L4: - - // goto L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:196:9+95 - assume {:print "$at(58,8173,8268)"} true; - goto L5; - - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:196:9+95 -L3: - - // pack_ref_deep($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:196:9+95 - assume {:print "$at(58,8173,8268)"} true; - - // destroy($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:196:9+95 - - // $t18 := 4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:196:82+20 - $t18 := 4; - assume $IsValid'u64'($t18); - - // $t19 := error::invalid_argument($t18) on_abort goto L10 with $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:196:58+45 - call $t19 := $1_error_invalid_argument($t18); - if ($abort_flag) { - assume {:print "$at(58,8222,8267)"} true; - $t12 := $abort_code; - assume {:print "$track_abort(55,8):", $t12} $t12 == $t12; - goto L10; - } - - // trace_abort($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:196:9+95 - assume {:print "$at(58,8173,8268)"} true; - assume {:print "$track_abort(55,8):", $t19} $t19 == $t19; - - // $t12 := move($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:196:9+95 - $t12 := $t19; - - // goto L10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:196:9+95 - goto L10; - - // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:198:59+4 - assume {:print "$at(58,8329,8333)"} true; -L5: - - // $t20 := borrow_field.shares($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:198:54+16 - assume {:print "$at(58,8324,8340)"} true; - $t20 := $ChildMutation($t0, 3, $shares#$1_pool_u64_Pool($Dereference($t0))); - - // $t21 := simple_map::borrow_mut($t20, $t1) on_abort goto L10 with $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:198:31+54 - call $t21,$t20 := $1_simple_map_borrow_mut'address_u64'($t20, $t1); - if ($abort_flag) { - assume {:print "$at(58,8301,8355)"} true; - $t12 := $abort_code; - assume {:print "$track_abort(55,8):", $t12} $t12 == $t12; - goto L10; - } - - // trace_local[existing_shares]($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:198:13+15 - $temp_0'u64' := $Dereference($t21); - assume {:print "$track_local(55,8,5):", $temp_0'u64'} $temp_0'u64' == $temp_0'u64'; - - // $t22 := read_ref($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:199:28+16 - assume {:print "$at(58,8384,8400)"} true; - $t22 := $Dereference($t21); - - // $t23 := -($t22, $t2) on_abort goto L10 with $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:199:45+1 - call $t23 := $Sub($t22, $t2); - if ($abort_flag) { - assume {:print "$at(58,8401,8402)"} true; - $t12 := $abort_code; - assume {:print "$track_abort(55,8):", $t12} $t12 == $t12; - goto L10; - } - - // write_ref($t21, $t23) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:199:9+48 - $t21 := $UpdateMutation($t21, $t23); - - // $t24 := read_ref($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:202:32+16 - assume {:print "$at(58,8521,8537)"} true; - $t24 := $Dereference($t21); - - // write_back[Reference($t20)[]]($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:202:32+16 - $t20 := $UpdateMutation($t20, UpdateTable($Dereference($t20), ReadVec(p#$Mutation($t21), LenVec(p#$Mutation($t20))), $Dereference($t21))); - - // write_back[Reference($t0).shares (simple_map::SimpleMap)]($t20) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:202:32+16 - $t0 := $UpdateMutation($t0, $Update'$1_pool_u64_Pool'_shares($Dereference($t0), $Dereference($t20))); - - // trace_local[pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:202:32+16 - $temp_0'$1_pool_u64_Pool' := $Dereference($t0); - assume {:print "$track_local(55,8,0):", $temp_0'$1_pool_u64_Pool'} $temp_0'$1_pool_u64_Pool' == $temp_0'$1_pool_u64_Pool'; - - // trace_local[remaining_shares]($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:202:13+16 - assume {:print "$track_local(55,8,6):", $t24} $t24 == $t24; - - // $t25 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:203:33+1 - assume {:print "$at(58,8571,8572)"} true; - $t25 := 0; - assume $IsValid'u64'($t25); - - // $t26 := ==($t24, $t25) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:203:30+2 - $t26 := $IsEqual'u64'($t24, $t25); - - // if ($t26) goto L7 else goto L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:203:9+266 - if ($t26) { goto L7; } else { goto L6; } - - // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:204:60+4 - assume {:print "$at(58,8635,8639)"} true; -L7: - - // $t27 := get_field.shareholders($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:204:59+18 - assume {:print "$at(58,8634,8652)"} true; - $t27 := $shareholders#$1_pool_u64_Pool($Dereference($t0)); - - // ($t28, $t29) := vector::index_of
($t27, $t1) on_abort goto L10 with $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:204:42+50 - call $t28,$t29 := $1_vector_index_of'address'($t27, $t1); - if ($abort_flag) { - assume {:print "$at(58,8617,8667)"} true; - $t12 := $abort_code; - assume {:print "$track_abort(55,8):", $t12} $t12 == $t12; - goto L10; - } - - // trace_local[shareholder_index]($t29) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:204:21+17 - assume {:print "$track_local(55,8,7):", $t29} $t29 == $t29; - - // destroy($t28) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:204:18+1 - - // $t30 := borrow_field.shareholders($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:205:28+22 - assume {:print "$at(58,8696,8718)"} true; - $t30 := $ChildMutation($t0, 4, $shareholders#$1_pool_u64_Pool($Dereference($t0))); - - // $t31 := vector::remove
($t30, $t29) on_abort goto L10 with $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:205:13+57 - call $t31,$t30 := $1_vector_remove'address'($t30, $t29); - if ($abort_flag) { - assume {:print "$at(58,8681,8738)"} true; - $t12 := $abort_code; - assume {:print "$track_abort(55,8):", $t12} $t12 == $t12; - goto L10; - } - - // write_back[Reference($t0).shareholders (vector
)]($t30) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:205:13+57 - $t0 := $UpdateMutation($t0, $Update'$1_pool_u64_Pool'_shareholders($Dereference($t0), $Dereference($t30))); - - // trace_local[pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:205:13+57 - $temp_0'$1_pool_u64_Pool' := $Dereference($t0); - assume {:print "$track_local(55,8,0):", $temp_0'$1_pool_u64_Pool'} $temp_0'$1_pool_u64_Pool' == $temp_0'$1_pool_u64_Pool'; - - // destroy($t31) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:205:13+57 - - // $t32 := borrow_field.shares($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:206:32+16 - assume {:print "$at(58,8771,8787)"} true; - $t32 := $ChildMutation($t0, 3, $shares#$1_pool_u64_Pool($Dereference($t0))); - - // ($t33, $t34) := simple_map::remove($t32, $t1) on_abort goto L10 with $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:206:13+50 - call $t33,$t34,$t32 := $1_simple_map_remove'address_u64'($t32, $t1); - if ($abort_flag) { - assume {:print "$at(58,8752,8802)"} true; - $t12 := $abort_code; - assume {:print "$track_abort(55,8):", $t12} $t12 == $t12; - goto L10; - } - - // write_back[Reference($t0).shares (simple_map::SimpleMap)]($t32) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:206:13+50 - $t0 := $UpdateMutation($t0, $Update'$1_pool_u64_Pool'_shares($Dereference($t0), $Dereference($t32))); - - // trace_local[pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:206:13+50 - $temp_0'$1_pool_u64_Pool' := $Dereference($t0); - assume {:print "$track_local(55,8,0):", $temp_0'$1_pool_u64_Pool'} $temp_0'$1_pool_u64_Pool' == $temp_0'$1_pool_u64_Pool'; - - // destroy($t34) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:206:13+50 - - // destroy($t33) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:206:13+50 - - // goto L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:206:63+1 - goto L8; - - // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:203:9+266 - assume {:print "$at(58,8547,8813)"} true; -L6: - - // destroy($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:203:9+266 - assume {:print "$at(58,8547,8813)"} true; - - // label L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:209:9+16 - assume {:print "$at(58,8824,8840)"} true; -L8: - - // trace_return[0]($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:209:9+16 - assume {:print "$at(58,8824,8840)"} true; - assume {:print "$track_return(55,8,0):", $t24} $t24 == $t24; - - // trace_local[pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:209:9+16 - $temp_0'$1_pool_u64_Pool' := $Dereference($t0); - assume {:print "$track_local(55,8,0):", $temp_0'$1_pool_u64_Pool'} $temp_0'$1_pool_u64_Pool' == $temp_0'$1_pool_u64_Pool'; - - // pack_ref_deep($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:209:9+16 - - // label L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:210:5+1 - assume {:print "$at(58,8845,8846)"} true; -L9: - - // return $t24 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:210:5+1 - assume {:print "$at(58,8845,8846)"} true; - $ret0 := $t24; - $ret1 := $t0; - return; - - // label L10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:210:5+1 -L10: - - // abort($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:210:5+1 - assume {:print "$at(58,8845,8846)"} true; - $abort_code := $t12; - $abort_flag := true; - return; - -} - -// fun pool_u64::multiply_then_divide [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:254:5+167 -procedure {:inline 1} $1_pool_u64_multiply_then_divide(_$t0: $1_pool_u64_Pool, _$t1: int, _$t2: int, _$t3: int) returns ($ret0: int) -{ - // declare local variables - var $t4: int; - var $t5: int; - var $t6: int; - var $t7: int; - var $t8: int; - var $t9: int; - var $t10: int; - var $t0: $1_pool_u64_Pool; - var $t1: int; - var $t2: int; - var $t3: int; - var $temp_0'$1_pool_u64_Pool': $1_pool_u64_Pool; - var $temp_0'u64': int; - $t0 := _$t0; - $t1 := _$t1; - $t2 := _$t2; - $t3 := _$t3; - - // bytecode translation starts here - // trace_local[_pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:254:5+1 - assume {:print "$at(58,11269,11270)"} true; - assume {:print "$track_local(55,10,0):", $t0} $t0 == $t0; - - // trace_local[x]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:254:5+1 - assume {:print "$track_local(55,10,1):", $t1} $t1 == $t1; - - // trace_local[y]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:254:5+1 - assume {:print "$track_local(55,10,2):", $t2} $t2 == $t2; - - // trace_local[z]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:254:5+1 - assume {:print "$track_local(55,10,3):", $t3} $t3 == $t3; - - // $t4 := pool_u64::to_u128($t1) on_abort goto L2 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:255:23+10 - assume {:print "$at(58,11368,11378)"} true; - call $t4 := $1_pool_u64_to_u128($t1); - if ($abort_flag) { - assume {:print "$at(58,11368,11378)"} true; - $t5 := $abort_code; - assume {:print "$track_abort(55,10):", $t5} $t5 == $t5; - goto L2; - } - - // $t6 := pool_u64::to_u128($t2) on_abort goto L2 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:255:36+10 - call $t6 := $1_pool_u64_to_u128($t2); - if ($abort_flag) { - assume {:print "$at(58,11381,11391)"} true; - $t5 := $abort_code; - assume {:print "$track_abort(55,10):", $t5} $t5 == $t5; - goto L2; - } - - // $t7 := *($t4, $t6) on_abort goto L2 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:255:34+1 - call $t7 := $MulU128($t4, $t6); - if ($abort_flag) { - assume {:print "$at(58,11379,11380)"} true; - $t5 := $abort_code; - assume {:print "$track_abort(55,10):", $t5} $t5 == $t5; - goto L2; - } - - // $t8 := pool_u64::to_u128($t3) on_abort goto L2 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:255:50+10 - call $t8 := $1_pool_u64_to_u128($t3); - if ($abort_flag) { - assume {:print "$at(58,11395,11405)"} true; - $t5 := $abort_code; - assume {:print "$track_abort(55,10):", $t5} $t5 == $t5; - goto L2; - } - - // $t9 := /($t7, $t8) on_abort goto L2 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:255:48+1 - call $t9 := $Div($t7, $t8); - if ($abort_flag) { - assume {:print "$at(58,11393,11394)"} true; - $t5 := $abort_code; - assume {:print "$track_abort(55,10):", $t5} $t5 == $t5; - goto L2; - } - - // $t10 := (u64)($t9) on_abort goto L2 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:256:9+15 - assume {:print "$at(58,11415,11430)"} true; - call $t10 := $CastU64($t9); - if ($abort_flag) { - assume {:print "$at(58,11415,11430)"} true; - $t5 := $abort_code; - assume {:print "$track_abort(55,10):", $t5} $t5 == $t5; - goto L2; - } - - // trace_return[0]($t10) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:256:9+15 - assume {:print "$track_return(55,10,0):", $t10} $t10 == $t10; - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:257:5+1 - assume {:print "$at(58,11435,11436)"} true; -L1: - - // return $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:257:5+1 - assume {:print "$at(58,11435,11436)"} true; - $ret0 := $t10; - return; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:257:5+1 -L2: - - // abort($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:257:5+1 - assume {:print "$at(58,11435,11436)"} true; - $abort_code := $t5; - $abort_flag := true; - return; - -} - -// fun pool_u64::redeem_shares [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:164:5+635 -procedure {:inline 1} $1_pool_u64_redeem_shares(_$t0: $Mutation ($1_pool_u64_Pool), _$t1: int, _$t2: int) returns ($ret0: int, $ret1: $Mutation ($1_pool_u64_Pool)) -{ - // declare local variables - var $t3: int; - var $t4: int; - var $t5: int; - var $t6: int; - var $t7: int; - var $t8: int; - var $t9: $1_pool_u64_Pool; - var $t10: bool; - var $t11: int; - var $t12: int; - var $t13: int; - var $t14: $1_pool_u64_Pool; - var $t15: int; - var $t16: bool; - var $t17: int; - var $t18: int; - var $t19: int; - var $t20: bool; - var $t21: int; - var $t22: int; - var $t23: $1_pool_u64_Pool; - var $t24: int; - var $t25: int; - var $t26: int; - var $t27: $Mutation (int); - var $t28: int; - var $t29: int; - var $t30: $Mutation (int); - var $t31: int; - var $t32: int; - var $t33: int; - var $t0: $Mutation ($1_pool_u64_Pool); - var $t1: int; - var $t2: int; - var $temp_0'$1_pool_u64_Pool': $1_pool_u64_Pool; - var $temp_0'address': int; - var $temp_0'u64': int; - $t0 := _$t0; - $t1 := _$t1; - $t2 := _$t2; - - // bytecode translation starts here - // assume Identical($t7, pool_u64::spec_shares_to_amount_with_total_coins($t0, $t2, select pool_u64::Pool.total_coins($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:145:9+102 - assume {:print "$at(59,5992,6094)"} true; - assume ($t7 == $1_pool_u64_spec_shares_to_amount_with_total_coins($Dereference($t0), $t2, $total_coins#$1_pool_u64_Pool($Dereference($t0)))); - - // assume Identical($t8, Sub(simple_map::spec_get(select pool_u64::Pool.shares($t0), $t1), $t2)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:181:9+83 - assume {:print "$at(59,7643,7726)"} true; - assume ($t8 == ($1_simple_map_spec_get'address_u64'($shares#$1_pool_u64_Pool($Dereference($t0)), $t1) - $t2)); - - // trace_local[pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:164:5+1 - assume {:print "$at(58,6621,6622)"} true; - $temp_0'$1_pool_u64_Pool' := $Dereference($t0); - assume {:print "$track_local(55,11,0):", $temp_0'$1_pool_u64_Pool'} $temp_0'$1_pool_u64_Pool' == $temp_0'$1_pool_u64_Pool'; - - // trace_local[shareholder]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:164:5+1 - assume {:print "$track_local(55,11,1):", $t1} $t1 == $t1; - - // trace_local[shares_to_redeem]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:164:5+1 - assume {:print "$track_local(55,11,2):", $t2} $t2 == $t2; - - // $t9 := read_ref($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:165:25+19 - assume {:print "$at(58,6739,6758)"} true; - $t9 := $Dereference($t0); - - // $t10 := pool_u64::contains($t9, $t1) on_abort goto L9 with $t11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:165:17+27 - call $t10 := $1_pool_u64_contains($t9, $t1); - if ($abort_flag) { - assume {:print "$at(58,6731,6758)"} true; - $t11 := $abort_code; - assume {:print "$track_abort(55,11):", $t11} $t11 == $t11; - goto L9; - } - - // if ($t10) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:165:9+85 - if ($t10) { goto L1; } else { goto L0; } - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:165:9+85 -L1: - - // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:165:9+85 - assume {:print "$at(58,6723,6808)"} true; - goto L2; - - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:165:9+85 -L0: - - // pack_ref_deep($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:165:9+85 - assume {:print "$at(58,6723,6808)"} true; - - // destroy($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:165:9+85 - - // $t12 := 1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:165:70+22 - $t12 := 1; - assume $IsValid'u64'($t12); - - // $t13 := error::invalid_argument($t12) on_abort goto L9 with $t11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:165:46+47 - call $t13 := $1_error_invalid_argument($t12); - if ($abort_flag) { - assume {:print "$at(58,6760,6807)"} true; - $t11 := $abort_code; - assume {:print "$track_abort(55,11):", $t11} $t11 == $t11; - goto L9; - } - - // trace_abort($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:165:9+85 - assume {:print "$at(58,6723,6808)"} true; - assume {:print "$track_abort(55,11):", $t13} $t13 == $t13; - - // $t11 := move($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:165:9+85 - $t11 := $t13; - - // goto L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:165:9+85 - goto L9; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:166:24+4 - assume {:print "$at(58,6833,6837)"} true; -L2: - - // $t14 := read_ref($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:166:23+19 - assume {:print "$at(58,6832,6851)"} true; - $t14 := $Dereference($t0); - - // $t15 := pool_u64::shares($t14, $t1) on_abort goto L9 with $t11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:166:17+25 - call $t15 := $1_pool_u64_shares($t14, $t1); - if ($abort_flag) { - assume {:print "$at(58,6826,6851)"} true; - $t11 := $abort_code; - assume {:print "$track_abort(55,11):", $t11} $t11 == $t11; - goto L9; - } - - // $t16 := >=($t15, $t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:166:43+2 - call $t16 := $Ge($t15, $t2); - - // if ($t16) goto L4 else goto L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:166:9+101 - if ($t16) { goto L4; } else { goto L3; } - - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:166:9+101 -L4: - - // goto L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:166:9+101 - assume {:print "$at(58,6818,6919)"} true; - goto L5; - - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:166:9+101 -L3: - - // pack_ref_deep($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:166:9+101 - assume {:print "$at(58,6818,6919)"} true; - - // destroy($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:166:9+101 - - // $t17 := 4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:166:88+20 - $t17 := 4; - assume $IsValid'u64'($t17); - - // $t18 := error::invalid_argument($t17) on_abort goto L9 with $t11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:166:64+45 - call $t18 := $1_error_invalid_argument($t17); - if ($abort_flag) { - assume {:print "$at(58,6873,6918)"} true; - $t11 := $abort_code; - assume {:print "$track_abort(55,11):", $t11} $t11 == $t11; - goto L9; - } - - // trace_abort($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:166:9+101 - assume {:print "$at(58,6818,6919)"} true; - assume {:print "$track_abort(55,11):", $t18} $t18 == $t18; - - // $t11 := move($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:166:9+101 - $t11 := $t18; - - // goto L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:166:9+101 - goto L9; - - // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:168:13+16 - assume {:print "$at(58,6934,6950)"} true; -L5: - - // $t19 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:168:33+1 - assume {:print "$at(58,6954,6955)"} true; - $t19 := 0; - assume $IsValid'u64'($t19); - - // $t20 := ==($t2, $t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:168:30+2 - $t20 := $IsEqual'u64'($t2, $t19); - - // if ($t20) goto L7 else goto L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:168:9+35 - if ($t20) { goto L7; } else { goto L6; } - - // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:168:36+8 -L7: - - // destroy($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:168:36+8 - assume {:print "$at(58,6957,6965)"} true; - - // $t21 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:168:43+1 - $t21 := 0; - assume $IsValid'u64'($t21); - - // trace_return[0]($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:168:36+8 - assume {:print "$track_return(55,11,0):", $t21} $t21 == $t21; - - // trace_local[pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:168:36+8 - $temp_0'$1_pool_u64_Pool' := $Dereference($t0); - assume {:print "$track_local(55,11,0):", $temp_0'$1_pool_u64_Pool'} $temp_0'$1_pool_u64_Pool' == $temp_0'$1_pool_u64_Pool'; - - // pack_ref_deep($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:168:36+8 - - // $t22 := move($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:168:36+8 - $t22 := $t21; - - // goto L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:168:36+8 - goto L8; - - // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:170:47+4 - assume {:print "$at(58,7014,7018)"} true; -L6: - - // $t23 := read_ref($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:170:46+24 - assume {:print "$at(58,7013,7037)"} true; - $t23 := $Dereference($t0); - - // $t24 := pool_u64::shares_to_amount($t23, $t2) on_abort goto L9 with $t11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:170:30+40 - call $t24 := $1_pool_u64_shares_to_amount($t23, $t2); - if ($abort_flag) { - assume {:print "$at(58,6997,7037)"} true; - $t11 := $abort_code; - assume {:print "$track_abort(55,11):", $t11} $t11 == $t11; - goto L9; - } - - // trace_local[redeemed_coins]($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:170:13+14 - assume {:print "$track_local(55,11,6):", $t24} $t24 == $t24; - - // $t25 := get_field.total_coins($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:171:28+16 - assume {:print "$at(58,7066,7082)"} true; - $t25 := $total_coins#$1_pool_u64_Pool($Dereference($t0)); - - // $t26 := -($t25, $t24) on_abort goto L9 with $t11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:171:45+1 - call $t26 := $Sub($t25, $t24); - if ($abort_flag) { - assume {:print "$at(58,7083,7084)"} true; - $t11 := $abort_code; - assume {:print "$track_abort(55,11):", $t11} $t11 == $t11; - goto L9; - } - - // $t27 := borrow_field.total_coins($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:171:9+16 - $t27 := $ChildMutation($t0, 1, $total_coins#$1_pool_u64_Pool($Dereference($t0))); - - // write_ref($t27, $t26) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:171:9+52 - $t27 := $UpdateMutation($t27, $t26); - - // write_back[Reference($t0).total_coins (u64)]($t27) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:171:9+52 - $t0 := $UpdateMutation($t0, $Update'$1_pool_u64_Pool'_total_coins($Dereference($t0), $Dereference($t27))); - - // trace_local[pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:171:9+52 - $temp_0'$1_pool_u64_Pool' := $Dereference($t0); - assume {:print "$track_local(55,11,0):", $temp_0'$1_pool_u64_Pool'} $temp_0'$1_pool_u64_Pool' == $temp_0'$1_pool_u64_Pool'; - - // $t28 := get_field.total_shares($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:172:29+17 - assume {:print "$at(58,7129,7146)"} true; - $t28 := $total_shares#$1_pool_u64_Pool($Dereference($t0)); - - // $t29 := -($t28, $t2) on_abort goto L9 with $t11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:172:47+1 - call $t29 := $Sub($t28, $t2); - if ($abort_flag) { - assume {:print "$at(58,7147,7148)"} true; - $t11 := $abort_code; - assume {:print "$track_abort(55,11):", $t11} $t11 == $t11; - goto L9; - } - - // $t30 := borrow_field.total_shares($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:172:9+17 - $t30 := $ChildMutation($t0, 2, $total_shares#$1_pool_u64_Pool($Dereference($t0))); - - // write_ref($t30, $t29) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:172:9+56 - $t30 := $UpdateMutation($t30, $t29); - - // write_back[Reference($t0).total_shares (u64)]($t30) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:172:9+56 - $t0 := $UpdateMutation($t0, $Update'$1_pool_u64_Pool'_total_shares($Dereference($t0), $Dereference($t30))); - - // trace_local[pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:172:9+56 - $temp_0'$1_pool_u64_Pool' := $Dereference($t0); - assume {:print "$track_local(55,11,0):", $temp_0'$1_pool_u64_Pool'} $temp_0'$1_pool_u64_Pool' == $temp_0'$1_pool_u64_Pool'; - - // assume Identical($t31, Sub(simple_map::spec_get(select pool_u64::Pool.shares($t0), $t1), $t2)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:173:9+83 - assume {:print "$at(59,7278,7361)"} true; - assume ($t31 == ($1_simple_map_spec_get'address_u64'($shares#$1_pool_u64_Pool($Dereference($t0)), $t1) - $t2)); - - // assume Identical($t32, Sub(simple_map::spec_get(select pool_u64::Pool.shares($t0), $t1), $t2)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:181:9+83 - assume {:print "$at(59,7643,7726)"} true; - assume ($t32 == ($1_simple_map_spec_get'address_u64'($shares#$1_pool_u64_Pool($Dereference($t0)), $t1) - $t2)); - - // $t33 := pool_u64::deduct_shares($t0, $t1, $t2) on_abort goto L9 with $t11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:173:9+50 - assume {:print "$at(58,7175,7225)"} true; - call $t33,$t0 := $1_pool_u64_deduct_shares($t0, $t1, $t2); - if ($abort_flag) { - assume {:print "$at(58,7175,7225)"} true; - $t11 := $abort_code; - assume {:print "$track_abort(55,11):", $t11} $t11 == $t11; - goto L9; - } - - // destroy($t33) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:173:9+50 - - // trace_return[0]($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:175:9+14 - assume {:print "$at(58,7236,7250)"} true; - assume {:print "$track_return(55,11,0):", $t24} $t24 == $t24; - - // trace_local[pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:175:9+14 - $temp_0'$1_pool_u64_Pool' := $Dereference($t0); - assume {:print "$track_local(55,11,0):", $temp_0'$1_pool_u64_Pool'} $temp_0'$1_pool_u64_Pool' == $temp_0'$1_pool_u64_Pool'; - - // pack_ref_deep($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:175:9+14 - - // $t22 := move($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:175:9+14 - $t22 := $t24; - - // label L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:176:5+1 - assume {:print "$at(58,7255,7256)"} true; -L8: - - // return $t22 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:176:5+1 - assume {:print "$at(58,7255,7256)"} true; - $ret0 := $t22; - $ret1 := $t0; - return; - - // label L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:176:5+1 -L9: - - // abort($t11) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:176:5+1 - assume {:print "$at(58,7255,7256)"} true; - $abort_code := $t11; - $abort_flag := true; - return; - -} - -// fun pool_u64::shareholders [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:111:5+87 -procedure {:inline 1} $1_pool_u64_shareholders(_$t0: $1_pool_u64_Pool) returns ($ret0: Vec (int)) -{ - // declare local variables - var $t1: Vec (int); - var $t0: $1_pool_u64_Pool; - var $temp_0'$1_pool_u64_Pool': $1_pool_u64_Pool; - var $temp_0'vec'address'': Vec (int); - $t0 := _$t0; - - // bytecode translation starts here - // trace_local[pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:111:5+1 - assume {:print "$at(58,4336,4337)"} true; - assume {:print "$track_local(55,12,0):", $t0} $t0 == $t0; - - // $t1 := get_field.shareholders($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:112:9+17 - assume {:print "$at(58,4400,4417)"} true; - $t1 := $shareholders#$1_pool_u64_Pool($t0); - - // trace_return[0]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:112:9+17 - assume {:print "$track_return(55,12,0):", $t1} $t1 == $t1; - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:113:5+1 - assume {:print "$at(58,4422,4423)"} true; -L1: - - // return $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:113:5+1 - assume {:print "$at(58,4422,4423)"} true; - $ret0 := $t1; - return; - -} - -// fun pool_u64::shareholders_count [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:116:5+98 -procedure {:inline 1} $1_pool_u64_shareholders_count(_$t0: $1_pool_u64_Pool) returns ($ret0: int) -{ - // declare local variables - var $t1: Vec (int); - var $t2: int; - var $t3: int; - var $t0: $1_pool_u64_Pool; - var $temp_0'$1_pool_u64_Pool': $1_pool_u64_Pool; - var $temp_0'u64': int; - $t0 := _$t0; - - // bytecode translation starts here - // trace_local[pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:116:5+1 - assume {:print "$at(58,4482,4483)"} true; - assume {:print "$track_local(55,13,0):", $t0} $t0 == $t0; - - // $t1 := get_field.shareholders($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:117:24+18 - assume {:print "$at(58,4555,4573)"} true; - $t1 := $shareholders#$1_pool_u64_Pool($t0); - - // $t2 := vector::length
($t1) on_abort goto L2 with $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:117:9+34 - call $t2 := $1_vector_length'address'($t1); - if ($abort_flag) { - assume {:print "$at(58,4540,4574)"} true; - $t3 := $abort_code; - assume {:print "$track_abort(55,13):", $t3} $t3 == $t3; - goto L2; - } - - // trace_return[0]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:117:9+34 - assume {:print "$track_return(55,13,0):", $t2} $t2 == $t2; - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:118:5+1 - assume {:print "$at(58,4579,4580)"} true; -L1: - - // return $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:118:5+1 - assume {:print "$at(58,4579,4580)"} true; - $ret0 := $t2; - return; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:118:5+1 -L2: - - // abort($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:118:5+1 - assume {:print "$at(58,4579,4580)"} true; - $abort_code := $t3; - $abort_flag := true; - return; - -} - -// fun pool_u64::shares [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:96:5+209 -procedure {:inline 1} $1_pool_u64_shares(_$t0: $1_pool_u64_Pool, _$t1: int) returns ($ret0: int) -{ - // declare local variables - var $t2: int; - var $t3: bool; - var $t4: int; - var $t5: Table int (int); - var $t6: int; - var $t0: $1_pool_u64_Pool; - var $t1: int; - var $temp_0'$1_pool_u64_Pool': $1_pool_u64_Pool; - var $temp_0'address': int; - var $temp_0'u64': int; - $t0 := _$t0; - $t1 := _$t1; - - // bytecode translation starts here - // trace_local[pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:96:5+1 - assume {:print "$at(58,3839,3840)"} true; - assume {:print "$track_local(55,14,0):", $t0} $t0 == $t0; - - // trace_local[shareholder]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:96:5+1 - assume {:print "$track_local(55,14,1):", $t1} $t1 == $t1; - - // $t3 := pool_u64::contains($t0, $t1) on_abort goto L4 with $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:97:13+27 - assume {:print "$at(58,3911,3938)"} true; - call $t3 := $1_pool_u64_contains($t0, $t1); - if ($abort_flag) { - assume {:print "$at(58,3911,3938)"} true; - $t4 := $abort_code; - assume {:print "$track_abort(55,14):", $t4} $t4 == $t4; - goto L4; - } - - // if ($t3) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:97:9+135 - if ($t3) { goto L1; } else { goto L0; } - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:98:34+4 - assume {:print "$at(58,3975,3979)"} true; -L1: - - // $t5 := get_field.shares($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:98:33+12 - assume {:print "$at(58,3974,3986)"} true; - $t5 := $shares#$1_pool_u64_Pool($t0); - - // $t2 := simple_map::borrow($t5, $t1) on_abort goto L4 with $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:98:14+46 - call $t2 := $1_simple_map_borrow'address_u64'($t5, $t1); - if ($abort_flag) { - assume {:print "$at(58,3955,4001)"} true; - $t4 := $abort_code; - assume {:print "$track_abort(55,14):", $t4} $t4 == $t4; - goto L4; - } - - // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:97:9+135 - assume {:print "$at(58,3907,4042)"} true; - goto L2; - - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:97:9+135 -L0: - - // $t6 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:100:13+1 - assume {:print "$at(58,4031,4032)"} true; - $t6 := 0; - assume $IsValid'u64'($t6); - - // $t2 := $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:97:9+135 - assume {:print "$at(58,3907,4042)"} true; - $t2 := $t6; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:97:9+135 -L2: - - // trace_return[0]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:97:9+135 - assume {:print "$at(58,3907,4042)"} true; - assume {:print "$track_return(55,14,0):", $t2} $t2 == $t2; - - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:102:5+1 - assume {:print "$at(58,4047,4048)"} true; -L3: - - // return $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:102:5+1 - assume {:print "$at(58,4047,4048)"} true; - $ret0 := $t2; - return; - - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:102:5+1 -L4: - - // abort($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:102:5+1 - assume {:print "$at(58,4047,4048)"} true; - $abort_code := $t4; - $abort_flag := true; - return; - -} - -// fun pool_u64::shares_to_amount [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:236:5+140 -procedure {:inline 1} $1_pool_u64_shares_to_amount(_$t0: $1_pool_u64_Pool, _$t1: int) returns ($ret0: int) -{ - // declare local variables - var $t2: int; - var $t3: int; - var $t4: int; - var $t0: $1_pool_u64_Pool; - var $t1: int; - var $temp_0'$1_pool_u64_Pool': $1_pool_u64_Pool; - var $temp_0'u64': int; - $t0 := _$t0; - $t1 := _$t1; - - // bytecode translation starts here - // trace_local[pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:236:5+1 - assume {:print "$at(58,10355,10356)"} true; - assume {:print "$track_local(55,15,0):", $t0} $t0 == $t0; - - // trace_local[shares]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:236:5+1 - assume {:print "$track_local(55,15,1):", $t1} $t1 == $t1; - - // $t2 := get_field.total_coins($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:237:57+16 - assume {:print "$at(58,10472,10488)"} true; - $t2 := $total_coins#$1_pool_u64_Pool($t0); - - // $t3 := pool_u64::shares_to_amount_with_total_coins($t0, $t1, $t2) on_abort goto L2 with $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:237:9+65 - call $t3 := $1_pool_u64_shares_to_amount_with_total_coins($t0, $t1, $t2); - if ($abort_flag) { - assume {:print "$at(58,10424,10489)"} true; - $t4 := $abort_code; - assume {:print "$track_abort(55,15):", $t4} $t4 == $t4; - goto L2; - } - - // trace_return[0]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:237:9+65 - assume {:print "$track_return(55,15,0):", $t3} $t3 == $t3; - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:238:5+1 - assume {:print "$at(58,10494,10495)"} true; -L1: - - // return $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:238:5+1 - assume {:print "$at(58,10494,10495)"} true; - $ret0 := $t3; - return; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:238:5+1 -L2: - - // abort($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:238:5+1 - assume {:print "$at(58,10494,10495)"} true; - $abort_code := $t4; - $abort_flag := true; - return; - -} - -// fun pool_u64::shares_to_amount_with_total_coins [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:242:5+601 -procedure {:inline 1} $1_pool_u64_shares_to_amount_with_total_coins(_$t0: $1_pool_u64_Pool, _$t1: int, _$t2: int) returns ($ret0: int) -{ - // declare local variables - var $t3: bool; - var $t4: int; - var $t5: int; - var $t6: int; - var $t7: bool; - var $t8: bool; - var $t9: int; - var $t10: int; - var $t11: int; - var $t12: int; - var $t13: int; - var $t0: $1_pool_u64_Pool; - var $t1: int; - var $t2: int; - var $temp_0'$1_pool_u64_Pool': $1_pool_u64_Pool; - var $temp_0'u64': int; - $t0 := _$t0; - $t1 := _$t1; - $t2 := _$t2; - - // bytecode translation starts here - // trace_local[pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:242:5+1 - assume {:print "$at(58,10662,10663)"} true; - assume {:print "$track_local(55,16,0):", $t0} $t0 == $t0; - - // trace_local[shares]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:242:5+1 - assume {:print "$track_local(55,16,1):", $t1} $t1 == $t1; - - // trace_local[total_coins]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:242:5+1 - assume {:print "$track_local(55,16,2):", $t2} $t2 == $t2; - - // $t5 := get_field.total_coins($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:244:13+16 - assume {:print "$at(58,10829,10845)"} true; - $t5 := $total_coins#$1_pool_u64_Pool($t0); - - // $t6 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:244:33+1 - $t6 := 0; - assume $IsValid'u64'($t6); - - // $t7 := ==($t5, $t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:244:30+2 - $t7 := $IsEqual'u64'($t5, $t6); - - // if ($t7) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:244:13+47 - if ($t7) { goto L1; } else { goto L0; } - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:244:13+47 -L1: - - // $t8 := true at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:244:13+47 - assume {:print "$at(58,10829,10876)"} true; - $t8 := true; - assume $IsValid'bool'($t8); - - // $t3 := $t8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:244:13+47 - $t3 := $t8; - - // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:244:13+47 - goto L2; - - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:244:38+4 -L0: - - // $t9 := get_field.total_shares($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:244:38+17 - assume {:print "$at(58,10854,10871)"} true; - $t9 := $total_shares#$1_pool_u64_Pool($t0); - - // $t10 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:244:59+1 - $t10 := 0; - assume $IsValid'u64'($t10); - - // $t3 := ==($t9, $t10) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:244:56+2 - $t3 := $IsEqual'u64'($t9, $t10); - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:244:13+47 -L2: - - // if ($t3) goto L4 else goto L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:244:9+432 - assume {:print "$at(58,10825,11257)"} true; - if ($t3) { goto L4; } else { goto L3; } - - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:244:9+432 -L4: - - // $t11 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:245:13+1 - assume {:print "$at(58,10892,10893)"} true; - $t11 := 0; - assume $IsValid'u64'($t11); - - // $t4 := $t11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:244:9+432 - assume {:print "$at(58,10825,11257)"} true; - $t4 := $t11; - - // goto L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:244:9+432 - goto L5; - - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:250:34+4 - assume {:print "$at(58,11202,11206)"} true; -L3: - - // $t12 := get_field.total_shares($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:250:61+17 - assume {:print "$at(58,11229,11246)"} true; - $t12 := $total_shares#$1_pool_u64_Pool($t0); - - // $t4 := pool_u64::multiply_then_divide($t0, $t1, $t2, $t12) on_abort goto L7 with $t13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:250:13+66 - call $t4 := $1_pool_u64_multiply_then_divide($t0, $t1, $t2, $t12); - if ($abort_flag) { - assume {:print "$at(58,11181,11247)"} true; - $t13 := $abort_code; - assume {:print "$track_abort(55,16):", $t13} $t13 == $t13; - goto L7; - } - - // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:244:9+432 - assume {:print "$at(58,10825,11257)"} true; -L5: - - // trace_return[0]($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:244:9+432 - assume {:print "$at(58,10825,11257)"} true; - assume {:print "$track_return(55,16,0):", $t4} $t4 == $t4; - - // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:252:5+1 - assume {:print "$at(58,11262,11263)"} true; -L6: - - // return $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:252:5+1 - assume {:print "$at(58,11262,11263)"} true; - $ret0 := $t4; - return; - - // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:252:5+1 -L7: - - // abort($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:252:5+1 - assume {:print "$at(58,11262,11263)"} true; - $abort_code := $t13; - $abort_flag := true; - return; - -} - -// fun pool_u64::transfer_shares [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:179:5+546 -procedure {:inline 1} $1_pool_u64_transfer_shares(_$t0: $Mutation ($1_pool_u64_Pool), _$t1: int, _$t2: int, _$t3: int) returns ($ret0: $Mutation ($1_pool_u64_Pool)) -{ - // declare local variables - var $t4: int; - var $t5: int; - var $t6: $1_pool_u64_Pool; - var $t7: bool; - var $t8: int; - var $t9: int; - var $t10: int; - var $t11: $1_pool_u64_Pool; - var $t12: int; - var $t13: bool; - var $t14: int; - var $t15: int; - var $t16: int; - var $t17: bool; - var $t18: int; - var $t19: int; - var $t20: int; - var $t21: bool; - var $t22: bool; - var $t23: int; - var $t24: bool; - var $t25: int; - var $t26: int; - var $t0: $Mutation ($1_pool_u64_Pool); - var $t1: int; - var $t2: int; - var $t3: int; - var $temp_0'$1_pool_u64_Pool': $1_pool_u64_Pool; - var $temp_0'address': int; - var $temp_0'u64': int; - $t0 := _$t0; - $t1 := _$t1; - $t2 := _$t2; - $t3 := _$t3; - - // bytecode translation starts here - // trace_local[pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:179:5+1 - assume {:print "$at(58,7327,7328)"} true; - $temp_0'$1_pool_u64_Pool' := $Dereference($t0); - assume {:print "$track_local(55,20,0):", $temp_0'$1_pool_u64_Pool'} $temp_0'$1_pool_u64_Pool' == $temp_0'$1_pool_u64_Pool'; - - // trace_local[shareholder_1]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:179:5+1 - assume {:print "$track_local(55,20,1):", $t1} $t1 == $t1; - - // trace_local[shareholder_2]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:179:5+1 - assume {:print "$track_local(55,20,2):", $t2} $t2 == $t2; - - // trace_local[shares_to_transfer]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:179:5+1 - assume {:print "$track_local(55,20,3):", $t3} $t3 == $t3; - - // $t6 := read_ref($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:185:25+21 - assume {:print "$at(58,7509,7530)"} true; - $t6 := $Dereference($t0); - - // $t7 := pool_u64::contains($t6, $t1) on_abort goto L9 with $t8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:185:17+29 - call $t7 := $1_pool_u64_contains($t6, $t1); - if ($abort_flag) { - assume {:print "$at(58,7501,7530)"} true; - $t8 := $abort_code; - assume {:print "$track_abort(55,20):", $t8} $t8 == $t8; - goto L9; - } - - // if ($t7) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:185:9+87 - if ($t7) { goto L1; } else { goto L0; } - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:185:9+87 -L1: - - // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:185:9+87 - assume {:print "$at(58,7493,7580)"} true; - goto L2; - - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:185:9+87 -L0: - - // pack_ref_deep($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:185:9+87 - assume {:print "$at(58,7493,7580)"} true; - - // destroy($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:185:9+87 - - // $t9 := 1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:185:72+22 - $t9 := 1; - assume $IsValid'u64'($t9); - - // $t10 := error::invalid_argument($t9) on_abort goto L9 with $t8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:185:48+47 - call $t10 := $1_error_invalid_argument($t9); - if ($abort_flag) { - assume {:print "$at(58,7532,7579)"} true; - $t8 := $abort_code; - assume {:print "$track_abort(55,20):", $t8} $t8 == $t8; - goto L9; - } - - // trace_abort($t10) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:185:9+87 - assume {:print "$at(58,7493,7580)"} true; - assume {:print "$track_abort(55,20):", $t10} $t10 == $t10; - - // $t8 := move($t10) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:185:9+87 - $t8 := $t10; - - // goto L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:185:9+87 - goto L9; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:186:24+4 - assume {:print "$at(58,7605,7609)"} true; -L2: - - // $t11 := read_ref($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:186:23+21 - assume {:print "$at(58,7604,7625)"} true; - $t11 := $Dereference($t0); - - // $t12 := pool_u64::shares($t11, $t1) on_abort goto L9 with $t8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:186:17+27 - call $t12 := $1_pool_u64_shares($t11, $t1); - if ($abort_flag) { - assume {:print "$at(58,7598,7625)"} true; - $t8 := $abort_code; - assume {:print "$track_abort(55,20):", $t8} $t8 == $t8; - goto L9; - } - - // $t13 := >=($t12, $t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:186:45+2 - call $t13 := $Ge($t12, $t3); - - // if ($t13) goto L4 else goto L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:186:9+105 - if ($t13) { goto L4; } else { goto L3; } - - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:186:9+105 -L4: - - // goto L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:186:9+105 - assume {:print "$at(58,7590,7695)"} true; - goto L5; - - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:186:9+105 -L3: - - // pack_ref_deep($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:186:9+105 - assume {:print "$at(58,7590,7695)"} true; - - // destroy($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:186:9+105 - - // $t14 := 4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:186:92+20 - $t14 := 4; - assume $IsValid'u64'($t14); - - // $t15 := error::invalid_argument($t14) on_abort goto L9 with $t8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:186:68+45 - call $t15 := $1_error_invalid_argument($t14); - if ($abort_flag) { - assume {:print "$at(58,7649,7694)"} true; - $t8 := $abort_code; - assume {:print "$track_abort(55,20):", $t8} $t8 == $t8; - goto L9; - } - - // trace_abort($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:186:9+105 - assume {:print "$at(58,7590,7695)"} true; - assume {:print "$track_abort(55,20):", $t15} $t15 == $t15; - - // $t8 := move($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:186:9+105 - $t8 := $t15; - - // goto L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:186:9+105 - goto L9; - - // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:187:13+18 - assume {:print "$at(58,7709,7727)"} true; -L5: - - // $t16 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:187:35+1 - assume {:print "$at(58,7731,7732)"} true; - $t16 := 0; - assume $IsValid'u64'($t16); - - // $t17 := ==($t3, $t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:187:32+2 - $t17 := $IsEqual'u64'($t3, $t16); - - // if ($t17) goto L7 else goto L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:187:9+35 - if ($t17) { goto L7; } else { goto L6; } - - // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:187:38+6 -L7: - - // destroy($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:187:38+6 - assume {:print "$at(58,7734,7740)"} true; - - // trace_local[pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:187:38+6 - $temp_0'$1_pool_u64_Pool' := $Dereference($t0); - assume {:print "$track_local(55,20,0):", $temp_0'$1_pool_u64_Pool'} $temp_0'$1_pool_u64_Pool' == $temp_0'$1_pool_u64_Pool'; - - // pack_ref_deep($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:187:38+6 - - // goto L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:187:38+6 - goto L8; - - // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:189:23+4 - assume {:print "$at(58,7765,7769)"} true; -L6: - - // assume Identical($t18, Sub(simple_map::spec_get(select pool_u64::Pool.shares($t0), $t1), $t3)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:173:9+83 - assume {:print "$at(59,7278,7361)"} true; - assume ($t18 == ($1_simple_map_spec_get'address_u64'($shares#$1_pool_u64_Pool($Dereference($t0)), $t1) - $t3)); - - // assume Identical($t19, Sub(simple_map::spec_get(select pool_u64::Pool.shares($t0), $t1), $t3)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:181:9+83 - assume {:print "$at(59,7643,7726)"} true; - assume ($t19 == ($1_simple_map_spec_get'address_u64'($shares#$1_pool_u64_Pool($Dereference($t0)), $t1) - $t3)); - - // $t20 := pool_u64::deduct_shares($t0, $t1, $t3) on_abort goto L9 with $t8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:189:9+54 - assume {:print "$at(58,7751,7805)"} true; - call $t20,$t0 := $1_pool_u64_deduct_shares($t0, $t1, $t3); - if ($abort_flag) { - assume {:print "$at(58,7751,7805)"} true; - $t8 := $abort_code; - assume {:print "$track_abort(55,20):", $t8} $t8 == $t8; - goto L9; - } - - // destroy($t20) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:189:9+54 - - // assume Identical($t21, simple_map::spec_contains_key(select pool_u64::Pool.shares($t0), $t2)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:74:9+73 - assume {:print "$at(59,2864,2937)"} true; - assume ($t21 == $1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($Dereference($t0)), $t2)); - - // assume Identical($t22, simple_map::spec_contains_key(select pool_u64::Pool.shares($t0), $t2)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:83:9+73 - assume {:print "$at(59,3186,3259)"} true; - assume ($t22 == $1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($Dereference($t0)), $t2)); - - // assume Identical($t23, simple_map::spec_get(select pool_u64::Pool.shares($t0), $t2)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:84:9+68 - assume {:print "$at(59,3268,3336)"} true; - assume ($t23 == $1_simple_map_spec_get'address_u64'($shares#$1_pool_u64_Pool($Dereference($t0)), $t2)); - - // assume Identical($t24, simple_map::spec_contains_key(select pool_u64::Pool.shares($t0), $t2)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:94:9+73 - assume {:print "$at(59,3636,3709)"} true; - assume ($t24 == $1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($Dereference($t0)), $t2)); - - // assume Identical($t25, simple_map::spec_get(select pool_u64::Pool.shares($t0), $t2)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:95:9+68 - assume {:print "$at(59,3718,3786)"} true; - assume ($t25 == $1_simple_map_spec_get'address_u64'($shares#$1_pool_u64_Pool($Dereference($t0)), $t2)); - - // $t26 := pool_u64::add_shares($t0, $t2, $t3) on_abort goto L9 with $t8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:190:9+51 - assume {:print "$at(58,7815,7866)"} true; - call $t26,$t0 := $1_pool_u64_add_shares($t0, $t2, $t3); - if ($abort_flag) { - assume {:print "$at(58,7815,7866)"} true; - $t8 := $abort_code; - assume {:print "$track_abort(55,20):", $t8} $t8 == $t8; - goto L9; - } - - // destroy($t26) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:190:9+51 - - // trace_local[pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:190:60+1 - $temp_0'$1_pool_u64_Pool' := $Dereference($t0); - assume {:print "$track_local(55,20,0):", $temp_0'$1_pool_u64_Pool'} $temp_0'$1_pool_u64_Pool' == $temp_0'$1_pool_u64_Pool'; - - // pack_ref_deep($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:190:60+1 - - // label L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:191:5+1 - assume {:print "$at(58,7872,7873)"} true; -L8: - - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:191:5+1 - assume {:print "$at(58,7872,7873)"} true; - $ret0 := $t0; - return; - - // label L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:191:5+1 -L9: - - // abort($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:191:5+1 - assume {:print "$at(58,7872,7873)"} true; - $abort_code := $t8; - $abort_flag := true; - return; - -} - -// fun pool_u64::update_total_coins [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:121:5+120 -procedure {:inline 1} $1_pool_u64_update_total_coins(_$t0: $Mutation ($1_pool_u64_Pool), _$t1: int) returns ($ret0: $Mutation ($1_pool_u64_Pool)) -{ - // declare local variables - var $t2: $Mutation (int); - var $t0: $Mutation ($1_pool_u64_Pool); - var $t1: int; - var $temp_0'$1_pool_u64_Pool': $1_pool_u64_Pool; - var $temp_0'u64': int; - $t0 := _$t0; - $t1 := _$t1; - - // bytecode translation starts here - // trace_local[pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:121:5+1 - assume {:print "$at(58,4634,4635)"} true; - $temp_0'$1_pool_u64_Pool' := $Dereference($t0); - assume {:print "$track_local(55,21,0):", $temp_0'$1_pool_u64_Pool'} $temp_0'$1_pool_u64_Pool' == $temp_0'$1_pool_u64_Pool'; - - // trace_local[new_total_coins]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:121:5+1 - assume {:print "$track_local(55,21,1):", $t1} $t1 == $t1; - - // $t2 := borrow_field.total_coins($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:122:9+16 - assume {:print "$at(58,4713,4729)"} true; - $t2 := $ChildMutation($t0, 1, $total_coins#$1_pool_u64_Pool($Dereference($t0))); - - // write_ref($t2, $t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:122:9+34 - $t2 := $UpdateMutation($t2, $t1); - - // write_back[Reference($t0).total_coins (u64)]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:122:9+34 - $t0 := $UpdateMutation($t0, $Update'$1_pool_u64_Pool'_total_coins($Dereference($t0), $Dereference($t2))); - - // trace_local[pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:122:9+34 - $temp_0'$1_pool_u64_Pool' := $Dereference($t0); - assume {:print "$track_local(55,21,0):", $temp_0'$1_pool_u64_Pool'} $temp_0'$1_pool_u64_Pool' == $temp_0'$1_pool_u64_Pool'; - - // trace_local[pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:122:43+1 - $temp_0'$1_pool_u64_Pool' := $Dereference($t0); - assume {:print "$track_local(55,21,0):", $temp_0'$1_pool_u64_Pool'} $temp_0'$1_pool_u64_Pool' == $temp_0'$1_pool_u64_Pool'; - - // pack_ref_deep($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:122:43+1 - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:123:5+1 - assume {:print "$at(58,4753,4754)"} true; -L1: - - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:123:5+1 - assume {:print "$at(58,4753,4754)"} true; - $ret0 := $t0; - return; - -} - -// struct staking_contract::AddStakeEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:129:5+122 -type {:datatype} $1_staking_contract_AddStakeEvent; -function {:constructor} $1_staking_contract_AddStakeEvent($operator: int, $pool_address: int, $amount: int): $1_staking_contract_AddStakeEvent; -function {:inline} $Update'$1_staking_contract_AddStakeEvent'_operator(s: $1_staking_contract_AddStakeEvent, x: int): $1_staking_contract_AddStakeEvent { - $1_staking_contract_AddStakeEvent(x, $pool_address#$1_staking_contract_AddStakeEvent(s), $amount#$1_staking_contract_AddStakeEvent(s)) -} -function {:inline} $Update'$1_staking_contract_AddStakeEvent'_pool_address(s: $1_staking_contract_AddStakeEvent, x: int): $1_staking_contract_AddStakeEvent { - $1_staking_contract_AddStakeEvent($operator#$1_staking_contract_AddStakeEvent(s), x, $amount#$1_staking_contract_AddStakeEvent(s)) -} -function {:inline} $Update'$1_staking_contract_AddStakeEvent'_amount(s: $1_staking_contract_AddStakeEvent, x: int): $1_staking_contract_AddStakeEvent { - $1_staking_contract_AddStakeEvent($operator#$1_staking_contract_AddStakeEvent(s), $pool_address#$1_staking_contract_AddStakeEvent(s), x) -} -function $IsValid'$1_staking_contract_AddStakeEvent'(s: $1_staking_contract_AddStakeEvent): bool { - $IsValid'address'($operator#$1_staking_contract_AddStakeEvent(s)) - && $IsValid'address'($pool_address#$1_staking_contract_AddStakeEvent(s)) - && $IsValid'u64'($amount#$1_staking_contract_AddStakeEvent(s)) -} -function {:inline} $IsEqual'$1_staking_contract_AddStakeEvent'(s1: $1_staking_contract_AddStakeEvent, s2: $1_staking_contract_AddStakeEvent): bool { - s1 == s2 -} - -// struct staking_contract::UnlockStakeEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:142:5+156 -type {:datatype} $1_staking_contract_UnlockStakeEvent; -function {:constructor} $1_staking_contract_UnlockStakeEvent($operator: int, $pool_address: int, $amount: int, $commission_paid: int): $1_staking_contract_UnlockStakeEvent; -function {:inline} $Update'$1_staking_contract_UnlockStakeEvent'_operator(s: $1_staking_contract_UnlockStakeEvent, x: int): $1_staking_contract_UnlockStakeEvent { - $1_staking_contract_UnlockStakeEvent(x, $pool_address#$1_staking_contract_UnlockStakeEvent(s), $amount#$1_staking_contract_UnlockStakeEvent(s), $commission_paid#$1_staking_contract_UnlockStakeEvent(s)) -} -function {:inline} $Update'$1_staking_contract_UnlockStakeEvent'_pool_address(s: $1_staking_contract_UnlockStakeEvent, x: int): $1_staking_contract_UnlockStakeEvent { - $1_staking_contract_UnlockStakeEvent($operator#$1_staking_contract_UnlockStakeEvent(s), x, $amount#$1_staking_contract_UnlockStakeEvent(s), $commission_paid#$1_staking_contract_UnlockStakeEvent(s)) -} -function {:inline} $Update'$1_staking_contract_UnlockStakeEvent'_amount(s: $1_staking_contract_UnlockStakeEvent, x: int): $1_staking_contract_UnlockStakeEvent { - $1_staking_contract_UnlockStakeEvent($operator#$1_staking_contract_UnlockStakeEvent(s), $pool_address#$1_staking_contract_UnlockStakeEvent(s), x, $commission_paid#$1_staking_contract_UnlockStakeEvent(s)) -} -function {:inline} $Update'$1_staking_contract_UnlockStakeEvent'_commission_paid(s: $1_staking_contract_UnlockStakeEvent, x: int): $1_staking_contract_UnlockStakeEvent { - $1_staking_contract_UnlockStakeEvent($operator#$1_staking_contract_UnlockStakeEvent(s), $pool_address#$1_staking_contract_UnlockStakeEvent(s), $amount#$1_staking_contract_UnlockStakeEvent(s), x) -} -function $IsValid'$1_staking_contract_UnlockStakeEvent'(s: $1_staking_contract_UnlockStakeEvent): bool { - $IsValid'address'($operator#$1_staking_contract_UnlockStakeEvent(s)) - && $IsValid'address'($pool_address#$1_staking_contract_UnlockStakeEvent(s)) - && $IsValid'u64'($amount#$1_staking_contract_UnlockStakeEvent(s)) - && $IsValid'u64'($commission_paid#$1_staking_contract_UnlockStakeEvent(s)) -} -function {:inline} $IsEqual'$1_staking_contract_UnlockStakeEvent'(s1: $1_staking_contract_UnlockStakeEvent, s2: $1_staking_contract_UnlockStakeEvent): bool { - s1 == s2 -} - -// struct staking_contract::AddDistributionEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:155:5+130 -type {:datatype} $1_staking_contract_AddDistributionEvent; -function {:constructor} $1_staking_contract_AddDistributionEvent($operator: int, $pool_address: int, $amount: int): $1_staking_contract_AddDistributionEvent; -function {:inline} $Update'$1_staking_contract_AddDistributionEvent'_operator(s: $1_staking_contract_AddDistributionEvent, x: int): $1_staking_contract_AddDistributionEvent { - $1_staking_contract_AddDistributionEvent(x, $pool_address#$1_staking_contract_AddDistributionEvent(s), $amount#$1_staking_contract_AddDistributionEvent(s)) -} -function {:inline} $Update'$1_staking_contract_AddDistributionEvent'_pool_address(s: $1_staking_contract_AddDistributionEvent, x: int): $1_staking_contract_AddDistributionEvent { - $1_staking_contract_AddDistributionEvent($operator#$1_staking_contract_AddDistributionEvent(s), x, $amount#$1_staking_contract_AddDistributionEvent(s)) -} -function {:inline} $Update'$1_staking_contract_AddDistributionEvent'_amount(s: $1_staking_contract_AddDistributionEvent, x: int): $1_staking_contract_AddDistributionEvent { - $1_staking_contract_AddDistributionEvent($operator#$1_staking_contract_AddDistributionEvent(s), $pool_address#$1_staking_contract_AddDistributionEvent(s), x) -} -function $IsValid'$1_staking_contract_AddDistributionEvent'(s: $1_staking_contract_AddDistributionEvent): bool { - $IsValid'address'($operator#$1_staking_contract_AddDistributionEvent(s)) - && $IsValid'address'($pool_address#$1_staking_contract_AddDistributionEvent(s)) - && $IsValid'u64'($amount#$1_staking_contract_AddDistributionEvent(s)) -} -function {:inline} $IsEqual'$1_staking_contract_AddDistributionEvent'(s1: $1_staking_contract_AddDistributionEvent, s2: $1_staking_contract_AddDistributionEvent): bool { - s1 == s2 -} - -// struct staking_contract::CreateStakingContractEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:109:5+199 -type {:datatype} $1_staking_contract_CreateStakingContractEvent; -function {:constructor} $1_staking_contract_CreateStakingContractEvent($operator: int, $voter: int, $pool_address: int, $principal: int, $commission_percentage: int): $1_staking_contract_CreateStakingContractEvent; -function {:inline} $Update'$1_staking_contract_CreateStakingContractEvent'_operator(s: $1_staking_contract_CreateStakingContractEvent, x: int): $1_staking_contract_CreateStakingContractEvent { - $1_staking_contract_CreateStakingContractEvent(x, $voter#$1_staking_contract_CreateStakingContractEvent(s), $pool_address#$1_staking_contract_CreateStakingContractEvent(s), $principal#$1_staking_contract_CreateStakingContractEvent(s), $commission_percentage#$1_staking_contract_CreateStakingContractEvent(s)) -} -function {:inline} $Update'$1_staking_contract_CreateStakingContractEvent'_voter(s: $1_staking_contract_CreateStakingContractEvent, x: int): $1_staking_contract_CreateStakingContractEvent { - $1_staking_contract_CreateStakingContractEvent($operator#$1_staking_contract_CreateStakingContractEvent(s), x, $pool_address#$1_staking_contract_CreateStakingContractEvent(s), $principal#$1_staking_contract_CreateStakingContractEvent(s), $commission_percentage#$1_staking_contract_CreateStakingContractEvent(s)) -} -function {:inline} $Update'$1_staking_contract_CreateStakingContractEvent'_pool_address(s: $1_staking_contract_CreateStakingContractEvent, x: int): $1_staking_contract_CreateStakingContractEvent { - $1_staking_contract_CreateStakingContractEvent($operator#$1_staking_contract_CreateStakingContractEvent(s), $voter#$1_staking_contract_CreateStakingContractEvent(s), x, $principal#$1_staking_contract_CreateStakingContractEvent(s), $commission_percentage#$1_staking_contract_CreateStakingContractEvent(s)) -} -function {:inline} $Update'$1_staking_contract_CreateStakingContractEvent'_principal(s: $1_staking_contract_CreateStakingContractEvent, x: int): $1_staking_contract_CreateStakingContractEvent { - $1_staking_contract_CreateStakingContractEvent($operator#$1_staking_contract_CreateStakingContractEvent(s), $voter#$1_staking_contract_CreateStakingContractEvent(s), $pool_address#$1_staking_contract_CreateStakingContractEvent(s), x, $commission_percentage#$1_staking_contract_CreateStakingContractEvent(s)) -} -function {:inline} $Update'$1_staking_contract_CreateStakingContractEvent'_commission_percentage(s: $1_staking_contract_CreateStakingContractEvent, x: int): $1_staking_contract_CreateStakingContractEvent { - $1_staking_contract_CreateStakingContractEvent($operator#$1_staking_contract_CreateStakingContractEvent(s), $voter#$1_staking_contract_CreateStakingContractEvent(s), $pool_address#$1_staking_contract_CreateStakingContractEvent(s), $principal#$1_staking_contract_CreateStakingContractEvent(s), x) -} -function $IsValid'$1_staking_contract_CreateStakingContractEvent'(s: $1_staking_contract_CreateStakingContractEvent): bool { - $IsValid'address'($operator#$1_staking_contract_CreateStakingContractEvent(s)) - && $IsValid'address'($voter#$1_staking_contract_CreateStakingContractEvent(s)) - && $IsValid'address'($pool_address#$1_staking_contract_CreateStakingContractEvent(s)) - && $IsValid'u64'($principal#$1_staking_contract_CreateStakingContractEvent(s)) - && $IsValid'u64'($commission_percentage#$1_staking_contract_CreateStakingContractEvent(s)) -} -function {:inline} $IsEqual'$1_staking_contract_CreateStakingContractEvent'(s1: $1_staking_contract_CreateStakingContractEvent, s2: $1_staking_contract_CreateStakingContractEvent): bool { - s1 == s2 -} - -// struct staking_contract::DistributeEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:161:5+153 -type {:datatype} $1_staking_contract_DistributeEvent; -function {:constructor} $1_staking_contract_DistributeEvent($operator: int, $pool_address: int, $recipient: int, $amount: int): $1_staking_contract_DistributeEvent; -function {:inline} $Update'$1_staking_contract_DistributeEvent'_operator(s: $1_staking_contract_DistributeEvent, x: int): $1_staking_contract_DistributeEvent { - $1_staking_contract_DistributeEvent(x, $pool_address#$1_staking_contract_DistributeEvent(s), $recipient#$1_staking_contract_DistributeEvent(s), $amount#$1_staking_contract_DistributeEvent(s)) -} -function {:inline} $Update'$1_staking_contract_DistributeEvent'_pool_address(s: $1_staking_contract_DistributeEvent, x: int): $1_staking_contract_DistributeEvent { - $1_staking_contract_DistributeEvent($operator#$1_staking_contract_DistributeEvent(s), x, $recipient#$1_staking_contract_DistributeEvent(s), $amount#$1_staking_contract_DistributeEvent(s)) -} -function {:inline} $Update'$1_staking_contract_DistributeEvent'_recipient(s: $1_staking_contract_DistributeEvent, x: int): $1_staking_contract_DistributeEvent { - $1_staking_contract_DistributeEvent($operator#$1_staking_contract_DistributeEvent(s), $pool_address#$1_staking_contract_DistributeEvent(s), x, $amount#$1_staking_contract_DistributeEvent(s)) -} -function {:inline} $Update'$1_staking_contract_DistributeEvent'_amount(s: $1_staking_contract_DistributeEvent, x: int): $1_staking_contract_DistributeEvent { - $1_staking_contract_DistributeEvent($operator#$1_staking_contract_DistributeEvent(s), $pool_address#$1_staking_contract_DistributeEvent(s), $recipient#$1_staking_contract_DistributeEvent(s), x) -} -function $IsValid'$1_staking_contract_DistributeEvent'(s: $1_staking_contract_DistributeEvent): bool { - $IsValid'address'($operator#$1_staking_contract_DistributeEvent(s)) - && $IsValid'address'($pool_address#$1_staking_contract_DistributeEvent(s)) - && $IsValid'address'($recipient#$1_staking_contract_DistributeEvent(s)) - && $IsValid'u64'($amount#$1_staking_contract_DistributeEvent(s)) -} -function {:inline} $IsEqual'$1_staking_contract_DistributeEvent'(s1: $1_staking_contract_DistributeEvent, s2: $1_staking_contract_DistributeEvent): bool { - s1 == s2 -} - -// struct staking_contract::RequestCommissionEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:135:5+177 -type {:datatype} $1_staking_contract_RequestCommissionEvent; -function {:constructor} $1_staking_contract_RequestCommissionEvent($operator: int, $pool_address: int, $accumulated_rewards: int, $commission_amount: int): $1_staking_contract_RequestCommissionEvent; -function {:inline} $Update'$1_staking_contract_RequestCommissionEvent'_operator(s: $1_staking_contract_RequestCommissionEvent, x: int): $1_staking_contract_RequestCommissionEvent { - $1_staking_contract_RequestCommissionEvent(x, $pool_address#$1_staking_contract_RequestCommissionEvent(s), $accumulated_rewards#$1_staking_contract_RequestCommissionEvent(s), $commission_amount#$1_staking_contract_RequestCommissionEvent(s)) -} -function {:inline} $Update'$1_staking_contract_RequestCommissionEvent'_pool_address(s: $1_staking_contract_RequestCommissionEvent, x: int): $1_staking_contract_RequestCommissionEvent { - $1_staking_contract_RequestCommissionEvent($operator#$1_staking_contract_RequestCommissionEvent(s), x, $accumulated_rewards#$1_staking_contract_RequestCommissionEvent(s), $commission_amount#$1_staking_contract_RequestCommissionEvent(s)) -} -function {:inline} $Update'$1_staking_contract_RequestCommissionEvent'_accumulated_rewards(s: $1_staking_contract_RequestCommissionEvent, x: int): $1_staking_contract_RequestCommissionEvent { - $1_staking_contract_RequestCommissionEvent($operator#$1_staking_contract_RequestCommissionEvent(s), $pool_address#$1_staking_contract_RequestCommissionEvent(s), x, $commission_amount#$1_staking_contract_RequestCommissionEvent(s)) -} -function {:inline} $Update'$1_staking_contract_RequestCommissionEvent'_commission_amount(s: $1_staking_contract_RequestCommissionEvent, x: int): $1_staking_contract_RequestCommissionEvent { - $1_staking_contract_RequestCommissionEvent($operator#$1_staking_contract_RequestCommissionEvent(s), $pool_address#$1_staking_contract_RequestCommissionEvent(s), $accumulated_rewards#$1_staking_contract_RequestCommissionEvent(s), x) -} -function $IsValid'$1_staking_contract_RequestCommissionEvent'(s: $1_staking_contract_RequestCommissionEvent): bool { - $IsValid'address'($operator#$1_staking_contract_RequestCommissionEvent(s)) - && $IsValid'address'($pool_address#$1_staking_contract_RequestCommissionEvent(s)) - && $IsValid'u64'($accumulated_rewards#$1_staking_contract_RequestCommissionEvent(s)) - && $IsValid'u64'($commission_amount#$1_staking_contract_RequestCommissionEvent(s)) -} -function {:inline} $IsEqual'$1_staking_contract_RequestCommissionEvent'(s1: $1_staking_contract_RequestCommissionEvent, s2: $1_staking_contract_RequestCommissionEvent): bool { - s1 == s2 -} - -// struct staking_contract::ResetLockupEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:124:5+105 -type {:datatype} $1_staking_contract_ResetLockupEvent; -function {:constructor} $1_staking_contract_ResetLockupEvent($operator: int, $pool_address: int): $1_staking_contract_ResetLockupEvent; -function {:inline} $Update'$1_staking_contract_ResetLockupEvent'_operator(s: $1_staking_contract_ResetLockupEvent, x: int): $1_staking_contract_ResetLockupEvent { - $1_staking_contract_ResetLockupEvent(x, $pool_address#$1_staking_contract_ResetLockupEvent(s)) -} -function {:inline} $Update'$1_staking_contract_ResetLockupEvent'_pool_address(s: $1_staking_contract_ResetLockupEvent, x: int): $1_staking_contract_ResetLockupEvent { - $1_staking_contract_ResetLockupEvent($operator#$1_staking_contract_ResetLockupEvent(s), x) -} -function $IsValid'$1_staking_contract_ResetLockupEvent'(s: $1_staking_contract_ResetLockupEvent): bool { - $IsValid'address'($operator#$1_staking_contract_ResetLockupEvent(s)) - && $IsValid'address'($pool_address#$1_staking_contract_ResetLockupEvent(s)) -} -function {:inline} $IsEqual'$1_staking_contract_ResetLockupEvent'(s1: $1_staking_contract_ResetLockupEvent, s2: $1_staking_contract_ResetLockupEvent): bool { - s1 == s2 -} - -// struct staking_contract::StakingContract at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:68:5+692 -type {:datatype} $1_staking_contract_StakingContract; -function {:constructor} $1_staking_contract_StakingContract($principal: int, $pool_address: int, $owner_cap: $1_stake_OwnerCapability, $commission_percentage: int, $distribution_pool: $1_pool_u64_Pool, $signer_cap: $1_account_SignerCapability): $1_staking_contract_StakingContract; -function {:inline} $Update'$1_staking_contract_StakingContract'_principal(s: $1_staking_contract_StakingContract, x: int): $1_staking_contract_StakingContract { - $1_staking_contract_StakingContract(x, $pool_address#$1_staking_contract_StakingContract(s), $owner_cap#$1_staking_contract_StakingContract(s), $commission_percentage#$1_staking_contract_StakingContract(s), $distribution_pool#$1_staking_contract_StakingContract(s), $signer_cap#$1_staking_contract_StakingContract(s)) -} -function {:inline} $Update'$1_staking_contract_StakingContract'_pool_address(s: $1_staking_contract_StakingContract, x: int): $1_staking_contract_StakingContract { - $1_staking_contract_StakingContract($principal#$1_staking_contract_StakingContract(s), x, $owner_cap#$1_staking_contract_StakingContract(s), $commission_percentage#$1_staking_contract_StakingContract(s), $distribution_pool#$1_staking_contract_StakingContract(s), $signer_cap#$1_staking_contract_StakingContract(s)) -} -function {:inline} $Update'$1_staking_contract_StakingContract'_owner_cap(s: $1_staking_contract_StakingContract, x: $1_stake_OwnerCapability): $1_staking_contract_StakingContract { - $1_staking_contract_StakingContract($principal#$1_staking_contract_StakingContract(s), $pool_address#$1_staking_contract_StakingContract(s), x, $commission_percentage#$1_staking_contract_StakingContract(s), $distribution_pool#$1_staking_contract_StakingContract(s), $signer_cap#$1_staking_contract_StakingContract(s)) -} -function {:inline} $Update'$1_staking_contract_StakingContract'_commission_percentage(s: $1_staking_contract_StakingContract, x: int): $1_staking_contract_StakingContract { - $1_staking_contract_StakingContract($principal#$1_staking_contract_StakingContract(s), $pool_address#$1_staking_contract_StakingContract(s), $owner_cap#$1_staking_contract_StakingContract(s), x, $distribution_pool#$1_staking_contract_StakingContract(s), $signer_cap#$1_staking_contract_StakingContract(s)) -} -function {:inline} $Update'$1_staking_contract_StakingContract'_distribution_pool(s: $1_staking_contract_StakingContract, x: $1_pool_u64_Pool): $1_staking_contract_StakingContract { - $1_staking_contract_StakingContract($principal#$1_staking_contract_StakingContract(s), $pool_address#$1_staking_contract_StakingContract(s), $owner_cap#$1_staking_contract_StakingContract(s), $commission_percentage#$1_staking_contract_StakingContract(s), x, $signer_cap#$1_staking_contract_StakingContract(s)) -} -function {:inline} $Update'$1_staking_contract_StakingContract'_signer_cap(s: $1_staking_contract_StakingContract, x: $1_account_SignerCapability): $1_staking_contract_StakingContract { - $1_staking_contract_StakingContract($principal#$1_staking_contract_StakingContract(s), $pool_address#$1_staking_contract_StakingContract(s), $owner_cap#$1_staking_contract_StakingContract(s), $commission_percentage#$1_staking_contract_StakingContract(s), $distribution_pool#$1_staking_contract_StakingContract(s), x) -} -function $IsValid'$1_staking_contract_StakingContract'(s: $1_staking_contract_StakingContract): bool { - $IsValid'u64'($principal#$1_staking_contract_StakingContract(s)) - && $IsValid'address'($pool_address#$1_staking_contract_StakingContract(s)) - && $IsValid'$1_stake_OwnerCapability'($owner_cap#$1_staking_contract_StakingContract(s)) - && $IsValid'u64'($commission_percentage#$1_staking_contract_StakingContract(s)) - && $IsValid'$1_pool_u64_Pool'($distribution_pool#$1_staking_contract_StakingContract(s)) - && $IsValid'$1_account_SignerCapability'($signer_cap#$1_staking_contract_StakingContract(s)) -} -function {:inline} $IsEqual'$1_staking_contract_StakingContract'(s1: $1_staking_contract_StakingContract, s2: $1_staking_contract_StakingContract): bool { - $IsEqual'u64'($principal#$1_staking_contract_StakingContract(s1), $principal#$1_staking_contract_StakingContract(s2)) - && $IsEqual'address'($pool_address#$1_staking_contract_StakingContract(s1), $pool_address#$1_staking_contract_StakingContract(s2)) - && $IsEqual'$1_stake_OwnerCapability'($owner_cap#$1_staking_contract_StakingContract(s1), $owner_cap#$1_staking_contract_StakingContract(s2)) - && $IsEqual'u64'($commission_percentage#$1_staking_contract_StakingContract(s1), $commission_percentage#$1_staking_contract_StakingContract(s2)) - && $IsEqual'$1_pool_u64_Pool'($distribution_pool#$1_staking_contract_StakingContract(s1), $distribution_pool#$1_staking_contract_StakingContract(s2)) - && $IsEqual'$1_account_SignerCapability'($signer_cap#$1_staking_contract_StakingContract(s1), $signer_cap#$1_staking_contract_StakingContract(s2))} - -// struct staking_contract::Store at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:82:5+690 -type {:datatype} $1_staking_contract_Store; -function {:constructor} $1_staking_contract_Store($staking_contracts: Table int ($1_staking_contract_StakingContract), $create_staking_contract_events: $1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent', $update_voter_events: $1_event_EventHandle'$1_staking_contract_UpdateVoterEvent', $reset_lockup_events: $1_event_EventHandle'$1_staking_contract_ResetLockupEvent', $add_stake_events: $1_event_EventHandle'$1_staking_contract_AddStakeEvent', $request_commission_events: $1_event_EventHandle'$1_staking_contract_RequestCommissionEvent', $unlock_stake_events: $1_event_EventHandle'$1_staking_contract_UnlockStakeEvent', $switch_operator_events: $1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent', $add_distribution_events: $1_event_EventHandle'$1_staking_contract_AddDistributionEvent', $distribute_events: $1_event_EventHandle'$1_staking_contract_DistributeEvent'): $1_staking_contract_Store; -function {:inline} $Update'$1_staking_contract_Store'_staking_contracts(s: $1_staking_contract_Store, x: Table int ($1_staking_contract_StakingContract)): $1_staking_contract_Store { - $1_staking_contract_Store(x, $create_staking_contract_events#$1_staking_contract_Store(s), $update_voter_events#$1_staking_contract_Store(s), $reset_lockup_events#$1_staking_contract_Store(s), $add_stake_events#$1_staking_contract_Store(s), $request_commission_events#$1_staking_contract_Store(s), $unlock_stake_events#$1_staking_contract_Store(s), $switch_operator_events#$1_staking_contract_Store(s), $add_distribution_events#$1_staking_contract_Store(s), $distribute_events#$1_staking_contract_Store(s)) -} -function {:inline} $Update'$1_staking_contract_Store'_create_staking_contract_events(s: $1_staking_contract_Store, x: $1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent'): $1_staking_contract_Store { - $1_staking_contract_Store($staking_contracts#$1_staking_contract_Store(s), x, $update_voter_events#$1_staking_contract_Store(s), $reset_lockup_events#$1_staking_contract_Store(s), $add_stake_events#$1_staking_contract_Store(s), $request_commission_events#$1_staking_contract_Store(s), $unlock_stake_events#$1_staking_contract_Store(s), $switch_operator_events#$1_staking_contract_Store(s), $add_distribution_events#$1_staking_contract_Store(s), $distribute_events#$1_staking_contract_Store(s)) -} -function {:inline} $Update'$1_staking_contract_Store'_update_voter_events(s: $1_staking_contract_Store, x: $1_event_EventHandle'$1_staking_contract_UpdateVoterEvent'): $1_staking_contract_Store { - $1_staking_contract_Store($staking_contracts#$1_staking_contract_Store(s), $create_staking_contract_events#$1_staking_contract_Store(s), x, $reset_lockup_events#$1_staking_contract_Store(s), $add_stake_events#$1_staking_contract_Store(s), $request_commission_events#$1_staking_contract_Store(s), $unlock_stake_events#$1_staking_contract_Store(s), $switch_operator_events#$1_staking_contract_Store(s), $add_distribution_events#$1_staking_contract_Store(s), $distribute_events#$1_staking_contract_Store(s)) -} -function {:inline} $Update'$1_staking_contract_Store'_reset_lockup_events(s: $1_staking_contract_Store, x: $1_event_EventHandle'$1_staking_contract_ResetLockupEvent'): $1_staking_contract_Store { - $1_staking_contract_Store($staking_contracts#$1_staking_contract_Store(s), $create_staking_contract_events#$1_staking_contract_Store(s), $update_voter_events#$1_staking_contract_Store(s), x, $add_stake_events#$1_staking_contract_Store(s), $request_commission_events#$1_staking_contract_Store(s), $unlock_stake_events#$1_staking_contract_Store(s), $switch_operator_events#$1_staking_contract_Store(s), $add_distribution_events#$1_staking_contract_Store(s), $distribute_events#$1_staking_contract_Store(s)) -} -function {:inline} $Update'$1_staking_contract_Store'_add_stake_events(s: $1_staking_contract_Store, x: $1_event_EventHandle'$1_staking_contract_AddStakeEvent'): $1_staking_contract_Store { - $1_staking_contract_Store($staking_contracts#$1_staking_contract_Store(s), $create_staking_contract_events#$1_staking_contract_Store(s), $update_voter_events#$1_staking_contract_Store(s), $reset_lockup_events#$1_staking_contract_Store(s), x, $request_commission_events#$1_staking_contract_Store(s), $unlock_stake_events#$1_staking_contract_Store(s), $switch_operator_events#$1_staking_contract_Store(s), $add_distribution_events#$1_staking_contract_Store(s), $distribute_events#$1_staking_contract_Store(s)) -} -function {:inline} $Update'$1_staking_contract_Store'_request_commission_events(s: $1_staking_contract_Store, x: $1_event_EventHandle'$1_staking_contract_RequestCommissionEvent'): $1_staking_contract_Store { - $1_staking_contract_Store($staking_contracts#$1_staking_contract_Store(s), $create_staking_contract_events#$1_staking_contract_Store(s), $update_voter_events#$1_staking_contract_Store(s), $reset_lockup_events#$1_staking_contract_Store(s), $add_stake_events#$1_staking_contract_Store(s), x, $unlock_stake_events#$1_staking_contract_Store(s), $switch_operator_events#$1_staking_contract_Store(s), $add_distribution_events#$1_staking_contract_Store(s), $distribute_events#$1_staking_contract_Store(s)) -} -function {:inline} $Update'$1_staking_contract_Store'_unlock_stake_events(s: $1_staking_contract_Store, x: $1_event_EventHandle'$1_staking_contract_UnlockStakeEvent'): $1_staking_contract_Store { - $1_staking_contract_Store($staking_contracts#$1_staking_contract_Store(s), $create_staking_contract_events#$1_staking_contract_Store(s), $update_voter_events#$1_staking_contract_Store(s), $reset_lockup_events#$1_staking_contract_Store(s), $add_stake_events#$1_staking_contract_Store(s), $request_commission_events#$1_staking_contract_Store(s), x, $switch_operator_events#$1_staking_contract_Store(s), $add_distribution_events#$1_staking_contract_Store(s), $distribute_events#$1_staking_contract_Store(s)) -} -function {:inline} $Update'$1_staking_contract_Store'_switch_operator_events(s: $1_staking_contract_Store, x: $1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent'): $1_staking_contract_Store { - $1_staking_contract_Store($staking_contracts#$1_staking_contract_Store(s), $create_staking_contract_events#$1_staking_contract_Store(s), $update_voter_events#$1_staking_contract_Store(s), $reset_lockup_events#$1_staking_contract_Store(s), $add_stake_events#$1_staking_contract_Store(s), $request_commission_events#$1_staking_contract_Store(s), $unlock_stake_events#$1_staking_contract_Store(s), x, $add_distribution_events#$1_staking_contract_Store(s), $distribute_events#$1_staking_contract_Store(s)) -} -function {:inline} $Update'$1_staking_contract_Store'_add_distribution_events(s: $1_staking_contract_Store, x: $1_event_EventHandle'$1_staking_contract_AddDistributionEvent'): $1_staking_contract_Store { - $1_staking_contract_Store($staking_contracts#$1_staking_contract_Store(s), $create_staking_contract_events#$1_staking_contract_Store(s), $update_voter_events#$1_staking_contract_Store(s), $reset_lockup_events#$1_staking_contract_Store(s), $add_stake_events#$1_staking_contract_Store(s), $request_commission_events#$1_staking_contract_Store(s), $unlock_stake_events#$1_staking_contract_Store(s), $switch_operator_events#$1_staking_contract_Store(s), x, $distribute_events#$1_staking_contract_Store(s)) -} -function {:inline} $Update'$1_staking_contract_Store'_distribute_events(s: $1_staking_contract_Store, x: $1_event_EventHandle'$1_staking_contract_DistributeEvent'): $1_staking_contract_Store { - $1_staking_contract_Store($staking_contracts#$1_staking_contract_Store(s), $create_staking_contract_events#$1_staking_contract_Store(s), $update_voter_events#$1_staking_contract_Store(s), $reset_lockup_events#$1_staking_contract_Store(s), $add_stake_events#$1_staking_contract_Store(s), $request_commission_events#$1_staking_contract_Store(s), $unlock_stake_events#$1_staking_contract_Store(s), $switch_operator_events#$1_staking_contract_Store(s), $add_distribution_events#$1_staking_contract_Store(s), x) -} -function $IsValid'$1_staking_contract_Store'(s: $1_staking_contract_Store): bool { - $IsValid'$1_simple_map_SimpleMap'address_$1_staking_contract_StakingContract''($staking_contracts#$1_staking_contract_Store(s)) - && $IsValid'$1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent''($create_staking_contract_events#$1_staking_contract_Store(s)) - && $IsValid'$1_event_EventHandle'$1_staking_contract_UpdateVoterEvent''($update_voter_events#$1_staking_contract_Store(s)) - && $IsValid'$1_event_EventHandle'$1_staking_contract_ResetLockupEvent''($reset_lockup_events#$1_staking_contract_Store(s)) - && $IsValid'$1_event_EventHandle'$1_staking_contract_AddStakeEvent''($add_stake_events#$1_staking_contract_Store(s)) - && $IsValid'$1_event_EventHandle'$1_staking_contract_RequestCommissionEvent''($request_commission_events#$1_staking_contract_Store(s)) - && $IsValid'$1_event_EventHandle'$1_staking_contract_UnlockStakeEvent''($unlock_stake_events#$1_staking_contract_Store(s)) - && $IsValid'$1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent''($switch_operator_events#$1_staking_contract_Store(s)) - && $IsValid'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent''($add_distribution_events#$1_staking_contract_Store(s)) - && $IsValid'$1_event_EventHandle'$1_staking_contract_DistributeEvent''($distribute_events#$1_staking_contract_Store(s)) -} -function {:inline} $IsEqual'$1_staking_contract_Store'(s1: $1_staking_contract_Store, s2: $1_staking_contract_Store): bool { - $IsEqual'$1_simple_map_SimpleMap'address_$1_staking_contract_StakingContract''($staking_contracts#$1_staking_contract_Store(s1), $staking_contracts#$1_staking_contract_Store(s2)) - && $IsEqual'$1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent''($create_staking_contract_events#$1_staking_contract_Store(s1), $create_staking_contract_events#$1_staking_contract_Store(s2)) - && $IsEqual'$1_event_EventHandle'$1_staking_contract_UpdateVoterEvent''($update_voter_events#$1_staking_contract_Store(s1), $update_voter_events#$1_staking_contract_Store(s2)) - && $IsEqual'$1_event_EventHandle'$1_staking_contract_ResetLockupEvent''($reset_lockup_events#$1_staking_contract_Store(s1), $reset_lockup_events#$1_staking_contract_Store(s2)) - && $IsEqual'$1_event_EventHandle'$1_staking_contract_AddStakeEvent''($add_stake_events#$1_staking_contract_Store(s1), $add_stake_events#$1_staking_contract_Store(s2)) - && $IsEqual'$1_event_EventHandle'$1_staking_contract_RequestCommissionEvent''($request_commission_events#$1_staking_contract_Store(s1), $request_commission_events#$1_staking_contract_Store(s2)) - && $IsEqual'$1_event_EventHandle'$1_staking_contract_UnlockStakeEvent''($unlock_stake_events#$1_staking_contract_Store(s1), $unlock_stake_events#$1_staking_contract_Store(s2)) - && $IsEqual'$1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent''($switch_operator_events#$1_staking_contract_Store(s1), $switch_operator_events#$1_staking_contract_Store(s2)) - && $IsEqual'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent''($add_distribution_events#$1_staking_contract_Store(s1), $add_distribution_events#$1_staking_contract_Store(s2)) - && $IsEqual'$1_event_EventHandle'$1_staking_contract_DistributeEvent''($distribute_events#$1_staking_contract_Store(s1), $distribute_events#$1_staking_contract_Store(s2))} -var $1_staking_contract_Store_$memory: $Memory $1_staking_contract_Store; - -// struct staking_contract::SwitchOperatorEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:149:5+143 -type {:datatype} $1_staking_contract_SwitchOperatorEvent; -function {:constructor} $1_staking_contract_SwitchOperatorEvent($old_operator: int, $new_operator: int, $pool_address: int): $1_staking_contract_SwitchOperatorEvent; -function {:inline} $Update'$1_staking_contract_SwitchOperatorEvent'_old_operator(s: $1_staking_contract_SwitchOperatorEvent, x: int): $1_staking_contract_SwitchOperatorEvent { - $1_staking_contract_SwitchOperatorEvent(x, $new_operator#$1_staking_contract_SwitchOperatorEvent(s), $pool_address#$1_staking_contract_SwitchOperatorEvent(s)) -} -function {:inline} $Update'$1_staking_contract_SwitchOperatorEvent'_new_operator(s: $1_staking_contract_SwitchOperatorEvent, x: int): $1_staking_contract_SwitchOperatorEvent { - $1_staking_contract_SwitchOperatorEvent($old_operator#$1_staking_contract_SwitchOperatorEvent(s), x, $pool_address#$1_staking_contract_SwitchOperatorEvent(s)) -} -function {:inline} $Update'$1_staking_contract_SwitchOperatorEvent'_pool_address(s: $1_staking_contract_SwitchOperatorEvent, x: int): $1_staking_contract_SwitchOperatorEvent { - $1_staking_contract_SwitchOperatorEvent($old_operator#$1_staking_contract_SwitchOperatorEvent(s), $new_operator#$1_staking_contract_SwitchOperatorEvent(s), x) -} -function $IsValid'$1_staking_contract_SwitchOperatorEvent'(s: $1_staking_contract_SwitchOperatorEvent): bool { - $IsValid'address'($old_operator#$1_staking_contract_SwitchOperatorEvent(s)) - && $IsValid'address'($new_operator#$1_staking_contract_SwitchOperatorEvent(s)) - && $IsValid'address'($pool_address#$1_staking_contract_SwitchOperatorEvent(s)) -} -function {:inline} $IsEqual'$1_staking_contract_SwitchOperatorEvent'(s1: $1_staking_contract_SwitchOperatorEvent, s2: $1_staking_contract_SwitchOperatorEvent): bool { - s1 == s2 -} - -// struct staking_contract::UpdateVoterEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:117:5+161 -type {:datatype} $1_staking_contract_UpdateVoterEvent; -function {:constructor} $1_staking_contract_UpdateVoterEvent($operator: int, $pool_address: int, $old_voter: int, $new_voter: int): $1_staking_contract_UpdateVoterEvent; -function {:inline} $Update'$1_staking_contract_UpdateVoterEvent'_operator(s: $1_staking_contract_UpdateVoterEvent, x: int): $1_staking_contract_UpdateVoterEvent { - $1_staking_contract_UpdateVoterEvent(x, $pool_address#$1_staking_contract_UpdateVoterEvent(s), $old_voter#$1_staking_contract_UpdateVoterEvent(s), $new_voter#$1_staking_contract_UpdateVoterEvent(s)) -} -function {:inline} $Update'$1_staking_contract_UpdateVoterEvent'_pool_address(s: $1_staking_contract_UpdateVoterEvent, x: int): $1_staking_contract_UpdateVoterEvent { - $1_staking_contract_UpdateVoterEvent($operator#$1_staking_contract_UpdateVoterEvent(s), x, $old_voter#$1_staking_contract_UpdateVoterEvent(s), $new_voter#$1_staking_contract_UpdateVoterEvent(s)) -} -function {:inline} $Update'$1_staking_contract_UpdateVoterEvent'_old_voter(s: $1_staking_contract_UpdateVoterEvent, x: int): $1_staking_contract_UpdateVoterEvent { - $1_staking_contract_UpdateVoterEvent($operator#$1_staking_contract_UpdateVoterEvent(s), $pool_address#$1_staking_contract_UpdateVoterEvent(s), x, $new_voter#$1_staking_contract_UpdateVoterEvent(s)) -} -function {:inline} $Update'$1_staking_contract_UpdateVoterEvent'_new_voter(s: $1_staking_contract_UpdateVoterEvent, x: int): $1_staking_contract_UpdateVoterEvent { - $1_staking_contract_UpdateVoterEvent($operator#$1_staking_contract_UpdateVoterEvent(s), $pool_address#$1_staking_contract_UpdateVoterEvent(s), $old_voter#$1_staking_contract_UpdateVoterEvent(s), x) -} -function $IsValid'$1_staking_contract_UpdateVoterEvent'(s: $1_staking_contract_UpdateVoterEvent): bool { - $IsValid'address'($operator#$1_staking_contract_UpdateVoterEvent(s)) - && $IsValid'address'($pool_address#$1_staking_contract_UpdateVoterEvent(s)) - && $IsValid'address'($old_voter#$1_staking_contract_UpdateVoterEvent(s)) - && $IsValid'address'($new_voter#$1_staking_contract_UpdateVoterEvent(s)) -} -function {:inline} $IsEqual'$1_staking_contract_UpdateVoterEvent'(s1: $1_staking_contract_UpdateVoterEvent, s2: $1_staking_contract_UpdateVoterEvent): bool { - s1 == s2 -} - -// fun staking_contract::add_distribution [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:632:5+833 -procedure {:inline 1} $1_staking_contract_add_distribution(_$t0: int, _$t1: $Mutation ($1_staking_contract_StakingContract), _$t2: int, _$t3: int, _$t4: $Mutation ($1_event_EventHandle'$1_staking_contract_AddDistributionEvent')) returns ($ret0: $Mutation ($1_staking_contract_StakingContract), $ret1: $Mutation ($1_event_EventHandle'$1_staking_contract_AddDistributionEvent')) -{ - // declare local variables - var $t5: $Mutation ($1_pool_u64_Pool); - var $t6: int; - var $t7: int; - var $t8: $Mutation ($1_pool_u64_Pool); - var $t9: int; - var $t10: int; - var $t11: int; - var $t12: int; - var $t13: int; - var $t14: int; - var $t15: int; - var $t16: int; - var $t17: bool; - var $t18: int; - var $t19: bool; - var $t20: int; - var $t21: int; - var $t22: int; - var $t23: $1_staking_contract_AddDistributionEvent; - var $t0: int; - var $t1: $Mutation ($1_staking_contract_StakingContract); - var $t2: int; - var $t3: int; - var $t4: $Mutation ($1_event_EventHandle'$1_staking_contract_AddDistributionEvent'); - var $temp_0'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent'': $1_event_EventHandle'$1_staking_contract_AddDistributionEvent'; - var $temp_0'$1_pool_u64_Pool': $1_pool_u64_Pool; - var $temp_0'$1_staking_contract_StakingContract': $1_staking_contract_StakingContract; - var $temp_0'address': int; - var $temp_0'u64': int; - $t0 := _$t0; - $t1 := _$t1; - $t2 := _$t2; - $t3 := _$t3; - $t4 := _$t4; - - // bytecode translation starts here - // trace_local[operator]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:632:5+1 - assume {:print "$at(133,30099,30100)"} true; - assume {:print "$track_local(56,0,0):", $t0} $t0 == $t0; - - // trace_local[staking_contract]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:632:5+1 - $temp_0'$1_staking_contract_StakingContract' := $Dereference($t1); - assume {:print "$track_local(56,0,1):", $temp_0'$1_staking_contract_StakingContract'} $temp_0'$1_staking_contract_StakingContract' == $temp_0'$1_staking_contract_StakingContract'; - - // trace_local[recipient]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:632:5+1 - assume {:print "$track_local(56,0,2):", $t2} $t2 == $t2; - - // trace_local[coins_amount]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:632:5+1 - assume {:print "$track_local(56,0,3):", $t3} $t3 == $t3; - - // trace_local[add_distribution_events]($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:632:5+1 - $temp_0'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent'' := $Dereference($t4); - assume {:print "$track_local(56,0,4):", $temp_0'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent''} $temp_0'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent'' == $temp_0'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent''; - - // $t8 := borrow_field.distribution_pool($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:639:33+39 - assume {:print "$at(133,30364,30403)"} true; - $t8 := $ChildMutation($t1, 4, $distribution_pool#$1_staking_contract_StakingContract($Dereference($t1))); - - // trace_local[distribution_pool]($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:639:13+17 - $temp_0'$1_pool_u64_Pool' := $Dereference($t8); - assume {:print "$track_local(56,0,5):", $temp_0'$1_pool_u64_Pool'} $temp_0'$1_pool_u64_Pool' == $temp_0'$1_pool_u64_Pool'; - - // $t9 := get_field.pool_address($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:640:69+29 - assume {:print "$at(133,30473,30502)"} true; - $t9 := $pool_address#$1_staking_contract_StakingContract($Dereference($t1)); - - // ($t10, $t11, $t12, $t13) := stake::get_stake($t9) on_abort goto L2 with $t14 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:640:52+47 - call $t10,$t11,$t12,$t13 := $1_stake_get_stake($t9); - if ($abort_flag) { - assume {:print "$at(133,30456,30503)"} true; - $t14 := $abort_code; - assume {:print "$track_abort(56,0):", $t14} $t14 == $t14; - goto L2; - } - - // trace_local[total_distribution_amount]($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:640:23+25 - assume {:print "$track_local(56,0,7):", $t13} $t13 == $t13; - - // destroy($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:640:20+1 - - // destroy($t11) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:640:17+1 - - // destroy($t10) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:640:14+1 - - // $t15 := get_field.commission_percentage($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:642:69+38 - assume {:print "$at(133,30607,30645)"} true; - $t15 := $commission_percentage#$1_staking_contract_StakingContract($Dereference($t1)); - - // staking_contract::update_distribution_pool($t8, $t13, $t0, $t15) on_abort goto L2 with $t14 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:641:9+133 - assume {:print "$at(133,30513,30646)"} true; - call $t8 := $1_staking_contract_update_distribution_pool($t8, $t13, $t0, $t15); - if ($abort_flag) { - assume {:print "$at(133,30513,30646)"} true; - $t14 := $abort_code; - assume {:print "$track_abort(56,0):", $t14} $t14 == $t14; - goto L2; - } - - // assume Identical($t16, pool_u64::spec_amount_to_shares_with_total_coins($t8, $t3, select pool_u64::Pool.total_coins($t8))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:60:9+94 - assume {:print "$at(59,2129,2223)"} true; - assume ($t16 == $1_pool_u64_spec_amount_to_shares_with_total_coins($Dereference($t8), $t3, $total_coins#$1_pool_u64_Pool($Dereference($t8)))); - - // assume Identical($t17, simple_map::spec_contains_key(select pool_u64::Pool.shares($t8), $t2)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:83:9+73 - assume {:print "$at(59,3186,3259)"} true; - assume ($t17 == $1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($Dereference($t8)), $t2)); - - // assume Identical($t18, simple_map::spec_get(select pool_u64::Pool.shares($t8), $t2)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:84:9+68 - assume {:print "$at(59,3268,3336)"} true; - assume ($t18 == $1_simple_map_spec_get'address_u64'($shares#$1_pool_u64_Pool($Dereference($t8)), $t2)); - - // assume Identical($t19, simple_map::spec_contains_key(select pool_u64::Pool.shares($t8), $t2)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:94:9+73 - assume {:print "$at(59,3636,3709)"} true; - assume ($t19 == $1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($Dereference($t8)), $t2)); - - // assume Identical($t20, simple_map::spec_get(select pool_u64::Pool.shares($t8), $t2)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:95:9+68 - assume {:print "$at(59,3718,3786)"} true; - assume ($t20 == $1_simple_map_spec_get'address_u64'($shares#$1_pool_u64_Pool($Dereference($t8)), $t2)); - - // $t21 := pool_u64::buy_in($t8, $t2, $t3) on_abort goto L2 with $t14 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:644:9+60 - assume {:print "$at(133,30657,30717)"} true; - call $t21,$t8 := $1_pool_u64_buy_in($t8, $t2, $t3); - if ($abort_flag) { - assume {:print "$at(133,30657,30717)"} true; - $t14 := $abort_code; - assume {:print "$track_abort(56,0):", $t14} $t14 == $t14; - goto L2; - } - - // write_back[Reference($t1).distribution_pool (pool_u64::Pool)]($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:644:9+60 - $t1 := $UpdateMutation($t1, $Update'$1_staking_contract_StakingContract'_distribution_pool($Dereference($t1), $Dereference($t8))); - - // trace_local[staking_contract]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:644:9+60 - $temp_0'$1_staking_contract_StakingContract' := $Dereference($t1); - assume {:print "$track_local(56,0,1):", $temp_0'$1_staking_contract_StakingContract'} $temp_0'$1_staking_contract_StakingContract' == $temp_0'$1_staking_contract_StakingContract'; - - // destroy($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:644:9+60 - - // $t22 := get_field.pool_address($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:645:28+29 - assume {:print "$at(133,30746,30775)"} true; - $t22 := $pool_address#$1_staking_contract_StakingContract($Dereference($t1)); - - // trace_local[pool_address]($t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:645:13+12 - assume {:print "$track_local(56,0,6):", $t22} $t22 == $t22; - - // $t23 := pack staking_contract::AddDistributionEvent($t0, $t22, $t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:648:13+69 - assume {:print "$at(133,30846,30915)"} true; - $t23 := $1_staking_contract_AddDistributionEvent($t0, $t22, $t3); - - // opaque begin: event::emit_event($t4, $t23) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:646:9+140 - assume {:print "$at(133,30785,30925)"} true; - - // opaque end: event::emit_event($t4, $t23) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:646:9+140 - - // trace_local[staking_contract]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:649:10+1 - assume {:print "$at(133,30925,30926)"} true; - $temp_0'$1_staking_contract_StakingContract' := $Dereference($t1); - assume {:print "$track_local(56,0,1):", $temp_0'$1_staking_contract_StakingContract'} $temp_0'$1_staking_contract_StakingContract' == $temp_0'$1_staking_contract_StakingContract'; - - // pack_ref_deep($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:649:10+1 - - // trace_local[add_distribution_events]($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:649:10+1 - $temp_0'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent'' := $Dereference($t4); - assume {:print "$track_local(56,0,4):", $temp_0'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent''} $temp_0'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent'' == $temp_0'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent''; - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:650:5+1 - assume {:print "$at(133,30931,30932)"} true; -L1: - - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:650:5+1 - assume {:print "$at(133,30931,30932)"} true; - $ret0 := $t1; - $ret1 := $t4; - return; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:650:5+1 -L2: - - // abort($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:650:5+1 - assume {:print "$at(133,30931,30932)"} true; - $abort_code := $t14; - $abort_flag := true; - return; - -} - -// fun staking_contract::assert_staking_contract_exists [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:622:5+446 -procedure {:inline 1} $1_staking_contract_assert_staking_contract_exists(_$t0: int, _$t1: int) returns () -{ - // declare local variables - var $t2: int; - var $t3: Table int ($1_staking_contract_StakingContract); - var $t4: bool; - var $t5: int; - var $t6: int; - var $t7: int; - var $t8: $Mutation ($1_staking_contract_Store); - var $t9: $Mutation (Table int ($1_staking_contract_StakingContract)); - var $t10: Table int ($1_staking_contract_StakingContract); - var $t11: bool; - var $t12: int; - var $t13: int; - var $t0: int; - var $t1: int; - var $temp_0'address': int; - $t0 := _$t0; - $t1 := _$t1; - - // bytecode translation starts here - // assume Identical($t3, select staking_contract::Store.staking_contracts(global($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 - assume {:print "$at(134,11481,11545)"} true; - assume ($t3 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t0))); - - // trace_local[staker]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:622:5+1 - assume {:print "$at(133,29541,29542)"} true; - assume {:print "$track_local(56,2,0):", $t0} $t0 == $t0; - - // trace_local[operator]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:622:5+1 - assume {:print "$track_local(56,2,1):", $t1} $t1 == $t1; - - // $t4 := exists($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:623:17+6 - assume {:print "$at(133,29645,29651)"} true; - $t4 := $ResourceExists($1_staking_contract_Store_$memory, $t0); - - // if ($t4) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:623:9+87 - if ($t4) { goto L1; } else { goto L0; } - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:623:9+87 -L1: - - // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:623:9+87 - assume {:print "$at(133,29637,29724)"} true; - goto L2; - - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:623:57+37 -L0: - - // $t5 := 3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:623:57+37 - assume {:print "$at(133,29685,29722)"} true; - $t5 := 3; - assume $IsValid'u64'($t5); - - // $t6 := error::not_found($t5) on_abort goto L7 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:623:40+55 - call $t6 := $1_error_not_found($t5); - if ($abort_flag) { - assume {:print "$at(133,29668,29723)"} true; - $t7 := $abort_code; - assume {:print "$track_abort(56,2):", $t7} $t7 == $t7; - goto L7; - } - - // trace_abort($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:623:9+87 - assume {:print "$at(133,29637,29724)"} true; - assume {:print "$track_abort(56,2):", $t6} $t6 == $t6; - - // $t7 := move($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:623:9+87 - $t7 := $t6; - - // goto L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:623:9+87 - goto L7; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:624:63+6 - assume {:print "$at(133,29788,29794)"} true; -L2: - - // $t8 := borrow_global($t0) on_abort goto L7 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:624:38+17 - assume {:print "$at(133,29763,29780)"} true; - if (!$ResourceExists($1_staking_contract_Store_$memory, $t0)) { - call $ExecFailureAbort(); - } else { - $t8 := $Mutation($Global($t0), EmptyVec(), $ResourceValue($1_staking_contract_Store_$memory, $t0)); - } - if ($abort_flag) { - assume {:print "$at(133,29763,29780)"} true; - $t7 := $abort_code; - assume {:print "$track_abort(56,2):", $t7} $t7 == $t7; - goto L7; - } - - // $t9 := borrow_field.staking_contracts($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:624:33+55 - $t9 := $ChildMutation($t8, 0, $staking_contracts#$1_staking_contract_Store($Dereference($t8))); - - // $t10 := read_ref($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:626:37+30 - assume {:print "$at(133,29868,29898)"} true; - $t10 := $Dereference($t9); - - // pack_ref_deep($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:626:37+30 - - // $t11 := simple_map::contains_key($t10, $t1) on_abort goto L7 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:626:13+54 - call $t11 := $1_simple_map_contains_key'address_$1_staking_contract_StakingContract'($t10, $t1); - if ($abort_flag) { - assume {:print "$at(133,29844,29898)"} true; - $t7 := $abort_code; - assume {:print "$track_abort(56,2):", $t7} $t7 == $t7; - goto L7; - } - - // if ($t11) goto L4 else goto L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:625:9+157 - assume {:print "$at(133,29823,29980)"} true; - if ($t11) { goto L4; } else { goto L3; } - - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:625:9+157 -L4: - - // goto L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:625:9+157 - assume {:print "$at(133,29823,29980)"} true; - goto L5; - - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:627:30+39 - assume {:print "$at(133,29929,29968)"} true; -L3: - - // $t12 := 4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:627:30+39 - assume {:print "$at(133,29929,29968)"} true; - $t12 := 4; - assume $IsValid'u64'($t12); - - // $t13 := error::not_found($t12) on_abort goto L7 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:627:13+57 - call $t13 := $1_error_not_found($t12); - if ($abort_flag) { - assume {:print "$at(133,29912,29969)"} true; - $t7 := $abort_code; - assume {:print "$track_abort(56,2):", $t7} $t7 == $t7; - goto L7; - } - - // trace_abort($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:625:9+157 - assume {:print "$at(133,29823,29980)"} true; - assume {:print "$track_abort(56,2):", $t13} $t13 == $t13; - - // $t7 := move($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:625:9+157 - $t7 := $t13; - - // goto L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:625:9+157 - goto L7; - - // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:628:10+1 - assume {:print "$at(133,29980,29981)"} true; -L5: - - // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:629:5+1 - assume {:print "$at(133,29986,29987)"} true; -L6: - - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:629:5+1 - assume {:print "$at(133,29986,29987)"} true; - return; - - // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:629:5+1 -L7: - - // abort($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:629:5+1 - assume {:print "$at(133,29986,29987)"} true; - $abort_code := $t7; - $abort_flag := true; - return; - -} - -// fun staking_contract::distribute [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:570:5+389 -procedure {:inline 1} $1_staking_contract_distribute(_$t0: int, _$t1: int) returns () -{ - // declare local variables - var $t2: $Mutation ($1_staking_contract_StakingContract); - var $t3: $Mutation ($1_staking_contract_Store); - var $t4: Table int ($1_staking_contract_StakingContract); - var $t5: Table int ($1_staking_contract_StakingContract); - var $t6: int; - var $t7: $Mutation ($1_staking_contract_Store); - var $t8: $Mutation (Table int ($1_staking_contract_StakingContract)); - var $t9: $Mutation ($1_staking_contract_StakingContract); - var $t10: $Mutation ($1_event_EventHandle'$1_staking_contract_DistributeEvent'); - var $t11: int; - var $t12: $1_stake_StakePool; - var $t0: int; - var $t1: int; - var $temp_0'$1_staking_contract_StakingContract': $1_staking_contract_StakingContract; - var $temp_0'$1_staking_contract_Store': $1_staking_contract_Store; - var $temp_0'address': int; - $t0 := _$t0; - $t1 := _$t1; - - // bytecode translation starts here - // assume Identical($t4, select staking_contract::Store.staking_contracts(global($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 - assume {:print "$at(134,11481,11545)"} true; - assume ($t4 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t0))); - - // trace_local[staker]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:570:5+1 - assume {:print "$at(133,27075,27076)"} true; - assume {:print "$track_local(56,7,0):", $t0} $t0 == $t0; - - // trace_local[operator]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:570:5+1 - assume {:print "$track_local(56,7,1):", $t1} $t1 == $t1; - - // assume Identical($t5, select staking_contract::Store.staking_contracts(global($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 - assume {:print "$at(134,11481,11545)"} true; - assume ($t5 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t0))); - - // staking_contract::assert_staking_contract_exists($t0, $t1) on_abort goto L2 with $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:571:9+48 - assume {:print "$at(133,27164,27212)"} true; - call $1_staking_contract_assert_staking_contract_exists($t0, $t1); - if ($abort_flag) { - assume {:print "$at(133,27164,27212)"} true; - $t6 := $abort_code; - assume {:print "$track_abort(56,7):", $t6} $t6 == $t6; - goto L2; - } - - // $t7 := borrow_global($t0) on_abort goto L2 with $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:572:21+17 - assume {:print "$at(133,27234,27251)"} true; - if (!$ResourceExists($1_staking_contract_Store_$memory, $t0)) { - call $ExecFailureAbort(); - } else { - $t7 := $Mutation($Global($t0), EmptyVec(), $ResourceValue($1_staking_contract_Store_$memory, $t0)); - } - if ($abort_flag) { - assume {:print "$at(133,27234,27251)"} true; - $t6 := $abort_code; - assume {:print "$track_abort(56,7):", $t6} $t6 == $t6; - goto L2; - } - - // trace_local[store]($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:572:13+5 - $temp_0'$1_staking_contract_Store' := $Dereference($t7); - assume {:print "$track_local(56,7,3):", $temp_0'$1_staking_contract_Store'} $temp_0'$1_staking_contract_Store' == $temp_0'$1_staking_contract_Store'; - - // $t8 := borrow_field.staking_contracts($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:573:55+28 - assume {:print "$at(133,27322,27350)"} true; - $t8 := $ChildMutation($t7, 0, $staking_contracts#$1_staking_contract_Store($Dereference($t7))); - - // $t9 := simple_map::borrow_mut($t8, $t1) on_abort goto L2 with $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:573:32+63 - call $t9,$t8 := $1_simple_map_borrow_mut'address_$1_staking_contract_StakingContract'($t8, $t1); - if ($abort_flag) { - assume {:print "$at(133,27299,27362)"} true; - $t6 := $abort_code; - assume {:print "$track_abort(56,7):", $t6} $t6 == $t6; - goto L2; - } - - // trace_local[staking_contract]($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:573:13+16 - $temp_0'$1_staking_contract_StakingContract' := $Dereference($t9); - assume {:print "$track_local(56,7,2):", $temp_0'$1_staking_contract_StakingContract'} $temp_0'$1_staking_contract_StakingContract' == $temp_0'$1_staking_contract_StakingContract'; - - // $t10 := borrow_field.distribute_events($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:574:65+28 - assume {:print "$at(133,27428,27456)"} true; - $t10 := $ChildMutation($t7, 9, $distribute_events#$1_staking_contract_Store($Dereference($t7))); - - // assume Identical($t11, select staking_contract::StakingContract.pool_address($t9)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:194:9+49 - assume {:print "$at(134,8605,8654)"} true; - assume ($t11 == $pool_address#$1_staking_contract_StakingContract($Dereference($t9))); - - // assume Identical($t12, global($t11)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:195:9+63 - assume {:print "$at(134,8663,8726)"} true; - assume ($t12 == $ResourceValue($1_stake_StakePool_$memory, $t11)); - - // staking_contract::distribute_internal($t0, $t1, $t9, $t10) on_abort goto L2 with $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:574:9+85 - assume {:print "$at(133,27372,27457)"} true; - call $t9,$t10 := $1_staking_contract_distribute_internal($t0, $t1, $t9, $t10); - if ($abort_flag) { - assume {:print "$at(133,27372,27457)"} true; - $t6 := $abort_code; - assume {:print "$track_abort(56,7):", $t6} $t6 == $t6; - goto L2; - } - - // write_back[Reference($t8)[]]($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:574:9+85 - $t8 := $UpdateMutation($t8, UpdateTable($Dereference($t8), ReadVec(p#$Mutation($t9), LenVec(p#$Mutation($t8))), $Dereference($t9))); - - // write_back[Reference($t7).staking_contracts (simple_map::SimpleMap)]($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:574:9+85 - $t7 := $UpdateMutation($t7, $Update'$1_staking_contract_Store'_staking_contracts($Dereference($t7), $Dereference($t8))); - - // pack_ref_deep($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:574:9+85 - - // write_back[staking_contract::Store@]($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:574:9+85 - $1_staking_contract_Store_$memory := $ResourceUpdate($1_staking_contract_Store_$memory, $GlobalLocationAddress($t7), - $Dereference($t7)); - - // write_back[Reference($t7).distribute_events (event::EventHandle)]($t10) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:574:9+85 - $t7 := $UpdateMutation($t7, $Update'$1_staking_contract_Store'_distribute_events($Dereference($t7), $Dereference($t10))); - - // pack_ref_deep($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:574:9+85 - - // write_back[staking_contract::Store@]($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:574:9+85 - $1_staking_contract_Store_$memory := $ResourceUpdate($1_staking_contract_Store_$memory, $GlobalLocationAddress($t7), - $Dereference($t7)); - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:575:5+1 - assume {:print "$at(133,27463,27464)"} true; -L1: - - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:575:5+1 - assume {:print "$at(133,27463,27464)"} true; - return; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:575:5+1 -L2: - - // abort($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:575:5+1 - assume {:print "$at(133,27463,27464)"} true; - $abort_code := $t6; - $abort_flag := true; - return; - -} - -// fun staking_contract::distribute_internal [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:578:5+1906 -procedure {:inline 1} $1_staking_contract_distribute_internal(_$t0: int, _$t1: int, _$t2: $Mutation ($1_staking_contract_StakingContract), _$t3: $Mutation ($1_event_EventHandle'$1_staking_contract_DistributeEvent')) returns ($ret0: $Mutation ($1_staking_contract_StakingContract), $ret1: $Mutation ($1_event_EventHandle'$1_staking_contract_DistributeEvent')) -{ - // declare local variables - var $t4: int; - var $t5: int; - var $t6: $1_coin_Coin'$1_aptos_coin_AptosCoin'; - var $t7: int; - var $t8: int; - var $t9: $Mutation ($1_pool_u64_Pool); - var $t10: int; - var $t11: int; - var $t12: int; - var $t13: int; - var $t14: Vec (int); - var $t15: int; - var $t16: int; - var $t17: $1_stake_StakePool; - var $t18: int; - var $t19: int; - var $t20: int; - var $t21: int; - var $t22: int; - var $t23: int; - var $t24: int; - var $t25: $1_stake_OwnerCapability; - var $t26: $1_coin_Coin'$1_aptos_coin_AptosCoin'; - var $t27: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; - var $t28: int; - var $t29: int; - var $t30: bool; - var $t31: $1_coin_Coin'$1_aptos_coin_AptosCoin'; - var $t32: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; - var $t33: $Mutation ($1_pool_u64_Pool); - var $t34: int; - var $t35: $1_pool_u64_Pool; - var $t36: int; - var $t37: int; - var $t38: bool; - var $t39: $1_pool_u64_Pool; - var $t40: Vec (int); - var $t41: int; - var $t42: int; - var $t43: $1_pool_u64_Pool; - var $t44: int; - var $t45: int; - var $t46: $1_coin_Coin'$1_aptos_coin_AptosCoin'; - var $t47: $1_staking_contract_DistributeEvent; - var $t48: $Mutation (Vec (int)); - var $t49: $Mutation ($1_coin_Coin'$1_aptos_coin_AptosCoin'); - var $t50: int; - var $t51: int; - var $t52: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; - var $t53: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; - var $t54: $1_coin_Coin'$1_aptos_coin_AptosCoin'; - var $t55: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; - var $t56: int; - var $t57: int; - var $t58: bool; - var $t59: $1_coin_Coin'$1_aptos_coin_AptosCoin'; - var $t60: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; - var $t61: int; - var $t62: $1_coin_Coin'$1_aptos_coin_AptosCoin'; - var $t63: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; - var $t0: int; - var $t1: int; - var $t2: $Mutation ($1_staking_contract_StakingContract); - var $t3: $Mutation ($1_event_EventHandle'$1_staking_contract_DistributeEvent'); - var $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin'': $1_coin_Coin'$1_aptos_coin_AptosCoin'; - var $temp_0'$1_event_EventHandle'$1_staking_contract_DistributeEvent'': $1_event_EventHandle'$1_staking_contract_DistributeEvent'; - var $temp_0'$1_pool_u64_Pool': $1_pool_u64_Pool; - var $temp_0'$1_staking_contract_StakingContract': $1_staking_contract_StakingContract; - var $temp_0'address': int; - var $temp_0'u64': int; - var $temp_0'vec'address'': Vec (int); - $t0 := _$t0; - $t1 := _$t1; - $t2 := _$t2; - $t3 := _$t3; - - // bytecode translation starts here - // assume Identical($t16, select staking_contract::StakingContract.pool_address($t2)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:194:9+49 - assume {:print "$at(134,8605,8654)"} true; - assume ($t16 == $pool_address#$1_staking_contract_StakingContract($Dereference($t2))); - - // assume Identical($t17, global($t16)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:195:9+63 - assume {:print "$at(134,8663,8726)"} true; - assume ($t17 == $ResourceValue($1_stake_StakePool_$memory, $t16)); - - // trace_local[staker]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:578:5+1 - assume {:print "$at(133,27553,27554)"} true; - assume {:print "$track_local(56,8,0):", $t0} $t0 == $t0; - - // trace_local[operator]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:578:5+1 - assume {:print "$track_local(56,8,1):", $t1} $t1 == $t1; - - // trace_local[staking_contract]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:578:5+1 - $temp_0'$1_staking_contract_StakingContract' := $Dereference($t2); - assume {:print "$track_local(56,8,2):", $temp_0'$1_staking_contract_StakingContract'} $temp_0'$1_staking_contract_StakingContract' == $temp_0'$1_staking_contract_StakingContract'; - - // trace_local[distribute_events]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:578:5+1 - $temp_0'$1_event_EventHandle'$1_staking_contract_DistributeEvent'' := $Dereference($t3); - assume {:print "$track_local(56,8,3):", $temp_0'$1_event_EventHandle'$1_staking_contract_DistributeEvent''} $temp_0'$1_event_EventHandle'$1_staking_contract_DistributeEvent'' == $temp_0'$1_event_EventHandle'$1_staking_contract_DistributeEvent''; - - // $t18 := get_field.pool_address($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:584:28+29 - assume {:print "$at(133,27775,27804)"} true; - $t18 := $pool_address#$1_staking_contract_StakingContract($Dereference($t2)); - - // trace_local[pool_address]($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:584:13+12 - assume {:print "$track_local(56,8,12):", $t18} $t18 == $t18; - - // ($t19, $t20, $t21, $t22) := stake::get_stake($t18) on_abort goto L11 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:585:50+30 - assume {:print "$at(133,27855,27885)"} true; - call $t19,$t20,$t21,$t22 := $1_stake_get_stake($t18); - if ($abort_flag) { - assume {:print "$at(133,27855,27885)"} true; - $t23 := $abort_code; - assume {:print "$track_abort(56,8):", $t23} $t23 == $t23; - goto L11; - } - - // trace_local[pending_inactive]($t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:585:30+16 - assume {:print "$track_local(56,8,11):", $t22} $t22 == $t22; - - // destroy($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:585:27+1 - - // trace_local[inactive]($t20) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:585:17+8 - assume {:print "$track_local(56,8,10):", $t20} $t20 == $t20; - - // destroy($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:585:14+1 - - // $t24 := +($t20, $t22) on_abort goto L11 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:586:53+1 - assume {:print "$at(133,27939,27940)"} true; - call $t24 := $AddU64($t20, $t22); - if ($abort_flag) { - assume {:print "$at(133,27939,27940)"} true; - $t23 := $abort_code; - assume {:print "$track_abort(56,8):", $t23} $t23 == $t23; - goto L11; - } - - // trace_local[total_potential_withdrawable]($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:586:13+28 - assume {:print "$track_local(56,8,15):", $t24} $t24 == $t24; - - // $t25 := get_field.owner_cap($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:587:46+27 - assume {:print "$at(133,28004,28031)"} true; - $t25 := $owner_cap#$1_staking_contract_StakingContract($Dereference($t2)); - - // $t6 := stake::withdraw_with_cap($t25, $t24) on_abort goto L11 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:587:21+83 - call $t6 := $1_stake_withdraw_with_cap($t25, $t24); - if ($abort_flag) { - assume {:print "$at(133,27979,28062)"} true; - $t23 := $abort_code; - assume {:print "$track_abort(56,8):", $t23} $t23 == $t23; - goto L11; - } - - // trace_local[coins]($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:587:13+5 - assume {:print "$track_local(56,8,6):", $t6} $t6 == $t6; - - // $t26 := copy($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:588:47+6 - assume {:print "$at(133,28110,28116)"} true; - $t26 := $t6; - - // assume Identical($t27, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 - assume {:print "$at(95,1664,1763)"} true; - assume ($t27 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); - - // $t28 := coin::value($t26) on_abort goto L11 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:588:35+19 - assume {:print "$at(133,28098,28117)"} true; - call $t28 := $1_coin_value'$1_aptos_coin_AptosCoin'($t26); - if ($abort_flag) { - assume {:print "$at(133,28098,28117)"} true; - $t23 := $abort_code; - assume {:print "$track_abort(56,8):", $t23} $t23 == $t23; - goto L11; - } - - // trace_local[distribution_amount]($t28) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:588:13+19 - assume {:print "$track_local(56,8,8):", $t28} $t28 == $t28; - - // $t29 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:589:36+1 - assume {:print "$at(133,28154,28155)"} true; - $t29 := 0; - assume $IsValid'u64'($t29); - - // $t30 := ==($t28, $t29) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:589:33+2 - $t30 := $IsEqual'u64'($t28, $t29); - - // if ($t30) goto L1 else goto L12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:589:9+99 - if ($t30) { goto L1; } else { goto L12; } - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:590:13+25 - assume {:print "$at(133,28171,28196)"} true; -L1: - - // destroy($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:590:13+25 - assume {:print "$at(133,28171,28196)"} true; - - // destroy($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:590:13+25 - - // $t31 := move($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:590:32+5 - $t31 := $t6; - - // assume Identical($t32, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 - assume {:print "$at(95,1664,1763)"} true; - assume ($t32 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); - - // coin::destroy_zero($t31) on_abort goto L11 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:590:13+25 - assume {:print "$at(133,28171,28196)"} true; - call $1_coin_destroy_zero'$1_aptos_coin_AptosCoin'($t31); - if ($abort_flag) { - assume {:print "$at(133,28171,28196)"} true; - $t23 := $abort_code; - assume {:print "$track_abort(56,8):", $t23} $t23 == $t23; - goto L11; - } - - // trace_local[staking_contract]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:591:13+6 - assume {:print "$at(133,28210,28216)"} true; - $temp_0'$1_staking_contract_StakingContract' := $Dereference($t2); - assume {:print "$track_local(56,8,2):", $temp_0'$1_staking_contract_StakingContract'} $temp_0'$1_staking_contract_StakingContract' == $temp_0'$1_staking_contract_StakingContract'; - - // pack_ref_deep($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:591:13+6 - - // trace_local[distribute_events]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:591:13+6 - $temp_0'$1_event_EventHandle'$1_staking_contract_DistributeEvent'' := $Dereference($t3); - assume {:print "$track_local(56,8,3):", $temp_0'$1_event_EventHandle'$1_staking_contract_DistributeEvent''} $temp_0'$1_event_EventHandle'$1_staking_contract_DistributeEvent'' == $temp_0'$1_event_EventHandle'$1_staking_contract_DistributeEvent''; - - // goto L10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:591:13+6 - goto L10; - - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:594:38+16 - assume {:print "$at(133,28266,28282)"} true; -L0: - - // $t33 := borrow_field.distribution_pool($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:594:33+39 - assume {:print "$at(133,28261,28300)"} true; - $t33 := $ChildMutation($t2, 4, $distribution_pool#$1_staking_contract_StakingContract($Dereference($t2))); - - // trace_local[distribution_pool]($t33) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:594:13+17 - $temp_0'$1_pool_u64_Pool' := $Dereference($t33); - assume {:print "$track_local(56,8,9):", $temp_0'$1_pool_u64_Pool'} $temp_0'$1_pool_u64_Pool' == $temp_0'$1_pool_u64_Pool'; - - // $t34 := get_field.commission_percentage($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:596:63+38 - assume {:print "$at(133,28398,28436)"} true; - $t34 := $commission_percentage#$1_staking_contract_StakingContract($Dereference($t2)); - - // staking_contract::update_distribution_pool($t33, $t28, $t1, $t34) on_abort goto L11 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:595:9+127 - assume {:print "$at(133,28310,28437)"} true; - call $t33 := $1_staking_contract_update_distribution_pool($t33, $t28, $t1, $t34); - if ($abort_flag) { - assume {:print "$at(133,28310,28437)"} true; - $t23 := $abort_code; - assume {:print "$track_abort(56,8):", $t23} $t23 == $t23; - goto L11; - } - - // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 - assume {:print "$at(133,28544,28561)"} true; -L5: - - // $t6 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 - assume {:print "$at(133,28544,28561)"} true; - havoc $t6; - - // assume WellFormed($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 - assume $IsValid'$1_coin_Coin'$1_aptos_coin_AptosCoin''($t6); - - // $t14 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 - havoc $t14; - - // assume WellFormed($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 - assume $IsValid'vec'address''($t14); - - // $t35 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 - havoc $t35; - - // assume And(WellFormed($t35), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares($t35), addr), vector::spec_contains
(select pool_u64::Pool.shareholders($t35), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders($t35))), j: Range(0, Len
(select pool_u64::Pool.shareholders($t35))): Implies(Eq
(Index(select pool_u64::Pool.shareholders($t35), i), Index(select pool_u64::Pool.shareholders($t35), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 - assume ($IsValid'$1_pool_u64_Pool'($t35) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($t35), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($t35), addr)))) && (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($t35))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($t35))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; - (var j := $i_3; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($t35), i), ReadVec($shareholders#$1_pool_u64_Pool($t35), j)) ==> $IsEqual'num'(i, j)))))))))); - - // $t36 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 - havoc $t36; - - // assume WellFormed($t36) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 - assume $IsValid'u64'($t36); - - // $t37 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 - havoc $t37; - - // assume WellFormed($t37) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 - assume $IsValid'u64'($t37); - - // $t38 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 - havoc $t38; - - // assume WellFormed($t38) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 - assume $IsValid'bool'($t38); - - // $t39 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 - havoc $t39; - - // assume And(WellFormed($t39), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares($t39), addr), vector::spec_contains
(select pool_u64::Pool.shareholders($t39), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders($t39))), j: Range(0, Len
(select pool_u64::Pool.shareholders($t39))): Implies(Eq
(Index(select pool_u64::Pool.shareholders($t39), i), Index(select pool_u64::Pool.shareholders($t39), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 - assume ($IsValid'$1_pool_u64_Pool'($t39) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($t39), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($t39), addr)))) && (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($t39))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($t39))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; - (var j := $i_3; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($t39), i), ReadVec($shareholders#$1_pool_u64_Pool($t39), j)) ==> $IsEqual'num'(i, j)))))))))); - - // $t40 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 - havoc $t40; - - // assume WellFormed($t40) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 - assume $IsValid'vec'address''($t40); - - // $t41 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 - havoc $t41; - - // assume WellFormed($t41) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 - assume $IsValid'u64'($t41); - - // $t42 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 - havoc $t42; - - // assume WellFormed($t42) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 - assume $IsValid'address'($t42); - - // $t43 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 - havoc $t43; - - // assume And(WellFormed($t43), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares($t43), addr), vector::spec_contains
(select pool_u64::Pool.shareholders($t43), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders($t43))), j: Range(0, Len
(select pool_u64::Pool.shareholders($t43))): Implies(Eq
(Index(select pool_u64::Pool.shareholders($t43), i), Index(select pool_u64::Pool.shareholders($t43), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 - assume ($IsValid'$1_pool_u64_Pool'($t43) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($t43), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($t43), addr)))) && (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($t43))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($t43))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; - (var j := $i_3; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($t43), i), ReadVec($shareholders#$1_pool_u64_Pool($t43), j)) ==> $IsEqual'num'(i, j)))))))))); - - // $t44 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 - havoc $t44; - - // assume WellFormed($t44) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 - assume $IsValid'u64'($t44); - - // $t45 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 - havoc $t45; - - // assume WellFormed($t45) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 - assume $IsValid'u64'($t45); - - // $t46 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 - havoc $t46; - - // assume WellFormed($t46) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 - assume $IsValid'$1_coin_Coin'$1_aptos_coin_AptosCoin''($t46); - - // $t47 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 - havoc $t47; - - // assume WellFormed($t47) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 - assume $IsValid'$1_staking_contract_DistributeEvent'($t47); - - // $t3 := havoc[mut]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 - havoc $temp_0'$1_event_EventHandle'$1_staking_contract_DistributeEvent''; - $t3 := $UpdateMutation($t3, $temp_0'$1_event_EventHandle'$1_staking_contract_DistributeEvent''); - - // assume WellFormed($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 - assume $IsValid'$1_event_EventHandle'$1_staking_contract_DistributeEvent''($Dereference($t3)); - - // $t33 := havoc[mut]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 - havoc $temp_0'$1_pool_u64_Pool'; - $t33 := $UpdateMutation($t33, $temp_0'$1_pool_u64_Pool'); - - // assume And(WellFormed($t33), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares($t33), addr), vector::spec_contains
(select pool_u64::Pool.shareholders($t33), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders($t33))), j: Range(0, Len
(select pool_u64::Pool.shareholders($t33))): Implies(Eq
(Index(select pool_u64::Pool.shareholders($t33), i), Index(select pool_u64::Pool.shareholders($t33), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 - assume ($IsValid'$1_pool_u64_Pool'($Dereference($t33)) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($Dereference($t33)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($Dereference($t33)), addr)))) && (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($Dereference($t33)))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($Dereference($t33)))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; - (var j := $i_3; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($Dereference($t33)), i), ReadVec($shareholders#$1_pool_u64_Pool($Dereference($t33)), j)) ==> $IsEqual'num'(i, j)))))))))); - - // $t48 := havoc[mut_all]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 - havoc $t48; - - // assume WellFormed($t48) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 - assume $IsValid'vec'address''($Dereference($t48)); - - // $t49 := havoc[mut_all]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 - havoc $t49; - - // assume WellFormed($t49) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 - assume $IsValid'$1_coin_Coin'$1_aptos_coin_AptosCoin''($Dereference($t49)); - - // trace_local[distribute_events]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 - assume {:print "$info(): enter loop, variable(s) distribute_events, coins, recipients havocked and reassigned"} true; - $temp_0'$1_event_EventHandle'$1_staking_contract_DistributeEvent'' := $Dereference($t3); - assume {:print "$track_local(56,8,3):", $temp_0'$1_event_EventHandle'$1_staking_contract_DistributeEvent''} $temp_0'$1_event_EventHandle'$1_staking_contract_DistributeEvent'' == $temp_0'$1_event_EventHandle'$1_staking_contract_DistributeEvent''; - - // trace_local[coins]($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 - assume {:print "$track_local(56,8,6):", $t6} $t6 == $t6; - - // trace_local[recipients]($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 - assume {:print "$track_local(56,8,14):", $t14} $t14 == $t14; - - // assume Not(AbortFlag()) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 - assume !$abort_flag; - - // $t35 := read_ref($t33) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:45+17 - $t35 := $Dereference($t33); - - // $t36 := pool_u64::shareholders_count($t35) on_abort goto L11 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:16+47 - call $t36 := $1_pool_u64_shareholders_count($t35); - if ($abort_flag) { - assume {:print "$at(133,28515,28562)"} true; - $t23 := $abort_code; - assume {:print "$track_abort(56,8):", $t23} $t23 == $t23; - goto L11; - } - - // $t37 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:66+1 - $t37 := 0; - assume $IsValid'u64'($t37); - - // $t38 := >($t36, $t37) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:64+1 - call $t38 := $Gt($t36, $t37); - - // if ($t38) goto L13 else goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:9+661 - if ($t38) { goto L13; } else { goto L2; } - - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:599:9+661 -L3: - - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:600:53+17 - assume {:print "$at(133,28622,28639)"} true; -L4: - - // $t39 := read_ref($t33) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:600:53+17 - assume {:print "$at(133,28622,28639)"} true; - $t39 := $Dereference($t33); - - // $t14 := pool_u64::shareholders($t39) on_abort goto L11 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:600:30+41 - call $t14 := $1_pool_u64_shareholders($t39); - if ($abort_flag) { - assume {:print "$at(133,28599,28640)"} true; - $t23 := $abort_code; - assume {:print "$track_abort(56,8):", $t23} $t23 == $t23; - goto L11; - } - - // trace_local[recipients]($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:600:17+10 - assume {:print "$track_local(56,8,14):", $t14} $t14 == $t14; - - // $t48 := borrow_local($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:601:45+15 - assume {:print "$at(133,28686,28701)"} true; - $t48 := $Mutation($Local(14), EmptyVec(), $t14); - - // $t40 := read_ref($t48) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:601:44+20 - $t40 := $Dereference($t48); - - // trace_local[recipients]($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:601:44+20 - assume {:print "$track_local(56,8,14):", $t14} $t14 == $t14; - - // $t41 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:601:62+1 - $t41 := 0; - assume $IsValid'u64'($t41); - - // $t42 := vector::borrow
($t40, $t41) on_abort goto L11 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:601:30+34 - call $t42 := $1_vector_borrow'address'($t40, $t41); - if ($abort_flag) { - assume {:print "$at(133,28671,28705)"} true; - $t23 := $abort_code; - assume {:print "$track_abort(56,8):", $t23} $t23 == $t23; - goto L11; - } - - // trace_local[recipient]($t42) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:601:17+9 - assume {:print "$track_local(56,8,13):", $t42} $t42 == $t42; - - // $t43 := read_ref($t33) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:602:50+30 - assume {:print "$at(133,28756,28786)"} true; - $t43 := $Dereference($t33); - - // $t44 := pool_u64::shares($t43, $t42) on_abort goto L11 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:602:34+46 - call $t44 := $1_pool_u64_shares($t43, $t42); - if ($abort_flag) { - assume {:print "$at(133,28740,28786)"} true; - $t23 := $abort_code; - assume {:print "$track_abort(56,8):", $t23} $t23 == $t23; - goto L11; - } - - // trace_local[current_shares]($t44) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:602:17+14 - assume {:print "$track_local(56,8,7):", $t44} $t44 == $t44; - - // assume Identical($t50, pool_u64::spec_shares_to_amount_with_total_coins($t33, $t44, select pool_u64::Pool.total_coins($t33))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:145:9+102 - assume {:print "$at(59,5992,6094)"} true; - assume ($t50 == $1_pool_u64_spec_shares_to_amount_with_total_coins($Dereference($t33), $t44, $total_coins#$1_pool_u64_Pool($Dereference($t33)))); - - // assume Identical($t51, Sub(simple_map::spec_get(select pool_u64::Pool.shares($t33), $t42), $t44)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:181:9+83 - assume {:print "$at(59,7643,7726)"} true; - assume ($t51 == ($1_simple_map_spec_get'address_u64'($shares#$1_pool_u64_Pool($Dereference($t33)), $t42) - $t44)); - - // $t45 := pool_u64::redeem_shares($t33, $t42, $t44) on_abort goto L11 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:603:40+69 - assume {:print "$at(133,28827,28896)"} true; - call $t45,$t33 := $1_pool_u64_redeem_shares($t33, $t42, $t44); - if ($abort_flag) { - assume {:print "$at(133,28827,28896)"} true; - $t23 := $abort_code; - assume {:print "$track_abort(56,8):", $t23} $t23 == $t23; - goto L11; - } - - // trace_local[amount_to_distribute]($t45) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:603:17+20 - assume {:print "$track_local(56,8,5):", $t45} $t45 == $t45; - - // $t49 := borrow_local($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:604:52+10 - assume {:print "$at(133,28949,28959)"} true; - $t49 := $Mutation($Local(6), EmptyVec(), $t6); - - // assume Identical($t52, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 - assume {:print "$at(95,1664,1763)"} true; - assume ($t52 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); - - // $t46 := coin::extract($t49, $t45) on_abort goto L11 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:604:38+47 - assume {:print "$at(133,28935,28982)"} true; - call $t46,$t49 := $1_coin_extract'$1_aptos_coin_AptosCoin'($t49, $t45); - if ($abort_flag) { - assume {:print "$at(133,28935,28982)"} true; - $t23 := $abort_code; - assume {:print "$track_abort(56,8):", $t23} $t23 == $t23; - goto L11; - } - - // write_back[LocalRoot($t6)@]($t49) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:604:38+47 - $t6 := $Dereference($t49); - - // trace_local[coins]($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:604:38+47 - assume {:print "$track_local(56,8,6):", $t6} $t6 == $t6; - - // assume Identical($t53, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 - assume {:print "$at(95,1664,1763)"} true; - assume ($t53 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); - - // coin::deposit($t42, $t46) on_abort goto L11 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:604:13+73 - assume {:print "$at(133,28910,28983)"} true; - call $1_coin_deposit'$1_aptos_coin_AptosCoin'($t42, $t46); - if ($abort_flag) { - assume {:print "$at(133,28910,28983)"} true; - $t23 := $abort_code; - assume {:print "$track_abort(56,8):", $t23} $t23 == $t23; - goto L11; - } - - // $t47 := pack staking_contract::DistributeEvent($t1, $t18, $t42, $t45) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:608:17+83 - assume {:print "$at(133,29061,29144)"} true; - $t47 := $1_staking_contract_DistributeEvent($t1, $t18, $t42, $t45); - - // opaque begin: event::emit_event($t3, $t47) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:606:13+160 - assume {:print "$at(133,28998,29158)"} true; - - // opaque end: event::emit_event($t3, $t47) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:606:13+160 - - // goto L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:609:14+1 - assume {:print "$at(133,29158,29159)"} true; - goto L9; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:613:9+202 - assume {:print "$at(133,29251,29453)"} true; -L2: - - // destroy($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:613:9+202 - assume {:print "$at(133,29251,29453)"} true; - - // $t54 := copy($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:613:25+6 - $t54 := $t6; - - // assume Identical($t55, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 - assume {:print "$at(95,1664,1763)"} true; - assume ($t55 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); - - // $t56 := coin::value($t54) on_abort goto L11 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:613:13+19 - assume {:print "$at(133,29255,29274)"} true; - call $t56 := $1_coin_value'$1_aptos_coin_AptosCoin'($t54); - if ($abort_flag) { - assume {:print "$at(133,29255,29274)"} true; - $t23 := $abort_code; - assume {:print "$track_abort(56,8):", $t23} $t23 == $t23; - goto L11; - } - - // $t57 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:613:35+1 - $t57 := 0; - assume $IsValid'u64'($t57); - - // $t58 := >($t56, $t57) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:613:33+1 - call $t58 := $Gt($t56, $t57); - - // if ($t58) goto L7 else goto L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:613:9+202 - if ($t58) { goto L7; } else { goto L6; } - - // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:614:27+6 - assume {:print "$at(133,29308,29314)"} true; -L7: - - // $t59 := move($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:614:35+5 - assume {:print "$at(133,29316,29321)"} true; - $t59 := $t6; - - // assume Identical($t60, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 - assume {:print "$at(95,1664,1763)"} true; - assume ($t60 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); - - // coin::deposit($t0, $t59) on_abort goto L11 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:614:13+28 - assume {:print "$at(133,29294,29322)"} true; - call $1_coin_deposit'$1_aptos_coin_AptosCoin'($t0, $t59); - if ($abort_flag) { - assume {:print "$at(133,29294,29322)"} true; - $t23 := $abort_code; - assume {:print "$track_abort(56,8):", $t23} $t23 == $t23; - goto L11; - } - - // $t61 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:615:61+1 - assume {:print "$at(133,29384,29385)"} true; - $t61 := 0; - assume $IsValid'u64'($t61); - - // pool_u64::update_total_coins($t33, $t61) on_abort goto L11 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:615:13+50 - call $t33 := $1_pool_u64_update_total_coins($t33, $t61); - if ($abort_flag) { - assume {:print "$at(133,29336,29386)"} true; - $t23 := $abort_code; - assume {:print "$track_abort(56,8):", $t23} $t23 == $t23; - goto L11; - } - - // write_back[Reference($t2).distribution_pool (pool_u64::Pool)]($t33) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:615:13+50 - $t2 := $UpdateMutation($t2, $Update'$1_staking_contract_StakingContract'_distribution_pool($Dereference($t2), $Dereference($t33))); - - // trace_local[staking_contract]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:615:13+50 - $temp_0'$1_staking_contract_StakingContract' := $Dereference($t2); - assume {:print "$track_local(56,8,2):", $temp_0'$1_staking_contract_StakingContract'} $temp_0'$1_staking_contract_StakingContract' == $temp_0'$1_staking_contract_StakingContract'; - - // goto L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:613:9+202 - assume {:print "$at(133,29251,29453)"} true; - goto L8; - - // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:617:13+25 - assume {:print "$at(133,29417,29442)"} true; -L6: - - // write_back[Reference($t2).distribution_pool (pool_u64::Pool)]($t33) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:617:13+25 - assume {:print "$at(133,29417,29442)"} true; - $t2 := $UpdateMutation($t2, $Update'$1_staking_contract_StakingContract'_distribution_pool($Dereference($t2), $Dereference($t33))); - - // trace_local[staking_contract]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:617:13+25 - $temp_0'$1_staking_contract_StakingContract' := $Dereference($t2); - assume {:print "$track_local(56,8,2):", $temp_0'$1_staking_contract_StakingContract'} $temp_0'$1_staking_contract_StakingContract' == $temp_0'$1_staking_contract_StakingContract'; - - // destroy($t33) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:617:13+25 - - // $t62 := move($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:617:32+5 - $t62 := $t6; - - // assume Identical($t63, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 - assume {:print "$at(95,1664,1763)"} true; - assume ($t63 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); - - // coin::destroy_zero($t62) on_abort goto L11 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:617:13+25 - assume {:print "$at(133,29417,29442)"} true; - call $1_coin_destroy_zero'$1_aptos_coin_AptosCoin'($t62); - if ($abort_flag) { - assume {:print "$at(133,29417,29442)"} true; - $t23 := $abort_code; - assume {:print "$track_abort(56,8):", $t23} $t23 == $t23; - goto L11; - } - - // label L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:613:9+202 - assume {:print "$at(133,29251,29453)"} true; -L8: - - // trace_local[staking_contract]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:613:9+202 - assume {:print "$at(133,29251,29453)"} true; - $temp_0'$1_staking_contract_StakingContract' := $Dereference($t2); - assume {:print "$track_local(56,8,2):", $temp_0'$1_staking_contract_StakingContract'} $temp_0'$1_staking_contract_StakingContract' == $temp_0'$1_staking_contract_StakingContract'; - - // pack_ref_deep($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:613:9+202 - - // trace_local[distribute_events]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:613:9+202 - $temp_0'$1_event_EventHandle'$1_staking_contract_DistributeEvent'' := $Dereference($t3); - assume {:print "$track_local(56,8,3):", $temp_0'$1_event_EventHandle'$1_staking_contract_DistributeEvent''} $temp_0'$1_event_EventHandle'$1_staking_contract_DistributeEvent'' == $temp_0'$1_event_EventHandle'$1_staking_contract_DistributeEvent''; - - // goto L10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:613:9+202 - goto L10; - - // label L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:613:9+202 - // Loop invariant checking block for the loop started with header: L5 -L9: - - // stop() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:613:9+202 - assume {:print "$at(133,29251,29453)"} true; - assume false; - return; - - // label L10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:619:5+1 - assume {:print "$at(133,29458,29459)"} true; -L10: - - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:619:5+1 - assume {:print "$at(133,29458,29459)"} true; - $ret0 := $t2; - $ret1 := $t3; - return; - - // label L11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:619:5+1 -L11: - - // abort($t23) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:619:5+1 - assume {:print "$at(133,29458,29459)"} true; - $abort_code := $t23; - $abort_flag := true; - return; - - // label L12 at :1:1+10 - assume {:print "$at(1,0,10)"} true; -L12: - - // destroy($t3) at :1:1+10 - assume {:print "$at(1,0,10)"} true; - - // goto L0 at :1:1+10 - goto L0; - - // label L13 at :1:1+10 -L13: - - // destroy($t2) at :1:1+10 - assume {:print "$at(1,0,10)"} true; - - // goto L3 at :1:1+10 - goto L3; - -} - -// fun staking_contract::get_staking_contract_amounts_internal [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:653:5+869 -procedure {:inline 1} $1_staking_contract_get_staking_contract_amounts_internal(_$t0: $1_staking_contract_StakingContract) returns ($ret0: int, $ret1: int, $ret2: int) -{ - // declare local variables - var $t1: int; - var $t2: int; - var $t3: int; - var $t4: int; - var $t5: int; - var $t6: $1_stake_StakePool; - var $t7: int; - var $t8: int; - var $t9: int; - var $t10: int; - var $t11: int; - var $t12: int; - var $t13: int; - var $t14: int; - var $t15: int; - var $t16: int; - var $t17: int; - var $t18: int; - var $t19: int; - var $t20: int; - var $t21: int; - var $t22: int; - var $t23: int; - var $t0: $1_staking_contract_StakingContract; - var $temp_0'$1_staking_contract_StakingContract': $1_staking_contract_StakingContract; - var $temp_0'u64': int; - $t0 := _$t0; - - // bytecode translation starts here - // assume Identical($t5, select staking_contract::StakingContract.pool_address($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:299:9+49 - assume {:print "$at(134,12621,12670)"} true; - assume ($t5 == $pool_address#$1_staking_contract_StakingContract($t0)); - - // assume Identical($t6, global($t5)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:300:9+56 - assume {:print "$at(134,12679,12735)"} true; - assume ($t6 == $ResourceValue($1_stake_StakePool_$memory, $t5)); - - // assume Identical($t7, coin::$value(select stake::StakePool.active($t6))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:301:9+44 - assume {:print "$at(134,12744,12788)"} true; - assume ($t7 == $1_coin_$value'$1_aptos_coin_AptosCoin'($active#$1_stake_StakePool($t6))); - - // assume Identical($t8, coin::$value(select stake::StakePool.pending_active($t6))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:302:9+60 - assume {:print "$at(134,12797,12857)"} true; - assume ($t8 == $1_coin_$value'$1_aptos_coin_AptosCoin'($pending_active#$1_stake_StakePool($t6))); - - // assume Identical($t9, Add($t7, $t8)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:303:9+49 - assume {:print "$at(134,12866,12915)"} true; - assume ($t9 == ($t7 + $t8)); - - // assume Identical($t10, Sub($t9, select staking_contract::StakingContract.principal($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:304:9+74 - assume {:print "$at(134,12924,12998)"} true; - assume ($t10 == ($t9 - $principal#$1_staking_contract_StakingContract($t0))); - - // trace_local[staking_contract]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:653:5+1 - assume {:print "$at(133,31011,31012)"} true; - assume {:print "$track_local(56,9,0):", $t0} $t0 == $t0; - - // $t11 := get_field.pool_address($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:658:63+29 - assume {:print "$at(133,31532,31561)"} true; - $t11 := $pool_address#$1_staking_contract_StakingContract($t0); - - // ($t12, $t13, $t14, $t15) := stake::get_stake($t11) on_abort goto L2 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:658:46+47 - call $t12,$t13,$t14,$t15 := $1_stake_get_stake($t11); - if ($abort_flag) { - assume {:print "$at(133,31515,31562)"} true; - $t16 := $abort_code; - assume {:print "$track_abort(56,9):", $t16} $t16 == $t16; - goto L2; - } - - // destroy($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:658:41+1 - - // trace_local[pending_active]($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:658:25+14 - assume {:print "$track_local(56,9,3):", $t14} $t14 == $t14; - - // destroy($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:658:22+1 - - // $t17 := +($t12, $t14) on_abort goto L2 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:659:41+1 - assume {:print "$at(133,31604,31605)"} true; - call $t17 := $AddU64($t12, $t14); - if ($abort_flag) { - assume {:print "$at(133,31604,31605)"} true; - $t16 := $abort_code; - assume {:print "$track_abort(56,9):", $t16} $t16 == $t16; - goto L2; - } - - // trace_local[total_active_stake]($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:659:13+18 - assume {:print "$track_local(56,9,4):", $t17} $t17 == $t17; - - // $t18 := get_field.principal($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:660:56+26 - assume {:print "$at(133,31677,31703)"} true; - $t18 := $principal#$1_staking_contract_StakingContract($t0); - - // $t19 := -($t17, $t18) on_abort goto L2 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:660:54+1 - call $t19 := $Sub($t17, $t18); - if ($abort_flag) { - assume {:print "$at(133,31675,31676)"} true; - $t16 := $abort_code; - assume {:print "$track_abort(56,9):", $t16} $t16 == $t16; - goto L2; - } - - // trace_local[accumulated_rewards]($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:660:13+19 - assume {:print "$track_local(56,9,1):", $t19} $t19 == $t19; - - // $t20 := get_field.commission_percentage($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:661:55+38 - assume {:print "$at(133,31759,31797)"} true; - $t20 := $commission_percentage#$1_staking_contract_StakingContract($t0); - - // $t21 := *($t19, $t20) on_abort goto L2 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:661:53+1 - call $t21 := $MulU64($t19, $t20); - if ($abort_flag) { - assume {:print "$at(133,31757,31758)"} true; - $t16 := $abort_code; - assume {:print "$track_abort(56,9):", $t16} $t16 == $t16; - goto L2; - } - - // $t22 := 100 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:661:96+3 - $t22 := 100; - assume $IsValid'u64'($t22); - - // $t23 := /($t21, $t22) on_abort goto L2 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:661:94+1 - call $t23 := $Div($t21, $t22); - if ($abort_flag) { - assume {:print "$at(133,31798,31799)"} true; - $t16 := $abort_code; - assume {:print "$track_abort(56,9):", $t16} $t16 == $t16; - goto L2; - } - - // trace_local[commission_amount]($t23) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:661:13+17 - assume {:print "$track_local(56,9,2):", $t23} $t23 == $t23; - - // trace_return[0]($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:663:9+60 - assume {:print "$at(133,31814,31874)"} true; - assume {:print "$track_return(56,9,0):", $t17} $t17 == $t17; - - // trace_return[1]($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:663:9+60 - assume {:print "$track_return(56,9,1):", $t19} $t19 == $t19; - - // trace_return[2]($t23) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:663:9+60 - assume {:print "$track_return(56,9,2):", $t23} $t23 == $t23; - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:664:5+1 - assume {:print "$at(133,31879,31880)"} true; -L1: - - // return ($t17, $t19, $t23) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:664:5+1 - assume {:print "$at(133,31879,31880)"} true; - $ret0 := $t17; - $ret1 := $t19; - $ret2 := $t23; - return; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:664:5+1 -L2: - - // abort($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:664:5+1 - assume {:print "$at(133,31879,31880)"} true; - $abort_code := $t16; - $abort_flag := true; - return; - -} - -// fun staking_contract::request_commission_internal [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:422:5+1338 -procedure {:inline 1} $1_staking_contract_request_commission_internal(_$t0: int, _$t1: $Mutation ($1_staking_contract_StakingContract), _$t2: $Mutation ($1_event_EventHandle'$1_staking_contract_AddDistributionEvent'), _$t3: $Mutation ($1_event_EventHandle'$1_staking_contract_RequestCommissionEvent')) returns ($ret0: int, $ret1: $Mutation ($1_staking_contract_StakingContract), $ret2: $Mutation ($1_event_EventHandle'$1_staking_contract_AddDistributionEvent'), $ret3: $Mutation ($1_event_EventHandle'$1_staking_contract_RequestCommissionEvent')) -{ - // declare local variables - var $t4: int; - var $t5: int; - var $t6: int; - var $t7: int; - var $t8: $1_stake_StakePool; - var $t9: int; - var $t10: int; - var $t11: int; - var $t12: int; - var $t13: $1_staking_contract_StakingContract; - var $t14: int; - var $t15: $1_stake_StakePool; - var $t16: int; - var $t17: int; - var $t18: int; - var $t19: int; - var $t20: int; - var $t21: int; - var $t22: int; - var $t23: int; - var $t24: int; - var $t25: $Mutation (int); - var $t26: int; - var $t27: bool; - var $t28: int; - var $t29: int; - var $t30: $1_stake_OwnerCapability; - var $t31: int; - var $t32: $1_stake_StakePool; - var $t33: int; - var $t34: int; - var $t35: $1_staking_contract_RequestCommissionEvent; - var $t0: int; - var $t1: $Mutation ($1_staking_contract_StakingContract); - var $t2: $Mutation ($1_event_EventHandle'$1_staking_contract_AddDistributionEvent'); - var $t3: $Mutation ($1_event_EventHandle'$1_staking_contract_RequestCommissionEvent'); - var $temp_0'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent'': $1_event_EventHandle'$1_staking_contract_AddDistributionEvent'; - var $temp_0'$1_event_EventHandle'$1_staking_contract_RequestCommissionEvent'': $1_event_EventHandle'$1_staking_contract_RequestCommissionEvent'; - var $temp_0'$1_staking_contract_StakingContract': $1_staking_contract_StakingContract; - var $temp_0'address': int; - var $temp_0'u64': int; - $t0 := _$t0; - $t1 := _$t1; - $t2 := _$t2; - $t3 := _$t3; - - // bytecode translation starts here - // assume Identical($t7, select staking_contract::StakingContract.pool_address($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:299:9+49 - assume {:print "$at(134,12621,12670)"} true; - assume ($t7 == $pool_address#$1_staking_contract_StakingContract($Dereference($t1))); - - // assume Identical($t8, global($t7)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:300:9+56 - assume {:print "$at(134,12679,12735)"} true; - assume ($t8 == $ResourceValue($1_stake_StakePool_$memory, $t7)); - - // assume Identical($t9, coin::$value(select stake::StakePool.active($t8))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:301:9+44 - assume {:print "$at(134,12744,12788)"} true; - assume ($t9 == $1_coin_$value'$1_aptos_coin_AptosCoin'($active#$1_stake_StakePool($t8))); - - // assume Identical($t10, coin::$value(select stake::StakePool.pending_active($t8))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:302:9+60 - assume {:print "$at(134,12797,12857)"} true; - assume ($t10 == $1_coin_$value'$1_aptos_coin_AptosCoin'($pending_active#$1_stake_StakePool($t8))); - - // assume Identical($t11, Add($t9, $t10)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:303:9+49 - assume {:print "$at(134,12866,12915)"} true; - assume ($t11 == ($t9 + $t10)); - - // assume Identical($t12, Sub($t11, select staking_contract::StakingContract.principal($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:304:9+74 - assume {:print "$at(134,12924,12998)"} true; - assume ($t12 == ($t11 - $principal#$1_staking_contract_StakingContract($Dereference($t1)))); - - // trace_local[operator]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:422:5+1 - assume {:print "$at(133,20130,20131)"} true; - assume {:print "$track_local(56,14,0):", $t0} $t0 == $t0; - - // trace_local[staking_contract]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:422:5+1 - $temp_0'$1_staking_contract_StakingContract' := $Dereference($t1); - assume {:print "$track_local(56,14,1):", $temp_0'$1_staking_contract_StakingContract'} $temp_0'$1_staking_contract_StakingContract' == $temp_0'$1_staking_contract_StakingContract'; - - // trace_local[add_distribution_events]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:422:5+1 - $temp_0'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent'' := $Dereference($t2); - assume {:print "$track_local(56,14,2):", $temp_0'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent''} $temp_0'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent'' == $temp_0'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent''; - - // trace_local[request_commission_events]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:422:5+1 - $temp_0'$1_event_EventHandle'$1_staking_contract_RequestCommissionEvent'' := $Dereference($t3); - assume {:print "$track_local(56,14,3):", $temp_0'$1_event_EventHandle'$1_staking_contract_RequestCommissionEvent''} $temp_0'$1_event_EventHandle'$1_staking_contract_RequestCommissionEvent'' == $temp_0'$1_event_EventHandle'$1_staking_contract_RequestCommissionEvent''; - - // $t13 := read_ref($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:430:51+16 - assume {:print "$at(133,20593,20609)"} true; - $t13 := $Dereference($t1); - - // assume Identical($t14, select staking_contract::StakingContract.pool_address($t13)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:299:9+49 - assume {:print "$at(134,12621,12670)"} true; - assume ($t14 == $pool_address#$1_staking_contract_StakingContract($t13)); - - // assume Identical($t15, global($t14)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:300:9+56 - assume {:print "$at(134,12679,12735)"} true; - assume ($t15 == $ResourceValue($1_stake_StakePool_$memory, $t14)); - - // assume Identical($t16, coin::$value(select stake::StakePool.active($t15))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:301:9+44 - assume {:print "$at(134,12744,12788)"} true; - assume ($t16 == $1_coin_$value'$1_aptos_coin_AptosCoin'($active#$1_stake_StakePool($t15))); - - // assume Identical($t17, coin::$value(select stake::StakePool.pending_active($t15))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:302:9+60 - assume {:print "$at(134,12797,12857)"} true; - assume ($t17 == $1_coin_$value'$1_aptos_coin_AptosCoin'($pending_active#$1_stake_StakePool($t15))); - - // assume Identical($t18, Add($t16, $t17)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:303:9+49 - assume {:print "$at(134,12866,12915)"} true; - assume ($t18 == ($t16 + $t17)); - - // assume Identical($t19, Sub($t18, select staking_contract::StakingContract.principal($t13))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:304:9+74 - assume {:print "$at(134,12924,12998)"} true; - assume ($t19 == ($t18 - $principal#$1_staking_contract_StakingContract($t13))); - - // ($t20, $t21, $t22) := staking_contract::get_staking_contract_amounts_internal($t13) on_abort goto L3 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:430:13+55 - assume {:print "$at(133,20555,20610)"} true; - call $t20,$t21,$t22 := $1_staking_contract_get_staking_contract_amounts_internal($t13); - if ($abort_flag) { - assume {:print "$at(133,20555,20610)"} true; - $t23 := $abort_code; - assume {:print "$track_abort(56,14):", $t23} $t23 == $t23; - goto L3; - } - - // trace_local[commission_amount]($t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:429:55+17 - assume {:print "$at(133,20522,20539)"} true; - assume {:print "$track_local(56,14,5):", $t22} $t22 == $t22; - - // trace_local[accumulated_rewards]($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:429:34+19 - assume {:print "$track_local(56,14,4):", $t21} $t21 == $t21; - - // $t24 := -($t20, $t22) on_abort goto L3 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:431:57+1 - assume {:print "$at(133,20668,20669)"} true; - call $t24 := $Sub($t20, $t22); - if ($abort_flag) { - assume {:print "$at(133,20668,20669)"} true; - $t23 := $abort_code; - assume {:print "$track_abort(56,14):", $t23} $t23 == $t23; - goto L3; - } - - // $t25 := borrow_field.principal($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:431:9+26 - $t25 := $ChildMutation($t1, 0, $principal#$1_staking_contract_StakingContract($Dereference($t1))); - - // write_ref($t25, $t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:431:9+67 - $t25 := $UpdateMutation($t25, $t24); - - // write_back[Reference($t1).principal (u64)]($t25) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:431:9+67 - $t1 := $UpdateMutation($t1, $Update'$1_staking_contract_StakingContract'_principal($Dereference($t1), $Dereference($t25))); - - // trace_local[staking_contract]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:431:9+67 - $temp_0'$1_staking_contract_StakingContract' := $Dereference($t1); - assume {:print "$track_local(56,14,1):", $temp_0'$1_staking_contract_StakingContract'} $temp_0'$1_staking_contract_StakingContract' == $temp_0'$1_staking_contract_StakingContract'; - - // $t26 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:434:34+1 - assume {:print "$at(133,20781,20782)"} true; - $t26 := 0; - assume $IsValid'u64'($t26); - - // $t27 := ==($t22, $t26) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:434:31+2 - $t27 := $IsEqual'u64'($t22, $t26); - - // if ($t27) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:434:9+60 - if ($t27) { goto L1; } else { goto L0; } - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:435:13+8 - assume {:print "$at(133,20798,20806)"} true; -L1: - - // destroy($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:435:13+8 - assume {:print "$at(133,20798,20806)"} true; - - // destroy($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:435:13+8 - - // destroy($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:435:13+8 - - // $t28 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:435:20+1 - $t28 := 0; - assume $IsValid'u64'($t28); - - // trace_return[0]($t28) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:435:13+8 - assume {:print "$track_return(56,14,0):", $t28} $t28 == $t28; - - // trace_local[staking_contract]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:435:13+8 - $temp_0'$1_staking_contract_StakingContract' := $Dereference($t1); - assume {:print "$track_local(56,14,1):", $temp_0'$1_staking_contract_StakingContract'} $temp_0'$1_staking_contract_StakingContract' == $temp_0'$1_staking_contract_StakingContract'; - - // pack_ref_deep($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:435:13+8 - - // trace_local[add_distribution_events]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:435:13+8 - $temp_0'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent'' := $Dereference($t2); - assume {:print "$track_local(56,14,2):", $temp_0'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent''} $temp_0'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent'' == $temp_0'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent''; - - // trace_local[request_commission_events]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:435:13+8 - $temp_0'$1_event_EventHandle'$1_staking_contract_RequestCommissionEvent'' := $Dereference($t3); - assume {:print "$track_local(56,14,3):", $temp_0'$1_event_EventHandle'$1_staking_contract_RequestCommissionEvent''} $temp_0'$1_event_EventHandle'$1_staking_contract_RequestCommissionEvent'' == $temp_0'$1_event_EventHandle'$1_staking_contract_RequestCommissionEvent''; - - // $t29 := move($t28) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:435:13+8 - $t29 := $t28; - - // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:435:13+8 - goto L2; - - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:439:26+8 - assume {:print "$at(133,20892,20900)"} true; -L0: - - // staking_contract::add_distribution($t0, $t1, $t0, $t22, $t2) on_abort goto L3 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:439:9+98 - assume {:print "$at(133,20875,20973)"} true; - call $t1,$t2 := $1_staking_contract_add_distribution($t0, $t1, $t0, $t22, $t2); - if ($abort_flag) { - assume {:print "$at(133,20875,20973)"} true; - $t23 := $abort_code; - assume {:print "$track_abort(56,14):", $t23} $t23 == $t23; - goto L3; - } - - // $t30 := get_field.owner_cap($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:443:51+27 - assume {:print "$at(133,21174,21201)"} true; - $t30 := $owner_cap#$1_staking_contract_StakingContract($Dereference($t1)); - - // assume Identical($t31, select stake::OwnerCapability.pool_address($t30)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:56:9+42 - assume {:print "$at(132,2499,2541)"} true; - assume ($t31 == $pool_address#$1_stake_OwnerCapability($t30)); - - // assume Identical($t32, global($t31)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:57:9+53 - assume {:print "$at(132,2550,2603)"} true; - assume ($t32 == $ResourceValue($1_stake_StakePool_$memory, $t31)); - - // assume Identical($t33, math64::$min($t22, select coin::Coin.value(select stake::StakePool.active($t32)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:60:9+76 - assume {:print "$at(132,2725,2801)"} true; - assume ($t33 == $1_math64_$min($t22, $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($active#$1_stake_StakePool($t32)))); - - // stake::unlock_with_cap($t22, $t30) on_abort goto L3 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:443:9+70 - assume {:print "$at(133,21132,21202)"} true; - call $1_stake_unlock_with_cap($t22, $t30); - if ($abort_flag) { - assume {:print "$at(133,21132,21202)"} true; - $t23 := $abort_code; - assume {:print "$track_abort(56,14):", $t23} $t23 == $t23; - goto L3; - } - - // $t34 := get_field.pool_address($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:445:28+29 - assume {:print "$at(133,21232,21261)"} true; - $t34 := $pool_address#$1_staking_contract_StakingContract($Dereference($t1)); - - // trace_local[pool_address]($t34) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:445:13+12 - assume {:print "$track_local(56,14,6):", $t34} $t34 == $t34; - - // $t35 := pack staking_contract::RequestCommissionEvent($t0, $t34, $t21, $t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:448:13+89 - assume {:print "$at(133,21334,21423)"} true; - $t35 := $1_staking_contract_RequestCommissionEvent($t0, $t34, $t21, $t22); - - // opaque begin: event::emit_event($t3, $t35) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:446:9+163 - assume {:print "$at(133,21271,21434)"} true; - - // opaque end: event::emit_event($t3, $t35) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:446:9+163 - - // trace_return[0]($t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:451:9+17 - assume {:print "$at(133,21445,21462)"} true; - assume {:print "$track_return(56,14,0):", $t22} $t22 == $t22; - - // trace_local[staking_contract]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:451:9+17 - $temp_0'$1_staking_contract_StakingContract' := $Dereference($t1); - assume {:print "$track_local(56,14,1):", $temp_0'$1_staking_contract_StakingContract'} $temp_0'$1_staking_contract_StakingContract' == $temp_0'$1_staking_contract_StakingContract'; - - // pack_ref_deep($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:451:9+17 - - // trace_local[add_distribution_events]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:451:9+17 - $temp_0'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent'' := $Dereference($t2); - assume {:print "$track_local(56,14,2):", $temp_0'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent''} $temp_0'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent'' == $temp_0'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent''; - - // trace_local[request_commission_events]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:451:9+17 - $temp_0'$1_event_EventHandle'$1_staking_contract_RequestCommissionEvent'' := $Dereference($t3); - assume {:print "$track_local(56,14,3):", $temp_0'$1_event_EventHandle'$1_staking_contract_RequestCommissionEvent''} $temp_0'$1_event_EventHandle'$1_staking_contract_RequestCommissionEvent'' == $temp_0'$1_event_EventHandle'$1_staking_contract_RequestCommissionEvent''; - - // $t29 := move($t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:451:9+17 - $t29 := $t22; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:452:5+1 - assume {:print "$at(133,21467,21468)"} true; -L2: - - // return $t29 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:452:5+1 - assume {:print "$at(133,21467,21468)"} true; - $ret0 := $t29; - $ret1 := $t1; - $ret2 := $t2; - $ret3 := $t3; - return; - - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:452:5+1 -L3: - - // abort($t23) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:452:5+1 - assume {:print "$at(133,21467,21468)"} true; - $abort_code := $t23; - $abort_flag := true; - return; - -} - -// fun staking_contract::reset_lockup [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:352:5+596 -procedure {:inline 1} $1_staking_contract_reset_lockup(_$t0: $signer, _$t1: int) returns () -{ - // declare local variables - var $t2: int; - var $t3: int; - var $t4: $Mutation ($1_staking_contract_StakingContract); - var $t5: $Mutation ($1_staking_contract_Store); - var $t6: int; - var $t7: Table int ($1_staking_contract_StakingContract); - var $t8: $1_staking_contract_Store; - var $t9: $1_staking_contract_StakingContract; - var $t10: int; - var $t11: $1_staking_config_StakingConfig; - var $t12: $1_stake_StakePool; - var $t13: int; - var $t14: int; - var $t15: int; - var $t16: int; - var $t17: int; - var $t18: Table int ($1_staking_contract_StakingContract); - var $t19: $Mutation ($1_staking_contract_Store); - var $t20: $Mutation (Table int ($1_staking_contract_StakingContract)); - var $t21: $Mutation ($1_staking_contract_StakingContract); - var $t22: int; - var $t23: $1_stake_OwnerCapability; - var $t24: $1_staking_config_StakingConfig; - var $t25: int; - var $t26: $1_stake_StakePool; - var $t27: int; - var $t28: int; - var $t29: $Mutation ($1_event_EventHandle'$1_staking_contract_ResetLockupEvent'); - var $t30: $1_staking_contract_ResetLockupEvent; - var $t0: $signer; - var $t1: int; - var $temp_0'$1_staking_contract_StakingContract': $1_staking_contract_StakingContract; - var $temp_0'$1_staking_contract_Store': $1_staking_contract_Store; - var $temp_0'address': int; - var $temp_0'signer': $signer; - $t0 := _$t0; - $t1 := _$t1; - - // bytecode translation starts here - // assume Identical($t6, signer::$address_of($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:106:9+48 - assume {:print "$at(134,4774,4822)"} true; - assume ($t6 == $1_signer_$address_of($t0)); - - // assume Identical($t7, select staking_contract::Store.staking_contracts(global($t6))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 - assume {:print "$at(134,11481,11545)"} true; - assume ($t7 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t6))); - - // assume Identical($t8, global($t6)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:316:9+34 - assume {:print "$at(134,13411,13445)"} true; - assume ($t8 == $ResourceValue($1_staking_contract_Store_$memory, $t6)); - - // assume Identical($t9, simple_map::spec_get(select staking_contract::Store.staking_contracts($t8), $t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:317:9+79 - assume {:print "$at(134,13454,13533)"} true; - assume ($t9 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($t8), $t1)); - - // assume Identical($t10, select stake::OwnerCapability.pool_address(select staking_contract::StakingContract.owner_cap($t9))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:318:9+59 - assume {:print "$at(134,13542,13601)"} true; - assume ($t10 == $pool_address#$1_stake_OwnerCapability($owner_cap#$1_staking_contract_StakingContract($t9))); - - // assume Identical($t11, global(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:323:9+69 - assume {:print "$at(134,13747,13816)"} true; - assume ($t11 == $ResourceValue($1_staking_config_StakingConfig_$memory, 1)); - - // assume Identical($t12, global($t10)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:324:9+56 - assume {:print "$at(134,13825,13881)"} true; - assume ($t12 == $ResourceValue($1_stake_StakePool_$memory, $t10)); - - // assume Identical($t13, select stake::StakePool.locked_until_secs($t12)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:325:9+57 - assume {:print "$at(134,13890,13947)"} true; - assume ($t13 == $locked_until_secs#$1_stake_StakePool($t12)); - - // assume Identical($t14, Div(select timestamp::CurrentTimeMicroseconds.microseconds(global(0x1)), 1000000)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:326:9+126 - assume {:print "$at(134,13956,14082)"} true; - assume ($t14 == ($microseconds#$1_timestamp_CurrentTimeMicroseconds($ResourceValue($1_timestamp_CurrentTimeMicroseconds_$memory, 1)) div 1000000)); - - // assume Identical($t15, Add($t14, select staking_config::StakingConfig.recurring_lockup_duration_secs($t11))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:327:9+77 - assume {:print "$at(134,14091,14168)"} true; - assume ($t15 == ($t14 + $recurring_lockup_duration_secs#$1_staking_config_StakingConfig($t11))); - - // trace_local[staker]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:352:5+1 - assume {:print "$at(133,16467,16468)"} true; - assume {:print "$track_local(56,15,0):", $t0} $t0 == $t0; - - // trace_local[operator]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:352:5+1 - assume {:print "$track_local(56,15,1):", $t1} $t1 == $t1; - - // $t16 := signer::address_of($t0) on_abort goto L2 with $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:353:30+26 - assume {:print "$at(133,16579,16605)"} true; - call $t16 := $1_signer_address_of($t0); - if ($abort_flag) { - assume {:print "$at(133,16579,16605)"} true; - $t17 := $abort_code; - assume {:print "$track_abort(56,15):", $t17} $t17 == $t17; - goto L2; - } - - // trace_local[staker_address]($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:353:13+14 - assume {:print "$track_local(56,15,3):", $t16} $t16 == $t16; - - // assume Identical($t18, select staking_contract::Store.staking_contracts(global($t16))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 - assume {:print "$at(134,11481,11545)"} true; - assume ($t18 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t16))); - - // staking_contract::assert_staking_contract_exists($t16, $t1) on_abort goto L2 with $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:354:9+56 - assume {:print "$at(133,16615,16671)"} true; - call $1_staking_contract_assert_staking_contract_exists($t16, $t1); - if ($abort_flag) { - assume {:print "$at(133,16615,16671)"} true; - $t17 := $abort_code; - assume {:print "$track_abort(56,15):", $t17} $t17 == $t17; - goto L2; - } - - // $t19 := borrow_global($t16) on_abort goto L2 with $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:356:21+17 - assume {:print "$at(133,16694,16711)"} true; - if (!$ResourceExists($1_staking_contract_Store_$memory, $t16)) { - call $ExecFailureAbort(); - } else { - $t19 := $Mutation($Global($t16), EmptyVec(), $ResourceValue($1_staking_contract_Store_$memory, $t16)); - } - if ($abort_flag) { - assume {:print "$at(133,16694,16711)"} true; - $t17 := $abort_code; - assume {:print "$track_abort(56,15):", $t17} $t17 == $t17; - goto L2; - } - - // trace_local[store]($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:356:13+5 - $temp_0'$1_staking_contract_Store' := $Dereference($t19); - assume {:print "$track_local(56,15,5):", $temp_0'$1_staking_contract_Store'} $temp_0'$1_staking_contract_Store' == $temp_0'$1_staking_contract_Store'; - - // $t20 := borrow_field.staking_contracts($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:357:55+28 - assume {:print "$at(133,16790,16818)"} true; - $t20 := $ChildMutation($t19, 0, $staking_contracts#$1_staking_contract_Store($Dereference($t19))); - - // $t21 := simple_map::borrow_mut($t20, $t1) on_abort goto L2 with $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:357:32+63 - call $t21,$t20 := $1_simple_map_borrow_mut'address_$1_staking_contract_StakingContract'($t20, $t1); - if ($abort_flag) { - assume {:print "$at(133,16767,16830)"} true; - $t17 := $abort_code; - assume {:print "$track_abort(56,15):", $t17} $t17 == $t17; - goto L2; - } - - // trace_local[staking_contract]($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:357:13+16 - $temp_0'$1_staking_contract_StakingContract' := $Dereference($t21); - assume {:print "$track_local(56,15,4):", $temp_0'$1_staking_contract_StakingContract'} $temp_0'$1_staking_contract_StakingContract' == $temp_0'$1_staking_contract_StakingContract'; - - // $t22 := get_field.pool_address($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:358:28+29 - assume {:print "$at(133,16859,16888)"} true; - $t22 := $pool_address#$1_staking_contract_StakingContract($Dereference($t21)); - - // trace_local[pool_address]($t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:358:13+12 - assume {:print "$track_local(56,15,2):", $t22} $t22 == $t22; - - // $t23 := get_field.owner_cap($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:359:41+27 - assume {:print "$at(133,16930,16957)"} true; - $t23 := $owner_cap#$1_staking_contract_StakingContract($Dereference($t21)); - - // assume Identical($t24, global(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:67:9+69 - assume {:print "$at(132,3047,3116)"} true; - assume ($t24 == $ResourceValue($1_staking_config_StakingConfig_$memory, 1)); - - // assume Identical($t25, select stake::OwnerCapability.pool_address($t23)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:68:9+42 - assume {:print "$at(132,3125,3167)"} true; - assume ($t25 == $pool_address#$1_stake_OwnerCapability($t23)); - - // assume Identical($t26, global($t25)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:69:9+53 - assume {:print "$at(132,3176,3229)"} true; - assume ($t26 == $ResourceValue($1_stake_StakePool_$memory, $t25)); - - // assume Identical($t27, timestamp::spec_now_seconds()) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:71:9+48 - assume {:print "$at(132,3301,3349)"} true; - assume ($t27 == $1_timestamp_spec_now_seconds($1_timestamp_CurrentTimeMicroseconds_$memory)); - - // assume Identical($t28, select staking_config::StakingConfig.recurring_lockup_duration_secs($t24)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:72:9+51 - assume {:print "$at(132,3358,3409)"} true; - assume ($t28 == $recurring_lockup_duration_secs#$1_staking_config_StakingConfig($t24)); - - // stake::increase_lockup_with_cap($t23) on_abort goto L2 with $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:359:9+60 - assume {:print "$at(133,16898,16958)"} true; - call $1_stake_increase_lockup_with_cap($t23); - if ($abort_flag) { - assume {:print "$at(133,16898,16958)"} true; - $t17 := $abort_code; - assume {:print "$track_abort(56,15):", $t17} $t17 == $t17; - goto L2; - } - - // $t29 := borrow_field.reset_lockup_events($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:361:20+30 - assume {:print "$at(133,16980,17010)"} true; - $t29 := $ChildMutation($t19, 3, $reset_lockup_events#$1_staking_contract_Store($Dereference($t19))); - - // $t30 := pack staking_contract::ResetLockupEvent($t1, $t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:361:52+43 - $t30 := $1_staking_contract_ResetLockupEvent($t1, $t22); - - // opaque begin: event::emit_event($t29, $t30) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:361:9+87 - - // opaque end: event::emit_event($t29, $t30) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:361:9+87 - - // write_back[Reference($t19).reset_lockup_events (event::EventHandle)]($t29) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:361:9+87 - $t19 := $UpdateMutation($t19, $Update'$1_staking_contract_Store'_reset_lockup_events($Dereference($t19), $Dereference($t29))); - - // pack_ref_deep($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:361:9+87 - - // write_back[staking_contract::Store@]($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:361:9+87 - $1_staking_contract_Store_$memory := $ResourceUpdate($1_staking_contract_Store_$memory, $GlobalLocationAddress($t19), - $Dereference($t19)); - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:362:5+1 - assume {:print "$at(133,17062,17063)"} true; -L1: - - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:362:5+1 - assume {:print "$at(133,17062,17063)"} true; - return; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:362:5+1 -L2: - - // abort($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:362:5+1 - assume {:print "$at(133,17062,17063)"} true; - $abort_code := $t17; - $abort_flag := true; - return; - -} - -// fun staking_contract::staking_contract_amounts [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:208:5+395 -procedure {:inline 1} $1_staking_contract_staking_contract_amounts(_$t0: int, _$t1: int) returns ($ret0: int, $ret1: int, $ret2: int) -{ - // declare local variables - var $t2: Table int ($1_staking_contract_StakingContract); - var $t3: $1_staking_contract_StakingContract; - var $t4: Table int ($1_staking_contract_StakingContract); - var $t5: int; - var $t6: $1_stake_StakePool; - var $t7: int; - var $t8: int; - var $t9: int; - var $t10: int; - var $t11: Table int ($1_staking_contract_StakingContract); - var $t12: int; - var $t13: $1_staking_contract_Store; - var $t14: Table int ($1_staking_contract_StakingContract); - var $t15: $1_staking_contract_StakingContract; - var $t16: int; - var $t17: $1_stake_StakePool; - var $t18: int; - var $t19: int; - var $t20: int; - var $t21: int; - var $t22: int; - var $t23: int; - var $t24: int; - var $t0: int; - var $t1: int; - var $temp_0'address': int; - var $temp_0'u64': int; - $t0 := _$t0; - $t1 := _$t1; - - // bytecode translation starts here - // assume Identical($t2, select staking_contract::Store.staking_contracts(global($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:25:9+64 - assume {:print "$at(134,958,1022)"} true; - assume ($t2 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t0))); - - // assume Identical($t3, simple_map::spec_get($t2, $t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:26:9+73 - assume {:print "$at(134,1031,1104)"} true; - assume ($t3 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($t2, $t1)); - - // assume Identical($t4, select staking_contract::Store.staking_contracts(global($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:259:9+64 - assume {:print "$at(134,11186,11250)"} true; - assume ($t4 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t0))); - - // assume Identical($t5, select staking_contract::StakingContract.pool_address($t3)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:299:9+49 - assume {:print "$at(134,12621,12670)"} true; - assume ($t5 == $pool_address#$1_staking_contract_StakingContract($t3)); - - // assume Identical($t6, global($t5)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:300:9+56 - assume {:print "$at(134,12679,12735)"} true; - assume ($t6 == $ResourceValue($1_stake_StakePool_$memory, $t5)); - - // assume Identical($t7, coin::$value(select stake::StakePool.active($t6))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:301:9+44 - assume {:print "$at(134,12744,12788)"} true; - assume ($t7 == $1_coin_$value'$1_aptos_coin_AptosCoin'($active#$1_stake_StakePool($t6))); - - // assume Identical($t8, coin::$value(select stake::StakePool.pending_active($t6))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:302:9+60 - assume {:print "$at(134,12797,12857)"} true; - assume ($t8 == $1_coin_$value'$1_aptos_coin_AptosCoin'($pending_active#$1_stake_StakePool($t6))); - - // assume Identical($t9, Add($t7, $t8)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:303:9+49 - assume {:print "$at(134,12866,12915)"} true; - assume ($t9 == ($t7 + $t8)); - - // assume Identical($t10, Sub($t9, select staking_contract::StakingContract.principal($t3))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:304:9+74 - assume {:print "$at(134,12924,12998)"} true; - assume ($t10 == ($t9 - $principal#$1_staking_contract_StakingContract($t3))); - - // trace_local[staker]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:208:5+1 - assume {:print "$at(133,9573,9574)"} true; - assume {:print "$track_local(56,17,0):", $t0} $t0 == $t0; - - // trace_local[operator]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:208:5+1 - assume {:print "$track_local(56,17,1):", $t1} $t1 == $t1; - - // assume Identical($t11, select staking_contract::Store.staking_contracts(global($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 - assume {:print "$at(134,11481,11545)"} true; - assume ($t11 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t0))); - - // staking_contract::assert_staking_contract_exists($t0, $t1) on_abort goto L2 with $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:209:9+48 - assume {:print "$at(133,9687,9735)"} true; - call $1_staking_contract_assert_staking_contract_exists($t0, $t1); - if ($abort_flag) { - assume {:print "$at(133,9687,9735)"} true; - $t12 := $abort_code; - assume {:print "$track_abort(56,17):", $t12} $t12 == $t12; - goto L2; - } - - // $t13 := get_global($t0) on_abort goto L2 with $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:210:34+13 - assume {:print "$at(133,9770,9783)"} true; - if (!$ResourceExists($1_staking_contract_Store_$memory, $t0)) { - call $ExecFailureAbort(); - } else { - $t13 := $ResourceValue($1_staking_contract_Store_$memory, $t0); - } - if ($abort_flag) { - assume {:print "$at(133,9770,9783)"} true; - $t12 := $abort_code; - assume {:print "$track_abort(56,17):", $t12} $t12 == $t12; - goto L2; - } - - // $t14 := get_field.staking_contracts($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:210:33+47 - $t14 := $staking_contracts#$1_staking_contract_Store($t13); - - // $t15 := simple_map::borrow($t14, $t1) on_abort goto L2 with $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:211:32+48 - assume {:print "$at(133,9849,9897)"} true; - call $t15 := $1_simple_map_borrow'address_$1_staking_contract_StakingContract'($t14, $t1); - if ($abort_flag) { - assume {:print "$at(133,9849,9897)"} true; - $t12 := $abort_code; - assume {:print "$track_abort(56,17):", $t12} $t12 == $t12; - goto L2; - } - - // assume Identical($t16, select staking_contract::StakingContract.pool_address($t15)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:299:9+49 - assume {:print "$at(134,12621,12670)"} true; - assume ($t16 == $pool_address#$1_staking_contract_StakingContract($t15)); - - // assume Identical($t17, global($t16)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:300:9+56 - assume {:print "$at(134,12679,12735)"} true; - assume ($t17 == $ResourceValue($1_stake_StakePool_$memory, $t16)); - - // assume Identical($t18, coin::$value(select stake::StakePool.active($t17))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:301:9+44 - assume {:print "$at(134,12744,12788)"} true; - assume ($t18 == $1_coin_$value'$1_aptos_coin_AptosCoin'($active#$1_stake_StakePool($t17))); - - // assume Identical($t19, coin::$value(select stake::StakePool.pending_active($t17))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:302:9+60 - assume {:print "$at(134,12797,12857)"} true; - assume ($t19 == $1_coin_$value'$1_aptos_coin_AptosCoin'($pending_active#$1_stake_StakePool($t17))); - - // assume Identical($t20, Add($t18, $t19)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:303:9+49 - assume {:print "$at(134,12866,12915)"} true; - assume ($t20 == ($t18 + $t19)); - - // assume Identical($t21, Sub($t20, select staking_contract::StakingContract.principal($t15))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:304:9+74 - assume {:print "$at(134,12924,12998)"} true; - assume ($t21 == ($t20 - $principal#$1_staking_contract_StakingContract($t15))); - - // ($t22, $t23, $t24) := staking_contract::get_staking_contract_amounts_internal($t15) on_abort goto L2 with $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:212:9+55 - assume {:print "$at(133,9907,9962)"} true; - call $t22,$t23,$t24 := $1_staking_contract_get_staking_contract_amounts_internal($t15); - if ($abort_flag) { - assume {:print "$at(133,9907,9962)"} true; - $t12 := $abort_code; - assume {:print "$track_abort(56,17):", $t12} $t12 == $t12; - goto L2; - } - - // trace_return[0]($t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:212:9+55 - assume {:print "$track_return(56,17,0):", $t22} $t22 == $t22; - - // trace_return[1]($t23) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:212:9+55 - assume {:print "$track_return(56,17,1):", $t23} $t23 == $t23; - - // trace_return[2]($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:212:9+55 - assume {:print "$track_return(56,17,2):", $t24} $t24 == $t24; - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:213:5+1 - assume {:print "$at(133,9967,9968)"} true; -L1: - - // return ($t22, $t23, $t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:213:5+1 - assume {:print "$at(133,9967,9968)"} true; - $ret0 := $t22; - $ret1 := $t23; - $ret2 := $t24; - return; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:213:5+1 -L2: - - // abort($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:213:5+1 - assume {:print "$at(133,9967,9968)"} true; - $abort_code := $t12; - $abort_flag := true; - return; - -} - -// fun staking_contract::switch_operator [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:526:5+1891 -procedure {:inline 1} $1_staking_contract_switch_operator(_$t0: $signer, _$t1: int, _$t2: int, _$t3: int) returns () -{ - // declare local variables - var $t4: int; - var $t5: int; - var $t6: int; - var $t7: int; - var $t8: $Mutation ($1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent'); - var $t9: int; - var $t10: int; - var $t11: $1_staking_contract_StakingContract; - var $t12: $Mutation (Table int ($1_staking_contract_StakingContract)); - var $t13: $Mutation ($1_staking_contract_Store); - var $t14: int; - var $t15: $1_staking_contract_Store; - var $t16: Table int ($1_staking_contract_StakingContract); - var $t17: Table int ($1_staking_contract_StakingContract); - var $t18: int; - var $t19: int; - var $t20: Table int ($1_staking_contract_StakingContract); - var $t21: $Mutation ($1_staking_contract_Store); - var $t22: $Mutation (Table int ($1_staking_contract_StakingContract)); - var $t23: Table int ($1_staking_contract_StakingContract); - var $t24: bool; - var $t25: bool; - var $t26: int; - var $t27: int; - var $t28: int; - var $t29: $1_staking_contract_StakingContract; - var $t30: $Mutation ($1_staking_contract_StakingContract); - var $t31: $Mutation ($1_event_EventHandle'$1_staking_contract_DistributeEvent'); - var $t32: int; - var $t33: $1_stake_StakePool; - var $t34: $Mutation ($1_staking_contract_StakingContract); - var $t35: $Mutation ($1_event_EventHandle'$1_staking_contract_AddDistributionEvent'); - var $t36: $Mutation ($1_event_EventHandle'$1_staking_contract_RequestCommissionEvent'); - var $t37: int; - var $t38: $1_stake_StakePool; - var $t39: int; - var $t40: int; - var $t41: int; - var $t42: int; - var $t43: int; - var $t44: $1_staking_contract_StakingContract; - var $t45: $1_stake_OwnerCapability; - var $t46: int; - var $t47: $Mutation ($1_staking_contract_StakingContract); - var $t48: $Mutation (int); - var $t49: $1_staking_contract_StakingContract; - var $t50: int; - var $t51: $1_staking_contract_StakingContract; - var $t52: $Mutation ($1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent'); - var $t53: $1_staking_contract_SwitchOperatorEvent; - var $t0: $signer; - var $t1: int; - var $t2: int; - var $t3: int; - var $temp_0'$1_simple_map_SimpleMap'address_$1_staking_contract_StakingContract'': Table int ($1_staking_contract_StakingContract); - var $temp_0'$1_staking_contract_StakingContract': $1_staking_contract_StakingContract; - var $temp_0'$1_staking_contract_Store': $1_staking_contract_Store; - var $temp_0'address': int; - var $temp_0'signer': $signer; - var $temp_0'u64': int; - $t0 := _$t0; - $t1 := _$t1; - $t2 := _$t2; - $t3 := _$t3; - - // bytecode translation starts here - // assume Identical($t14, signer::$address_of($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:170:9+48 - assume {:print "$at(134,7475,7523)"} true; - assume ($t14 == $1_signer_$address_of($t0)); - - // assume Identical($t15, global($t14)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:172:9+42 - assume {:print "$at(134,7620,7662)"} true; - assume ($t15 == $ResourceValue($1_staking_contract_Store_$memory, $t14)); - - // assume Identical($t16, select staking_contract::Store.staking_contracts($t15)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:173:9+48 - assume {:print "$at(134,7671,7719)"} true; - assume ($t16 == $staking_contracts#$1_staking_contract_Store($t15)); - - // assume Identical($t17, select staking_contract::Store.staking_contracts(global($t14))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 - assume {:print "$at(134,11481,11545)"} true; - assume ($t17 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t14))); - - // trace_local[staker]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:526:5+1 - assume {:print "$at(133,24994,24995)"} true; - assume {:print "$track_local(56,19,0):", $t0} $t0 == $t0; - - // trace_local[old_operator]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:526:5+1 - assume {:print "$track_local(56,19,1):", $t1} $t1 == $t1; - - // trace_local[new_operator]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:526:5+1 - assume {:print "$track_local(56,19,2):", $t2} $t2 == $t2; - - // trace_local[new_commission_percentage]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:526:5+1 - assume {:print "$track_local(56,19,3):", $t3} $t3 == $t3; - - // $t18 := signer::address_of($t0) on_abort goto L4 with $t19 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:532:30+26 - assume {:print "$at(133,25207,25233)"} true; - call $t18 := $1_signer_address_of($t0); - if ($abort_flag) { - assume {:print "$at(133,25207,25233)"} true; - $t19 := $abort_code; - assume {:print "$track_abort(56,19):", $t19} $t19 == $t19; - goto L4; - } - - // trace_local[staker_address]($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:532:13+14 - assume {:print "$track_local(56,19,10):", $t18} $t18 == $t18; - - // assume Identical($t20, select staking_contract::Store.staking_contracts(global($t18))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 - assume {:print "$at(134,11481,11545)"} true; - assume ($t20 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t18))); - - // staking_contract::assert_staking_contract_exists($t18, $t1) on_abort goto L4 with $t19 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:533:9+60 - assume {:print "$at(133,25243,25303)"} true; - call $1_staking_contract_assert_staking_contract_exists($t18, $t1); - if ($abort_flag) { - assume {:print "$at(133,25243,25303)"} true; - $t19 := $abort_code; - assume {:print "$track_abort(56,19):", $t19} $t19 == $t19; - goto L4; - } - - // $t21 := borrow_global($t18) on_abort goto L4 with $t19 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:536:21+17 - assume {:print "$at(133,25439,25456)"} true; - if (!$ResourceExists($1_staking_contract_Store_$memory, $t18)) { - call $ExecFailureAbort(); - } else { - $t21 := $Mutation($Global($t18), EmptyVec(), $ResourceValue($1_staking_contract_Store_$memory, $t18)); - } - if ($abort_flag) { - assume {:print "$at(133,25439,25456)"} true; - $t19 := $abort_code; - assume {:print "$track_abort(56,19):", $t19} $t19 == $t19; - goto L4; - } - - // trace_local[store]($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:536:13+5 - $temp_0'$1_staking_contract_Store' := $Dereference($t21); - assume {:print "$track_local(56,19,13):", $temp_0'$1_staking_contract_Store'} $temp_0'$1_staking_contract_Store' == $temp_0'$1_staking_contract_Store'; - - // $t22 := borrow_field.staking_contracts($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:537:33+28 - assume {:print "$at(133,25513,25541)"} true; - $t22 := $ChildMutation($t21, 0, $staking_contracts#$1_staking_contract_Store($Dereference($t21))); - - // trace_local[staking_contracts]($t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:537:13+17 - $temp_0'$1_simple_map_SimpleMap'address_$1_staking_contract_StakingContract'' := $Dereference($t22); - assume {:print "$track_local(56,19,12):", $temp_0'$1_simple_map_SimpleMap'address_$1_staking_contract_StakingContract''} $temp_0'$1_simple_map_SimpleMap'address_$1_staking_contract_StakingContract'' == $temp_0'$1_simple_map_SimpleMap'address_$1_staking_contract_StakingContract''; - - // $t23 := read_ref($t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:539:38+34 - assume {:print "$at(133,25597,25631)"} true; - $t23 := $Dereference($t22); - - // $t24 := simple_map::contains_key($t23, $t2) on_abort goto L4 with $t19 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:539:14+58 - call $t24 := $1_simple_map_contains_key'address_$1_staking_contract_StakingContract'($t23, $t2); - if ($abort_flag) { - assume {:print "$at(133,25573,25631)"} true; - $t19 := $abort_code; - assume {:print "$track_abort(56,19):", $t19} $t19 == $t19; - goto L4; - } - - // $t25 := !($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:539:13+1 - call $t25 := $Not($t24); - - // if ($t25) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:538:9+156 - assume {:print "$at(133,25551,25707)"} true; - if ($t25) { goto L1; } else { goto L0; } - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:538:9+156 -L1: - - // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:538:9+156 - assume {:print "$at(133,25551,25707)"} true; - goto L2; - - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:538:9+156 -L0: - - // destroy($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:538:9+156 - assume {:print "$at(133,25551,25707)"} true; - - // pack_ref_deep($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:538:9+156 - - // destroy($t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:538:9+156 - - // $t26 := 5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:540:34+29 - assume {:print "$at(133,25666,25695)"} true; - $t26 := 5; - assume $IsValid'u64'($t26); - - // $t27 := error::invalid_state($t26) on_abort goto L4 with $t19 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:540:13+51 - call $t27 := $1_error_invalid_state($t26); - if ($abort_flag) { - assume {:print "$at(133,25645,25696)"} true; - $t19 := $abort_code; - assume {:print "$track_abort(56,19):", $t19} $t19 == $t19; - goto L4; - } - - // trace_abort($t27) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:538:9+156 - assume {:print "$at(133,25551,25707)"} true; - assume {:print "$track_abort(56,19):", $t27} $t27 == $t27; - - // $t19 := move($t27) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:538:9+156 - $t19 := $t27; - - // goto L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:538:9+156 - goto L4; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:543:56+17 - assume {:print "$at(133,25765,25782)"} true; -L2: - - // ($t28, $t29) := simple_map::remove($t22, $t1) on_abort goto L4 with $t19 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:543:37+52 - assume {:print "$at(133,25746,25798)"} true; - call $t28,$t29,$t22 := $1_simple_map_remove'address_$1_staking_contract_StakingContract'($t22, $t1); - if ($abort_flag) { - assume {:print "$at(133,25746,25798)"} true; - $t19 := $abort_code; - assume {:print "$track_abort(56,19):", $t19} $t19 == $t19; - goto L4; - } - - // $t11 := $t29 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:543:17+16 - $t11 := $t29; - - // trace_local[staking_contract]($t11) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:543:17+16 - assume {:print "$track_local(56,19,11):", $t11} $t11 == $t11; - - // destroy($t28) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:543:14+1 - - // $t30 := borrow_local($t11) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:545:59+21 - assume {:print "$at(133,25919,25940)"} true; - $t30 := $Mutation($Local(11), EmptyVec(), $t11); - - // $t31 := borrow_field.distribute_events($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:545:82+28 - $t31 := $ChildMutation($t21, 9, $distribute_events#$1_staking_contract_Store($Dereference($t21))); - - // assume Identical($t32, select staking_contract::StakingContract.pool_address($t30)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:194:9+49 - assume {:print "$at(134,8605,8654)"} true; - assume ($t32 == $pool_address#$1_staking_contract_StakingContract($Dereference($t30))); - - // assume Identical($t33, global($t32)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:195:9+63 - assume {:print "$at(134,8663,8726)"} true; - assume ($t33 == $ResourceValue($1_stake_StakePool_$memory, $t32)); - - // staking_contract::distribute_internal($t18, $t1, $t30, $t31) on_abort goto L4 with $t19 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:545:9+102 - assume {:print "$at(133,25869,25971)"} true; - call $t30,$t31 := $1_staking_contract_distribute_internal($t18, $t1, $t30, $t31); - if ($abort_flag) { - assume {:print "$at(133,25869,25971)"} true; - $t19 := $abort_code; - assume {:print "$track_abort(56,19):", $t19} $t19 == $t19; - goto L4; - } - - // pack_ref_deep($t30) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:545:9+102 - - // write_back[LocalRoot($t11)@]($t30) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:545:9+102 - $t11 := $Dereference($t30); - - // trace_local[staking_contract]($t11) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:545:9+102 - assume {:print "$track_local(56,19,11):", $t11} $t11 == $t11; - - // write_back[Reference($t21).distribute_events (event::EventHandle)]($t31) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:545:9+102 - $t21 := $UpdateMutation($t21, $Update'$1_staking_contract_Store'_distribute_events($Dereference($t21), $Dereference($t31))); - - // $t34 := borrow_local($t11) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:551:13+21 - assume {:print "$at(133,26216,26237)"} true; - $t34 := $Mutation($Local(11), EmptyVec(), $t11); - - // $t35 := borrow_field.add_distribution_events($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:552:13+34 - assume {:print "$at(133,26251,26285)"} true; - $t35 := $ChildMutation($t21, 8, $add_distribution_events#$1_staking_contract_Store($Dereference($t21))); - - // $t36 := borrow_field.request_commission_events($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:553:13+36 - assume {:print "$at(133,26299,26335)"} true; - $t36 := $ChildMutation($t21, 5, $request_commission_events#$1_staking_contract_Store($Dereference($t21))); - - // assume Identical($t37, select staking_contract::StakingContract.pool_address($t34)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:299:9+49 - assume {:print "$at(134,12621,12670)"} true; - assume ($t37 == $pool_address#$1_staking_contract_StakingContract($Dereference($t34))); - - // assume Identical($t38, global($t37)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:300:9+56 - assume {:print "$at(134,12679,12735)"} true; - assume ($t38 == $ResourceValue($1_stake_StakePool_$memory, $t37)); - - // assume Identical($t39, coin::$value(select stake::StakePool.active($t38))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:301:9+44 - assume {:print "$at(134,12744,12788)"} true; - assume ($t39 == $1_coin_$value'$1_aptos_coin_AptosCoin'($active#$1_stake_StakePool($t38))); - - // assume Identical($t40, coin::$value(select stake::StakePool.pending_active($t38))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:302:9+60 - assume {:print "$at(134,12797,12857)"} true; - assume ($t40 == $1_coin_$value'$1_aptos_coin_AptosCoin'($pending_active#$1_stake_StakePool($t38))); - - // assume Identical($t41, Add($t39, $t40)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:303:9+49 - assume {:print "$at(134,12866,12915)"} true; - assume ($t41 == ($t39 + $t40)); - - // assume Identical($t42, Sub($t41, select staking_contract::StakingContract.principal($t34))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:304:9+74 - assume {:print "$at(134,12924,12998)"} true; - assume ($t42 == ($t41 - $principal#$1_staking_contract_StakingContract($Dereference($t34)))); - - // $t43 := staking_contract::request_commission_internal($t1, $t34, $t35, $t36) on_abort goto L4 with $t19 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:549:9+197 - assume {:print "$at(133,26149,26346)"} true; - call $t43,$t34,$t35,$t36 := $1_staking_contract_request_commission_internal($t1, $t34, $t35, $t36); - if ($abort_flag) { - assume {:print "$at(133,26149,26346)"} true; - $t19 := $abort_code; - assume {:print "$track_abort(56,19):", $t19} $t19 == $t19; - goto L4; - } - - // pack_ref_deep($t34) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:549:9+197 - - // write_back[LocalRoot($t11)@]($t34) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:549:9+197 - $t11 := $Dereference($t34); - - // trace_local[staking_contract]($t11) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:549:9+197 - assume {:print "$track_local(56,19,11):", $t11} $t11 == $t11; - - // write_back[Reference($t21).add_distribution_events (event::EventHandle)]($t35) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:549:9+197 - $t21 := $UpdateMutation($t21, $Update'$1_staking_contract_Store'_add_distribution_events($Dereference($t21), $Dereference($t35))); - - // write_back[Reference($t21).request_commission_events (event::EventHandle)]($t36) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:549:9+197 - $t21 := $UpdateMutation($t21, $Update'$1_staking_contract_Store'_request_commission_events($Dereference($t21), $Dereference($t36))); - - // destroy($t43) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:549:9+197 - - // $t44 := copy($t11) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:557:39+16 - assume {:print "$at(133,26471,26487)"} true; - $t44 := $t11; - - // $t45 := get_field.owner_cap($t44) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:557:38+27 - $t45 := $owner_cap#$1_staking_contract_StakingContract($t44); - - // assume Identical($t46, select stake::OwnerCapability.pool_address($t45)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:104:9+42 - assume {:print "$at(132,4820,4862)"} true; - assume ($t46 == $pool_address#$1_stake_OwnerCapability($t45)); - - // stake::set_operator_with_cap($t45, $t2) on_abort goto L4 with $t19 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:557:9+71 - assume {:print "$at(133,26441,26512)"} true; - call $1_stake_set_operator_with_cap($t45, $t2); - if ($abort_flag) { - assume {:print "$at(133,26441,26512)"} true; - $t19 := $abort_code; - assume {:print "$track_abort(56,19):", $t19} $t19 == $t19; - goto L4; - } - - // $t47 := borrow_local($t11) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:558:9+16 - assume {:print "$at(133,26522,26538)"} true; - $t47 := $Mutation($Local(11), EmptyVec(), $t11); - - // $t48 := borrow_field.commission_percentage($t47) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:558:9+38 - $t48 := $ChildMutation($t47, 3, $commission_percentage#$1_staking_contract_StakingContract($Dereference($t47))); - - // write_ref($t48, $t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:558:9+66 - $t48 := $UpdateMutation($t48, $t3); - - // write_back[Reference($t47).commission_percentage (u64)]($t48) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:558:9+66 - $t47 := $UpdateMutation($t47, $Update'$1_staking_contract_StakingContract'_commission_percentage($Dereference($t47), $Dereference($t48))); - - // pack_ref_deep($t47) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:558:9+66 - - // write_back[LocalRoot($t11)@]($t47) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:558:9+66 - $t11 := $Dereference($t47); - - // trace_local[staking_contract]($t11) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:558:9+66 - assume {:print "$track_local(56,19,11):", $t11} $t11 == $t11; - - // $t49 := copy($t11) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:560:28+16 - assume {:print "$at(133,26618,26634)"} true; - $t49 := $t11; - - // $t50 := get_field.pool_address($t49) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:560:28+29 - $t50 := $pool_address#$1_staking_contract_StakingContract($t49); - - // trace_local[pool_address]($t50) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:560:13+12 - assume {:print "$track_local(56,19,9):", $t50} $t50 == $t50; - - // $t51 := move($t11) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:561:58+16 - assume {:print "$at(133,26706,26722)"} true; - $t51 := $t11; - - // simple_map::add($t22, $t2, $t51) on_abort goto L4 with $t19 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:561:9+66 - call $t22 := $1_simple_map_add'address_$1_staking_contract_StakingContract'($t22, $t2, $t51); - if ($abort_flag) { - assume {:print "$at(133,26657,26723)"} true; - $t19 := $abort_code; - assume {:print "$track_abort(56,19):", $t19} $t19 == $t19; - goto L4; - } - - // write_back[Reference($t21).staking_contracts (simple_map::SimpleMap)]($t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:561:9+66 - $t21 := $UpdateMutation($t21, $Update'$1_staking_contract_Store'_staking_contracts($Dereference($t21), $Dereference($t22))); - - // $t52 := borrow_field.switch_operator_events($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:563:13+33 - assume {:print "$at(133,26757,26790)"} true; - $t52 := $ChildMutation($t21, 7, $switch_operator_events#$1_staking_contract_Store($Dereference($t21))); - - // $t53 := pack staking_contract::SwitchOperatorEvent($t1, $t2, $t50) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:564:13+64 - assume {:print "$at(133,26804,26868)"} true; - $t53 := $1_staking_contract_SwitchOperatorEvent($t1, $t2, $t50); - - // opaque begin: event::emit_event($t52, $t53) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:562:9+145 - assume {:print "$at(133,26733,26878)"} true; - - // opaque end: event::emit_event($t52, $t53) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:562:9+145 - - // write_back[Reference($t21).switch_operator_events (event::EventHandle)]($t52) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:562:9+145 - $t21 := $UpdateMutation($t21, $Update'$1_staking_contract_Store'_switch_operator_events($Dereference($t21), $Dereference($t52))); - - // pack_ref_deep($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:562:9+145 - - // write_back[staking_contract::Store@]($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:562:9+145 - $1_staking_contract_Store_$memory := $ResourceUpdate($1_staking_contract_Store_$memory, $GlobalLocationAddress($t21), - $Dereference($t21)); - - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:566:5+1 - assume {:print "$at(133,26884,26885)"} true; -L3: - - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:566:5+1 - assume {:print "$at(133,26884,26885)"} true; - return; - - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:566:5+1 -L4: - - // abort($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:566:5+1 - assume {:print "$at(133,26884,26885)"} true; - $abort_code := $t19; - $abort_flag := true; - return; - -} - -// fun staking_contract::unlock_stake [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:456:5+2017 -procedure {:inline 1} $1_staking_contract_unlock_stake(_$t0: $signer, _$t1: int, _$t2: int) returns () -{ - // declare local variables - var $t3: int; - var $t4: int; - var $t5: int; - var $t6: int; - var $t7: $Mutation ($1_event_EventHandle'$1_staking_contract_UnlockStakeEvent'); - var $t8: int; - var $t9: int; - var $t10: int; - var $t11: int; - var $t12: $Mutation ($1_staking_contract_StakingContract); - var $t13: $Mutation ($1_staking_contract_Store); - var $t14: int; - var $t15: bool; - var $t16: int; - var $t17: int; - var $t18: Table int ($1_staking_contract_StakingContract); - var $t19: $Mutation ($1_staking_contract_Store); - var $t20: $Mutation (Table int ($1_staking_contract_StakingContract)); - var $t21: $Mutation ($1_staking_contract_StakingContract); - var $t22: $Mutation ($1_event_EventHandle'$1_staking_contract_DistributeEvent'); - var $t23: int; - var $t24: $1_stake_StakePool; - var $t25: $Mutation ($1_event_EventHandle'$1_staking_contract_AddDistributionEvent'); - var $t26: $Mutation ($1_event_EventHandle'$1_staking_contract_RequestCommissionEvent'); - var $t27: int; - var $t28: $1_stake_StakePool; - var $t29: int; - var $t30: int; - var $t31: int; - var $t32: int; - var $t33: int; - var $t34: int; - var $t35: int; - var $t36: int; - var $t37: int; - var $t38: int; - var $t39: bool; - var $t40: int; - var $t41: int; - var $t42: $Mutation (int); - var $t43: $Mutation ($1_event_EventHandle'$1_staking_contract_AddDistributionEvent'); - var $t44: $1_stake_OwnerCapability; - var $t45: int; - var $t46: $1_stake_StakePool; - var $t47: int; - var $t48: int; - var $t49: $Mutation ($1_event_EventHandle'$1_staking_contract_UnlockStakeEvent'); - var $t50: $1_staking_contract_UnlockStakeEvent; - var $t0: $signer; - var $t1: int; - var $t2: int; - var $temp_0'$1_staking_contract_StakingContract': $1_staking_contract_StakingContract; - var $temp_0'$1_staking_contract_Store': $1_staking_contract_Store; - var $temp_0'address': int; - var $temp_0'signer': $signer; - var $temp_0'u64': int; - $t0 := _$t0; - $t1 := _$t1; - $t2 := _$t2; - - // bytecode translation starts here - // trace_local[staker]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:456:5+1 - assume {:print "$at(133,21655,21656)"} true; - assume {:print "$track_local(56,22,0):", $t0} $t0 == $t0; - - // trace_local[operator]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:456:5+1 - assume {:print "$track_local(56,22,1):", $t1} $t1 == $t1; - - // trace_local[amount]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:456:5+1 - assume {:print "$track_local(56,22,2):", $t2} $t2 == $t2; - - // $t14 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:458:23+1 - assume {:print "$at(133,21814,21815)"} true; - $t14 := 0; - assume $IsValid'u64'($t14); - - // $t15 := ==($t2, $t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:458:20+2 - $t15 := $IsEqual'u64'($t2, $t14); - - // if ($t15) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:458:9+23 - if ($t15) { goto L1; } else { goto L0; } - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:458:26+6 -L1: - - // goto L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:458:26+6 - assume {:print "$at(133,21817,21823)"} true; - goto L4; - - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:460:49+6 - assume {:print "$at(133,21874,21880)"} true; -L0: - - // $t16 := signer::address_of($t0) on_abort goto L5 with $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:460:30+26 - assume {:print "$at(133,21855,21881)"} true; - call $t16 := $1_signer_address_of($t0); - if ($abort_flag) { - assume {:print "$at(133,21855,21881)"} true; - $t17 := $abort_code; - assume {:print "$track_abort(56,22):", $t17} $t17 == $t17; - goto L5; - } - - // trace_local[staker_address]($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:460:13+14 - assume {:print "$track_local(56,22,11):", $t16} $t16 == $t16; - - // assume Identical($t18, select staking_contract::Store.staking_contracts(global($t16))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 - assume {:print "$at(134,11481,11545)"} true; - assume ($t18 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t16))); - - // staking_contract::assert_staking_contract_exists($t16, $t1) on_abort goto L5 with $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:461:9+56 - assume {:print "$at(133,21891,21947)"} true; - call $1_staking_contract_assert_staking_contract_exists($t16, $t1); - if ($abort_flag) { - assume {:print "$at(133,21891,21947)"} true; - $t17 := $abort_code; - assume {:print "$track_abort(56,22):", $t17} $t17 == $t17; - goto L5; - } - - // $t19 := borrow_global($t16) on_abort goto L5 with $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:463:21+17 - assume {:print "$at(133,21970,21987)"} true; - if (!$ResourceExists($1_staking_contract_Store_$memory, $t16)) { - call $ExecFailureAbort(); - } else { - $t19 := $Mutation($Global($t16), EmptyVec(), $ResourceValue($1_staking_contract_Store_$memory, $t16)); - } - if ($abort_flag) { - assume {:print "$at(133,21970,21987)"} true; - $t17 := $abort_code; - assume {:print "$track_abort(56,22):", $t17} $t17 == $t17; - goto L5; - } - - // trace_local[store]($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:463:13+5 - $temp_0'$1_staking_contract_Store' := $Dereference($t19); - assume {:print "$track_local(56,22,13):", $temp_0'$1_staking_contract_Store'} $temp_0'$1_staking_contract_Store' == $temp_0'$1_staking_contract_Store'; - - // $t20 := borrow_field.staking_contracts($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:464:55+28 - assume {:print "$at(133,22066,22094)"} true; - $t20 := $ChildMutation($t19, 0, $staking_contracts#$1_staking_contract_Store($Dereference($t19))); - - // $t21 := simple_map::borrow_mut($t20, $t1) on_abort goto L5 with $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:464:32+63 - call $t21,$t20 := $1_simple_map_borrow_mut'address_$1_staking_contract_StakingContract'($t20, $t1); - if ($abort_flag) { - assume {:print "$at(133,22043,22106)"} true; - $t17 := $abort_code; - assume {:print "$track_abort(56,22):", $t17} $t17 == $t17; - goto L5; - } - - // trace_local[staking_contract]($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:464:13+16 - $temp_0'$1_staking_contract_StakingContract' := $Dereference($t21); - assume {:print "$track_local(56,22,12):", $temp_0'$1_staking_contract_StakingContract'} $temp_0'$1_staking_contract_StakingContract' == $temp_0'$1_staking_contract_StakingContract'; - - // $t22 := borrow_field.distribute_events($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:467:73+28 - assume {:print "$at(133,22242,22270)"} true; - $t22 := $ChildMutation($t19, 9, $distribute_events#$1_staking_contract_Store($Dereference($t19))); - - // assume Identical($t23, select staking_contract::StakingContract.pool_address($t21)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:194:9+49 - assume {:print "$at(134,8605,8654)"} true; - assume ($t23 == $pool_address#$1_staking_contract_StakingContract($Dereference($t21))); - - // assume Identical($t24, global($t23)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:195:9+63 - assume {:print "$at(134,8663,8726)"} true; - assume ($t24 == $ResourceValue($1_stake_StakePool_$memory, $t23)); - - // staking_contract::distribute_internal($t16, $t1, $t21, $t22) on_abort goto L5 with $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:467:9+93 - assume {:print "$at(133,22178,22271)"} true; - call $t21,$t22 := $1_staking_contract_distribute_internal($t16, $t1, $t21, $t22); - if ($abort_flag) { - assume {:print "$at(133,22178,22271)"} true; - $t17 := $abort_code; - assume {:print "$track_abort(56,22):", $t17} $t17 == $t17; - goto L5; - } - - // write_back[Reference($t19).distribute_events (event::EventHandle)]($t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:467:9+93 - $t19 := $UpdateMutation($t19, $Update'$1_staking_contract_Store'_distribute_events($Dereference($t19), $Dereference($t22))); - - // $t25 := borrow_field.add_distribution_events($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:474:13+34 - assume {:print "$at(133,22564,22598)"} true; - $t25 := $ChildMutation($t19, 8, $add_distribution_events#$1_staking_contract_Store($Dereference($t19))); - - // $t26 := borrow_field.request_commission_events($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:475:13+36 - assume {:print "$at(133,22612,22648)"} true; - $t26 := $ChildMutation($t19, 5, $request_commission_events#$1_staking_contract_Store($Dereference($t19))); - - // assume Identical($t27, select staking_contract::StakingContract.pool_address($t21)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:299:9+49 - assume {:print "$at(134,12621,12670)"} true; - assume ($t27 == $pool_address#$1_staking_contract_StakingContract($Dereference($t21))); - - // assume Identical($t28, global($t27)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:300:9+56 - assume {:print "$at(134,12679,12735)"} true; - assume ($t28 == $ResourceValue($1_stake_StakePool_$memory, $t27)); - - // assume Identical($t29, coin::$value(select stake::StakePool.active($t28))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:301:9+44 - assume {:print "$at(134,12744,12788)"} true; - assume ($t29 == $1_coin_$value'$1_aptos_coin_AptosCoin'($active#$1_stake_StakePool($t28))); - - // assume Identical($t30, coin::$value(select stake::StakePool.pending_active($t28))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:302:9+60 - assume {:print "$at(134,12797,12857)"} true; - assume ($t30 == $1_coin_$value'$1_aptos_coin_AptosCoin'($pending_active#$1_stake_StakePool($t28))); - - // assume Identical($t31, Add($t29, $t30)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:303:9+49 - assume {:print "$at(134,12866,12915)"} true; - assume ($t31 == ($t29 + $t30)); - - // assume Identical($t32, Sub($t31, select staking_contract::StakingContract.principal($t21))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:304:9+74 - assume {:print "$at(134,12924,12998)"} true; - assume ($t32 == ($t31 - $principal#$1_staking_contract_StakingContract($Dereference($t21)))); - - // $t33 := staking_contract::request_commission_internal($t1, $t21, $t25, $t26) on_abort goto L5 with $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:471:31+188 - assume {:print "$at(133,22471,22659)"} true; - call $t33,$t21,$t25,$t26 := $1_staking_contract_request_commission_internal($t1, $t21, $t25, $t26); - if ($abort_flag) { - assume {:print "$at(133,22471,22659)"} true; - $t17 := $abort_code; - assume {:print "$track_abort(56,22):", $t17} $t17 == $t17; - goto L5; - } - - // write_back[Reference($t19).add_distribution_events (event::EventHandle)]($t25) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:471:31+188 - $t19 := $UpdateMutation($t19, $Update'$1_staking_contract_Store'_add_distribution_events($Dereference($t19), $Dereference($t25))); - - // write_back[Reference($t19).request_commission_events (event::EventHandle)]($t26) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:471:31+188 - $t19 := $UpdateMutation($t19, $Update'$1_staking_contract_Store'_request_commission_events($Dereference($t19), $Dereference($t26))); - - // trace_local[commission_paid]($t33) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:471:13+15 - assume {:print "$track_local(56,22,9):", $t33} $t33 == $t33; - - // $t34 := get_field.pool_address($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:480:50+29 - assume {:print "$at(133,22870,22899)"} true; - $t34 := $pool_address#$1_staking_contract_StakingContract($Dereference($t21)); - - // ($t35, $t36, $t37, $t38) := stake::get_stake($t34) on_abort goto L5 with $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:480:33+47 - call $t35,$t36,$t37,$t38 := $1_stake_get_stake($t34); - if ($abort_flag) { - assume {:print "$at(133,22853,22900)"} true; - $t17 := $abort_code; - assume {:print "$track_abort(56,22):", $t17} $t17 == $t17; - goto L5; - } - - // destroy($t38) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:480:28+1 - - // destroy($t37) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:480:25+1 - - // destroy($t36) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:480:22+1 - - // trace_local[active]($t35) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:480:14+6 - assume {:print "$track_local(56,22,8):", $t35} $t35 == $t35; - - // $t39 := <($t35, $t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:481:20+1 - assume {:print "$at(133,22921,22922)"} true; - call $t39 := $Lt($t35, $t2); - - // if ($t39) goto L3 else goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:481:9+61 - if ($t39) { goto L3; } else { goto L2; } - - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:482:22+6 - assume {:print "$at(133,22954,22960)"} true; -L3: - - // $t2 := $t35 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:482:13+6 - assume {:print "$at(133,22945,22951)"} true; - $t2 := $t35; - - // trace_local[amount]($t35) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:482:13+6 - assume {:print "$track_local(56,22,2):", $t35} $t35 == $t35; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:484:38+16 - assume {:print "$at(133,23010,23026)"} true; -L2: - - // $t40 := get_field.principal($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:484:38+26 - assume {:print "$at(133,23010,23036)"} true; - $t40 := $principal#$1_staking_contract_StakingContract($Dereference($t21)); - - // $t41 := -($t40, $t2) on_abort goto L5 with $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:484:65+1 - call $t41 := $Sub($t40, $t2); - if ($abort_flag) { - assume {:print "$at(133,23037,23038)"} true; - $t17 := $abort_code; - assume {:print "$track_abort(56,22):", $t17} $t17 == $t17; - goto L5; - } - - // $t42 := borrow_field.principal($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:484:9+26 - $t42 := $ChildMutation($t21, 0, $principal#$1_staking_contract_StakingContract($Dereference($t21))); - - // write_ref($t42, $t41) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:484:9+64 - $t42 := $UpdateMutation($t42, $t41); - - // write_back[Reference($t21).principal (u64)]($t42) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:484:9+64 - $t21 := $UpdateMutation($t21, $Update'$1_staking_contract_StakingContract'_principal($Dereference($t21), $Dereference($t42))); - - // $t43 := borrow_field.add_distribution_events($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:488:65+34 - assume {:print "$at(133,23187,23221)"} true; - $t43 := $ChildMutation($t19, 8, $add_distribution_events#$1_staking_contract_Store($Dereference($t19))); - - // staking_contract::add_distribution($t1, $t21, $t16, $t2, $t43) on_abort goto L5 with $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:487:9+117 - assume {:print "$at(133,23105,23222)"} true; - call $t21,$t43 := $1_staking_contract_add_distribution($t1, $t21, $t16, $t2, $t43); - if ($abort_flag) { - assume {:print "$at(133,23105,23222)"} true; - $t17 := $abort_code; - assume {:print "$track_abort(56,22):", $t17} $t17 == $t17; - goto L5; - } - - // write_back[Reference($t19).add_distribution_events (event::EventHandle)]($t43) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:487:9+117 - $t19 := $UpdateMutation($t19, $Update'$1_staking_contract_Store'_add_distribution_events($Dereference($t19), $Dereference($t43))); - - // $t44 := get_field.owner_cap($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:492:40+27 - assume {:print "$at(133,23421,23448)"} true; - $t44 := $owner_cap#$1_staking_contract_StakingContract($Dereference($t21)); - - // assume Identical($t45, select stake::OwnerCapability.pool_address($t44)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:56:9+42 - assume {:print "$at(132,2499,2541)"} true; - assume ($t45 == $pool_address#$1_stake_OwnerCapability($t44)); - - // assume Identical($t46, global($t45)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:57:9+53 - assume {:print "$at(132,2550,2603)"} true; - assume ($t46 == $ResourceValue($1_stake_StakePool_$memory, $t45)); - - // assume Identical($t47, math64::$min($t2, select coin::Coin.value(select stake::StakePool.active($t46)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:60:9+76 - assume {:print "$at(132,2725,2801)"} true; - assume ($t47 == $1_math64_$min($t2, $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($active#$1_stake_StakePool($t46)))); - - // stake::unlock_with_cap($t2, $t44) on_abort goto L5 with $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:492:9+59 - assume {:print "$at(133,23390,23449)"} true; - call $1_stake_unlock_with_cap($t2, $t44); - if ($abort_flag) { - assume {:print "$at(133,23390,23449)"} true; - $t17 := $abort_code; - assume {:print "$track_abort(56,22):", $t17} $t17 == $t17; - goto L5; - } - - // $t48 := get_field.pool_address($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:494:28+29 - assume {:print "$at(133,23479,23508)"} true; - $t48 := $pool_address#$1_staking_contract_StakingContract($Dereference($t21)); - - // write_back[Reference($t20)[]]($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:494:28+29 - $t20 := $UpdateMutation($t20, UpdateTable($Dereference($t20), ReadVec(p#$Mutation($t21), LenVec(p#$Mutation($t20))), $Dereference($t21))); - - // write_back[Reference($t19).staking_contracts (simple_map::SimpleMap)]($t20) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:494:28+29 - $t19 := $UpdateMutation($t19, $Update'$1_staking_contract_Store'_staking_contracts($Dereference($t19), $Dereference($t20))); - - // trace_local[pool_address]($t48) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:494:13+12 - assume {:print "$track_local(56,22,10):", $t48} $t48 == $t48; - - // $t49 := borrow_field.unlock_stake_events($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:496:13+30 - assume {:print "$at(133,23542,23572)"} true; - $t49 := $ChildMutation($t19, 6, $unlock_stake_events#$1_staking_contract_Store($Dereference($t19))); - - // $t50 := pack staking_contract::UnlockStakeEvent($t1, $t48, $t2, $t33) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:497:13+68 - assume {:print "$at(133,23586,23654)"} true; - $t50 := $1_staking_contract_UnlockStakeEvent($t1, $t48, $t2, $t33); - - // opaque begin: event::emit_event($t49, $t50) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:495:9+147 - assume {:print "$at(133,23518,23665)"} true; - - // opaque end: event::emit_event($t49, $t50) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:495:9+147 - - // write_back[Reference($t19).unlock_stake_events (event::EventHandle)]($t49) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:495:9+147 - $t19 := $UpdateMutation($t19, $Update'$1_staking_contract_Store'_unlock_stake_events($Dereference($t19), $Dereference($t49))); - - // pack_ref_deep($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:495:9+147 - - // write_back[staking_contract::Store@]($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:495:9+147 - $1_staking_contract_Store_$memory := $ResourceUpdate($1_staking_contract_Store_$memory, $GlobalLocationAddress($t19), - $Dereference($t19)); - - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:499:5+1 - assume {:print "$at(133,23671,23672)"} true; -L4: - - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:499:5+1 - assume {:print "$at(133,23671,23672)"} true; - return; - - // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:499:5+1 -L5: - - // abort($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:499:5+1 - assume {:print "$at(133,23671,23672)"} true; - $abort_code := $t17; - $abort_flag := true; - return; - -} - -// fun staking_contract::update_distribution_pool [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:692:5+1743 -procedure {:inline 1} $1_staking_contract_update_distribution_pool(_$t0: $Mutation ($1_pool_u64_Pool), _$t1: int, _$t2: int, _$t3: int) returns ($ret0: $Mutation ($1_pool_u64_Pool)) -{ - // declare local variables - var $t4: Vec (int); - var $t5: int; - var $t6: int; - var $t7: int; - var $t8: int; - var $t9: int; - var $t10: int; - var $t11: int; - var $t12: int; - var $t13: int; - var $t14: int; - var $t15: int; - var $t16: int; - var $t17: int; - var $t18: Vec (int); - var $t19: $1_pool_u64_Pool; - var $t20: int; - var $t21: int; - var $t22: bool; - var $t23: $1_pool_u64_Pool; - var $t24: Vec (int); - var $t25: int; - var $t26: int; - var $t27: bool; - var $t28: int; - var $t29: bool; - var $t30: $1_pool_u64_Pool; - var $t31: int; - var $t32: $1_pool_u64_Pool; - var $t33: int; - var $t34: $1_pool_u64_Pool; - var $t35: int; - var $t36: int; - var $t37: int; - var $t38: int; - var $t39: int; - var $t40: $1_pool_u64_Pool; - var $t41: int; - var $t42: int; - var $t43: int; - var $t44: int; - var $t45: int; - var $t0: $Mutation ($1_pool_u64_Pool); - var $t1: int; - var $t2: int; - var $t3: int; - var $temp_0'$1_pool_u64_Pool': $1_pool_u64_Pool; - var $temp_0'address': int; - var $temp_0'u64': int; - var $temp_0'vec'address'': Vec (int); - $t0 := _$t0; - $t1 := _$t1; - $t2 := _$t2; - $t3 := _$t3; - - // bytecode translation starts here - // trace_local[distribution_pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:692:5+1 - assume {:print "$at(133,33342,33343)"} true; - $temp_0'$1_pool_u64_Pool' := $Dereference($t0); - assume {:print "$track_local(56,24,0):", $temp_0'$1_pool_u64_Pool'} $temp_0'$1_pool_u64_Pool' == $temp_0'$1_pool_u64_Pool'; - - // trace_local[updated_total_coins]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:692:5+1 - assume {:print "$track_local(56,24,1):", $t1} $t1 == $t1; - - // trace_local[operator]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:692:5+1 - assume {:print "$track_local(56,24,2):", $t2} $t2 == $t2; - - // trace_local[commission_percentage]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:692:5+1 - assume {:print "$track_local(56,24,3):", $t3} $t3 == $t3; - - // $t19 := read_ref($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:699:35+17 - assume {:print "$at(133,33632,33649)"} true; - $t19 := $Dereference($t0); - - // $t20 := pool_u64::total_coins($t19) on_abort goto L10 with $t21 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:699:13+40 - call $t20 := $1_pool_u64_total_coins($t19); - if ($abort_flag) { - assume {:print "$at(133,33610,33650)"} true; - $t21 := $abort_code; - assume {:print "$track_abort(56,24):", $t21} $t21 == $t21; - goto L10; - } - - // $t22 := ==($t20, $t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:699:54+2 - $t22 := $IsEqual'u64'($t20, $t1); - - // if ($t22) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:699:9+99 - if ($t22) { goto L1; } else { goto L0; } - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:700:13+6 - assume {:print "$at(133,33689,33695)"} true; -L1: - - // destroy($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:700:13+6 - assume {:print "$at(133,33689,33695)"} true; - - // trace_local[distribution_pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:700:13+6 - $temp_0'$1_pool_u64_Pool' := $Dereference($t0); - assume {:print "$track_local(56,24,0):", $temp_0'$1_pool_u64_Pool'} $temp_0'$1_pool_u64_Pool' == $temp_0'$1_pool_u64_Pool'; - - // pack_ref_deep($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:700:13+6 - - // goto L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:700:13+6 - goto L9; - - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:705:52+17 - assume {:print "$at(133,33933,33950)"} true; -L0: - - // $t23 := read_ref($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:705:52+17 - assume {:print "$at(133,33933,33950)"} true; - $t23 := $Dereference($t0); - - // $t24 := pool_u64::shareholders($t23) on_abort goto L10 with $t21 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:705:29+41 - call $t24 := $1_pool_u64_shareholders($t23); - if ($abort_flag) { - assume {:print "$at(133,33910,33951)"} true; - $t21 := $abort_code; - assume {:print "$track_abort(56,24):", $t21} $t21 == $t21; - goto L10; - } - - // trace_local[v#216]($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:706:9+1038 - assume {:print "$at(133,33961,34999)"} true; - assume {:print "$track_local(56,24,18):", $t24} $t24 == $t24; - - // $t25 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:261:17+1 - assume {:print "$at(18,9246,9247)"} true; - $t25 := 0; - assume $IsValid'u64'($t25); - - // trace_local[i#218]($t25) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:261:13+1 - assume {:print "$track_local(56,24,11):", $t25} $t25 == $t25; - - // $t26 := vector::length
($t24) on_abort goto L10 with $t21 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:262:19+9 - assume {:print "$at(18,9267,9276)"} true; - call $t26 := $1_vector_length'address'($t24); - if ($abort_flag) { - assume {:print "$at(18,9267,9276)"} true; - $t21 := $abort_code; - assume {:print "$track_abort(56,24):", $t21} $t21 == $t21; - goto L10; - } - - // trace_local[len#219]($t26) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:262:13+3 - assume {:print "$track_local(56,24,12):", $t26} $t26 == $t26; - - // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume {:print "$at(18,9293,9294)"} true; -L7: - - // $t11 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume {:print "$at(18,9293,9294)"} true; - havoc $t11; - - // assume WellFormed($t11) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume $IsValid'u64'($t11); - - // $t27 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - havoc $t27; - - // assume WellFormed($t27) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume $IsValid'bool'($t27); - - // $t28 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - havoc $t28; - - // assume WellFormed($t28) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume $IsValid'address'($t28); - - // $t29 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - havoc $t29; - - // assume WellFormed($t29) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume $IsValid'bool'($t29); - - // $t30 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - havoc $t30; - - // assume And(WellFormed($t30), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares($t30), addr), vector::spec_contains
(select pool_u64::Pool.shareholders($t30), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders($t30))), j: Range(0, Len
(select pool_u64::Pool.shareholders($t30))): Implies(Eq
(Index(select pool_u64::Pool.shareholders($t30), i), Index(select pool_u64::Pool.shareholders($t30), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume ($IsValid'$1_pool_u64_Pool'($t30) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($t30), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($t30), addr)))) && (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($t30))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($t30))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; - (var j := $i_3; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($t30), i), ReadVec($shareholders#$1_pool_u64_Pool($t30), j)) ==> $IsEqual'num'(i, j)))))))))); - - // $t31 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - havoc $t31; - - // assume WellFormed($t31) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume $IsValid'u64'($t31); - - // $t32 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - havoc $t32; - - // assume And(WellFormed($t32), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares($t32), addr), vector::spec_contains
(select pool_u64::Pool.shareholders($t32), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders($t32))), j: Range(0, Len
(select pool_u64::Pool.shareholders($t32))): Implies(Eq
(Index(select pool_u64::Pool.shareholders($t32), i), Index(select pool_u64::Pool.shareholders($t32), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume ($IsValid'$1_pool_u64_Pool'($t32) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($t32), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($t32), addr)))) && (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($t32))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($t32))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; - (var j := $i_3; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($t32), i), ReadVec($shareholders#$1_pool_u64_Pool($t32), j)) ==> $IsEqual'num'(i, j)))))))))); - - // $t33 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - havoc $t33; - - // assume WellFormed($t33) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume $IsValid'u64'($t33); - - // $t34 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - havoc $t34; - - // assume And(WellFormed($t34), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares($t34), addr), vector::spec_contains
(select pool_u64::Pool.shareholders($t34), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders($t34))), j: Range(0, Len
(select pool_u64::Pool.shareholders($t34))): Implies(Eq
(Index(select pool_u64::Pool.shareholders($t34), i), Index(select pool_u64::Pool.shareholders($t34), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume ($IsValid'$1_pool_u64_Pool'($t34) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($t34), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($t34), addr)))) && (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($t34))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($t34))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; - (var j := $i_3; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($t34), i), ReadVec($shareholders#$1_pool_u64_Pool($t34), j)) ==> $IsEqual'num'(i, j)))))))))); - - // $t35 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - havoc $t35; - - // assume WellFormed($t35) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume $IsValid'u64'($t35); - - // $t36 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - havoc $t36; - - // assume WellFormed($t36) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume $IsValid'u64'($t36); - - // $t37 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - havoc $t37; - - // assume WellFormed($t37) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume $IsValid'u64'($t37); - - // $t38 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - havoc $t38; - - // assume WellFormed($t38) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume $IsValid'u64'($t38); - - // $t39 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - havoc $t39; - - // assume WellFormed($t39) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume $IsValid'u64'($t39); - - // $t40 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - havoc $t40; - - // assume And(WellFormed($t40), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares($t40), addr), vector::spec_contains
(select pool_u64::Pool.shareholders($t40), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders($t40))), j: Range(0, Len
(select pool_u64::Pool.shareholders($t40))): Implies(Eq
(Index(select pool_u64::Pool.shareholders($t40), i), Index(select pool_u64::Pool.shareholders($t40), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume ($IsValid'$1_pool_u64_Pool'($t40) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($t40), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($t40), addr)))) && (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($t40))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($t40))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; - (var j := $i_3; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($t40), i), ReadVec($shareholders#$1_pool_u64_Pool($t40), j)) ==> $IsEqual'num'(i, j)))))))))); - - // $t41 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - havoc $t41; - - // assume WellFormed($t41) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume $IsValid'u64'($t41); - - // $t42 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - havoc $t42; - - // assume WellFormed($t42) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume $IsValid'u64'($t42); - - // $t43 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - havoc $t43; - - // assume WellFormed($t43) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume $IsValid'u64'($t43); - - // $t0 := havoc[mut]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - havoc $temp_0'$1_pool_u64_Pool'; - $t0 := $UpdateMutation($t0, $temp_0'$1_pool_u64_Pool'); - - // assume And(WellFormed($t0), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares($t0), addr), vector::spec_contains
(select pool_u64::Pool.shareholders($t0), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders($t0))), j: Range(0, Len
(select pool_u64::Pool.shareholders($t0))): Implies(Eq
(Index(select pool_u64::Pool.shareholders($t0), i), Index(select pool_u64::Pool.shareholders($t0), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume ($IsValid'$1_pool_u64_Pool'($Dereference($t0)) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($Dereference($t0)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($Dereference($t0)), addr)))) && (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($Dereference($t0)))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($Dereference($t0)))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; - (var j := $i_3; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($Dereference($t0)), i), ReadVec($shareholders#$1_pool_u64_Pool($Dereference($t0)), j)) ==> $IsEqual'num'(i, j)))))))))); - - // trace_local[distribution_pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume {:print "$info(): enter loop, variable(s) distribution_pool, i#218 havocked and reassigned"} true; - $temp_0'$1_pool_u64_Pool' := $Dereference($t0); - assume {:print "$track_local(56,24,0):", $temp_0'$1_pool_u64_Pool'} $temp_0'$1_pool_u64_Pool' == $temp_0'$1_pool_u64_Pool'; - - // trace_local[i#218]($t11) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume {:print "$track_local(56,24,11):", $t11} $t11 == $t11; - - // assume Not(AbortFlag()) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume !$abort_flag; - - // $t27 := <($t11, $t26) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:18+1 - call $t27 := $Lt($t11, $t26); - - // if ($t27) goto L3 else goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:9+78 - if ($t27) { goto L3; } else { goto L2; } - - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:9+78 -L3: - - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:264:22+1 - assume {:print "$at(18,9325,9326)"} true; -L4: - - // $t28 := vector::borrow
($t24, $t11) on_abort goto L10 with $t21 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:264:15+12 - assume {:print "$at(18,9318,9330)"} true; - call $t28 := $1_vector_borrow'address'($t24, $t11); - if ($abort_flag) { - assume {:print "$at(18,9318,9330)"} true; - $t21 := $abort_code; - assume {:print "$track_abort(56,24):", $t21} $t21 == $t21; - goto L10; - } - - // trace_local[shareholder#221]($t28) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:707:17+11 - assume {:print "$at(133,34028,34039)"} true; - assume {:print "$track_local(56,24,14):", $t28} $t28 == $t28; - - // $t29 := !=($t28, $t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:708:29+2 - assume {:print "$at(133,34093,34095)"} true; - $t29 := !$IsEqual'address'($t28, $t2); - - // if ($t29) goto L6 else goto L11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:708:13+910 - if ($t29) { goto L6; } else { goto L11; } - - // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:709:47+17 - assume {:print "$at(133,34154,34171)"} true; -L6: - - // $t30 := read_ref($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:709:46+32 - assume {:print "$at(133,34153,34185)"} true; - $t30 := $Dereference($t0); - - // $t31 := pool_u64::shares($t30, $t28) on_abort goto L10 with $t21 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:709:30+48 - call $t31 := $1_pool_u64_shares($t30, $t28); - if ($abort_flag) { - assume {:print "$at(133,34137,34185)"} true; - $t21 := $abort_code; - assume {:print "$track_abort(56,24):", $t21} $t21 == $t21; - goto L10; - } - - // trace_local[shares#222]($t31) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:709:21+6 - assume {:print "$track_local(56,24,15):", $t31} $t31 == $t31; - - // $t32 := read_ref($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:710:55+32 - assume {:print "$at(133,34241,34273)"} true; - $t32 := $Dereference($t0); - - // assume Identical($t44, pool_u64::spec_shares($t32, $t28)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:53:9+44 - assume {:print "$at(59,1730,1774)"} true; - assume ($t44 == $1_pool_u64_spec_shares($t32, $t28)); - - // assume Identical($t45, select pool_u64::Pool.total_coins($t32)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:54:9+35 - assume {:print "$at(59,1783,1818)"} true; - assume ($t45 == $total_coins#$1_pool_u64_Pool($t32)); - - // $t33 := pool_u64::balance($t32, $t28) on_abort goto L10 with $t21 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:710:38+49 - assume {:print "$at(133,34224,34273)"} true; - call $t33 := $1_pool_u64_balance($t32, $t28); - if ($abort_flag) { - assume {:print "$at(133,34224,34273)"} true; - $t21 := $abort_code; - assume {:print "$track_abort(56,24):", $t21} $t21 == $t21; - goto L10; - } - - // trace_local[previous_worth#223]($t33) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:710:21+14 - assume {:print "$track_local(56,24,13):", $t33} $t33 == $t33; - - // $t34 := read_ref($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:711:80+69 - assume {:print "$at(133,34354,34423)"} true; - $t34 := $Dereference($t0); - - // $t35 := pool_u64::shares_to_amount_with_total_coins($t34, $t31, $t1) on_abort goto L10 with $t21 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:711:37+112 - call $t35 := $1_pool_u64_shares_to_amount_with_total_coins($t34, $t31, $t1); - if ($abort_flag) { - assume {:print "$at(133,34311,34423)"} true; - $t21 := $abort_code; - assume {:print "$track_abort(56,24):", $t21} $t21 == $t21; - goto L10; - } - - // $t36 := -($t35, $t33) on_abort goto L10 with $t21 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:713:56+1 - assume {:print "$at(133,34480,34481)"} true; - call $t36 := $Sub($t35, $t33); - if ($abort_flag) { - assume {:print "$at(133,34480,34481)"} true; - $t21 := $abort_code; - assume {:print "$track_abort(56,24):", $t21} $t21 == $t21; - goto L10; - } - - // $t37 := *($t36, $t3) on_abort goto L10 with $t21 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:713:74+1 - call $t37 := $MulU64($t36, $t3); - if ($abort_flag) { - assume {:print "$at(133,34498,34499)"} true; - $t21 := $abort_code; - assume {:print "$track_abort(56,24):", $t21} $t21 == $t21; - goto L10; - } - - // $t38 := 100 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:713:100+3 - $t38 := 100; - assume $IsValid'u64'($t38); - - // $t39 := /($t37, $t38) on_abort goto L10 with $t21 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:713:98+1 - call $t39 := $Div($t37, $t38); - if ($abort_flag) { - assume {:print "$at(133,34522,34523)"} true; - $t21 := $abort_code; - assume {:print "$track_abort(56,24):", $t21} $t21 == $t21; - goto L10; - } - - // trace_local[unpaid_commission#225]($t39) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:713:21+17 - assume {:print "$track_local(56,24,17):", $t39} $t39 == $t39; - - // $t40 := read_ref($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:716:85+80 - assume {:print "$at(133,34787,34867)"} true; - $t40 := $Dereference($t0); - - // $t41 := pool_u64::amount_to_shares_with_total_coins($t40, $t39, $t1) on_abort goto L10 with $t21 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:716:42+123 - call $t41 := $1_pool_u64_amount_to_shares_with_total_coins($t40, $t39, $t1); - if ($abort_flag) { - assume {:print "$at(133,34744,34867)"} true; - $t21 := $abort_code; - assume {:print "$track_abort(56,24):", $t21} $t21 == $t21; - goto L10; - } - - // trace_local[shares_to_transfer#226]($t41) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:716:21+18 - assume {:print "$track_local(56,24,16):", $t41} $t41 == $t41; - - // pool_u64::transfer_shares($t0, $t28, $t2, $t41) on_abort goto L10 with $t21 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:718:17+87 - assume {:print "$at(133,34885,34972)"} true; - call $t0 := $1_pool_u64_transfer_shares($t0, $t28, $t2, $t41); - if ($abort_flag) { - assume {:print "$at(133,34885,34972)"} true; - $t21 := $abort_code; - assume {:print "$track_abort(56,24):", $t21} $t21 == $t21; - goto L10; - } - - // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:265:17+1 - assume {:print "$at(18,9349,9350)"} true; -L5: - - // $t42 := 1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:265:21+1 - assume {:print "$at(18,9353,9354)"} true; - $t42 := 1; - assume $IsValid'u64'($t42); - - // $t43 := +($t11, $t42) on_abort goto L10 with $t21 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:265:19+1 - call $t43 := $AddU64($t11, $t42); - if ($abort_flag) { - assume {:print "$at(18,9351,9352)"} true; - $t21 := $abort_code; - assume {:print "$track_abort(56,24):", $t21} $t21 == $t21; - goto L10; - } - - // trace_local[i#218]($t43) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:265:13+1 - assume {:print "$track_local(56,24,11):", $t43} $t43 == $t43; - - // goto L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:265:13+9 - goto L8; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:722:9+68 - assume {:print "$at(133,35010,35078)"} true; -L2: - - // pool_u64::update_total_coins($t0, $t1) on_abort goto L10 with $t21 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:722:9+68 - assume {:print "$at(133,35010,35078)"} true; - call $t0 := $1_pool_u64_update_total_coins($t0, $t1); - if ($abort_flag) { - assume {:print "$at(133,35010,35078)"} true; - $t21 := $abort_code; - assume {:print "$track_abort(56,24):", $t21} $t21 == $t21; - goto L10; - } - - // trace_local[distribution_pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:722:77+1 - $temp_0'$1_pool_u64_Pool' := $Dereference($t0); - assume {:print "$track_local(56,24,0):", $temp_0'$1_pool_u64_Pool'} $temp_0'$1_pool_u64_Pool' == $temp_0'$1_pool_u64_Pool'; - - // pack_ref_deep($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:722:77+1 - - // goto L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:722:77+1 - goto L9; - - // label L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:722:9+68 - // Loop invariant checking block for the loop started with header: L7 -L8: - - // stop() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:722:9+68 - assume {:print "$at(133,35010,35078)"} true; - assume false; - return; - - // label L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:723:5+1 - assume {:print "$at(133,35084,35085)"} true; -L9: - - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:723:5+1 - assume {:print "$at(133,35084,35085)"} true; - $ret0 := $t0; - return; - - // label L10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:723:5+1 -L10: - - // abort($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:723:5+1 - assume {:print "$at(133,35084,35085)"} true; - $abort_code := $t21; - $abort_flag := true; - return; - - // label L11 at :1:1+10 - assume {:print "$at(1,0,10)"} true; -L11: - - // destroy($t0) at :1:1+10 - assume {:print "$at(1,0,10)"} true; - - // goto L5 at :1:1+10 - goto L5; - -} - -// fun staking_contract::update_voter [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:335:5+754 -procedure {:inline 1} $1_staking_contract_update_voter(_$t0: $signer, _$t1: int, _$t2: int) returns () -{ - // declare local variables - var $t3: int; - var $t4: int; - var $t5: int; - var $t6: $Mutation ($1_staking_contract_StakingContract); - var $t7: $Mutation ($1_staking_contract_Store); - var $t8: int; - var $t9: $1_staking_contract_Store; - var $t10: $1_staking_contract_StakingContract; - var $t11: int; - var $t12: Table int ($1_staking_contract_StakingContract); - var $t13: int; - var $t14: int; - var $t15: Table int ($1_staking_contract_StakingContract); - var $t16: $Mutation ($1_staking_contract_Store); - var $t17: $Mutation (Table int ($1_staking_contract_StakingContract)); - var $t18: $Mutation ($1_staking_contract_StakingContract); - var $t19: int; - var $t20: int; - var $t21: $1_stake_OwnerCapability; - var $t22: int; - var $t23: $Mutation ($1_event_EventHandle'$1_staking_contract_UpdateVoterEvent'); - var $t24: $1_staking_contract_UpdateVoterEvent; - var $t0: $signer; - var $t1: int; - var $t2: int; - var $temp_0'$1_staking_contract_StakingContract': $1_staking_contract_StakingContract; - var $temp_0'$1_staking_contract_Store': $1_staking_contract_Store; - var $temp_0'address': int; - var $temp_0'signer': $signer; - $t0 := _$t0; - $t1 := _$t1; - $t2 := _$t2; - - // bytecode translation starts here - // assume Identical($t8, signer::$address_of($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:99:9+48 - assume {:print "$at(134,4471,4519)"} true; - assume ($t8 == $1_signer_$address_of($t0)); - - // assume Identical($t9, global($t8)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:276:9+34 - assume {:print "$at(134,11729,11763)"} true; - assume ($t9 == $ResourceValue($1_staking_contract_Store_$memory, $t8)); - - // assume Identical($t10, simple_map::spec_get(select staking_contract::Store.staking_contracts($t9), $t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:277:9+79 - assume {:print "$at(134,11772,11851)"} true; - assume ($t10 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($t9), $t1)); - - // assume Identical($t11, select staking_contract::StakingContract.pool_address($t10)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:278:9+49 - assume {:print "$at(134,11860,11909)"} true; - assume ($t11 == $pool_address#$1_staking_contract_StakingContract($t10)); - - // assume Identical($t12, select staking_contract::Store.staking_contracts(global($t8))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 - assume {:print "$at(134,11481,11545)"} true; - assume ($t12 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t8))); - - // trace_local[staker]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:335:5+1 - assume {:print "$at(133,15603,15604)"} true; - assume {:print "$track_local(56,25,0):", $t0} $t0 == $t0; - - // trace_local[operator]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:335:5+1 - assume {:print "$track_local(56,25,1):", $t1} $t1 == $t1; - - // trace_local[new_voter]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:335:5+1 - assume {:print "$track_local(56,25,2):", $t2} $t2 == $t2; - - // $t13 := signer::address_of($t0) on_abort goto L2 with $t14 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:336:30+26 - assume {:print "$at(133,15735,15761)"} true; - call $t13 := $1_signer_address_of($t0); - if ($abort_flag) { - assume {:print "$at(133,15735,15761)"} true; - $t14 := $abort_code; - assume {:print "$track_abort(56,25):", $t14} $t14 == $t14; - goto L2; - } - - // trace_local[staker_address]($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:336:13+14 - assume {:print "$track_local(56,25,5):", $t13} $t13 == $t13; - - // assume Identical($t15, select staking_contract::Store.staking_contracts(global($t13))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 - assume {:print "$at(134,11481,11545)"} true; - assume ($t15 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t13))); - - // staking_contract::assert_staking_contract_exists($t13, $t1) on_abort goto L2 with $t14 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:337:9+56 - assume {:print "$at(133,15771,15827)"} true; - call $1_staking_contract_assert_staking_contract_exists($t13, $t1); - if ($abort_flag) { - assume {:print "$at(133,15771,15827)"} true; - $t14 := $abort_code; - assume {:print "$track_abort(56,25):", $t14} $t14 == $t14; - goto L2; - } - - // $t16 := borrow_global($t13) on_abort goto L2 with $t14 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:339:21+17 - assume {:print "$at(133,15850,15867)"} true; - if (!$ResourceExists($1_staking_contract_Store_$memory, $t13)) { - call $ExecFailureAbort(); - } else { - $t16 := $Mutation($Global($t13), EmptyVec(), $ResourceValue($1_staking_contract_Store_$memory, $t13)); - } - if ($abort_flag) { - assume {:print "$at(133,15850,15867)"} true; - $t14 := $abort_code; - assume {:print "$track_abort(56,25):", $t14} $t14 == $t14; - goto L2; - } - - // trace_local[store]($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:339:13+5 - $temp_0'$1_staking_contract_Store' := $Dereference($t16); - assume {:print "$track_local(56,25,7):", $temp_0'$1_staking_contract_Store'} $temp_0'$1_staking_contract_Store' == $temp_0'$1_staking_contract_Store'; - - // $t17 := borrow_field.staking_contracts($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:340:55+28 - assume {:print "$at(133,15946,15974)"} true; - $t17 := $ChildMutation($t16, 0, $staking_contracts#$1_staking_contract_Store($Dereference($t16))); - - // $t18 := simple_map::borrow_mut($t17, $t1) on_abort goto L2 with $t14 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:340:32+63 - call $t18,$t17 := $1_simple_map_borrow_mut'address_$1_staking_contract_StakingContract'($t17, $t1); - if ($abort_flag) { - assume {:print "$at(133,15923,15986)"} true; - $t14 := $abort_code; - assume {:print "$track_abort(56,25):", $t14} $t14 == $t14; - goto L2; - } - - // trace_local[staking_contract]($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:340:13+16 - $temp_0'$1_staking_contract_StakingContract' := $Dereference($t18); - assume {:print "$track_local(56,25,6):", $temp_0'$1_staking_contract_StakingContract'} $temp_0'$1_staking_contract_StakingContract' == $temp_0'$1_staking_contract_StakingContract'; - - // $t19 := get_field.pool_address($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:341:28+29 - assume {:print "$at(133,16015,16044)"} true; - $t19 := $pool_address#$1_staking_contract_StakingContract($Dereference($t18)); - - // trace_local[pool_address]($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:341:13+12 - assume {:print "$track_local(56,25,4):", $t19} $t19 == $t19; - - // $t20 := stake::get_delegated_voter($t19) on_abort goto L2 with $t14 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:342:25+40 - assume {:print "$at(133,16070,16110)"} true; - call $t20 := $1_stake_get_delegated_voter($t19); - if ($abort_flag) { - assume {:print "$at(133,16070,16110)"} true; - $t14 := $abort_code; - assume {:print "$track_abort(56,25):", $t14} $t14 == $t14; - goto L2; - } - - // trace_local[old_voter]($t20) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:342:13+9 - assume {:print "$track_local(56,25,3):", $t20} $t20 == $t20; - - // $t21 := get_field.owner_cap($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:343:45+27 - assume {:print "$at(133,16156,16183)"} true; - $t21 := $owner_cap#$1_staking_contract_StakingContract($Dereference($t18)); - - // assume Identical($t22, select stake::OwnerCapability.pool_address($t21)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:136:9+42 - assume {:print "$at(132,6139,6181)"} true; - assume ($t22 == $pool_address#$1_stake_OwnerCapability($t21)); - - // stake::set_delegated_voter_with_cap($t21, $t2) on_abort goto L2 with $t14 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:343:9+75 - assume {:print "$at(133,16120,16195)"} true; - call $1_stake_set_delegated_voter_with_cap($t21, $t2); - if ($abort_flag) { - assume {:print "$at(133,16120,16195)"} true; - $t14 := $abort_code; - assume {:print "$track_abort(56,25):", $t14} $t14 == $t14; - goto L2; - } - - // $t23 := borrow_field.update_voter_events($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:346:13+30 - assume {:print "$at(133,16230,16260)"} true; - $t23 := $ChildMutation($t16, 2, $update_voter_events#$1_staking_contract_Store($Dereference($t16))); - - // $t24 := pack staking_contract::UpdateVoterEvent($t1, $t19, $t20, $t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:347:13+65 - assume {:print "$at(133,16274,16339)"} true; - $t24 := $1_staking_contract_UpdateVoterEvent($t1, $t19, $t20, $t2); - - // opaque begin: event::emit_event($t23, $t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:345:9+144 - assume {:print "$at(133,16206,16350)"} true; - - // opaque end: event::emit_event($t23, $t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:345:9+144 - - // write_back[Reference($t16).update_voter_events (event::EventHandle)]($t23) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:345:9+144 - $t16 := $UpdateMutation($t16, $Update'$1_staking_contract_Store'_update_voter_events($Dereference($t16), $Dereference($t23))); - - // pack_ref_deep($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:345:9+144 - - // write_back[staking_contract::Store@]($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:345:9+144 - $1_staking_contract_Store_$memory := $ResourceUpdate($1_staking_contract_Store_$memory, $GlobalLocationAddress($t16), - $Dereference($t16)); - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:349:5+1 - assume {:print "$at(133,16356,16357)"} true; -L1: - - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:349:5+1 - assume {:print "$at(133,16356,16357)"} true; - return; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:349:5+1 -L2: - - // abort($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:349:5+1 - assume {:print "$at(133,16356,16357)"} true; - $abort_code := $t14; - $abort_flag := true; - return; - -} - -// struct vesting::DistributeEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:230:5+134 -type {:datatype} $1_vesting_DistributeEvent; -function {:constructor} $1_vesting_DistributeEvent($admin: int, $vesting_contract_address: int, $amount: int): $1_vesting_DistributeEvent; -function {:inline} $Update'$1_vesting_DistributeEvent'_admin(s: $1_vesting_DistributeEvent, x: int): $1_vesting_DistributeEvent { - $1_vesting_DistributeEvent(x, $vesting_contract_address#$1_vesting_DistributeEvent(s), $amount#$1_vesting_DistributeEvent(s)) -} -function {:inline} $Update'$1_vesting_DistributeEvent'_vesting_contract_address(s: $1_vesting_DistributeEvent, x: int): $1_vesting_DistributeEvent { - $1_vesting_DistributeEvent($admin#$1_vesting_DistributeEvent(s), x, $amount#$1_vesting_DistributeEvent(s)) -} -function {:inline} $Update'$1_vesting_DistributeEvent'_amount(s: $1_vesting_DistributeEvent, x: int): $1_vesting_DistributeEvent { - $1_vesting_DistributeEvent($admin#$1_vesting_DistributeEvent(s), $vesting_contract_address#$1_vesting_DistributeEvent(s), x) -} -function $IsValid'$1_vesting_DistributeEvent'(s: $1_vesting_DistributeEvent): bool { - $IsValid'address'($admin#$1_vesting_DistributeEvent(s)) - && $IsValid'address'($vesting_contract_address#$1_vesting_DistributeEvent(s)) - && $IsValid'u64'($amount#$1_vesting_DistributeEvent(s)) -} -function {:inline} $IsEqual'$1_vesting_DistributeEvent'(s1: $1_vesting_DistributeEvent, s2: $1_vesting_DistributeEvent): bool { - s1 == s2 -} - -// struct vesting::ResetLockupEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:200:5+194 -type {:datatype} $1_vesting_ResetLockupEvent; -function {:constructor} $1_vesting_ResetLockupEvent($admin: int, $vesting_contract_address: int, $staking_pool_address: int, $new_lockup_expiration_secs: int): $1_vesting_ResetLockupEvent; -function {:inline} $Update'$1_vesting_ResetLockupEvent'_admin(s: $1_vesting_ResetLockupEvent, x: int): $1_vesting_ResetLockupEvent { - $1_vesting_ResetLockupEvent(x, $vesting_contract_address#$1_vesting_ResetLockupEvent(s), $staking_pool_address#$1_vesting_ResetLockupEvent(s), $new_lockup_expiration_secs#$1_vesting_ResetLockupEvent(s)) -} -function {:inline} $Update'$1_vesting_ResetLockupEvent'_vesting_contract_address(s: $1_vesting_ResetLockupEvent, x: int): $1_vesting_ResetLockupEvent { - $1_vesting_ResetLockupEvent($admin#$1_vesting_ResetLockupEvent(s), x, $staking_pool_address#$1_vesting_ResetLockupEvent(s), $new_lockup_expiration_secs#$1_vesting_ResetLockupEvent(s)) -} -function {:inline} $Update'$1_vesting_ResetLockupEvent'_staking_pool_address(s: $1_vesting_ResetLockupEvent, x: int): $1_vesting_ResetLockupEvent { - $1_vesting_ResetLockupEvent($admin#$1_vesting_ResetLockupEvent(s), $vesting_contract_address#$1_vesting_ResetLockupEvent(s), x, $new_lockup_expiration_secs#$1_vesting_ResetLockupEvent(s)) -} -function {:inline} $Update'$1_vesting_ResetLockupEvent'_new_lockup_expiration_secs(s: $1_vesting_ResetLockupEvent, x: int): $1_vesting_ResetLockupEvent { - $1_vesting_ResetLockupEvent($admin#$1_vesting_ResetLockupEvent(s), $vesting_contract_address#$1_vesting_ResetLockupEvent(s), $staking_pool_address#$1_vesting_ResetLockupEvent(s), x) -} -function $IsValid'$1_vesting_ResetLockupEvent'(s: $1_vesting_ResetLockupEvent): bool { - $IsValid'address'($admin#$1_vesting_ResetLockupEvent(s)) - && $IsValid'address'($vesting_contract_address#$1_vesting_ResetLockupEvent(s)) - && $IsValid'address'($staking_pool_address#$1_vesting_ResetLockupEvent(s)) - && $IsValid'u64'($new_lockup_expiration_secs#$1_vesting_ResetLockupEvent(s)) -} -function {:inline} $IsEqual'$1_vesting_ResetLockupEvent'(s1: $1_vesting_ResetLockupEvent, s2: $1_vesting_ResetLockupEvent): bool { - s1 == s2 -} - -// struct vesting::UpdateVoterEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:192:5+209 -type {:datatype} $1_vesting_UpdateVoterEvent; -function {:constructor} $1_vesting_UpdateVoterEvent($admin: int, $vesting_contract_address: int, $staking_pool_address: int, $old_voter: int, $new_voter: int): $1_vesting_UpdateVoterEvent; -function {:inline} $Update'$1_vesting_UpdateVoterEvent'_admin(s: $1_vesting_UpdateVoterEvent, x: int): $1_vesting_UpdateVoterEvent { - $1_vesting_UpdateVoterEvent(x, $vesting_contract_address#$1_vesting_UpdateVoterEvent(s), $staking_pool_address#$1_vesting_UpdateVoterEvent(s), $old_voter#$1_vesting_UpdateVoterEvent(s), $new_voter#$1_vesting_UpdateVoterEvent(s)) -} -function {:inline} $Update'$1_vesting_UpdateVoterEvent'_vesting_contract_address(s: $1_vesting_UpdateVoterEvent, x: int): $1_vesting_UpdateVoterEvent { - $1_vesting_UpdateVoterEvent($admin#$1_vesting_UpdateVoterEvent(s), x, $staking_pool_address#$1_vesting_UpdateVoterEvent(s), $old_voter#$1_vesting_UpdateVoterEvent(s), $new_voter#$1_vesting_UpdateVoterEvent(s)) -} -function {:inline} $Update'$1_vesting_UpdateVoterEvent'_staking_pool_address(s: $1_vesting_UpdateVoterEvent, x: int): $1_vesting_UpdateVoterEvent { - $1_vesting_UpdateVoterEvent($admin#$1_vesting_UpdateVoterEvent(s), $vesting_contract_address#$1_vesting_UpdateVoterEvent(s), x, $old_voter#$1_vesting_UpdateVoterEvent(s), $new_voter#$1_vesting_UpdateVoterEvent(s)) -} -function {:inline} $Update'$1_vesting_UpdateVoterEvent'_old_voter(s: $1_vesting_UpdateVoterEvent, x: int): $1_vesting_UpdateVoterEvent { - $1_vesting_UpdateVoterEvent($admin#$1_vesting_UpdateVoterEvent(s), $vesting_contract_address#$1_vesting_UpdateVoterEvent(s), $staking_pool_address#$1_vesting_UpdateVoterEvent(s), x, $new_voter#$1_vesting_UpdateVoterEvent(s)) -} -function {:inline} $Update'$1_vesting_UpdateVoterEvent'_new_voter(s: $1_vesting_UpdateVoterEvent, x: int): $1_vesting_UpdateVoterEvent { - $1_vesting_UpdateVoterEvent($admin#$1_vesting_UpdateVoterEvent(s), $vesting_contract_address#$1_vesting_UpdateVoterEvent(s), $staking_pool_address#$1_vesting_UpdateVoterEvent(s), $old_voter#$1_vesting_UpdateVoterEvent(s), x) -} -function $IsValid'$1_vesting_UpdateVoterEvent'(s: $1_vesting_UpdateVoterEvent): bool { - $IsValid'address'($admin#$1_vesting_UpdateVoterEvent(s)) - && $IsValid'address'($vesting_contract_address#$1_vesting_UpdateVoterEvent(s)) - && $IsValid'address'($staking_pool_address#$1_vesting_UpdateVoterEvent(s)) - && $IsValid'address'($old_voter#$1_vesting_UpdateVoterEvent(s)) - && $IsValid'address'($new_voter#$1_vesting_UpdateVoterEvent(s)) -} -function {:inline} $IsEqual'$1_vesting_UpdateVoterEvent'(s1: $1_vesting_UpdateVoterEvent, s2: $1_vesting_UpdateVoterEvent): bool { - s1 == s2 -} - -// struct vesting::AdminStore at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:165:5+265 -type {:datatype} $1_vesting_AdminStore; -function {:constructor} $1_vesting_AdminStore($vesting_contracts: Vec (int), $nonce: int, $create_events: $1_event_EventHandle'$1_vesting_CreateVestingContractEvent'): $1_vesting_AdminStore; -function {:inline} $Update'$1_vesting_AdminStore'_vesting_contracts(s: $1_vesting_AdminStore, x: Vec (int)): $1_vesting_AdminStore { - $1_vesting_AdminStore(x, $nonce#$1_vesting_AdminStore(s), $create_events#$1_vesting_AdminStore(s)) -} -function {:inline} $Update'$1_vesting_AdminStore'_nonce(s: $1_vesting_AdminStore, x: int): $1_vesting_AdminStore { - $1_vesting_AdminStore($vesting_contracts#$1_vesting_AdminStore(s), x, $create_events#$1_vesting_AdminStore(s)) -} -function {:inline} $Update'$1_vesting_AdminStore'_create_events(s: $1_vesting_AdminStore, x: $1_event_EventHandle'$1_vesting_CreateVestingContractEvent'): $1_vesting_AdminStore { - $1_vesting_AdminStore($vesting_contracts#$1_vesting_AdminStore(s), $nonce#$1_vesting_AdminStore(s), x) -} -function $IsValid'$1_vesting_AdminStore'(s: $1_vesting_AdminStore): bool { - $IsValid'vec'address''($vesting_contracts#$1_vesting_AdminStore(s)) - && $IsValid'u64'($nonce#$1_vesting_AdminStore(s)) - && $IsValid'$1_event_EventHandle'$1_vesting_CreateVestingContractEvent''($create_events#$1_vesting_AdminStore(s)) -} -function {:inline} $IsEqual'$1_vesting_AdminStore'(s1: $1_vesting_AdminStore, s2: $1_vesting_AdminStore): bool { - $IsEqual'vec'address''($vesting_contracts#$1_vesting_AdminStore(s1), $vesting_contracts#$1_vesting_AdminStore(s2)) - && $IsEqual'u64'($nonce#$1_vesting_AdminStore(s1), $nonce#$1_vesting_AdminStore(s2)) - && $IsEqual'$1_event_EventHandle'$1_vesting_CreateVestingContractEvent''($create_events#$1_vesting_AdminStore(s1), $create_events#$1_vesting_AdminStore(s2))} -var $1_vesting_AdminStore_$memory: $Memory $1_vesting_AdminStore; - -// struct vesting::AdminWithdrawEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:241:5+137 -type {:datatype} $1_vesting_AdminWithdrawEvent; -function {:constructor} $1_vesting_AdminWithdrawEvent($admin: int, $vesting_contract_address: int, $amount: int): $1_vesting_AdminWithdrawEvent; -function {:inline} $Update'$1_vesting_AdminWithdrawEvent'_admin(s: $1_vesting_AdminWithdrawEvent, x: int): $1_vesting_AdminWithdrawEvent { - $1_vesting_AdminWithdrawEvent(x, $vesting_contract_address#$1_vesting_AdminWithdrawEvent(s), $amount#$1_vesting_AdminWithdrawEvent(s)) -} -function {:inline} $Update'$1_vesting_AdminWithdrawEvent'_vesting_contract_address(s: $1_vesting_AdminWithdrawEvent, x: int): $1_vesting_AdminWithdrawEvent { - $1_vesting_AdminWithdrawEvent($admin#$1_vesting_AdminWithdrawEvent(s), x, $amount#$1_vesting_AdminWithdrawEvent(s)) -} -function {:inline} $Update'$1_vesting_AdminWithdrawEvent'_amount(s: $1_vesting_AdminWithdrawEvent, x: int): $1_vesting_AdminWithdrawEvent { - $1_vesting_AdminWithdrawEvent($admin#$1_vesting_AdminWithdrawEvent(s), $vesting_contract_address#$1_vesting_AdminWithdrawEvent(s), x) -} -function $IsValid'$1_vesting_AdminWithdrawEvent'(s: $1_vesting_AdminWithdrawEvent): bool { - $IsValid'address'($admin#$1_vesting_AdminWithdrawEvent(s)) - && $IsValid'address'($vesting_contract_address#$1_vesting_AdminWithdrawEvent(s)) - && $IsValid'u64'($amount#$1_vesting_AdminWithdrawEvent(s)) -} -function {:inline} $IsEqual'$1_vesting_AdminWithdrawEvent'(s1: $1_vesting_AdminWithdrawEvent, s2: $1_vesting_AdminWithdrawEvent): bool { - s1 == s2 -} - -// struct vesting::CreateVestingContractEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:173:5+290 -type {:datatype} $1_vesting_CreateVestingContractEvent; -function {:constructor} $1_vesting_CreateVestingContractEvent($operator: int, $voter: int, $grant_amount: int, $withdrawal_address: int, $vesting_contract_address: int, $staking_pool_address: int, $commission_percentage: int): $1_vesting_CreateVestingContractEvent; -function {:inline} $Update'$1_vesting_CreateVestingContractEvent'_operator(s: $1_vesting_CreateVestingContractEvent, x: int): $1_vesting_CreateVestingContractEvent { - $1_vesting_CreateVestingContractEvent(x, $voter#$1_vesting_CreateVestingContractEvent(s), $grant_amount#$1_vesting_CreateVestingContractEvent(s), $withdrawal_address#$1_vesting_CreateVestingContractEvent(s), $vesting_contract_address#$1_vesting_CreateVestingContractEvent(s), $staking_pool_address#$1_vesting_CreateVestingContractEvent(s), $commission_percentage#$1_vesting_CreateVestingContractEvent(s)) -} -function {:inline} $Update'$1_vesting_CreateVestingContractEvent'_voter(s: $1_vesting_CreateVestingContractEvent, x: int): $1_vesting_CreateVestingContractEvent { - $1_vesting_CreateVestingContractEvent($operator#$1_vesting_CreateVestingContractEvent(s), x, $grant_amount#$1_vesting_CreateVestingContractEvent(s), $withdrawal_address#$1_vesting_CreateVestingContractEvent(s), $vesting_contract_address#$1_vesting_CreateVestingContractEvent(s), $staking_pool_address#$1_vesting_CreateVestingContractEvent(s), $commission_percentage#$1_vesting_CreateVestingContractEvent(s)) -} -function {:inline} $Update'$1_vesting_CreateVestingContractEvent'_grant_amount(s: $1_vesting_CreateVestingContractEvent, x: int): $1_vesting_CreateVestingContractEvent { - $1_vesting_CreateVestingContractEvent($operator#$1_vesting_CreateVestingContractEvent(s), $voter#$1_vesting_CreateVestingContractEvent(s), x, $withdrawal_address#$1_vesting_CreateVestingContractEvent(s), $vesting_contract_address#$1_vesting_CreateVestingContractEvent(s), $staking_pool_address#$1_vesting_CreateVestingContractEvent(s), $commission_percentage#$1_vesting_CreateVestingContractEvent(s)) -} -function {:inline} $Update'$1_vesting_CreateVestingContractEvent'_withdrawal_address(s: $1_vesting_CreateVestingContractEvent, x: int): $1_vesting_CreateVestingContractEvent { - $1_vesting_CreateVestingContractEvent($operator#$1_vesting_CreateVestingContractEvent(s), $voter#$1_vesting_CreateVestingContractEvent(s), $grant_amount#$1_vesting_CreateVestingContractEvent(s), x, $vesting_contract_address#$1_vesting_CreateVestingContractEvent(s), $staking_pool_address#$1_vesting_CreateVestingContractEvent(s), $commission_percentage#$1_vesting_CreateVestingContractEvent(s)) -} -function {:inline} $Update'$1_vesting_CreateVestingContractEvent'_vesting_contract_address(s: $1_vesting_CreateVestingContractEvent, x: int): $1_vesting_CreateVestingContractEvent { - $1_vesting_CreateVestingContractEvent($operator#$1_vesting_CreateVestingContractEvent(s), $voter#$1_vesting_CreateVestingContractEvent(s), $grant_amount#$1_vesting_CreateVestingContractEvent(s), $withdrawal_address#$1_vesting_CreateVestingContractEvent(s), x, $staking_pool_address#$1_vesting_CreateVestingContractEvent(s), $commission_percentage#$1_vesting_CreateVestingContractEvent(s)) -} -function {:inline} $Update'$1_vesting_CreateVestingContractEvent'_staking_pool_address(s: $1_vesting_CreateVestingContractEvent, x: int): $1_vesting_CreateVestingContractEvent { - $1_vesting_CreateVestingContractEvent($operator#$1_vesting_CreateVestingContractEvent(s), $voter#$1_vesting_CreateVestingContractEvent(s), $grant_amount#$1_vesting_CreateVestingContractEvent(s), $withdrawal_address#$1_vesting_CreateVestingContractEvent(s), $vesting_contract_address#$1_vesting_CreateVestingContractEvent(s), x, $commission_percentage#$1_vesting_CreateVestingContractEvent(s)) -} -function {:inline} $Update'$1_vesting_CreateVestingContractEvent'_commission_percentage(s: $1_vesting_CreateVestingContractEvent, x: int): $1_vesting_CreateVestingContractEvent { - $1_vesting_CreateVestingContractEvent($operator#$1_vesting_CreateVestingContractEvent(s), $voter#$1_vesting_CreateVestingContractEvent(s), $grant_amount#$1_vesting_CreateVestingContractEvent(s), $withdrawal_address#$1_vesting_CreateVestingContractEvent(s), $vesting_contract_address#$1_vesting_CreateVestingContractEvent(s), $staking_pool_address#$1_vesting_CreateVestingContractEvent(s), x) -} -function $IsValid'$1_vesting_CreateVestingContractEvent'(s: $1_vesting_CreateVestingContractEvent): bool { - $IsValid'address'($operator#$1_vesting_CreateVestingContractEvent(s)) - && $IsValid'address'($voter#$1_vesting_CreateVestingContractEvent(s)) - && $IsValid'u64'($grant_amount#$1_vesting_CreateVestingContractEvent(s)) - && $IsValid'address'($withdrawal_address#$1_vesting_CreateVestingContractEvent(s)) - && $IsValid'address'($vesting_contract_address#$1_vesting_CreateVestingContractEvent(s)) - && $IsValid'address'($staking_pool_address#$1_vesting_CreateVestingContractEvent(s)) - && $IsValid'u64'($commission_percentage#$1_vesting_CreateVestingContractEvent(s)) -} -function {:inline} $IsEqual'$1_vesting_CreateVestingContractEvent'(s1: $1_vesting_CreateVestingContractEvent, s2: $1_vesting_CreateVestingContractEvent): bool { - s1 == s2 -} - -// struct vesting::SetBeneficiaryEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:207:5+215 -type {:datatype} $1_vesting_SetBeneficiaryEvent; -function {:constructor} $1_vesting_SetBeneficiaryEvent($admin: int, $vesting_contract_address: int, $shareholder: int, $old_beneficiary: int, $new_beneficiary: int): $1_vesting_SetBeneficiaryEvent; -function {:inline} $Update'$1_vesting_SetBeneficiaryEvent'_admin(s: $1_vesting_SetBeneficiaryEvent, x: int): $1_vesting_SetBeneficiaryEvent { - $1_vesting_SetBeneficiaryEvent(x, $vesting_contract_address#$1_vesting_SetBeneficiaryEvent(s), $shareholder#$1_vesting_SetBeneficiaryEvent(s), $old_beneficiary#$1_vesting_SetBeneficiaryEvent(s), $new_beneficiary#$1_vesting_SetBeneficiaryEvent(s)) -} -function {:inline} $Update'$1_vesting_SetBeneficiaryEvent'_vesting_contract_address(s: $1_vesting_SetBeneficiaryEvent, x: int): $1_vesting_SetBeneficiaryEvent { - $1_vesting_SetBeneficiaryEvent($admin#$1_vesting_SetBeneficiaryEvent(s), x, $shareholder#$1_vesting_SetBeneficiaryEvent(s), $old_beneficiary#$1_vesting_SetBeneficiaryEvent(s), $new_beneficiary#$1_vesting_SetBeneficiaryEvent(s)) -} -function {:inline} $Update'$1_vesting_SetBeneficiaryEvent'_shareholder(s: $1_vesting_SetBeneficiaryEvent, x: int): $1_vesting_SetBeneficiaryEvent { - $1_vesting_SetBeneficiaryEvent($admin#$1_vesting_SetBeneficiaryEvent(s), $vesting_contract_address#$1_vesting_SetBeneficiaryEvent(s), x, $old_beneficiary#$1_vesting_SetBeneficiaryEvent(s), $new_beneficiary#$1_vesting_SetBeneficiaryEvent(s)) -} -function {:inline} $Update'$1_vesting_SetBeneficiaryEvent'_old_beneficiary(s: $1_vesting_SetBeneficiaryEvent, x: int): $1_vesting_SetBeneficiaryEvent { - $1_vesting_SetBeneficiaryEvent($admin#$1_vesting_SetBeneficiaryEvent(s), $vesting_contract_address#$1_vesting_SetBeneficiaryEvent(s), $shareholder#$1_vesting_SetBeneficiaryEvent(s), x, $new_beneficiary#$1_vesting_SetBeneficiaryEvent(s)) -} -function {:inline} $Update'$1_vesting_SetBeneficiaryEvent'_new_beneficiary(s: $1_vesting_SetBeneficiaryEvent, x: int): $1_vesting_SetBeneficiaryEvent { - $1_vesting_SetBeneficiaryEvent($admin#$1_vesting_SetBeneficiaryEvent(s), $vesting_contract_address#$1_vesting_SetBeneficiaryEvent(s), $shareholder#$1_vesting_SetBeneficiaryEvent(s), $old_beneficiary#$1_vesting_SetBeneficiaryEvent(s), x) -} -function $IsValid'$1_vesting_SetBeneficiaryEvent'(s: $1_vesting_SetBeneficiaryEvent): bool { - $IsValid'address'($admin#$1_vesting_SetBeneficiaryEvent(s)) - && $IsValid'address'($vesting_contract_address#$1_vesting_SetBeneficiaryEvent(s)) - && $IsValid'address'($shareholder#$1_vesting_SetBeneficiaryEvent(s)) - && $IsValid'address'($old_beneficiary#$1_vesting_SetBeneficiaryEvent(s)) - && $IsValid'address'($new_beneficiary#$1_vesting_SetBeneficiaryEvent(s)) -} -function {:inline} $IsEqual'$1_vesting_SetBeneficiaryEvent'(s1: $1_vesting_SetBeneficiaryEvent, s2: $1_vesting_SetBeneficiaryEvent): bool { - s1 == s2 -} - -// struct vesting::StakingInfo at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:123:5+384 -type {:datatype} $1_vesting_StakingInfo; -function {:constructor} $1_vesting_StakingInfo($pool_address: int, $operator: int, $voter: int, $commission_percentage: int): $1_vesting_StakingInfo; -function {:inline} $Update'$1_vesting_StakingInfo'_pool_address(s: $1_vesting_StakingInfo, x: int): $1_vesting_StakingInfo { - $1_vesting_StakingInfo(x, $operator#$1_vesting_StakingInfo(s), $voter#$1_vesting_StakingInfo(s), $commission_percentage#$1_vesting_StakingInfo(s)) -} -function {:inline} $Update'$1_vesting_StakingInfo'_operator(s: $1_vesting_StakingInfo, x: int): $1_vesting_StakingInfo { - $1_vesting_StakingInfo($pool_address#$1_vesting_StakingInfo(s), x, $voter#$1_vesting_StakingInfo(s), $commission_percentage#$1_vesting_StakingInfo(s)) -} -function {:inline} $Update'$1_vesting_StakingInfo'_voter(s: $1_vesting_StakingInfo, x: int): $1_vesting_StakingInfo { - $1_vesting_StakingInfo($pool_address#$1_vesting_StakingInfo(s), $operator#$1_vesting_StakingInfo(s), x, $commission_percentage#$1_vesting_StakingInfo(s)) -} -function {:inline} $Update'$1_vesting_StakingInfo'_commission_percentage(s: $1_vesting_StakingInfo, x: int): $1_vesting_StakingInfo { - $1_vesting_StakingInfo($pool_address#$1_vesting_StakingInfo(s), $operator#$1_vesting_StakingInfo(s), $voter#$1_vesting_StakingInfo(s), x) -} -function $IsValid'$1_vesting_StakingInfo'(s: $1_vesting_StakingInfo): bool { - $IsValid'address'($pool_address#$1_vesting_StakingInfo(s)) - && $IsValid'address'($operator#$1_vesting_StakingInfo(s)) - && $IsValid'address'($voter#$1_vesting_StakingInfo(s)) - && $IsValid'u64'($commission_percentage#$1_vesting_StakingInfo(s)) -} -function {:inline} $IsEqual'$1_vesting_StakingInfo'(s1: $1_vesting_StakingInfo, s2: $1_vesting_StakingInfo): bool { - s1 == s2 -} - -// struct vesting::TerminateEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:236:5+112 -type {:datatype} $1_vesting_TerminateEvent; -function {:constructor} $1_vesting_TerminateEvent($admin: int, $vesting_contract_address: int): $1_vesting_TerminateEvent; -function {:inline} $Update'$1_vesting_TerminateEvent'_admin(s: $1_vesting_TerminateEvent, x: int): $1_vesting_TerminateEvent { - $1_vesting_TerminateEvent(x, $vesting_contract_address#$1_vesting_TerminateEvent(s)) -} -function {:inline} $Update'$1_vesting_TerminateEvent'_vesting_contract_address(s: $1_vesting_TerminateEvent, x: int): $1_vesting_TerminateEvent { - $1_vesting_TerminateEvent($admin#$1_vesting_TerminateEvent(s), x) -} -function $IsValid'$1_vesting_TerminateEvent'(s: $1_vesting_TerminateEvent): bool { - $IsValid'address'($admin#$1_vesting_TerminateEvent(s)) - && $IsValid'address'($vesting_contract_address#$1_vesting_TerminateEvent(s)) -} -function {:inline} $IsEqual'$1_vesting_TerminateEvent'(s1: $1_vesting_TerminateEvent, s2: $1_vesting_TerminateEvent): bool { - s1 == s2 -} - -// struct vesting::UnlockRewardsEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:215:5+176 -type {:datatype} $1_vesting_UnlockRewardsEvent; -function {:constructor} $1_vesting_UnlockRewardsEvent($admin: int, $vesting_contract_address: int, $staking_pool_address: int, $amount: int): $1_vesting_UnlockRewardsEvent; -function {:inline} $Update'$1_vesting_UnlockRewardsEvent'_admin(s: $1_vesting_UnlockRewardsEvent, x: int): $1_vesting_UnlockRewardsEvent { - $1_vesting_UnlockRewardsEvent(x, $vesting_contract_address#$1_vesting_UnlockRewardsEvent(s), $staking_pool_address#$1_vesting_UnlockRewardsEvent(s), $amount#$1_vesting_UnlockRewardsEvent(s)) -} -function {:inline} $Update'$1_vesting_UnlockRewardsEvent'_vesting_contract_address(s: $1_vesting_UnlockRewardsEvent, x: int): $1_vesting_UnlockRewardsEvent { - $1_vesting_UnlockRewardsEvent($admin#$1_vesting_UnlockRewardsEvent(s), x, $staking_pool_address#$1_vesting_UnlockRewardsEvent(s), $amount#$1_vesting_UnlockRewardsEvent(s)) -} -function {:inline} $Update'$1_vesting_UnlockRewardsEvent'_staking_pool_address(s: $1_vesting_UnlockRewardsEvent, x: int): $1_vesting_UnlockRewardsEvent { - $1_vesting_UnlockRewardsEvent($admin#$1_vesting_UnlockRewardsEvent(s), $vesting_contract_address#$1_vesting_UnlockRewardsEvent(s), x, $amount#$1_vesting_UnlockRewardsEvent(s)) -} -function {:inline} $Update'$1_vesting_UnlockRewardsEvent'_amount(s: $1_vesting_UnlockRewardsEvent, x: int): $1_vesting_UnlockRewardsEvent { - $1_vesting_UnlockRewardsEvent($admin#$1_vesting_UnlockRewardsEvent(s), $vesting_contract_address#$1_vesting_UnlockRewardsEvent(s), $staking_pool_address#$1_vesting_UnlockRewardsEvent(s), x) -} -function $IsValid'$1_vesting_UnlockRewardsEvent'(s: $1_vesting_UnlockRewardsEvent): bool { - $IsValid'address'($admin#$1_vesting_UnlockRewardsEvent(s)) - && $IsValid'address'($vesting_contract_address#$1_vesting_UnlockRewardsEvent(s)) - && $IsValid'address'($staking_pool_address#$1_vesting_UnlockRewardsEvent(s)) - && $IsValid'u64'($amount#$1_vesting_UnlockRewardsEvent(s)) -} -function {:inline} $IsEqual'$1_vesting_UnlockRewardsEvent'(s1: $1_vesting_UnlockRewardsEvent, s2: $1_vesting_UnlockRewardsEvent): bool { - s1 == s2 -} - -// struct vesting::UpdateOperatorEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:183:5+254 -type {:datatype} $1_vesting_UpdateOperatorEvent; -function {:constructor} $1_vesting_UpdateOperatorEvent($admin: int, $vesting_contract_address: int, $staking_pool_address: int, $old_operator: int, $new_operator: int, $commission_percentage: int): $1_vesting_UpdateOperatorEvent; -function {:inline} $Update'$1_vesting_UpdateOperatorEvent'_admin(s: $1_vesting_UpdateOperatorEvent, x: int): $1_vesting_UpdateOperatorEvent { - $1_vesting_UpdateOperatorEvent(x, $vesting_contract_address#$1_vesting_UpdateOperatorEvent(s), $staking_pool_address#$1_vesting_UpdateOperatorEvent(s), $old_operator#$1_vesting_UpdateOperatorEvent(s), $new_operator#$1_vesting_UpdateOperatorEvent(s), $commission_percentage#$1_vesting_UpdateOperatorEvent(s)) -} -function {:inline} $Update'$1_vesting_UpdateOperatorEvent'_vesting_contract_address(s: $1_vesting_UpdateOperatorEvent, x: int): $1_vesting_UpdateOperatorEvent { - $1_vesting_UpdateOperatorEvent($admin#$1_vesting_UpdateOperatorEvent(s), x, $staking_pool_address#$1_vesting_UpdateOperatorEvent(s), $old_operator#$1_vesting_UpdateOperatorEvent(s), $new_operator#$1_vesting_UpdateOperatorEvent(s), $commission_percentage#$1_vesting_UpdateOperatorEvent(s)) -} -function {:inline} $Update'$1_vesting_UpdateOperatorEvent'_staking_pool_address(s: $1_vesting_UpdateOperatorEvent, x: int): $1_vesting_UpdateOperatorEvent { - $1_vesting_UpdateOperatorEvent($admin#$1_vesting_UpdateOperatorEvent(s), $vesting_contract_address#$1_vesting_UpdateOperatorEvent(s), x, $old_operator#$1_vesting_UpdateOperatorEvent(s), $new_operator#$1_vesting_UpdateOperatorEvent(s), $commission_percentage#$1_vesting_UpdateOperatorEvent(s)) -} -function {:inline} $Update'$1_vesting_UpdateOperatorEvent'_old_operator(s: $1_vesting_UpdateOperatorEvent, x: int): $1_vesting_UpdateOperatorEvent { - $1_vesting_UpdateOperatorEvent($admin#$1_vesting_UpdateOperatorEvent(s), $vesting_contract_address#$1_vesting_UpdateOperatorEvent(s), $staking_pool_address#$1_vesting_UpdateOperatorEvent(s), x, $new_operator#$1_vesting_UpdateOperatorEvent(s), $commission_percentage#$1_vesting_UpdateOperatorEvent(s)) -} -function {:inline} $Update'$1_vesting_UpdateOperatorEvent'_new_operator(s: $1_vesting_UpdateOperatorEvent, x: int): $1_vesting_UpdateOperatorEvent { - $1_vesting_UpdateOperatorEvent($admin#$1_vesting_UpdateOperatorEvent(s), $vesting_contract_address#$1_vesting_UpdateOperatorEvent(s), $staking_pool_address#$1_vesting_UpdateOperatorEvent(s), $old_operator#$1_vesting_UpdateOperatorEvent(s), x, $commission_percentage#$1_vesting_UpdateOperatorEvent(s)) -} -function {:inline} $Update'$1_vesting_UpdateOperatorEvent'_commission_percentage(s: $1_vesting_UpdateOperatorEvent, x: int): $1_vesting_UpdateOperatorEvent { - $1_vesting_UpdateOperatorEvent($admin#$1_vesting_UpdateOperatorEvent(s), $vesting_contract_address#$1_vesting_UpdateOperatorEvent(s), $staking_pool_address#$1_vesting_UpdateOperatorEvent(s), $old_operator#$1_vesting_UpdateOperatorEvent(s), $new_operator#$1_vesting_UpdateOperatorEvent(s), x) -} -function $IsValid'$1_vesting_UpdateOperatorEvent'(s: $1_vesting_UpdateOperatorEvent): bool { - $IsValid'address'($admin#$1_vesting_UpdateOperatorEvent(s)) - && $IsValid'address'($vesting_contract_address#$1_vesting_UpdateOperatorEvent(s)) - && $IsValid'address'($staking_pool_address#$1_vesting_UpdateOperatorEvent(s)) - && $IsValid'address'($old_operator#$1_vesting_UpdateOperatorEvent(s)) - && $IsValid'address'($new_operator#$1_vesting_UpdateOperatorEvent(s)) - && $IsValid'u64'($commission_percentage#$1_vesting_UpdateOperatorEvent(s)) -} -function {:inline} $IsEqual'$1_vesting_UpdateOperatorEvent'(s1: $1_vesting_UpdateOperatorEvent, s2: $1_vesting_UpdateOperatorEvent): bool { - s1 == s2 -} - -// struct vesting::VestEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:222:5+195 -type {:datatype} $1_vesting_VestEvent; -function {:constructor} $1_vesting_VestEvent($admin: int, $vesting_contract_address: int, $staking_pool_address: int, $period_vested: int, $amount: int): $1_vesting_VestEvent; -function {:inline} $Update'$1_vesting_VestEvent'_admin(s: $1_vesting_VestEvent, x: int): $1_vesting_VestEvent { - $1_vesting_VestEvent(x, $vesting_contract_address#$1_vesting_VestEvent(s), $staking_pool_address#$1_vesting_VestEvent(s), $period_vested#$1_vesting_VestEvent(s), $amount#$1_vesting_VestEvent(s)) -} -function {:inline} $Update'$1_vesting_VestEvent'_vesting_contract_address(s: $1_vesting_VestEvent, x: int): $1_vesting_VestEvent { - $1_vesting_VestEvent($admin#$1_vesting_VestEvent(s), x, $staking_pool_address#$1_vesting_VestEvent(s), $period_vested#$1_vesting_VestEvent(s), $amount#$1_vesting_VestEvent(s)) -} -function {:inline} $Update'$1_vesting_VestEvent'_staking_pool_address(s: $1_vesting_VestEvent, x: int): $1_vesting_VestEvent { - $1_vesting_VestEvent($admin#$1_vesting_VestEvent(s), $vesting_contract_address#$1_vesting_VestEvent(s), x, $period_vested#$1_vesting_VestEvent(s), $amount#$1_vesting_VestEvent(s)) -} -function {:inline} $Update'$1_vesting_VestEvent'_period_vested(s: $1_vesting_VestEvent, x: int): $1_vesting_VestEvent { - $1_vesting_VestEvent($admin#$1_vesting_VestEvent(s), $vesting_contract_address#$1_vesting_VestEvent(s), $staking_pool_address#$1_vesting_VestEvent(s), x, $amount#$1_vesting_VestEvent(s)) -} -function {:inline} $Update'$1_vesting_VestEvent'_amount(s: $1_vesting_VestEvent, x: int): $1_vesting_VestEvent { - $1_vesting_VestEvent($admin#$1_vesting_VestEvent(s), $vesting_contract_address#$1_vesting_VestEvent(s), $staking_pool_address#$1_vesting_VestEvent(s), $period_vested#$1_vesting_VestEvent(s), x) -} -function $IsValid'$1_vesting_VestEvent'(s: $1_vesting_VestEvent): bool { - $IsValid'address'($admin#$1_vesting_VestEvent(s)) - && $IsValid'address'($vesting_contract_address#$1_vesting_VestEvent(s)) - && $IsValid'address'($staking_pool_address#$1_vesting_VestEvent(s)) - && $IsValid'u64'($period_vested#$1_vesting_VestEvent(s)) - && $IsValid'u64'($amount#$1_vesting_VestEvent(s)) -} -function {:inline} $IsEqual'$1_vesting_VestEvent'(s1: $1_vesting_VestEvent, s2: $1_vesting_VestEvent): bool { - s1 == s2 -} - -// struct vesting::VestingAccountManagement at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:161:5+90 -type {:datatype} $1_vesting_VestingAccountManagement; -function {:constructor} $1_vesting_VestingAccountManagement($roles: Table int (int)): $1_vesting_VestingAccountManagement; -function {:inline} $Update'$1_vesting_VestingAccountManagement'_roles(s: $1_vesting_VestingAccountManagement, x: Table int (int)): $1_vesting_VestingAccountManagement { - $1_vesting_VestingAccountManagement(x) -} -function $IsValid'$1_vesting_VestingAccountManagement'(s: $1_vesting_VestingAccountManagement): bool { - $IsValid'$1_simple_map_SimpleMap'$1_string_String_address''($roles#$1_vesting_VestingAccountManagement(s)) -} -function {:inline} $IsEqual'$1_vesting_VestingAccountManagement'(s1: $1_vesting_VestingAccountManagement, s2: $1_vesting_VestingAccountManagement): bool { - $IsEqual'$1_simple_map_SimpleMap'$1_string_String_address''($roles#$1_vesting_VestingAccountManagement(s1), $roles#$1_vesting_VestingAccountManagement(s2))} -var $1_vesting_VestingAccountManagement_$memory: $Memory $1_vesting_VestingAccountManagement; - -// struct vesting::VestingContract at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:134:5+1189 -type {:datatype} $1_vesting_VestingContract; -function {:constructor} $1_vesting_VestingContract($state: int, $admin: int, $grant_pool: $1_pool_u64_Pool, $beneficiaries: Table int (int), $vesting_schedule: $1_vesting_VestingSchedule, $withdrawal_address: int, $staking: $1_vesting_StakingInfo, $remaining_grant: int, $signer_cap: $1_account_SignerCapability, $update_operator_events: $1_event_EventHandle'$1_vesting_UpdateOperatorEvent', $update_voter_events: $1_event_EventHandle'$1_vesting_UpdateVoterEvent', $reset_lockup_events: $1_event_EventHandle'$1_vesting_ResetLockupEvent', $set_beneficiary_events: $1_event_EventHandle'$1_vesting_SetBeneficiaryEvent', $unlock_rewards_events: $1_event_EventHandle'$1_vesting_UnlockRewardsEvent', $vest_events: $1_event_EventHandle'$1_vesting_VestEvent', $distribute_events: $1_event_EventHandle'$1_vesting_DistributeEvent', $terminate_events: $1_event_EventHandle'$1_vesting_TerminateEvent', $admin_withdraw_events: $1_event_EventHandle'$1_vesting_AdminWithdrawEvent'): $1_vesting_VestingContract; -function {:inline} $Update'$1_vesting_VestingContract'_state(s: $1_vesting_VestingContract, x: int): $1_vesting_VestingContract { - $1_vesting_VestingContract(x, $admin#$1_vesting_VestingContract(s), $grant_pool#$1_vesting_VestingContract(s), $beneficiaries#$1_vesting_VestingContract(s), $vesting_schedule#$1_vesting_VestingContract(s), $withdrawal_address#$1_vesting_VestingContract(s), $staking#$1_vesting_VestingContract(s), $remaining_grant#$1_vesting_VestingContract(s), $signer_cap#$1_vesting_VestingContract(s), $update_operator_events#$1_vesting_VestingContract(s), $update_voter_events#$1_vesting_VestingContract(s), $reset_lockup_events#$1_vesting_VestingContract(s), $set_beneficiary_events#$1_vesting_VestingContract(s), $unlock_rewards_events#$1_vesting_VestingContract(s), $vest_events#$1_vesting_VestingContract(s), $distribute_events#$1_vesting_VestingContract(s), $terminate_events#$1_vesting_VestingContract(s), $admin_withdraw_events#$1_vesting_VestingContract(s)) -} -function {:inline} $Update'$1_vesting_VestingContract'_admin(s: $1_vesting_VestingContract, x: int): $1_vesting_VestingContract { - $1_vesting_VestingContract($state#$1_vesting_VestingContract(s), x, $grant_pool#$1_vesting_VestingContract(s), $beneficiaries#$1_vesting_VestingContract(s), $vesting_schedule#$1_vesting_VestingContract(s), $withdrawal_address#$1_vesting_VestingContract(s), $staking#$1_vesting_VestingContract(s), $remaining_grant#$1_vesting_VestingContract(s), $signer_cap#$1_vesting_VestingContract(s), $update_operator_events#$1_vesting_VestingContract(s), $update_voter_events#$1_vesting_VestingContract(s), $reset_lockup_events#$1_vesting_VestingContract(s), $set_beneficiary_events#$1_vesting_VestingContract(s), $unlock_rewards_events#$1_vesting_VestingContract(s), $vest_events#$1_vesting_VestingContract(s), $distribute_events#$1_vesting_VestingContract(s), $terminate_events#$1_vesting_VestingContract(s), $admin_withdraw_events#$1_vesting_VestingContract(s)) -} -function {:inline} $Update'$1_vesting_VestingContract'_grant_pool(s: $1_vesting_VestingContract, x: $1_pool_u64_Pool): $1_vesting_VestingContract { - $1_vesting_VestingContract($state#$1_vesting_VestingContract(s), $admin#$1_vesting_VestingContract(s), x, $beneficiaries#$1_vesting_VestingContract(s), $vesting_schedule#$1_vesting_VestingContract(s), $withdrawal_address#$1_vesting_VestingContract(s), $staking#$1_vesting_VestingContract(s), $remaining_grant#$1_vesting_VestingContract(s), $signer_cap#$1_vesting_VestingContract(s), $update_operator_events#$1_vesting_VestingContract(s), $update_voter_events#$1_vesting_VestingContract(s), $reset_lockup_events#$1_vesting_VestingContract(s), $set_beneficiary_events#$1_vesting_VestingContract(s), $unlock_rewards_events#$1_vesting_VestingContract(s), $vest_events#$1_vesting_VestingContract(s), $distribute_events#$1_vesting_VestingContract(s), $terminate_events#$1_vesting_VestingContract(s), $admin_withdraw_events#$1_vesting_VestingContract(s)) -} -function {:inline} $Update'$1_vesting_VestingContract'_beneficiaries(s: $1_vesting_VestingContract, x: Table int (int)): $1_vesting_VestingContract { - $1_vesting_VestingContract($state#$1_vesting_VestingContract(s), $admin#$1_vesting_VestingContract(s), $grant_pool#$1_vesting_VestingContract(s), x, $vesting_schedule#$1_vesting_VestingContract(s), $withdrawal_address#$1_vesting_VestingContract(s), $staking#$1_vesting_VestingContract(s), $remaining_grant#$1_vesting_VestingContract(s), $signer_cap#$1_vesting_VestingContract(s), $update_operator_events#$1_vesting_VestingContract(s), $update_voter_events#$1_vesting_VestingContract(s), $reset_lockup_events#$1_vesting_VestingContract(s), $set_beneficiary_events#$1_vesting_VestingContract(s), $unlock_rewards_events#$1_vesting_VestingContract(s), $vest_events#$1_vesting_VestingContract(s), $distribute_events#$1_vesting_VestingContract(s), $terminate_events#$1_vesting_VestingContract(s), $admin_withdraw_events#$1_vesting_VestingContract(s)) -} -function {:inline} $Update'$1_vesting_VestingContract'_vesting_schedule(s: $1_vesting_VestingContract, x: $1_vesting_VestingSchedule): $1_vesting_VestingContract { - $1_vesting_VestingContract($state#$1_vesting_VestingContract(s), $admin#$1_vesting_VestingContract(s), $grant_pool#$1_vesting_VestingContract(s), $beneficiaries#$1_vesting_VestingContract(s), x, $withdrawal_address#$1_vesting_VestingContract(s), $staking#$1_vesting_VestingContract(s), $remaining_grant#$1_vesting_VestingContract(s), $signer_cap#$1_vesting_VestingContract(s), $update_operator_events#$1_vesting_VestingContract(s), $update_voter_events#$1_vesting_VestingContract(s), $reset_lockup_events#$1_vesting_VestingContract(s), $set_beneficiary_events#$1_vesting_VestingContract(s), $unlock_rewards_events#$1_vesting_VestingContract(s), $vest_events#$1_vesting_VestingContract(s), $distribute_events#$1_vesting_VestingContract(s), $terminate_events#$1_vesting_VestingContract(s), $admin_withdraw_events#$1_vesting_VestingContract(s)) -} -function {:inline} $Update'$1_vesting_VestingContract'_withdrawal_address(s: $1_vesting_VestingContract, x: int): $1_vesting_VestingContract { - $1_vesting_VestingContract($state#$1_vesting_VestingContract(s), $admin#$1_vesting_VestingContract(s), $grant_pool#$1_vesting_VestingContract(s), $beneficiaries#$1_vesting_VestingContract(s), $vesting_schedule#$1_vesting_VestingContract(s), x, $staking#$1_vesting_VestingContract(s), $remaining_grant#$1_vesting_VestingContract(s), $signer_cap#$1_vesting_VestingContract(s), $update_operator_events#$1_vesting_VestingContract(s), $update_voter_events#$1_vesting_VestingContract(s), $reset_lockup_events#$1_vesting_VestingContract(s), $set_beneficiary_events#$1_vesting_VestingContract(s), $unlock_rewards_events#$1_vesting_VestingContract(s), $vest_events#$1_vesting_VestingContract(s), $distribute_events#$1_vesting_VestingContract(s), $terminate_events#$1_vesting_VestingContract(s), $admin_withdraw_events#$1_vesting_VestingContract(s)) -} -function {:inline} $Update'$1_vesting_VestingContract'_staking(s: $1_vesting_VestingContract, x: $1_vesting_StakingInfo): $1_vesting_VestingContract { - $1_vesting_VestingContract($state#$1_vesting_VestingContract(s), $admin#$1_vesting_VestingContract(s), $grant_pool#$1_vesting_VestingContract(s), $beneficiaries#$1_vesting_VestingContract(s), $vesting_schedule#$1_vesting_VestingContract(s), $withdrawal_address#$1_vesting_VestingContract(s), x, $remaining_grant#$1_vesting_VestingContract(s), $signer_cap#$1_vesting_VestingContract(s), $update_operator_events#$1_vesting_VestingContract(s), $update_voter_events#$1_vesting_VestingContract(s), $reset_lockup_events#$1_vesting_VestingContract(s), $set_beneficiary_events#$1_vesting_VestingContract(s), $unlock_rewards_events#$1_vesting_VestingContract(s), $vest_events#$1_vesting_VestingContract(s), $distribute_events#$1_vesting_VestingContract(s), $terminate_events#$1_vesting_VestingContract(s), $admin_withdraw_events#$1_vesting_VestingContract(s)) -} -function {:inline} $Update'$1_vesting_VestingContract'_remaining_grant(s: $1_vesting_VestingContract, x: int): $1_vesting_VestingContract { - $1_vesting_VestingContract($state#$1_vesting_VestingContract(s), $admin#$1_vesting_VestingContract(s), $grant_pool#$1_vesting_VestingContract(s), $beneficiaries#$1_vesting_VestingContract(s), $vesting_schedule#$1_vesting_VestingContract(s), $withdrawal_address#$1_vesting_VestingContract(s), $staking#$1_vesting_VestingContract(s), x, $signer_cap#$1_vesting_VestingContract(s), $update_operator_events#$1_vesting_VestingContract(s), $update_voter_events#$1_vesting_VestingContract(s), $reset_lockup_events#$1_vesting_VestingContract(s), $set_beneficiary_events#$1_vesting_VestingContract(s), $unlock_rewards_events#$1_vesting_VestingContract(s), $vest_events#$1_vesting_VestingContract(s), $distribute_events#$1_vesting_VestingContract(s), $terminate_events#$1_vesting_VestingContract(s), $admin_withdraw_events#$1_vesting_VestingContract(s)) -} -function {:inline} $Update'$1_vesting_VestingContract'_signer_cap(s: $1_vesting_VestingContract, x: $1_account_SignerCapability): $1_vesting_VestingContract { - $1_vesting_VestingContract($state#$1_vesting_VestingContract(s), $admin#$1_vesting_VestingContract(s), $grant_pool#$1_vesting_VestingContract(s), $beneficiaries#$1_vesting_VestingContract(s), $vesting_schedule#$1_vesting_VestingContract(s), $withdrawal_address#$1_vesting_VestingContract(s), $staking#$1_vesting_VestingContract(s), $remaining_grant#$1_vesting_VestingContract(s), x, $update_operator_events#$1_vesting_VestingContract(s), $update_voter_events#$1_vesting_VestingContract(s), $reset_lockup_events#$1_vesting_VestingContract(s), $set_beneficiary_events#$1_vesting_VestingContract(s), $unlock_rewards_events#$1_vesting_VestingContract(s), $vest_events#$1_vesting_VestingContract(s), $distribute_events#$1_vesting_VestingContract(s), $terminate_events#$1_vesting_VestingContract(s), $admin_withdraw_events#$1_vesting_VestingContract(s)) -} -function {:inline} $Update'$1_vesting_VestingContract'_update_operator_events(s: $1_vesting_VestingContract, x: $1_event_EventHandle'$1_vesting_UpdateOperatorEvent'): $1_vesting_VestingContract { - $1_vesting_VestingContract($state#$1_vesting_VestingContract(s), $admin#$1_vesting_VestingContract(s), $grant_pool#$1_vesting_VestingContract(s), $beneficiaries#$1_vesting_VestingContract(s), $vesting_schedule#$1_vesting_VestingContract(s), $withdrawal_address#$1_vesting_VestingContract(s), $staking#$1_vesting_VestingContract(s), $remaining_grant#$1_vesting_VestingContract(s), $signer_cap#$1_vesting_VestingContract(s), x, $update_voter_events#$1_vesting_VestingContract(s), $reset_lockup_events#$1_vesting_VestingContract(s), $set_beneficiary_events#$1_vesting_VestingContract(s), $unlock_rewards_events#$1_vesting_VestingContract(s), $vest_events#$1_vesting_VestingContract(s), $distribute_events#$1_vesting_VestingContract(s), $terminate_events#$1_vesting_VestingContract(s), $admin_withdraw_events#$1_vesting_VestingContract(s)) -} -function {:inline} $Update'$1_vesting_VestingContract'_update_voter_events(s: $1_vesting_VestingContract, x: $1_event_EventHandle'$1_vesting_UpdateVoterEvent'): $1_vesting_VestingContract { - $1_vesting_VestingContract($state#$1_vesting_VestingContract(s), $admin#$1_vesting_VestingContract(s), $grant_pool#$1_vesting_VestingContract(s), $beneficiaries#$1_vesting_VestingContract(s), $vesting_schedule#$1_vesting_VestingContract(s), $withdrawal_address#$1_vesting_VestingContract(s), $staking#$1_vesting_VestingContract(s), $remaining_grant#$1_vesting_VestingContract(s), $signer_cap#$1_vesting_VestingContract(s), $update_operator_events#$1_vesting_VestingContract(s), x, $reset_lockup_events#$1_vesting_VestingContract(s), $set_beneficiary_events#$1_vesting_VestingContract(s), $unlock_rewards_events#$1_vesting_VestingContract(s), $vest_events#$1_vesting_VestingContract(s), $distribute_events#$1_vesting_VestingContract(s), $terminate_events#$1_vesting_VestingContract(s), $admin_withdraw_events#$1_vesting_VestingContract(s)) -} -function {:inline} $Update'$1_vesting_VestingContract'_reset_lockup_events(s: $1_vesting_VestingContract, x: $1_event_EventHandle'$1_vesting_ResetLockupEvent'): $1_vesting_VestingContract { - $1_vesting_VestingContract($state#$1_vesting_VestingContract(s), $admin#$1_vesting_VestingContract(s), $grant_pool#$1_vesting_VestingContract(s), $beneficiaries#$1_vesting_VestingContract(s), $vesting_schedule#$1_vesting_VestingContract(s), $withdrawal_address#$1_vesting_VestingContract(s), $staking#$1_vesting_VestingContract(s), $remaining_grant#$1_vesting_VestingContract(s), $signer_cap#$1_vesting_VestingContract(s), $update_operator_events#$1_vesting_VestingContract(s), $update_voter_events#$1_vesting_VestingContract(s), x, $set_beneficiary_events#$1_vesting_VestingContract(s), $unlock_rewards_events#$1_vesting_VestingContract(s), $vest_events#$1_vesting_VestingContract(s), $distribute_events#$1_vesting_VestingContract(s), $terminate_events#$1_vesting_VestingContract(s), $admin_withdraw_events#$1_vesting_VestingContract(s)) -} -function {:inline} $Update'$1_vesting_VestingContract'_set_beneficiary_events(s: $1_vesting_VestingContract, x: $1_event_EventHandle'$1_vesting_SetBeneficiaryEvent'): $1_vesting_VestingContract { - $1_vesting_VestingContract($state#$1_vesting_VestingContract(s), $admin#$1_vesting_VestingContract(s), $grant_pool#$1_vesting_VestingContract(s), $beneficiaries#$1_vesting_VestingContract(s), $vesting_schedule#$1_vesting_VestingContract(s), $withdrawal_address#$1_vesting_VestingContract(s), $staking#$1_vesting_VestingContract(s), $remaining_grant#$1_vesting_VestingContract(s), $signer_cap#$1_vesting_VestingContract(s), $update_operator_events#$1_vesting_VestingContract(s), $update_voter_events#$1_vesting_VestingContract(s), $reset_lockup_events#$1_vesting_VestingContract(s), x, $unlock_rewards_events#$1_vesting_VestingContract(s), $vest_events#$1_vesting_VestingContract(s), $distribute_events#$1_vesting_VestingContract(s), $terminate_events#$1_vesting_VestingContract(s), $admin_withdraw_events#$1_vesting_VestingContract(s)) -} -function {:inline} $Update'$1_vesting_VestingContract'_unlock_rewards_events(s: $1_vesting_VestingContract, x: $1_event_EventHandle'$1_vesting_UnlockRewardsEvent'): $1_vesting_VestingContract { - $1_vesting_VestingContract($state#$1_vesting_VestingContract(s), $admin#$1_vesting_VestingContract(s), $grant_pool#$1_vesting_VestingContract(s), $beneficiaries#$1_vesting_VestingContract(s), $vesting_schedule#$1_vesting_VestingContract(s), $withdrawal_address#$1_vesting_VestingContract(s), $staking#$1_vesting_VestingContract(s), $remaining_grant#$1_vesting_VestingContract(s), $signer_cap#$1_vesting_VestingContract(s), $update_operator_events#$1_vesting_VestingContract(s), $update_voter_events#$1_vesting_VestingContract(s), $reset_lockup_events#$1_vesting_VestingContract(s), $set_beneficiary_events#$1_vesting_VestingContract(s), x, $vest_events#$1_vesting_VestingContract(s), $distribute_events#$1_vesting_VestingContract(s), $terminate_events#$1_vesting_VestingContract(s), $admin_withdraw_events#$1_vesting_VestingContract(s)) -} -function {:inline} $Update'$1_vesting_VestingContract'_vest_events(s: $1_vesting_VestingContract, x: $1_event_EventHandle'$1_vesting_VestEvent'): $1_vesting_VestingContract { - $1_vesting_VestingContract($state#$1_vesting_VestingContract(s), $admin#$1_vesting_VestingContract(s), $grant_pool#$1_vesting_VestingContract(s), $beneficiaries#$1_vesting_VestingContract(s), $vesting_schedule#$1_vesting_VestingContract(s), $withdrawal_address#$1_vesting_VestingContract(s), $staking#$1_vesting_VestingContract(s), $remaining_grant#$1_vesting_VestingContract(s), $signer_cap#$1_vesting_VestingContract(s), $update_operator_events#$1_vesting_VestingContract(s), $update_voter_events#$1_vesting_VestingContract(s), $reset_lockup_events#$1_vesting_VestingContract(s), $set_beneficiary_events#$1_vesting_VestingContract(s), $unlock_rewards_events#$1_vesting_VestingContract(s), x, $distribute_events#$1_vesting_VestingContract(s), $terminate_events#$1_vesting_VestingContract(s), $admin_withdraw_events#$1_vesting_VestingContract(s)) -} -function {:inline} $Update'$1_vesting_VestingContract'_distribute_events(s: $1_vesting_VestingContract, x: $1_event_EventHandle'$1_vesting_DistributeEvent'): $1_vesting_VestingContract { - $1_vesting_VestingContract($state#$1_vesting_VestingContract(s), $admin#$1_vesting_VestingContract(s), $grant_pool#$1_vesting_VestingContract(s), $beneficiaries#$1_vesting_VestingContract(s), $vesting_schedule#$1_vesting_VestingContract(s), $withdrawal_address#$1_vesting_VestingContract(s), $staking#$1_vesting_VestingContract(s), $remaining_grant#$1_vesting_VestingContract(s), $signer_cap#$1_vesting_VestingContract(s), $update_operator_events#$1_vesting_VestingContract(s), $update_voter_events#$1_vesting_VestingContract(s), $reset_lockup_events#$1_vesting_VestingContract(s), $set_beneficiary_events#$1_vesting_VestingContract(s), $unlock_rewards_events#$1_vesting_VestingContract(s), $vest_events#$1_vesting_VestingContract(s), x, $terminate_events#$1_vesting_VestingContract(s), $admin_withdraw_events#$1_vesting_VestingContract(s)) -} -function {:inline} $Update'$1_vesting_VestingContract'_terminate_events(s: $1_vesting_VestingContract, x: $1_event_EventHandle'$1_vesting_TerminateEvent'): $1_vesting_VestingContract { - $1_vesting_VestingContract($state#$1_vesting_VestingContract(s), $admin#$1_vesting_VestingContract(s), $grant_pool#$1_vesting_VestingContract(s), $beneficiaries#$1_vesting_VestingContract(s), $vesting_schedule#$1_vesting_VestingContract(s), $withdrawal_address#$1_vesting_VestingContract(s), $staking#$1_vesting_VestingContract(s), $remaining_grant#$1_vesting_VestingContract(s), $signer_cap#$1_vesting_VestingContract(s), $update_operator_events#$1_vesting_VestingContract(s), $update_voter_events#$1_vesting_VestingContract(s), $reset_lockup_events#$1_vesting_VestingContract(s), $set_beneficiary_events#$1_vesting_VestingContract(s), $unlock_rewards_events#$1_vesting_VestingContract(s), $vest_events#$1_vesting_VestingContract(s), $distribute_events#$1_vesting_VestingContract(s), x, $admin_withdraw_events#$1_vesting_VestingContract(s)) -} -function {:inline} $Update'$1_vesting_VestingContract'_admin_withdraw_events(s: $1_vesting_VestingContract, x: $1_event_EventHandle'$1_vesting_AdminWithdrawEvent'): $1_vesting_VestingContract { - $1_vesting_VestingContract($state#$1_vesting_VestingContract(s), $admin#$1_vesting_VestingContract(s), $grant_pool#$1_vesting_VestingContract(s), $beneficiaries#$1_vesting_VestingContract(s), $vesting_schedule#$1_vesting_VestingContract(s), $withdrawal_address#$1_vesting_VestingContract(s), $staking#$1_vesting_VestingContract(s), $remaining_grant#$1_vesting_VestingContract(s), $signer_cap#$1_vesting_VestingContract(s), $update_operator_events#$1_vesting_VestingContract(s), $update_voter_events#$1_vesting_VestingContract(s), $reset_lockup_events#$1_vesting_VestingContract(s), $set_beneficiary_events#$1_vesting_VestingContract(s), $unlock_rewards_events#$1_vesting_VestingContract(s), $vest_events#$1_vesting_VestingContract(s), $distribute_events#$1_vesting_VestingContract(s), $terminate_events#$1_vesting_VestingContract(s), x) -} -function $IsValid'$1_vesting_VestingContract'(s: $1_vesting_VestingContract): bool { - $IsValid'u64'($state#$1_vesting_VestingContract(s)) - && $IsValid'address'($admin#$1_vesting_VestingContract(s)) - && $IsValid'$1_pool_u64_Pool'($grant_pool#$1_vesting_VestingContract(s)) - && $IsValid'$1_simple_map_SimpleMap'address_address''($beneficiaries#$1_vesting_VestingContract(s)) - && $IsValid'$1_vesting_VestingSchedule'($vesting_schedule#$1_vesting_VestingContract(s)) - && $IsValid'address'($withdrawal_address#$1_vesting_VestingContract(s)) - && $IsValid'$1_vesting_StakingInfo'($staking#$1_vesting_VestingContract(s)) - && $IsValid'u64'($remaining_grant#$1_vesting_VestingContract(s)) - && $IsValid'$1_account_SignerCapability'($signer_cap#$1_vesting_VestingContract(s)) - && $IsValid'$1_event_EventHandle'$1_vesting_UpdateOperatorEvent''($update_operator_events#$1_vesting_VestingContract(s)) - && $IsValid'$1_event_EventHandle'$1_vesting_UpdateVoterEvent''($update_voter_events#$1_vesting_VestingContract(s)) - && $IsValid'$1_event_EventHandle'$1_vesting_ResetLockupEvent''($reset_lockup_events#$1_vesting_VestingContract(s)) - && $IsValid'$1_event_EventHandle'$1_vesting_SetBeneficiaryEvent''($set_beneficiary_events#$1_vesting_VestingContract(s)) - && $IsValid'$1_event_EventHandle'$1_vesting_UnlockRewardsEvent''($unlock_rewards_events#$1_vesting_VestingContract(s)) - && $IsValid'$1_event_EventHandle'$1_vesting_VestEvent''($vest_events#$1_vesting_VestingContract(s)) - && $IsValid'$1_event_EventHandle'$1_vesting_DistributeEvent''($distribute_events#$1_vesting_VestingContract(s)) - && $IsValid'$1_event_EventHandle'$1_vesting_TerminateEvent''($terminate_events#$1_vesting_VestingContract(s)) - && $IsValid'$1_event_EventHandle'$1_vesting_AdminWithdrawEvent''($admin_withdraw_events#$1_vesting_VestingContract(s)) -} -function {:inline} $IsEqual'$1_vesting_VestingContract'(s1: $1_vesting_VestingContract, s2: $1_vesting_VestingContract): bool { - $IsEqual'u64'($state#$1_vesting_VestingContract(s1), $state#$1_vesting_VestingContract(s2)) - && $IsEqual'address'($admin#$1_vesting_VestingContract(s1), $admin#$1_vesting_VestingContract(s2)) - && $IsEqual'$1_pool_u64_Pool'($grant_pool#$1_vesting_VestingContract(s1), $grant_pool#$1_vesting_VestingContract(s2)) - && $IsEqual'$1_simple_map_SimpleMap'address_address''($beneficiaries#$1_vesting_VestingContract(s1), $beneficiaries#$1_vesting_VestingContract(s2)) - && $IsEqual'$1_vesting_VestingSchedule'($vesting_schedule#$1_vesting_VestingContract(s1), $vesting_schedule#$1_vesting_VestingContract(s2)) - && $IsEqual'address'($withdrawal_address#$1_vesting_VestingContract(s1), $withdrawal_address#$1_vesting_VestingContract(s2)) - && $IsEqual'$1_vesting_StakingInfo'($staking#$1_vesting_VestingContract(s1), $staking#$1_vesting_VestingContract(s2)) - && $IsEqual'u64'($remaining_grant#$1_vesting_VestingContract(s1), $remaining_grant#$1_vesting_VestingContract(s2)) - && $IsEqual'$1_account_SignerCapability'($signer_cap#$1_vesting_VestingContract(s1), $signer_cap#$1_vesting_VestingContract(s2)) - && $IsEqual'$1_event_EventHandle'$1_vesting_UpdateOperatorEvent''($update_operator_events#$1_vesting_VestingContract(s1), $update_operator_events#$1_vesting_VestingContract(s2)) - && $IsEqual'$1_event_EventHandle'$1_vesting_UpdateVoterEvent''($update_voter_events#$1_vesting_VestingContract(s1), $update_voter_events#$1_vesting_VestingContract(s2)) - && $IsEqual'$1_event_EventHandle'$1_vesting_ResetLockupEvent''($reset_lockup_events#$1_vesting_VestingContract(s1), $reset_lockup_events#$1_vesting_VestingContract(s2)) - && $IsEqual'$1_event_EventHandle'$1_vesting_SetBeneficiaryEvent''($set_beneficiary_events#$1_vesting_VestingContract(s1), $set_beneficiary_events#$1_vesting_VestingContract(s2)) - && $IsEqual'$1_event_EventHandle'$1_vesting_UnlockRewardsEvent''($unlock_rewards_events#$1_vesting_VestingContract(s1), $unlock_rewards_events#$1_vesting_VestingContract(s2)) - && $IsEqual'$1_event_EventHandle'$1_vesting_VestEvent''($vest_events#$1_vesting_VestingContract(s1), $vest_events#$1_vesting_VestingContract(s2)) - && $IsEqual'$1_event_EventHandle'$1_vesting_DistributeEvent''($distribute_events#$1_vesting_VestingContract(s1), $distribute_events#$1_vesting_VestingContract(s2)) - && $IsEqual'$1_event_EventHandle'$1_vesting_TerminateEvent''($terminate_events#$1_vesting_VestingContract(s1), $terminate_events#$1_vesting_VestingContract(s2)) - && $IsEqual'$1_event_EventHandle'$1_vesting_AdminWithdrawEvent''($admin_withdraw_events#$1_vesting_VestingContract(s1), $admin_withdraw_events#$1_vesting_VestingContract(s2))} -var $1_vesting_VestingContract_$memory: $Memory $1_vesting_VestingContract; - -// struct vesting::VestingSchedule at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:106:5+1037 -type {:datatype} $1_vesting_VestingSchedule; -function {:constructor} $1_vesting_VestingSchedule($schedule: Vec ($1_fixed_point32_FixedPoint32), $start_timestamp_secs: int, $period_duration: int, $last_vested_period: int): $1_vesting_VestingSchedule; -function {:inline} $Update'$1_vesting_VestingSchedule'_schedule(s: $1_vesting_VestingSchedule, x: Vec ($1_fixed_point32_FixedPoint32)): $1_vesting_VestingSchedule { - $1_vesting_VestingSchedule(x, $start_timestamp_secs#$1_vesting_VestingSchedule(s), $period_duration#$1_vesting_VestingSchedule(s), $last_vested_period#$1_vesting_VestingSchedule(s)) -} -function {:inline} $Update'$1_vesting_VestingSchedule'_start_timestamp_secs(s: $1_vesting_VestingSchedule, x: int): $1_vesting_VestingSchedule { - $1_vesting_VestingSchedule($schedule#$1_vesting_VestingSchedule(s), x, $period_duration#$1_vesting_VestingSchedule(s), $last_vested_period#$1_vesting_VestingSchedule(s)) -} -function {:inline} $Update'$1_vesting_VestingSchedule'_period_duration(s: $1_vesting_VestingSchedule, x: int): $1_vesting_VestingSchedule { - $1_vesting_VestingSchedule($schedule#$1_vesting_VestingSchedule(s), $start_timestamp_secs#$1_vesting_VestingSchedule(s), x, $last_vested_period#$1_vesting_VestingSchedule(s)) -} -function {:inline} $Update'$1_vesting_VestingSchedule'_last_vested_period(s: $1_vesting_VestingSchedule, x: int): $1_vesting_VestingSchedule { - $1_vesting_VestingSchedule($schedule#$1_vesting_VestingSchedule(s), $start_timestamp_secs#$1_vesting_VestingSchedule(s), $period_duration#$1_vesting_VestingSchedule(s), x) -} -function $IsValid'$1_vesting_VestingSchedule'(s: $1_vesting_VestingSchedule): bool { - $IsValid'vec'$1_fixed_point32_FixedPoint32''($schedule#$1_vesting_VestingSchedule(s)) - && $IsValid'u64'($start_timestamp_secs#$1_vesting_VestingSchedule(s)) - && $IsValid'u64'($period_duration#$1_vesting_VestingSchedule(s)) - && $IsValid'u64'($last_vested_period#$1_vesting_VestingSchedule(s)) -} -function {:inline} $IsEqual'$1_vesting_VestingSchedule'(s1: $1_vesting_VestingSchedule, s2: $1_vesting_VestingSchedule): bool { - $IsEqual'vec'$1_fixed_point32_FixedPoint32''($schedule#$1_vesting_VestingSchedule(s1), $schedule#$1_vesting_VestingSchedule(s2)) - && $IsEqual'u64'($start_timestamp_secs#$1_vesting_VestingSchedule(s1), $start_timestamp_secs#$1_vesting_VestingSchedule(s2)) - && $IsEqual'u64'($period_duration#$1_vesting_VestingSchedule(s1), $period_duration#$1_vesting_VestingSchedule(s2)) - && $IsEqual'u64'($last_vested_period#$1_vesting_VestingSchedule(s1), $last_vested_period#$1_vesting_VestingSchedule(s2))} - -// fun vesting::operator [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:321:5+244 -procedure {:timeLimit 1000} $1_vesting_operator$verify(_$t0: int) returns ($ret0: int) -{ - // declare local variables - var $t1: int; - var $t2: $1_vesting_VestingContract; - var $t3: $1_vesting_StakingInfo; - var $t4: int; - var $t0: int; - var $temp_0'address': int; - var $1_vesting_VestingContract_$memory#60: $Memory $1_vesting_VestingContract; - $t0 := _$t0; - - // verification entrypoint assumptions - call $InitVerification(); - - // bytecode translation starts here - // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:321:5+1 - assume {:print "$at(2,14901,14902)"} true; - assume $IsValid'address'($t0); - - // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:321:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); - (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; - (var j := $i_4; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); - - // @60 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:321:5+1 - $1_vesting_VestingContract_$memory#60 := $1_vesting_VestingContract_$memory; - - // trace_local[vesting_contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:321:5+1 - assume {:print "$track_local(57,14,0):", $t0} $t0 == $t0; - - // vesting::assert_vesting_contract_exists($t0) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:322:9+56 - assume {:print "$at(2,15000,15056)"} true; - call $1_vesting_assert_vesting_contract_exists($t0); - if ($abort_flag) { - assume {:print "$at(2,15000,15056)"} true; - $t1 := $abort_code; - assume {:print "$track_abort(57,14):", $t1} $t1 == $t1; - goto L2; - } - - // $t2 := get_global($t0) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:323:9+13 - assume {:print "$at(2,15066,15079)"} true; - if (!$ResourceExists($1_vesting_VestingContract_$memory, $t0)) { - call $ExecFailureAbort(); - } else { - $t2 := $ResourceValue($1_vesting_VestingContract_$memory, $t0); - } - if ($abort_flag) { - assume {:print "$at(2,15066,15079)"} true; - $t1 := $abort_code; - assume {:print "$track_abort(57,14):", $t1} $t1 == $t1; - goto L2; - } - - // $t3 := get_field.staking($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:323:9+64 - $t3 := $staking#$1_vesting_VestingContract($t2); - - // $t4 := get_field.operator($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:323:9+73 - $t4 := $operator#$1_vesting_StakingInfo($t3); - - // trace_return[0]($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:323:9+73 - assume {:print "$track_return(57,14,0):", $t4} $t4 == $t4; - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:324:5+1 - assume {:print "$at(2,15144,15145)"} true; -L1: - - // assert Not(Not(exists[@60]($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:36:9+61 - assume {:print "$at(3,1205,1266)"} true; - assert {:msg "assert_failed(3,1205,1266): function does not abort under this condition"} - !!$ResourceExists($1_vesting_VestingContract_$memory#60, $t0); - - // return $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:36:9+61 - $ret0 := $t4; - return; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:324:5+1 - assume {:print "$at(2,15144,15145)"} true; -L2: - - // assert Not(exists[@60]($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:35:5+135 - assume {:print "$at(3,1137,1272)"} true; - assert {:msg "assert_failed(3,1137,1272): abort not covered by any of the `aborts_if` clauses"} - !$ResourceExists($1_vesting_VestingContract_$memory#60, $t0); - - // abort($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:35:5+135 - $abort_code := $t1; - $abort_flag := true; - return; - -} - -// fun vesting::voter [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:331:5+238 -procedure {:timeLimit 1000} $1_vesting_voter$verify(_$t0: int) returns ($ret0: int) -{ - // declare local variables - var $t1: int; - var $t2: $1_vesting_VestingContract; - var $t3: $1_vesting_StakingInfo; - var $t4: int; - var $t0: int; - var $temp_0'address': int; - var $1_vesting_VestingContract_$memory#59: $Memory $1_vesting_VestingContract; - $t0 := _$t0; - - // verification entrypoint assumptions - call $InitVerification(); - - // bytecode translation starts here - // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:331:5+1 - assume {:print "$at(2,15393,15394)"} true; - assume $IsValid'address'($t0); - - // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:331:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); - (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; - (var j := $i_4; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); - - // @59 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:331:5+1 - $1_vesting_VestingContract_$memory#59 := $1_vesting_VestingContract_$memory; - - // trace_local[vesting_contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:331:5+1 - assume {:print "$track_local(57,40,0):", $t0} $t0 == $t0; - - // vesting::assert_vesting_contract_exists($t0) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:332:9+56 - assume {:print "$at(2,15489,15545)"} true; - call $1_vesting_assert_vesting_contract_exists($t0); - if ($abort_flag) { - assume {:print "$at(2,15489,15545)"} true; - $t1 := $abort_code; - assume {:print "$track_abort(57,40):", $t1} $t1 == $t1; - goto L2; - } - - // $t2 := get_global($t0) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:333:9+13 - assume {:print "$at(2,15555,15568)"} true; - if (!$ResourceExists($1_vesting_VestingContract_$memory, $t0)) { - call $ExecFailureAbort(); - } else { - $t2 := $ResourceValue($1_vesting_VestingContract_$memory, $t0); - } - if ($abort_flag) { - assume {:print "$at(2,15555,15568)"} true; - $t1 := $abort_code; - assume {:print "$track_abort(57,40):", $t1} $t1 == $t1; - goto L2; - } - - // $t3 := get_field.staking($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:333:9+64 - $t3 := $staking#$1_vesting_VestingContract($t2); - - // $t4 := get_field.voter($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:333:9+70 - $t4 := $voter#$1_vesting_StakingInfo($t3); - - // trace_return[0]($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:333:9+70 - assume {:print "$track_return(57,40,0):", $t4} $t4 == $t4; - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:334:5+1 - assume {:print "$at(2,15630,15631)"} true; -L1: - - // assert Not(Not(exists[@59]($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:40:9+61 - assume {:print "$at(3,1343,1404)"} true; - assert {:msg "assert_failed(3,1343,1404): function does not abort under this condition"} - !!$ResourceExists($1_vesting_VestingContract_$memory#59, $t0); - - // return $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:40:9+61 - $ret0 := $t4; - return; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:334:5+1 - assume {:print "$at(2,15630,15631)"} true; -L2: - - // assert Not(exists[@59]($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:39:5+132 - assume {:print "$at(3,1278,1410)"} true; - assert {:msg "assert_failed(3,1278,1410): abort not covered by any of the `aborts_if` clauses"} - !$ResourceExists($1_vesting_VestingContract_$memory#59, $t0); - - // abort($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:39:5+132 - $abort_code := $t1; - $abort_flag := true; - return; - -} - -// fun vesting::shareholder [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:396:5+811 -procedure {:timeLimit 1000} $1_vesting_shareholder$verify(_$t0: int, _$t1: int) returns ($ret0: int) -{ - // declare local variables - var $t2: Vec (int); - var $t3: bool; - var $t4: int; - var $t5: int; - var $t6: bool; - var $t7: int; - var $t8: Vec (int); - var $t9: Vec (int); - var $t10: $1_vesting_VestingContract; - var $t11: $1_vesting_VestingContract; - var $t12: $1_vesting_VestingContract; - var $t13: int; - var $t14: $1_vesting_VestingContract; - var $t15: Vec (int); - var $t16: bool; - var $t17: int; - var $t18: $1_vesting_VestingContract; - var $t19: int; - var $t20: bool; - var $t21: int; - var $t22: int; - var $t23: bool; - var $t24: int; - var $t25: int; - var $t26: bool; - var $t27: bool; - var $t28: bool; - var $t29: int; - var $t30: int; - var $t0: int; - var $t1: int; - var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; - var $temp_0'address': int; - var $temp_0'bool': bool; - var $temp_0'u64': int; - var $temp_0'vec'address'': Vec (int); - var $1_vesting_VestingContract_$memory#105: $Memory $1_vesting_VestingContract; - $t0 := _$t0; - $t1 := _$t1; - - // verification entrypoint assumptions - call $InitVerification(); - - // bytecode translation starts here - // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:396:5+1 - assume {:print "$at(2,19217,19218)"} true; - assume $IsValid'address'($t0); - - // assume WellFormed($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:396:5+1 - assume $IsValid'address'($t1); - - // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:396:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); - (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; - (var j := $i_4; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); - - // assume Identical($t11, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:518:9+65 - assume {:print "$at(3,23036,23101)"} true; - assume ($t11 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); - - // @105 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:396:5+1 - assume {:print "$at(2,19217,19218)"} true; - $1_vesting_VestingContract_$memory#105 := $1_vesting_VestingContract_$memory; - - // trace_local[vesting_contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:396:5+1 - assume {:print "$track_local(57,23,0):", $t0} $t0 == $t0; - - // trace_local[shareholder_or_beneficiary]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:396:5+1 - assume {:print "$track_local(57,23,1):", $t1} $t1 == $t1; - - // assume Identical($t12, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:518:9+65 - assume {:print "$at(3,23036,23101)"} true; - assume ($t12 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); - - // vesting::assert_active_vesting_contract($t0) on_abort goto L13 with $t13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:397:9+56 - assume {:print "$at(2,19356,19412)"} true; - call $1_vesting_assert_active_vesting_contract($t0); - if ($abort_flag) { - assume {:print "$at(2,19356,19412)"} true; - $t13 := $abort_code; - assume {:print "$track_abort(57,23):", $t13} $t13 == $t13; - goto L13; - } - - // assume Identical($t14, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:518:9+65 - assume {:print "$at(3,23036,23101)"} true; - assume ($t14 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); - - // $t15 := vesting::shareholders($t0) on_abort goto L13 with $t13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:399:29+38 - assume {:print "$at(2,19443,19481)"} true; - call $t15 := $1_vesting_shareholders($t0); - if ($abort_flag) { - assume {:print "$at(2,19443,19481)"} true; - $t13 := $abort_code; - assume {:print "$track_abort(57,23):", $t13} $t13 == $t13; - goto L13; - } - - // trace_local[shareholders]($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:399:13+12 - assume {:print "$track_local(57,23,8):", $t15} $t15 == $t15; - - // $t16 := vector::contains
($t15, $t1) on_abort goto L13 with $t13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:400:13+59 - assume {:print "$at(2,19495,19554)"} true; - call $t16 := $1_vector_contains'address'($t15, $t1); - if ($abort_flag) { - assume {:print "$at(2,19495,19554)"} true; - $t13 := $abort_code; - assume {:print "$track_abort(57,23):", $t13} $t13 == $t13; - goto L13; - } - - // if ($t16) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:400:9+122 - if ($t16) { goto L1; } else { goto L0; } - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:401:13+33 - assume {:print "$at(2,19570,19603)"} true; -L1: - - // trace_return[0]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:401:13+33 - assume {:print "$at(2,19570,19603)"} true; - assume {:print "$track_return(57,23,0):", $t1} $t1 == $t1; - - // $t17 := move($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:401:13+33 - $t17 := $t1; - - // goto L12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:401:13+33 - goto L12; - - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:403:63+24 - assume {:print "$at(2,19677,19701)"} true; -L0: - - // $t18 := get_global($t0) on_abort goto L13 with $t13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:403:32+13 - assume {:print "$at(2,19646,19659)"} true; - if (!$ResourceExists($1_vesting_VestingContract_$memory, $t0)) { - call $ExecFailureAbort(); - } else { - $t18 := $ResourceValue($1_vesting_VestingContract_$memory, $t0); - } - if ($abort_flag) { - assume {:print "$at(2,19646,19659)"} true; - $t13 := $abort_code; - assume {:print "$track_abort(57,23):", $t13} $t13 == $t13; - goto L13; - } - - // trace_local[vesting_contract]($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:403:13+16 - assume {:print "$track_local(57,23,10):", $t18} $t18 == $t18; - - // $t19 := 0x0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:404:22+4 - assume {:print "$at(2,19725,19729)"} true; - $t19 := 0; - assume $IsValid'address'($t19); - - // trace_local[result]($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:404:13+6 - assume {:print "$track_local(57,23,5):", $t19} $t19 == $t19; - - // trace_local[v#251]($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:405:9+266 - assume {:print "$at(2,19739,20005)"} true; - assume {:print "$track_local(57,23,9):", $t15} $t15 == $t15; - - // $t20 := false at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:534:22+5 - assume {:print "$at(18,18638,18643)"} true; - $t20 := false; - assume $IsValid'bool'($t20); - - // trace_local[result#253]($t20) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:534:13+6 - assume {:print "$track_local(57,23,6):", $t20} $t20 == $t20; - - // $t21 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:535:17+1 - assume {:print "$at(18,18661,18662)"} true; - $t21 := 0; - assume $IsValid'u64'($t21); - - // trace_local[i#254]($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:535:13+1 - assume {:print "$track_local(57,23,4):", $t21} $t21 == $t21; - - // label L10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:536:16+1 - assume {:print "$at(18,18679,18680)"} true; -L10: - - // $t3 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:536:16+1 - assume {:print "$at(18,18679,18680)"} true; - havoc $t3; - - // assume WellFormed($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:536:16+1 - assume $IsValid'bool'($t3); - - // $t4 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:536:16+1 - havoc $t4; - - // assume WellFormed($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:536:16+1 - assume $IsValid'u64'($t4); - - // $t5 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:536:16+1 - havoc $t5; - - // assume WellFormed($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:536:16+1 - assume $IsValid'address'($t5); - - // $t6 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:536:16+1 - havoc $t6; - - // assume WellFormed($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:536:16+1 - assume $IsValid'bool'($t6); - - // $t22 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:536:16+1 - havoc $t22; - - // assume WellFormed($t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:536:16+1 - assume $IsValid'u64'($t22); - - // $t23 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:536:16+1 - havoc $t23; - - // assume WellFormed($t23) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:536:16+1 - assume $IsValid'bool'($t23); - - // $t24 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:536:16+1 - havoc $t24; - - // assume WellFormed($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:536:16+1 - assume $IsValid'address'($t24); - - // $t25 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:536:16+1 - havoc $t25; - - // assume WellFormed($t25) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:536:16+1 - assume $IsValid'address'($t25); - - // $t26 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:536:16+1 - havoc $t26; - - // assume WellFormed($t26) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:536:16+1 - assume $IsValid'bool'($t26); - - // $t27 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:536:16+1 - havoc $t27; - - // assume WellFormed($t27) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:536:16+1 - assume $IsValid'bool'($t27); - - // $t28 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:536:16+1 - havoc $t28; - - // assume WellFormed($t28) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:536:16+1 - assume $IsValid'bool'($t28); - - // $t29 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:536:16+1 - havoc $t29; - - // assume WellFormed($t29) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:536:16+1 - assume $IsValid'u64'($t29); - - // $t30 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:536:16+1 - havoc $t30; - - // assume WellFormed($t30) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:536:16+1 - assume $IsValid'u64'($t30); - - // trace_local[i#254]($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:536:16+1 - assume {:print "$info(): enter loop, variable(s) i#254, result, result#253 havocked and reassigned"} true; - assume {:print "$track_local(57,23,4):", $t4} $t4 == $t4; - - // trace_local[result]($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:536:16+1 - assume {:print "$track_local(57,23,5):", $t5} $t5 == $t5; - - // trace_local[result#253]($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:536:16+1 - assume {:print "$track_local(57,23,6):", $t6} $t6 == $t6; - - // assume Not(AbortFlag()) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:536:16+1 - assume !$abort_flag; - - // $t22 := vector::length
($t15) on_abort goto L13 with $t13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:536:20+9 - call $t22 := $1_vector_length'address'($t15); - if ($abort_flag) { - assume {:print "$at(18,18683,18692)"} true; - $t13 := $abort_code; - assume {:print "$track_abort(57,23):", $t13} $t13 == $t13; - goto L13; - } - - // $t23 := <($t4, $t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:536:18+1 - call $t23 := $Lt($t4, $t22); - - // if ($t23) goto L3 else goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:536:9+156 - if ($t23) { goto L3; } else { goto L2; } - - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:536:9+156 -L3: - - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:537:31+1 - assume {:print "$at(18,18726,18727)"} true; -L4: - - // $t24 := vector::borrow
($t15, $t4) on_abort goto L13 with $t13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:537:24+12 - assume {:print "$at(18,18719,18731)"} true; - call $t24 := $1_vector_borrow'address'($t15, $t4); - if ($abort_flag) { - assume {:print "$at(18,18719,18731)"} true; - $t13 := $abort_code; - assume {:print "$track_abort(57,23):", $t13} $t13 == $t13; - goto L13; - } - - // trace_local[shareholder#255]($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:537:24+12 - assume {:print "$track_local(57,23,7):", $t24} $t24 == $t24; - - // $t25 := vesting::get_beneficiary($t18, $t24) on_abort goto L13 with $t13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:406:47+47 - assume {:print "$at(2,19827,19874)"} true; - call $t25 := $1_vesting_get_beneficiary($t18, $t24); - if ($abort_flag) { - assume {:print "$at(2,19827,19874)"} true; - $t13 := $abort_code; - assume {:print "$track_abort(57,23):", $t13} $t13 == $t13; - goto L13; - } - - // $t26 := ==($t1, $t25) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:406:44+2 - $t26 := $IsEqual'address'($t1, $t25); - - // if ($t26) goto L6 else goto L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:406:13+201 - if ($t26) { goto L6; } else { goto L5; } - - // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:407:27+11 - assume {:print "$at(2,19904,19915)"} true; -L6: - - // $t5 := $t24 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:407:17+6 - assume {:print "$at(2,19894,19900)"} true; - $t5 := $t24; - - // trace_local[result]($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:407:17+6 - assume {:print "$track_local(57,23,5):", $t24} $t24 == $t24; - - // $t27 := true at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:408:17+4 - assume {:print "$at(2,19933,19937)"} true; - $t27 := true; - assume $IsValid'bool'($t27); - - // $t3 := $t27 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:406:13+201 - assume {:print "$at(2,19793,19994)"} true; - $t3 := $t27; - - // goto L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:406:13+201 - goto L7; - - // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:406:13+201 -L5: - - // $t28 := false at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:410:17+5 - assume {:print "$at(2,19975,19980)"} true; - $t28 := false; - assume $IsValid'bool'($t28); - - // $t3 := $t28 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:406:13+201 - assume {:print "$at(2,19793,19994)"} true; - $t3 := $t28; - - // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:406:13+201 -L7: - - // $t6 := $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:537:13+6 - assume {:print "$at(18,18708,18714)"} true; - $t6 := $t3; - - // trace_local[result#253]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:537:13+6 - assume {:print "$track_local(57,23,6):", $t3} $t3 == $t3; - - // if ($t3) goto L9 else goto L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:538:13+49 - assume {:print "$at(18,18746,18795)"} true; - if ($t3) { goto L9; } else { goto L8; } - - // label L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:539:17+5 - assume {:print "$at(18,18776,18781)"} true; -L9: - - // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:539:17+5 - assume {:print "$at(18,18776,18781)"} true; - goto L2; - - // label L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:541:17+1 - assume {:print "$at(18,18813,18814)"} true; -L8: - - // $t29 := 1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:541:21+1 - assume {:print "$at(18,18817,18818)"} true; - $t29 := 1; - assume $IsValid'u64'($t29); - - // $t30 := +($t4, $t29) on_abort goto L13 with $t13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:541:19+1 - call $t30 := $AddU64($t4, $t29); - if ($abort_flag) { - assume {:print "$at(18,18815,18816)"} true; - $t13 := $abort_code; - assume {:print "$track_abort(57,23):", $t13} $t13 == $t13; - goto L13; - } - - // trace_local[i#254]($t30) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:541:13+1 - assume {:print "$track_local(57,23,4):", $t30} $t30 == $t30; - - // goto L11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:541:13+9 - goto L11; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:543:9+6 - assume {:print "$at(18,18838,18844)"} true; -L2: - - // destroy($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:543:9+6 - assume {:print "$at(18,18838,18844)"} true; - - // trace_return[0]($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:414:9+6 - assume {:print "$at(2,20016,20022)"} true; - assume {:print "$track_return(57,23,0):", $t5} $t5 == $t5; - - // $t17 := move($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:414:9+6 - $t17 := $t5; - - // goto L12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:414:9+6 - goto L12; - - // label L11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:543:9+6 - // Loop invariant checking block for the loop started with header: L10 - assume {:print "$at(18,18838,18844)"} true; -L11: - - // stop() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:543:9+6 - assume {:print "$at(18,18838,18844)"} true; - assume false; - return; - - // label L12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:415:5+1 - assume {:print "$at(2,20027,20028)"} true; -L12: - - // assert Not(Not(exists[@105]($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:517:9+53 - assume {:print "$at(3,22974,23027)"} true; - assert {:msg "assert_failed(3,22974,23027): function does not abort under this condition"} - !!$ResourceExists($1_vesting_VestingContract_$memory#105, $t0); - - // assert Not(Neq(select vesting::VestingContract.state($t11), 1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:519:9+56 - assume {:print "$at(3,23110,23166)"} true; - assert {:msg "assert_failed(3,23110,23166): function does not abort under this condition"} - !!$IsEqual'u64'($state#$1_vesting_VestingContract($t11), 1); - - // return $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:519:9+56 - $ret0 := $t17; - return; - - // label L13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:415:5+1 - assume {:print "$at(2,20027,20028)"} true; -L13: - - // assert Or(Not(exists[@105]($t0)), Neq(select vesting::VestingContract.state($t11), 1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:117:5+375 - assume {:print "$at(3,5462,5837)"} true; - assert {:msg "assert_failed(3,5462,5837): abort not covered by any of the `aborts_if` clauses"} - (!$ResourceExists($1_vesting_VestingContract_$memory#105, $t0) || !$IsEqual'u64'($state#$1_vesting_VestingContract($t11), 1)); - - // abort($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:117:5+375 - $abort_code := $t13; - $abort_flag := true; - return; - -} - -// fun vesting::shareholders [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:383:5+325 -procedure {:inline 1} $1_vesting_shareholders(_$t0: int) returns ($ret0: Vec (int)) -{ - // declare local variables - var $t1: $1_vesting_VestingContract; - var $t2: $1_vesting_VestingContract; - var $t3: int; - var $t4: $1_vesting_VestingContract; - var $t5: $1_pool_u64_Pool; - var $t6: Vec (int); - var $t0: int; - var $temp_0'address': int; - var $temp_0'vec'address'': Vec (int); - $t0 := _$t0; - - // bytecode translation starts here - // assume Identical($t1, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:518:9+65 - assume {:print "$at(3,23036,23101)"} true; - assume ($t1 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); - - // trace_local[vesting_contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:383:5+1 - assume {:print "$at(2,18423,18424)"} true; - assume {:print "$track_local(57,24,0):", $t0} $t0 == $t0; - - // assume Identical($t2, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:518:9+65 - assume {:print "$at(3,23036,23101)"} true; - assume ($t2 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); - - // vesting::assert_active_vesting_contract($t0) on_abort goto L2 with $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:384:9+56 - assume {:print "$at(2,18534,18590)"} true; - call $1_vesting_assert_active_vesting_contract($t0); - if ($abort_flag) { - assume {:print "$at(2,18534,18590)"} true; - $t3 := $abort_code; - assume {:print "$track_abort(57,24):", $t3} $t3 == $t3; - goto L2; - } - - // $t4 := get_global($t0) on_abort goto L2 with $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:386:32+13 - assume {:print "$at(2,18624,18637)"} true; - if (!$ResourceExists($1_vesting_VestingContract_$memory, $t0)) { - call $ExecFailureAbort(); - } else { - $t4 := $ResourceValue($1_vesting_VestingContract_$memory, $t0); - } - if ($abort_flag) { - assume {:print "$at(2,18624,18637)"} true; - $t3 := $abort_code; - assume {:print "$track_abort(57,24):", $t3} $t3 == $t3; - goto L2; - } - - // $t5 := get_field.grant_pool($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:387:32+28 - assume {:print "$at(2,18713,18741)"} true; - $t5 := $grant_pool#$1_vesting_VestingContract($t4); - - // $t6 := pool_u64::shareholders($t5) on_abort goto L2 with $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:387:9+52 - call $t6 := $1_pool_u64_shareholders($t5); - if ($abort_flag) { - assume {:print "$at(2,18690,18742)"} true; - $t3 := $abort_code; - assume {:print "$track_abort(57,24):", $t3} $t3 == $t3; - goto L2; - } - - // trace_return[0]($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:387:9+52 - assume {:print "$track_return(57,24,0):", $t6} $t6 == $t6; - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:388:5+1 - assume {:print "$at(2,18747,18748)"} true; -L1: - - // return $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:388:5+1 - assume {:print "$at(2,18747,18748)"} true; - $ret0 := $t6; - return; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:388:5+1 -L2: - - // abort($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:388:5+1 - assume {:print "$at(2,18747,18748)"} true; - $abort_code := $t3; - $abort_flag := true; - return; - -} - -// fun vesting::shareholders [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:383:5+325 -procedure {:timeLimit 1000} $1_vesting_shareholders$verify(_$t0: int) returns ($ret0: Vec (int)) -{ - // declare local variables - var $t1: $1_vesting_VestingContract; - var $t2: $1_vesting_VestingContract; - var $t3: int; - var $t4: $1_vesting_VestingContract; - var $t5: $1_pool_u64_Pool; - var $t6: Vec (int); - var $t0: int; - var $temp_0'address': int; - var $temp_0'vec'address'': Vec (int); - var $1_vesting_VestingContract_$memory#75: $Memory $1_vesting_VestingContract; - $t0 := _$t0; - - // verification entrypoint assumptions - call $InitVerification(); - - // bytecode translation starts here - // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:383:5+1 - assume {:print "$at(2,18423,18424)"} true; - assume $IsValid'address'($t0); - - // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:383:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); - (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; - (var j := $i_4; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); - - // assume Identical($t1, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:518:9+65 - assume {:print "$at(3,23036,23101)"} true; - assume ($t1 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); - - // @75 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:383:5+1 - assume {:print "$at(2,18423,18424)"} true; - $1_vesting_VestingContract_$memory#75 := $1_vesting_VestingContract_$memory; - - // trace_local[vesting_contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:383:5+1 - assume {:print "$track_local(57,24,0):", $t0} $t0 == $t0; - - // assume Identical($t2, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:518:9+65 - assume {:print "$at(3,23036,23101)"} true; - assume ($t2 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); - - // vesting::assert_active_vesting_contract($t0) on_abort goto L2 with $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:384:9+56 - assume {:print "$at(2,18534,18590)"} true; - call $1_vesting_assert_active_vesting_contract($t0); - if ($abort_flag) { - assume {:print "$at(2,18534,18590)"} true; - $t3 := $abort_code; - assume {:print "$track_abort(57,24):", $t3} $t3 == $t3; - goto L2; - } - - // $t4 := get_global($t0) on_abort goto L2 with $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:386:32+13 - assume {:print "$at(2,18624,18637)"} true; - if (!$ResourceExists($1_vesting_VestingContract_$memory, $t0)) { - call $ExecFailureAbort(); - } else { - $t4 := $ResourceValue($1_vesting_VestingContract_$memory, $t0); - } - if ($abort_flag) { - assume {:print "$at(2,18624,18637)"} true; - $t3 := $abort_code; - assume {:print "$track_abort(57,24):", $t3} $t3 == $t3; - goto L2; - } - - // $t5 := get_field.grant_pool($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:387:32+28 - assume {:print "$at(2,18713,18741)"} true; - $t5 := $grant_pool#$1_vesting_VestingContract($t4); - - // $t6 := pool_u64::shareholders($t5) on_abort goto L2 with $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:387:9+52 - call $t6 := $1_pool_u64_shareholders($t5); - if ($abort_flag) { - assume {:print "$at(2,18690,18742)"} true; - $t3 := $abort_code; - assume {:print "$track_abort(57,24):", $t3} $t3 == $t3; - goto L2; - } - - // trace_return[0]($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:387:9+52 - assume {:print "$track_return(57,24,0):", $t6} $t6 == $t6; - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:388:5+1 - assume {:print "$at(2,18747,18748)"} true; -L1: - - // assert Not(Not(exists[@75]($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:517:9+53 - assume {:print "$at(3,22974,23027)"} true; - assert {:msg "assert_failed(3,22974,23027): function does not abort under this condition"} - !!$ResourceExists($1_vesting_VestingContract_$memory#75, $t0); - - // assert Not(Neq(select vesting::VestingContract.state($t1), 1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:519:9+56 - assume {:print "$at(3,23110,23166)"} true; - assert {:msg "assert_failed(3,23110,23166): function does not abort under this condition"} - !!$IsEqual'u64'($state#$1_vesting_VestingContract($t1), 1); - - // return $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:519:9+56 - $ret0 := $t6; - return; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:388:5+1 - assume {:print "$at(2,18747,18748)"} true; -L2: - - // assert Or(Not(exists[@75]($t0)), Neq(select vesting::VestingContract.state($t1), 1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:111:5+185 - assume {:print "$at(3,5158,5343)"} true; - assert {:msg "assert_failed(3,5158,5343): abort not covered by any of the `aborts_if` clauses"} - (!$ResourceExists($1_vesting_VestingContract_$memory#75, $t0) || !$IsEqual'u64'($state#$1_vesting_VestingContract($t1), 1)); - - // abort($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:111:5+185 - $abort_code := $t3; - $abort_flag := true; - return; - -} - -// fun vesting::distribute [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:623:5+1779 -procedure {:inline 1} $1_vesting_distribute(_$t0: int) returns () -{ - // declare local variables - var $t1: int; - var $t2: Vec (int); - var $t3: int; - var $t4: int; - var $t5: $1_coin_Coin'$1_aptos_coin_AptosCoin'; - var $t6: $1_pool_u64_Pool; - var $t7: int; - var $t8: int; - var $t9: $1_coin_Coin'$1_aptos_coin_AptosCoin'; - var $t10: int; - var $t11: int; - var $t12: int; - var $t13: Vec (int); - var $t14: $Mutation ($1_vesting_VestingContract); - var $t15: $1_vesting_VestingContract; - var $t16: $1_vesting_VestingContract; - var $t17: int; - var $t18: $1_staking_contract_Store; - var $t19: $1_staking_contract_StakingContract; - var $t20: Table int ($1_staking_contract_StakingContract); - var $t21: int; - var $t22: $1_stake_StakePool; - var $t23: int; - var $t24: int; - var $t25: int; - var $t26: int; - var $t27: $1_stake_StakePool; - var $t28: $1_stake_ValidatorSet; - var $t29: bool; - var $t30: int; - var $t31: int; - var $t32: int; - var $t33: $1_vesting_VestingContract; - var $t34: int; - var $t35: $Mutation ($1_vesting_VestingContract); - var $t36: $1_vesting_VestingContract; - var $t37: int; - var $t38: $1_staking_contract_Store; - var $t39: $1_staking_contract_StakingContract; - var $t40: Table int ($1_staking_contract_StakingContract); - var $t41: int; - var $t42: $1_stake_StakePool; - var $t43: int; - var $t44: int; - var $t45: int; - var $t46: int; - var $t47: $1_stake_StakePool; - var $t48: $1_stake_ValidatorSet; - var $t49: bool; - var $t50: int; - var $t51: int; - var $t52: int; - var $t53: $1_coin_Coin'$1_aptos_coin_AptosCoin'; - var $t54: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; - var $t55: int; - var $t56: int; - var $t57: bool; - var $t58: $1_coin_Coin'$1_aptos_coin_AptosCoin'; - var $t59: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; - var $t60: $1_pool_u64_Pool; - var $t61: Vec (int); - var $t62: int; - var $t63: int; - var $t64: bool; - var $t65: int; - var $t66: int; - var $t67: int; - var $t68: $1_coin_Coin'$1_aptos_coin_AptosCoin'; - var $t69: $1_vesting_VestingContract; - var $t70: int; - var $t71: int; - var $t72: int; - var $t73: $Mutation ($1_coin_Coin'$1_aptos_coin_AptosCoin'); - var $t74: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; - var $t75: $1_account_Account; - var $t76: $1_coin_Coin'$1_aptos_coin_AptosCoin'; - var $t77: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; - var $t78: int; - var $t79: int; - var $t80: bool; - var $t81: int; - var $t82: $1_coin_Coin'$1_aptos_coin_AptosCoin'; - var $t83: $1_account_Account; - var $t84: $1_coin_Coin'$1_aptos_coin_AptosCoin'; - var $t85: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; - var $t86: $Mutation ($1_event_EventHandle'$1_vesting_DistributeEvent'); - var $t87: int; - var $t88: $1_vesting_DistributeEvent; - var $t0: int; - var $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin'': $1_coin_Coin'$1_aptos_coin_AptosCoin'; - var $temp_0'$1_pool_u64_Pool': $1_pool_u64_Pool; - var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; - var $temp_0'address': int; - var $temp_0'u64': int; - var $temp_0'vec'address'': Vec (int); - $t0 := _$t0; - - // bytecode translation starts here - // assume Identical($t15, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:213:9+65 - assume {:print "$at(3,9717,9782)"} true; - assume ($t15 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); - - // assume Identical($t16, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:518:9+65 - assume {:print "$at(3,23036,23101)"} true; - assume ($t16 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); - - // assume Identical($t17, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t15))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:455:9+49 - assume {:print "$at(3,19684,19733)"} true; - assume ($t17 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t15))); - - // assume Identical($t18, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:459:9+62 - assume {:print "$at(3,19898,19960)"} true; - assume ($t18 == $ResourceValue($1_staking_contract_Store_$memory, $t0)); - - // assume Identical($t19, simple_map::spec_get(select staking_contract::Store.staking_contracts($t18), $t17)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:460:9+79 - assume {:print "$at(3,19969,20048)"} true; - assume ($t19 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($t18), $t17)); - - // assume Identical($t20, select staking_contract::Store.staking_contracts(global($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 - assume {:print "$at(134,11481,11545)"} true; - assume ($t20 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t0))); - - // assume Identical($t21, select staking_contract::StakingContract.pool_address($t19)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:470:9+49 - assume {:print "$at(3,20547,20596)"} true; - assume ($t21 == $pool_address#$1_staking_contract_StakingContract($t19)); - - // assume Identical($t22, global($t21)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:472:9+56 - assume {:print "$at(3,20664,20720)"} true; - assume ($t22 == $ResourceValue($1_stake_StakePool_$memory, $t21)); - - // assume Identical($t23, select coin::Coin.value(select stake::StakePool.inactive($t22))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:473:9+41 - assume {:print "$at(3,20729,20770)"} true; - assume ($t23 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t22))); - - // assume Identical($t24, select coin::Coin.value(select stake::StakePool.pending_inactive($t22))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:474:9+57 - assume {:print "$at(3,20779,20836)"} true; - assume ($t24 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t22))); - - // assume Identical($t25, Add($t23, $t24)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:478:9+63 - assume {:print "$at(3,20948,21011)"} true; - assume ($t25 == ($t23 + $t24)); - - // assume Identical($t26, select stake::OwnerCapability.pool_address(select staking_contract::StakingContract.owner_cap($t19))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:479:9+61 - assume {:print "$at(3,21020,21081)"} true; - assume ($t26 == $pool_address#$1_stake_OwnerCapability($owner_cap#$1_staking_contract_StakingContract($t19))); - - // assume Identical($t27, global($t26)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:481:9+60 - assume {:print "$at(3,21151,21211)"} true; - assume ($t27 == $ResourceValue($1_stake_StakePool_$memory, $t26)); - - // assume Identical($t28, global(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:483:9+66 - assume {:print "$at(3,21286,21352)"} true; - assume ($t28 == $ResourceValue($1_stake_ValidatorSet_$memory, 1)); - - // assume Identical($t29, And(And(Not(stake::spec_contains(select stake::ValidatorSet.pending_active($t28), $t26)), Not(stake::spec_contains(select stake::ValidatorSet.active_validators($t28), $t26))), Not(stake::spec_contains(select stake::ValidatorSet.pending_inactive($t28), $t26)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:484:9+260 - assume {:print "$at(3,21361,21621)"} true; - assume ($t29 == ((!$1_stake_spec_contains($pending_active#$1_stake_ValidatorSet($t28), $t26) && !$1_stake_spec_contains($active_validators#$1_stake_ValidatorSet($t28), $t26)) && !$1_stake_spec_contains($pending_inactive#$1_stake_ValidatorSet($t28), $t26))); - - // assume Identical($t30, select coin::Coin.value(select stake::StakePool.inactive($t27))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:487:9+45 - assume {:print "$at(3,21630,21675)"} true; - assume ($t30 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t27))); - - // assume Identical($t31, select coin::Coin.value(select stake::StakePool.pending_inactive($t27))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:488:9+61 - assume {:print "$at(3,21684,21745)"} true; - assume ($t31 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t27))); - - // assume Identical($t32, Add($t30, $t31)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:489:9+53 - assume {:print "$at(3,21754,21807)"} true; - assume ($t32 == ($t30 + $t31)); - - // trace_local[contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:623:5+1 - assume {:print "$at(2,29668,29669)"} true; - assume {:print "$track_local(57,8,0):", $t0} $t0 == $t0; - - // assume Identical($t33, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:518:9+65 - assume {:print "$at(3,23036,23101)"} true; - assume ($t33 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); - - // vesting::assert_active_vesting_contract($t0) on_abort goto L11 with $t34 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:624:9+48 - assume {:print "$at(2,29758,29806)"} true; - call $1_vesting_assert_active_vesting_contract($t0); - if ($abort_flag) { - assume {:print "$at(2,29758,29806)"} true; - $t34 := $abort_code; - assume {:print "$track_abort(57,8):", $t34} $t34 == $t34; - goto L11; - } - - // $t35 := borrow_global($t0) on_abort goto L11 with $t34 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:626:32+17 - assume {:print "$at(2,29840,29857)"} true; - if (!$ResourceExists($1_vesting_VestingContract_$memory, $t0)) { - call $ExecFailureAbort(); - } else { - $t35 := $Mutation($Global($t0), EmptyVec(), $ResourceValue($1_vesting_VestingContract_$memory, $t0)); - } - if ($abort_flag) { - assume {:print "$at(2,29840,29857)"} true; - $t34 := $abort_code; - assume {:print "$track_abort(57,8):", $t34} $t34 == $t34; - goto L11; - } - - // trace_local[vesting_contract]($t35) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:626:13+16 - $temp_0'$1_vesting_VestingContract' := $Dereference($t35); - assume {:print "$track_local(57,8,14):", $temp_0'$1_vesting_VestingContract'} $temp_0'$1_vesting_VestingContract' == $temp_0'$1_vesting_VestingContract'; - - // $t36 := read_ref($t35) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:627:35+36 - assume {:print "$at(2,29928,29964)"} true; - $t36 := $Dereference($t35); - - // assume Identical($t37, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t36))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:455:9+49 - assume {:print "$at(3,19684,19733)"} true; - assume ($t37 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t36))); - - // assume Identical($t38, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:459:9+62 - assume {:print "$at(3,19898,19960)"} true; - assume ($t38 == $ResourceValue($1_staking_contract_Store_$memory, $t0)); - - // assume Identical($t39, simple_map::spec_get(select staking_contract::Store.staking_contracts($t38), $t37)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:460:9+79 - assume {:print "$at(3,19969,20048)"} true; - assume ($t39 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($t38), $t37)); - - // assume Identical($t40, select staking_contract::Store.staking_contracts(global($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 - assume {:print "$at(134,11481,11545)"} true; - assume ($t40 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t0))); - - // assume Identical($t41, select staking_contract::StakingContract.pool_address($t39)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:470:9+49 - assume {:print "$at(3,20547,20596)"} true; - assume ($t41 == $pool_address#$1_staking_contract_StakingContract($t39)); - - // assume Identical($t42, global($t41)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:472:9+56 - assume {:print "$at(3,20664,20720)"} true; - assume ($t42 == $ResourceValue($1_stake_StakePool_$memory, $t41)); - - // assume Identical($t43, select coin::Coin.value(select stake::StakePool.inactive($t42))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:473:9+41 - assume {:print "$at(3,20729,20770)"} true; - assume ($t43 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t42))); - - // assume Identical($t44, select coin::Coin.value(select stake::StakePool.pending_inactive($t42))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:474:9+57 - assume {:print "$at(3,20779,20836)"} true; - assume ($t44 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t42))); - - // assume Identical($t45, Add($t43, $t44)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:478:9+63 - assume {:print "$at(3,20948,21011)"} true; - assume ($t45 == ($t43 + $t44)); - - // assume Identical($t46, select stake::OwnerCapability.pool_address(select staking_contract::StakingContract.owner_cap($t39))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:479:9+61 - assume {:print "$at(3,21020,21081)"} true; - assume ($t46 == $pool_address#$1_stake_OwnerCapability($owner_cap#$1_staking_contract_StakingContract($t39))); - - // assume Identical($t47, global($t46)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:481:9+60 - assume {:print "$at(3,21151,21211)"} true; - assume ($t47 == $ResourceValue($1_stake_StakePool_$memory, $t46)); - - // assume Identical($t48, global(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:483:9+66 - assume {:print "$at(3,21286,21352)"} true; - assume ($t48 == $ResourceValue($1_stake_ValidatorSet_$memory, 1)); - - // assume Identical($t49, And(And(Not(stake::spec_contains(select stake::ValidatorSet.pending_active($t48), $t46)), Not(stake::spec_contains(select stake::ValidatorSet.active_validators($t48), $t46))), Not(stake::spec_contains(select stake::ValidatorSet.pending_inactive($t48), $t46)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:484:9+260 - assume {:print "$at(3,21361,21621)"} true; - assume ($t49 == ((!$1_stake_spec_contains($pending_active#$1_stake_ValidatorSet($t48), $t46) && !$1_stake_spec_contains($active_validators#$1_stake_ValidatorSet($t48), $t46)) && !$1_stake_spec_contains($pending_inactive#$1_stake_ValidatorSet($t48), $t46))); - - // assume Identical($t50, select coin::Coin.value(select stake::StakePool.inactive($t47))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:487:9+45 - assume {:print "$at(3,21630,21675)"} true; - assume ($t50 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t47))); - - // assume Identical($t51, select coin::Coin.value(select stake::StakePool.pending_inactive($t47))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:488:9+61 - assume {:print "$at(3,21684,21745)"} true; - assume ($t51 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t47))); - - // assume Identical($t52, Add($t50, $t51)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:489:9+53 - assume {:print "$at(3,21754,21807)"} true; - assume ($t52 == ($t50 + $t51)); - - // $t5 := vesting::withdraw_stake($t36, $t0) on_abort goto L11 with $t34 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:627:21+50 - assume {:print "$at(2,29914,29964)"} true; - call $t5 := $1_vesting_withdraw_stake($t36, $t0); - if ($abort_flag) { - assume {:print "$at(2,29914,29964)"} true; - $t34 := $abort_code; - assume {:print "$track_abort(57,8):", $t34} $t34 == $t34; - goto L11; - } - - // trace_local[coins]($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:627:13+5 - assume {:print "$track_local(57,8,5):", $t5} $t5 == $t5; - - // $t53 := copy($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:628:53+6 - assume {:print "$at(2,30018,30024)"} true; - $t53 := $t5; - - // assume Identical($t54, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 - assume {:print "$at(95,1664,1763)"} true; - assume ($t54 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); - - // $t55 := coin::value($t53) on_abort goto L11 with $t34 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:628:41+19 - assume {:print "$at(2,30006,30025)"} true; - call $t55 := $1_coin_value'$1_aptos_coin_AptosCoin'($t53); - if ($abort_flag) { - assume {:print "$at(2,30006,30025)"} true; - $t34 := $abort_code; - assume {:print "$track_abort(57,8):", $t34} $t34 == $t34; - goto L11; - } - - // trace_local[total_distribution_amount]($t55) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:628:13+25 - assume {:print "$track_local(57,8,12):", $t55} $t55 == $t55; - - // $t56 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:629:42+1 - assume {:print "$at(2,30068,30069)"} true; - $t56 := 0; - assume $IsValid'u64'($t56); - - // $t57 := ==($t55, $t56) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:629:39+2 - $t57 := $IsEqual'u64'($t55, $t56); - - // if ($t57) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:629:9+105 - if ($t57) { goto L1; } else { goto L0; } - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:630:13+25 - assume {:print "$at(2,30085,30110)"} true; -L1: - - // pack_ref_deep($t35) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:630:13+25 - assume {:print "$at(2,30085,30110)"} true; - - // destroy($t35) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:630:13+25 - - // $t58 := move($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:630:32+5 - $t58 := $t5; - - // assume Identical($t59, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 - assume {:print "$at(95,1664,1763)"} true; - assume ($t59 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); - - // coin::destroy_zero($t58) on_abort goto L11 with $t34 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:630:13+25 - assume {:print "$at(2,30085,30110)"} true; - call $1_coin_destroy_zero'$1_aptos_coin_AptosCoin'($t58); - if ($abort_flag) { - assume {:print "$at(2,30085,30110)"} true; - $t34 := $abort_code; - assume {:print "$track_abort(57,8):", $t34} $t34 == $t34; - goto L11; - } - - // goto L10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:631:13+6 - assume {:print "$at(2,30124,30130)"} true; - goto L10; - - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:635:27+16 - assume {:print "$at(2,30242,30258)"} true; -L0: - - // $t60 := get_field.grant_pool($t35) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:635:26+28 - assume {:print "$at(2,30241,30269)"} true; - $t60 := $grant_pool#$1_vesting_VestingContract($Dereference($t35)); - - // trace_local[grant_pool]($t60) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:635:13+10 - assume {:print "$track_local(57,8,6):", $t60} $t60 == $t60; - - // $t61 := pool_u64::shareholders($t60) on_abort goto L11 with $t34 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:636:29+34 - assume {:print "$at(2,30299,30333)"} true; - call $t61 := $1_pool_u64_shareholders($t60); - if ($abort_flag) { - assume {:print "$at(2,30299,30333)"} true; - $t34 := $abort_code; - assume {:print "$track_abort(57,8):", $t34} $t34 == $t34; - goto L11; - } - - // trace_local[v#235]($t61) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:637:9+519 - assume {:print "$at(2,30343,30862)"} true; - assume {:print "$track_local(57,8,13):", $t61} $t61 == $t61; - - // $t62 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:261:17+1 - assume {:print "$at(18,9246,9247)"} true; - $t62 := 0; - assume $IsValid'u64'($t62); - - // trace_local[i#237]($t62) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:261:13+1 - assume {:print "$track_local(57,8,7):", $t62} $t62 == $t62; - - // $t63 := vector::length
($t61) on_abort goto L11 with $t34 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:262:19+9 - assume {:print "$at(18,9267,9276)"} true; - call $t63 := $1_vector_length'address'($t61); - if ($abort_flag) { - assume {:print "$at(18,9267,9276)"} true; - $t34 := $abort_code; - assume {:print "$track_abort(57,8):", $t34} $t34 == $t34; - goto L11; - } - - // trace_local[len#238]($t63) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:262:13+3 - assume {:print "$track_local(57,8,8):", $t63} $t63 == $t63; - - // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume {:print "$at(18,9293,9294)"} true; -L5: - - // $t5 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume {:print "$at(18,9293,9294)"} true; - havoc $t5; - - // assume WellFormed($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume $IsValid'$1_coin_Coin'$1_aptos_coin_AptosCoin''($t5); - - // $t7 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - havoc $t7; - - // assume WellFormed($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume $IsValid'u64'($t7); - - // $t64 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - havoc $t64; - - // assume WellFormed($t64) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume $IsValid'bool'($t64); - - // $t65 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - havoc $t65; - - // assume WellFormed($t65) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume $IsValid'address'($t65); - - // $t66 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - havoc $t66; - - // assume WellFormed($t66) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume $IsValid'u64'($t66); - - // $t67 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - havoc $t67; - - // assume WellFormed($t67) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume $IsValid'u64'($t67); - - // $t68 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - havoc $t68; - - // assume WellFormed($t68) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume $IsValid'$1_coin_Coin'$1_aptos_coin_AptosCoin''($t68); - - // $t69 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - havoc $t69; - - // assume And(WellFormed($t69), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t69)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t69)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t69)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t69)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t69)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t69)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume ($IsValid'$1_vesting_VestingContract'($t69) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t69)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t69)), addr)))) && (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t69)))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t69)))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; - (var j := $i_3; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t69)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t69)), j)) ==> $IsEqual'num'(i, j)))))))))); - - // $t70 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - havoc $t70; - - // assume WellFormed($t70) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume $IsValid'address'($t70); - - // $t71 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - havoc $t71; - - // assume WellFormed($t71) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume $IsValid'u64'($t71); - - // $t72 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - havoc $t72; - - // assume WellFormed($t72) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume $IsValid'u64'($t72); - - // $t73 := havoc[mut_all]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - havoc $t73; - - // assume WellFormed($t73) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume $IsValid'$1_coin_Coin'$1_aptos_coin_AptosCoin''($Dereference($t73)); - - // trace_local[coins]($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume {:print "$info(): enter loop, variable(s) coins, i#237 havocked and reassigned"} true; - assume {:print "$track_local(57,8,5):", $t5} $t5 == $t5; - - // trace_local[i#237]($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume {:print "$track_local(57,8,7):", $t7} $t7 == $t7; - - // assume Not(AbortFlag()) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume !$abort_flag; - - // $t64 := <($t7, $t63) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:18+1 - call $t64 := $Lt($t7, $t63); - - // if ($t64) goto L3 else goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:9+78 - if ($t64) { goto L3; } else { goto L2; } - - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:9+78 -L3: - - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:264:22+1 - assume {:print "$at(18,9325,9326)"} true; -L4: - - // $t65 := vector::borrow
($t61, $t7) on_abort goto L11 with $t34 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:264:15+12 - assume {:print "$at(18,9318,9330)"} true; - call $t65 := $1_vector_borrow'address'($t61, $t7); - if ($abort_flag) { - assume {:print "$at(18,9318,9330)"} true; - $t34 := $abort_code; - assume {:print "$track_abort(57,8):", $t34} $t34 == $t34; - goto L11; - } - - // trace_local[shareholder#240]($t65) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:638:17+11 - assume {:print "$at(2,30410,30421)"} true; - assume {:print "$track_local(57,8,10):", $t65} $t65 == $t65; - - // $t66 := pool_u64::shares($t60, $t65) on_abort goto L11 with $t34 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:639:26+41 - assume {:print "$at(2,30463,30504)"} true; - call $t66 := $1_pool_u64_shares($t60, $t65); - if ($abort_flag) { - assume {:print "$at(2,30463,30504)"} true; - $t34 := $abort_code; - assume {:print "$track_abort(57,8):", $t34} $t34 == $t34; - goto L11; - } - - // trace_local[shares#241]($t66) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:639:17+6 - assume {:print "$track_local(57,8,11):", $t66} $t66 == $t66; - - // $t67 := pool_u64::shares_to_amount_with_total_coins($t60, $t66, $t55) on_abort goto L11 with $t34 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:640:26+90 - assume {:print "$at(2,30531,30621)"} true; - call $t67 := $1_pool_u64_shares_to_amount_with_total_coins($t60, $t66, $t55); - if ($abort_flag) { - assume {:print "$at(2,30531,30621)"} true; - $t34 := $abort_code; - assume {:print "$track_abort(57,8):", $t34} $t34 == $t34; - goto L11; - } - - // trace_local[amount#242]($t67) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:640:17+6 - assume {:print "$track_local(57,8,4):", $t67} $t67 == $t67; - - // $t73 := borrow_local($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:641:48+10 - assume {:print "$at(2,30670,30680)"} true; - $t73 := $Mutation($Local(5), EmptyVec(), $t5); - - // assume Identical($t74, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 - assume {:print "$at(95,1664,1763)"} true; - assume ($t74 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); - - // $t68 := coin::extract($t73, $t67) on_abort goto L11 with $t34 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:641:34+33 - assume {:print "$at(2,30656,30689)"} true; - call $t68,$t73 := $1_coin_extract'$1_aptos_coin_AptosCoin'($t73, $t67); - if ($abort_flag) { - assume {:print "$at(2,30656,30689)"} true; - $t34 := $abort_code; - assume {:print "$track_abort(57,8):", $t34} $t34 == $t34; - goto L11; - } - - // write_back[LocalRoot($t5)@]($t73) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:641:34+33 - $t5 := $Dereference($t73); - - // trace_local[coins]($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:641:34+33 - assume {:print "$track_local(57,8,5):", $t5} $t5 == $t5; - - // trace_local[share_of_coins#243]($t68) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:641:17+14 - assume {:print "$track_local(57,8,9):", $t68} $t68 == $t68; - - // $t69 := read_ref($t35) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:642:52+31 - assume {:print "$at(2,30742,30773)"} true; - $t69 := $Dereference($t35); - - // $t70 := vesting::get_beneficiary($t69, $t65) on_abort goto L11 with $t34 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:642:37+46 - call $t70 := $1_vesting_get_beneficiary($t69, $t65); - if ($abort_flag) { - assume {:print "$at(2,30727,30773)"} true; - $t34 := $abort_code; - assume {:print "$track_abort(57,8):", $t34} $t34 == $t34; - goto L11; - } - - // assume Identical($t75, global($t70)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.spec.move:200:9+39 - assume {:print "$at(81,9368,9407)"} true; - assume ($t75 == $ResourceValue($1_account_Account_$memory, $t70)); - - // aptos_account::deposit_coins($t70, $t68) on_abort goto L11 with $t34 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:643:13+63 - assume {:print "$at(2,30787,30850)"} true; - call $1_aptos_account_deposit_coins'$1_aptos_coin_AptosCoin'($t70, $t68); - if ($abort_flag) { - assume {:print "$at(2,30787,30850)"} true; - $t34 := $abort_code; - assume {:print "$track_abort(57,8):", $t34} $t34 == $t34; - goto L11; - } - - // $t71 := 1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:265:21+1 - assume {:print "$at(18,9353,9354)"} true; - $t71 := 1; - assume $IsValid'u64'($t71); - - // $t72 := +($t7, $t71) on_abort goto L11 with $t34 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:265:19+1 - call $t72 := $AddU64($t7, $t71); - if ($abort_flag) { - assume {:print "$at(18,9351,9352)"} true; - $t34 := $abort_code; - assume {:print "$track_abort(57,8):", $t34} $t34 == $t34; - goto L11; - } - - // trace_local[i#237]($t72) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:265:13+1 - assume {:print "$track_local(57,8,7):", $t72} $t72 == $t72; - - // goto L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:265:13+9 - goto L9; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:647:9+182 - assume {:print "$at(2,30970,31152)"} true; -L2: - - // $t76 := copy($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:647:25+6 - assume {:print "$at(2,30986,30992)"} true; - $t76 := $t5; - - // assume Identical($t77, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 - assume {:print "$at(95,1664,1763)"} true; - assume ($t77 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); - - // $t78 := coin::value($t76) on_abort goto L11 with $t34 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:647:13+19 - assume {:print "$at(2,30974,30993)"} true; - call $t78 := $1_coin_value'$1_aptos_coin_AptosCoin'($t76); - if ($abort_flag) { - assume {:print "$at(2,30974,30993)"} true; - $t34 := $abort_code; - assume {:print "$track_abort(57,8):", $t34} $t34 == $t34; - goto L11; - } - - // $t79 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:647:35+1 - $t79 := 0; - assume $IsValid'u64'($t79); - - // $t80 := >($t78, $t79) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:647:33+1 - call $t80 := $Gt($t78, $t79); - - // if ($t80) goto L7 else goto L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:647:9+182 - if ($t80) { goto L7; } else { goto L6; } - - // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:648:42+16 - assume {:print "$at(2,31042,31058)"} true; -L7: - - // $t81 := get_field.withdrawal_address($t35) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:648:42+35 - assume {:print "$at(2,31042,31077)"} true; - $t81 := $withdrawal_address#$1_vesting_VestingContract($Dereference($t35)); - - // $t82 := move($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:648:79+5 - $t82 := $t5; - - // assume Identical($t83, global($t81)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.spec.move:200:9+39 - assume {:print "$at(81,9368,9407)"} true; - assume ($t83 == $ResourceValue($1_account_Account_$memory, $t81)); - - // aptos_account::deposit_coins($t81, $t82) on_abort goto L11 with $t34 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:648:13+72 - assume {:print "$at(2,31013,31085)"} true; - call $1_aptos_account_deposit_coins'$1_aptos_coin_AptosCoin'($t81, $t82); - if ($abort_flag) { - assume {:print "$at(2,31013,31085)"} true; - $t34 := $abort_code; - assume {:print "$track_abort(57,8):", $t34} $t34 == $t34; - goto L11; - } - - // goto L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:648:85+1 - goto L8; - - // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:650:32+5 - assume {:print "$at(2,31135,31140)"} true; -L6: - - // $t84 := move($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:650:32+5 - assume {:print "$at(2,31135,31140)"} true; - $t84 := $t5; - - // assume Identical($t85, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 - assume {:print "$at(95,1664,1763)"} true; - assume ($t85 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); - - // coin::destroy_zero($t84) on_abort goto L11 with $t34 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:650:13+25 - assume {:print "$at(2,31116,31141)"} true; - call $1_coin_destroy_zero'$1_aptos_coin_AptosCoin'($t84); - if ($abort_flag) { - assume {:print "$at(2,31116,31141)"} true; - $t34 := $abort_code; - assume {:print "$track_abort(57,8):", $t34} $t34 == $t34; - goto L11; - } - - // label L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:654:18+16 - assume {:print "$at(2,31192,31208)"} true; -L8: - - // $t86 := borrow_field.distribute_events($t35) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:654:13+39 - assume {:print "$at(2,31187,31226)"} true; - $t86 := $ChildMutation($t35, 15, $distribute_events#$1_vesting_VestingContract($Dereference($t35))); - - // $t87 := get_field.admin($t35) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:656:24+22 - assume {:print "$at(2,31281,31303)"} true; - $t87 := $admin#$1_vesting_VestingContract($Dereference($t35)); - - // $t88 := pack vesting::DistributeEvent($t87, $t0, $t55) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:655:13+189 - assume {:print "$at(2,31240,31429)"} true; - $t88 := $1_vesting_DistributeEvent($t87, $t0, $t55); - - // opaque begin: event::emit_event($t86, $t88) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:653:9+277 - assume {:print "$at(2,31163,31440)"} true; - - // opaque end: event::emit_event($t86, $t88) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:653:9+277 - - // write_back[Reference($t35).distribute_events (event::EventHandle)]($t86) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:653:9+277 - $t35 := $UpdateMutation($t35, $Update'$1_vesting_VestingContract'_distribute_events($Dereference($t35), $Dereference($t86))); - - // pack_ref_deep($t35) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:653:9+277 - - // write_back[vesting::VestingContract@]($t35) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:653:9+277 - $1_vesting_VestingContract_$memory := $ResourceUpdate($1_vesting_VestingContract_$memory, $GlobalLocationAddress($t35), - $Dereference($t35)); - - // goto L10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:660:10+1 - assume {:print "$at(2,31440,31441)"} true; - goto L10; - - // label L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:654:18+16 - // Loop invariant checking block for the loop started with header: L5 - assume {:print "$at(2,31192,31208)"} true; -L9: - - // stop() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:654:18+16 - assume {:print "$at(2,31192,31208)"} true; - assume false; - return; - - // label L10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:661:5+1 - assume {:print "$at(2,31446,31447)"} true; -L10: - - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:661:5+1 - assume {:print "$at(2,31446,31447)"} true; - return; - - // label L11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:661:5+1 -L11: - - // abort($t34) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:661:5+1 - assume {:print "$at(2,31446,31447)"} true; - $abort_code := $t34; - $abort_flag := true; - return; - -} - -// fun vesting::distribute [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:623:5+1779 -procedure {:timeLimit 1000} $1_vesting_distribute$verify(_$t0: int) returns () -{ - // declare local variables - var $t1: int; - var $t2: Vec (int); - var $t3: int; - var $t4: int; - var $t5: $1_coin_Coin'$1_aptos_coin_AptosCoin'; - var $t6: $1_pool_u64_Pool; - var $t7: int; - var $t8: int; - var $t9: $1_coin_Coin'$1_aptos_coin_AptosCoin'; - var $t10: int; - var $t11: int; - var $t12: int; - var $t13: Vec (int); - var $t14: $Mutation ($1_vesting_VestingContract); - var $t15: $1_vesting_VestingContract; - var $t16: $1_vesting_VestingContract; - var $t17: int; - var $t18: $1_staking_contract_Store; - var $t19: $1_staking_contract_StakingContract; - var $t20: Table int ($1_staking_contract_StakingContract); - var $t21: int; - var $t22: $1_stake_StakePool; - var $t23: int; - var $t24: int; - var $t25: int; - var $t26: int; - var $t27: $1_stake_StakePool; - var $t28: $1_stake_ValidatorSet; - var $t29: bool; - var $t30: int; - var $t31: int; - var $t32: int; - var $t33: $1_vesting_VestingContract; - var $t34: int; - var $t35: $Mutation ($1_vesting_VestingContract); - var $t36: $1_vesting_VestingContract; - var $t37: int; - var $t38: $1_staking_contract_Store; - var $t39: $1_staking_contract_StakingContract; - var $t40: Table int ($1_staking_contract_StakingContract); - var $t41: int; - var $t42: $1_stake_StakePool; - var $t43: int; - var $t44: int; - var $t45: int; - var $t46: int; - var $t47: $1_stake_StakePool; - var $t48: $1_stake_ValidatorSet; - var $t49: bool; - var $t50: int; - var $t51: int; - var $t52: int; - var $t53: $1_coin_Coin'$1_aptos_coin_AptosCoin'; - var $t54: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; - var $t55: int; - var $t56: int; - var $t57: bool; - var $t58: $1_coin_Coin'$1_aptos_coin_AptosCoin'; - var $t59: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; - var $t60: $1_pool_u64_Pool; - var $t61: Vec (int); - var $t62: int; - var $t63: int; - var $t64: bool; - var $t65: int; - var $t66: int; - var $t67: int; - var $t68: $1_coin_Coin'$1_aptos_coin_AptosCoin'; - var $t69: $1_vesting_VestingContract; - var $t70: int; - var $t71: int; - var $t72: int; - var $t73: $Mutation ($1_coin_Coin'$1_aptos_coin_AptosCoin'); - var $t74: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; - var $t75: $1_account_Account; - var $t76: $1_coin_Coin'$1_aptos_coin_AptosCoin'; - var $t77: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; - var $t78: int; - var $t79: int; - var $t80: bool; - var $t81: int; - var $t82: $1_coin_Coin'$1_aptos_coin_AptosCoin'; - var $t83: $1_account_Account; - var $t84: $1_coin_Coin'$1_aptos_coin_AptosCoin'; - var $t85: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; - var $t86: $Mutation ($1_event_EventHandle'$1_vesting_DistributeEvent'); - var $t87: int; - var $t88: $1_vesting_DistributeEvent; - var $t0: int; - var $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin'': $1_coin_Coin'$1_aptos_coin_AptosCoin'; - var $temp_0'$1_pool_u64_Pool': $1_pool_u64_Pool; - var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; - var $temp_0'address': int; - var $temp_0'u64': int; - var $temp_0'vec'address'': Vec (int); - var $1_vesting_VestingContract_$memory#159: $Memory $1_vesting_VestingContract; - var $1_staking_contract_Store_$memory#160: $Memory $1_staking_contract_Store; - var $1_stake_StakePool_$memory#161: $Memory $1_stake_StakePool; - var $1_stake_ValidatorSet_$memory#162: $Memory $1_stake_ValidatorSet; - var $1_timestamp_CurrentTimeMicroseconds_$memory#163: $Memory $1_timestamp_CurrentTimeMicroseconds; - $t0 := _$t0; - - // verification entrypoint assumptions - call $InitVerification(); - - // bytecode translation starts here - // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:623:5+1 - assume {:print "$at(2,29668,29669)"} true; - assume $IsValid'address'($t0); - - // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.rotation_capability_offer($rsc)))), 1), Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.signer_capability_offer($rsc)))), 1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:623:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_account_Account_$memory, $a_0)}(var $rsc := $ResourceValue($1_account_Account_$memory, $a_0); - (($IsValid'$1_account_Account'($rsc) && ((LenVec($vec#$1_option_Option'address'($for#$1_account_CapabilityOffer'$1_account_RotationCapability'($rotation_capability_offer#$1_account_Account($rsc)))) <= 1) && (LenVec($vec#$1_option_Option'address'($for#$1_account_CapabilityOffer'$1_account_SignerCapability'($signer_capability_offer#$1_account_Account($rsc)))) <= 1)))))); - - // assume forall $rsc: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: select option::Option.vec(select coin::CoinInfo.supply($rsc)): And(And(And(And(And(Iff(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($elem)), option::$is_none(select optional_aggregator::OptionalAggregator.integer($elem))), Iff(option::$is_some(select optional_aggregator::OptionalAggregator.integer($elem)), option::$is_none(select optional_aggregator::OptionalAggregator.aggregator($elem)))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.integer($elem)), Le(select optional_aggregator::Integer.value(option::$borrow(select optional_aggregator::OptionalAggregator.integer($elem))), select optional_aggregator::Integer.limit(option::$borrow(select optional_aggregator::OptionalAggregator.integer($elem)))))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($elem)), Le(aggregator::spec_aggregator_get_val(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($elem))), aggregator::spec_get_limit(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($elem)))))), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.aggregator($elem))), 1)), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.integer($elem))), 1)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:623:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $a_0); - (($IsValid'$1_coin_CoinInfo'$1_aptos_coin_AptosCoin''($rsc) && ((LenVec($vec#$1_option_Option'$1_optional_aggregator_OptionalAggregator'($supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($rsc))) <= 1) && (var $range_1 := $vec#$1_option_Option'$1_optional_aggregator_OptionalAggregator'($supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($rsc)); (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); - ((((((($1_option_$is_some'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)) <==> $1_option_$is_none'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)) ==> ($value#$1_optional_aggregator_Integer($1_option_$borrow'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) <= $limit#$1_optional_aggregator_Integer($1_option_$borrow'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)))))) && ($1_option_$is_some'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem))) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)))))) && (LenVec($vec#$1_option_Option'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem))) <= 1)) && (LenVec($vec#$1_option_Option'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) <= 1))))))))))); - - // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:623:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $a_0); - ($IsValid'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''($rsc)))); - - // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:623:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $a_0); - ($IsValid'$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin''($rsc)))); - - // assume exists>(0x0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:623:5+1 - assume $ResourceExists($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, 0); - - // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:623:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, $a_0); - ($IsValid'$1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin''($rsc)))); - - // assume exists>(0x0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:623:5+1 - assume $ResourceExists($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, 0); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:623:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_aptos_account_DirectTransferConfig_$memory, $a_0)}(var $rsc := $ResourceValue($1_aptos_account_DirectTransferConfig_$memory, $a_0); - ($IsValid'$1_aptos_account_DirectTransferConfig'($rsc)))); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:623:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_chain_status_GenesisEndMarker_$memory, $a_0)}(var $rsc := $ResourceValue($1_chain_status_GenesisEndMarker_$memory, $a_0); - ($IsValid'$1_chain_status_GenesisEndMarker'($rsc)))); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:623:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_timestamp_CurrentTimeMicroseconds_$memory, $a_0)}(var $rsc := $ResourceValue($1_timestamp_CurrentTimeMicroseconds_$memory, $a_0); - ($IsValid'$1_timestamp_CurrentTimeMicroseconds'($rsc)))); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:623:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_stake_StakePool_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_StakePool_$memory, $a_0); - ($IsValid'$1_stake_StakePool'($rsc)))); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:623:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorConfig_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorConfig_$memory, $a_0); - ($IsValid'$1_stake_ValidatorConfig'($rsc)))); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:623:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorPerformance_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorPerformance_$memory, $a_0); - ($IsValid'$1_stake_ValidatorPerformance'($rsc)))); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:623:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorSet_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorSet_$memory, $a_0); - ($IsValid'$1_stake_ValidatorSet'($rsc)))); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:623:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_reconfiguration_Configuration_$memory, $a_0)}(var $rsc := $ResourceValue($1_reconfiguration_Configuration_$memory, $a_0); - ($IsValid'$1_reconfiguration_Configuration'($rsc)))); - - // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), forall $key: select staking_contract::Store.staking_contracts($rsc): And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), i), Index(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:623:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_staking_contract_Store_$memory, $a_0)}(var $rsc := $ResourceValue($1_staking_contract_Store_$memory, $a_0); - (($IsValid'$1_staking_contract_Store'($rsc) && (var $range_1 := $staking_contracts#$1_staking_contract_Store($rsc); (forall $key: int :: ContainsTable($range_1, $EncodeKey'address'($key)) ==> (((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), addr)))) && (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))))); (var $range_3 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))))); (forall $i_4: int, $i_5: int :: $InRange($range_2, $i_4) ==> $InRange($range_3, $i_5) ==> (var i := $i_4; - (var j := $i_5; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), i), ReadVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), j)) ==> $IsEqual'num'(i, j)))))))))))))))); - - // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:623:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); - (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; - (var j := $i_4; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); - - // assume Implies(chain_status::$is_operating(), exists(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:623:5+1779 - // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.spec.move:4:9+93 - assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory, 1)); - - // assume Implies(exists(0x1), stake::validator_set_is_valid()) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:623:5+1779 - // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:8:9+92 - assume ($ResourceExists($1_stake_ValidatorSet_$memory, 1) ==> $1_stake_validator_set_is_valid($1_stake_StakePool_$memory, $1_stake_ValidatorConfig_$memory, $1_stake_ValidatorPerformance_$memory, $1_stake_ValidatorSet_$memory)); - - // assume Implies(chain_status::$is_operating(), exists(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:623:5+1779 - // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:12:9+96 - assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_stake_ValidatorSet_$memory, 1)); - - // assume Implies(chain_status::$is_operating(), Ge(timestamp::spec_now_microseconds(), reconfiguration::$last_reconfiguration_time())) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:623:5+1779 - // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/reconfiguration.spec.move:8:9+137 - assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> ($1_timestamp_spec_now_microseconds($1_timestamp_CurrentTimeMicroseconds_$memory) >= $1_reconfiguration_$last_reconfiguration_time($1_reconfiguration_Configuration_$memory))); - - // assume Identical($t15, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:213:9+65 - assume {:print "$at(3,9717,9782)"} true; - assume ($t15 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); - - // assume Identical($t16, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:518:9+65 - assume {:print "$at(3,23036,23101)"} true; - assume ($t16 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); - - // assume Identical($t17, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t15))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:455:9+49 - assume {:print "$at(3,19684,19733)"} true; - assume ($t17 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t15))); - - // assume Identical($t18, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:459:9+62 - assume {:print "$at(3,19898,19960)"} true; - assume ($t18 == $ResourceValue($1_staking_contract_Store_$memory, $t0)); - - // assume Identical($t19, simple_map::spec_get(select staking_contract::Store.staking_contracts($t18), $t17)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:460:9+79 - assume {:print "$at(3,19969,20048)"} true; - assume ($t19 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($t18), $t17)); - - // assume Identical($t20, select staking_contract::Store.staking_contracts(global($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 - assume {:print "$at(134,11481,11545)"} true; - assume ($t20 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t0))); - - // assume Identical($t21, select staking_contract::StakingContract.pool_address($t19)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:470:9+49 - assume {:print "$at(3,20547,20596)"} true; - assume ($t21 == $pool_address#$1_staking_contract_StakingContract($t19)); - - // assume Identical($t22, global($t21)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:472:9+56 - assume {:print "$at(3,20664,20720)"} true; - assume ($t22 == $ResourceValue($1_stake_StakePool_$memory, $t21)); - - // assume Identical($t23, select coin::Coin.value(select stake::StakePool.inactive($t22))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:473:9+41 - assume {:print "$at(3,20729,20770)"} true; - assume ($t23 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t22))); - - // assume Identical($t24, select coin::Coin.value(select stake::StakePool.pending_inactive($t22))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:474:9+57 - assume {:print "$at(3,20779,20836)"} true; - assume ($t24 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t22))); - - // assume Identical($t25, Add($t23, $t24)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:478:9+63 - assume {:print "$at(3,20948,21011)"} true; - assume ($t25 == ($t23 + $t24)); - - // assume Identical($t26, select stake::OwnerCapability.pool_address(select staking_contract::StakingContract.owner_cap($t19))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:479:9+61 - assume {:print "$at(3,21020,21081)"} true; - assume ($t26 == $pool_address#$1_stake_OwnerCapability($owner_cap#$1_staking_contract_StakingContract($t19))); - - // assume Identical($t27, global($t26)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:481:9+60 - assume {:print "$at(3,21151,21211)"} true; - assume ($t27 == $ResourceValue($1_stake_StakePool_$memory, $t26)); - - // assume Identical($t28, global(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:483:9+66 - assume {:print "$at(3,21286,21352)"} true; - assume ($t28 == $ResourceValue($1_stake_ValidatorSet_$memory, 1)); - - // assume Identical($t29, And(And(Not(stake::spec_contains(select stake::ValidatorSet.pending_active($t28), $t26)), Not(stake::spec_contains(select stake::ValidatorSet.active_validators($t28), $t26))), Not(stake::spec_contains(select stake::ValidatorSet.pending_inactive($t28), $t26)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:484:9+260 - assume {:print "$at(3,21361,21621)"} true; - assume ($t29 == ((!$1_stake_spec_contains($pending_active#$1_stake_ValidatorSet($t28), $t26) && !$1_stake_spec_contains($active_validators#$1_stake_ValidatorSet($t28), $t26)) && !$1_stake_spec_contains($pending_inactive#$1_stake_ValidatorSet($t28), $t26))); - - // assume Identical($t30, select coin::Coin.value(select stake::StakePool.inactive($t27))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:487:9+45 - assume {:print "$at(3,21630,21675)"} true; - assume ($t30 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t27))); - - // assume Identical($t31, select coin::Coin.value(select stake::StakePool.pending_inactive($t27))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:488:9+61 - assume {:print "$at(3,21684,21745)"} true; - assume ($t31 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t27))); - - // assume Identical($t32, Add($t30, $t31)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:489:9+53 - assume {:print "$at(3,21754,21807)"} true; - assume ($t32 == ($t30 + $t31)); - - // @163 := save_mem(timestamp::CurrentTimeMicroseconds) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:623:5+1 - assume {:print "$at(2,29668,29669)"} true; - $1_timestamp_CurrentTimeMicroseconds_$memory#163 := $1_timestamp_CurrentTimeMicroseconds_$memory; - - // @161 := save_mem(stake::StakePool) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:623:5+1 - $1_stake_StakePool_$memory#161 := $1_stake_StakePool_$memory; - - // @162 := save_mem(stake::ValidatorSet) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:623:5+1 - $1_stake_ValidatorSet_$memory#162 := $1_stake_ValidatorSet_$memory; - - // @160 := save_mem(staking_contract::Store) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:623:5+1 - $1_staking_contract_Store_$memory#160 := $1_staking_contract_Store_$memory; - - // @159 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:623:5+1 - $1_vesting_VestingContract_$memory#159 := $1_vesting_VestingContract_$memory; - - // trace_local[contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:623:5+1 - assume {:print "$track_local(57,8,0):", $t0} $t0 == $t0; - - // assume Identical($t33, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:518:9+65 - assume {:print "$at(3,23036,23101)"} true; - assume ($t33 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); - - // vesting::assert_active_vesting_contract($t0) on_abort goto L11 with $t34 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:624:9+48 - assume {:print "$at(2,29758,29806)"} true; - call $1_vesting_assert_active_vesting_contract($t0); - if ($abort_flag) { - assume {:print "$at(2,29758,29806)"} true; - $t34 := $abort_code; - assume {:print "$track_abort(57,8):", $t34} $t34 == $t34; - goto L11; - } - - // $t35 := borrow_global($t0) on_abort goto L11 with $t34 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:626:32+17 - assume {:print "$at(2,29840,29857)"} true; - if (!$ResourceExists($1_vesting_VestingContract_$memory, $t0)) { - call $ExecFailureAbort(); - } else { - $t35 := $Mutation($Global($t0), EmptyVec(), $ResourceValue($1_vesting_VestingContract_$memory, $t0)); - } - if ($abort_flag) { - assume {:print "$at(2,29840,29857)"} true; - $t34 := $abort_code; - assume {:print "$track_abort(57,8):", $t34} $t34 == $t34; - goto L11; - } - - // trace_local[vesting_contract]($t35) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:626:13+16 - $temp_0'$1_vesting_VestingContract' := $Dereference($t35); - assume {:print "$track_local(57,8,14):", $temp_0'$1_vesting_VestingContract'} $temp_0'$1_vesting_VestingContract' == $temp_0'$1_vesting_VestingContract'; - - // $t36 := read_ref($t35) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:627:35+36 - assume {:print "$at(2,29928,29964)"} true; - $t36 := $Dereference($t35); - - // assume Identical($t37, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t36))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:455:9+49 - assume {:print "$at(3,19684,19733)"} true; - assume ($t37 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t36))); - - // assume Identical($t38, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:459:9+62 - assume {:print "$at(3,19898,19960)"} true; - assume ($t38 == $ResourceValue($1_staking_contract_Store_$memory, $t0)); - - // assume Identical($t39, simple_map::spec_get(select staking_contract::Store.staking_contracts($t38), $t37)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:460:9+79 - assume {:print "$at(3,19969,20048)"} true; - assume ($t39 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($t38), $t37)); - - // assume Identical($t40, select staking_contract::Store.staking_contracts(global($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 - assume {:print "$at(134,11481,11545)"} true; - assume ($t40 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t0))); - - // assume Identical($t41, select staking_contract::StakingContract.pool_address($t39)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:470:9+49 - assume {:print "$at(3,20547,20596)"} true; - assume ($t41 == $pool_address#$1_staking_contract_StakingContract($t39)); - - // assume Identical($t42, global($t41)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:472:9+56 - assume {:print "$at(3,20664,20720)"} true; - assume ($t42 == $ResourceValue($1_stake_StakePool_$memory, $t41)); - - // assume Identical($t43, select coin::Coin.value(select stake::StakePool.inactive($t42))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:473:9+41 - assume {:print "$at(3,20729,20770)"} true; - assume ($t43 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t42))); - - // assume Identical($t44, select coin::Coin.value(select stake::StakePool.pending_inactive($t42))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:474:9+57 - assume {:print "$at(3,20779,20836)"} true; - assume ($t44 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t42))); - - // assume Identical($t45, Add($t43, $t44)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:478:9+63 - assume {:print "$at(3,20948,21011)"} true; - assume ($t45 == ($t43 + $t44)); - - // assume Identical($t46, select stake::OwnerCapability.pool_address(select staking_contract::StakingContract.owner_cap($t39))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:479:9+61 - assume {:print "$at(3,21020,21081)"} true; - assume ($t46 == $pool_address#$1_stake_OwnerCapability($owner_cap#$1_staking_contract_StakingContract($t39))); - - // assume Identical($t47, global($t46)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:481:9+60 - assume {:print "$at(3,21151,21211)"} true; - assume ($t47 == $ResourceValue($1_stake_StakePool_$memory, $t46)); - - // assume Identical($t48, global(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:483:9+66 - assume {:print "$at(3,21286,21352)"} true; - assume ($t48 == $ResourceValue($1_stake_ValidatorSet_$memory, 1)); - - // assume Identical($t49, And(And(Not(stake::spec_contains(select stake::ValidatorSet.pending_active($t48), $t46)), Not(stake::spec_contains(select stake::ValidatorSet.active_validators($t48), $t46))), Not(stake::spec_contains(select stake::ValidatorSet.pending_inactive($t48), $t46)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:484:9+260 - assume {:print "$at(3,21361,21621)"} true; - assume ($t49 == ((!$1_stake_spec_contains($pending_active#$1_stake_ValidatorSet($t48), $t46) && !$1_stake_spec_contains($active_validators#$1_stake_ValidatorSet($t48), $t46)) && !$1_stake_spec_contains($pending_inactive#$1_stake_ValidatorSet($t48), $t46))); - - // assume Identical($t50, select coin::Coin.value(select stake::StakePool.inactive($t47))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:487:9+45 - assume {:print "$at(3,21630,21675)"} true; - assume ($t50 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t47))); - - // assume Identical($t51, select coin::Coin.value(select stake::StakePool.pending_inactive($t47))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:488:9+61 - assume {:print "$at(3,21684,21745)"} true; - assume ($t51 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t47))); - - // assume Identical($t52, Add($t50, $t51)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:489:9+53 - assume {:print "$at(3,21754,21807)"} true; - assume ($t52 == ($t50 + $t51)); - - // $t5 := vesting::withdraw_stake($t36, $t0) on_abort goto L11 with $t34 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:627:21+50 - assume {:print "$at(2,29914,29964)"} true; - call $t5 := $1_vesting_withdraw_stake($t36, $t0); - if ($abort_flag) { - assume {:print "$at(2,29914,29964)"} true; - $t34 := $abort_code; - assume {:print "$track_abort(57,8):", $t34} $t34 == $t34; - goto L11; - } - - // trace_local[coins]($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:627:13+5 - assume {:print "$track_local(57,8,5):", $t5} $t5 == $t5; - - // $t53 := copy($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:628:53+6 - assume {:print "$at(2,30018,30024)"} true; - $t53 := $t5; - - // assume Identical($t54, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 - assume {:print "$at(95,1664,1763)"} true; - assume ($t54 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); - - // $t55 := coin::value($t53) on_abort goto L11 with $t34 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:628:41+19 - assume {:print "$at(2,30006,30025)"} true; - call $t55 := $1_coin_value'$1_aptos_coin_AptosCoin'($t53); - if ($abort_flag) { - assume {:print "$at(2,30006,30025)"} true; - $t34 := $abort_code; - assume {:print "$track_abort(57,8):", $t34} $t34 == $t34; - goto L11; - } - - // trace_local[total_distribution_amount]($t55) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:628:13+25 - assume {:print "$track_local(57,8,12):", $t55} $t55 == $t55; - - // $t56 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:629:42+1 - assume {:print "$at(2,30068,30069)"} true; - $t56 := 0; - assume $IsValid'u64'($t56); - - // $t57 := ==($t55, $t56) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:629:39+2 - $t57 := $IsEqual'u64'($t55, $t56); - - // if ($t57) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:629:9+105 - if ($t57) { goto L1; } else { goto L0; } - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:630:13+25 - assume {:print "$at(2,30085,30110)"} true; -L1: - - // assert forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t35)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t35)), addr)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 - // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 - assume {:print "$at(59,538,673)"} true; - assert {:msg "assert_failed(59,538,673): data invariant does not hold"} - (forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t35))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t35))), addr)))); - - // assert forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t35)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t35)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t35)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t35)), j)), Eq(i, j)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 - // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 - assume {:print "$at(59,738,867)"} true; - assert {:msg "assert_failed(59,738,867): data invariant does not hold"} - (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t35))))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t35))))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; - (var j := $i_3; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t35))), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t35))), j)) ==> $IsEqual'num'(i, j)))))))); - - // destroy($t35) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:630:13+25 - assume {:print "$at(2,30085,30110)"} true; - - // $t58 := move($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:630:32+5 - $t58 := $t5; - - // assume Identical($t59, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 - assume {:print "$at(95,1664,1763)"} true; - assume ($t59 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); - - // coin::destroy_zero($t58) on_abort goto L11 with $t34 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:630:13+25 - assume {:print "$at(2,30085,30110)"} true; - call $1_coin_destroy_zero'$1_aptos_coin_AptosCoin'($t58); - if ($abort_flag) { - assume {:print "$at(2,30085,30110)"} true; - $t34 := $abort_code; - assume {:print "$track_abort(57,8):", $t34} $t34 == $t34; - goto L11; - } - - // goto L10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:631:13+6 - assume {:print "$at(2,30124,30130)"} true; - goto L10; - - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:635:27+16 - assume {:print "$at(2,30242,30258)"} true; -L0: - - // $t60 := get_field.grant_pool($t35) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:635:26+28 - assume {:print "$at(2,30241,30269)"} true; - $t60 := $grant_pool#$1_vesting_VestingContract($Dereference($t35)); - - // trace_local[grant_pool]($t60) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:635:13+10 - assume {:print "$track_local(57,8,6):", $t60} $t60 == $t60; - - // $t61 := pool_u64::shareholders($t60) on_abort goto L11 with $t34 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:636:29+34 - assume {:print "$at(2,30299,30333)"} true; - call $t61 := $1_pool_u64_shareholders($t60); - if ($abort_flag) { - assume {:print "$at(2,30299,30333)"} true; - $t34 := $abort_code; - assume {:print "$track_abort(57,8):", $t34} $t34 == $t34; - goto L11; - } - - // trace_local[v#235]($t61) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:637:9+519 - assume {:print "$at(2,30343,30862)"} true; - assume {:print "$track_local(57,8,13):", $t61} $t61 == $t61; - - // $t62 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:261:17+1 - assume {:print "$at(18,9246,9247)"} true; - $t62 := 0; - assume $IsValid'u64'($t62); - - // trace_local[i#237]($t62) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:261:13+1 - assume {:print "$track_local(57,8,7):", $t62} $t62 == $t62; - - // $t63 := vector::length
($t61) on_abort goto L11 with $t34 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:262:19+9 - assume {:print "$at(18,9267,9276)"} true; - call $t63 := $1_vector_length'address'($t61); - if ($abort_flag) { - assume {:print "$at(18,9267,9276)"} true; - $t34 := $abort_code; - assume {:print "$track_abort(57,8):", $t34} $t34 == $t34; - goto L11; - } - - // trace_local[len#238]($t63) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:262:13+3 - assume {:print "$track_local(57,8,8):", $t63} $t63 == $t63; - - // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume {:print "$at(18,9293,9294)"} true; -L5: - - // $t5 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume {:print "$at(18,9293,9294)"} true; - havoc $t5; - - // assume WellFormed($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume $IsValid'$1_coin_Coin'$1_aptos_coin_AptosCoin''($t5); - - // $t7 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - havoc $t7; - - // assume WellFormed($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume $IsValid'u64'($t7); - - // $t64 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - havoc $t64; - - // assume WellFormed($t64) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume $IsValid'bool'($t64); - - // $t65 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - havoc $t65; - - // assume WellFormed($t65) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume $IsValid'address'($t65); - - // $t66 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - havoc $t66; - - // assume WellFormed($t66) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume $IsValid'u64'($t66); - - // $t67 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - havoc $t67; - - // assume WellFormed($t67) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume $IsValid'u64'($t67); - - // $t68 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - havoc $t68; - - // assume WellFormed($t68) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume $IsValid'$1_coin_Coin'$1_aptos_coin_AptosCoin''($t68); - - // $t69 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - havoc $t69; - - // assume And(WellFormed($t69), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t69)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t69)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t69)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t69)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t69)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t69)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume ($IsValid'$1_vesting_VestingContract'($t69) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t69)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t69)), addr)))) && (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t69)))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t69)))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; - (var j := $i_3; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t69)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t69)), j)) ==> $IsEqual'num'(i, j)))))))))); - - // $t70 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - havoc $t70; - - // assume WellFormed($t70) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume $IsValid'address'($t70); - - // $t71 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - havoc $t71; - - // assume WellFormed($t71) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume $IsValid'u64'($t71); - - // $t72 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - havoc $t72; - - // assume WellFormed($t72) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume $IsValid'u64'($t72); - - // $t73 := havoc[mut_all]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - havoc $t73; - - // assume WellFormed($t73) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume $IsValid'$1_coin_Coin'$1_aptos_coin_AptosCoin''($Dereference($t73)); - - // trace_local[coins]($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume {:print "$info(): enter loop, variable(s) coins, i#237 havocked and reassigned"} true; - assume {:print "$track_local(57,8,5):", $t5} $t5 == $t5; - - // trace_local[i#237]($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume {:print "$track_local(57,8,7):", $t7} $t7 == $t7; - - // assume Not(AbortFlag()) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume !$abort_flag; - - // $t64 := <($t7, $t63) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:18+1 - call $t64 := $Lt($t7, $t63); - - // if ($t64) goto L3 else goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:9+78 - if ($t64) { goto L3; } else { goto L2; } - - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:9+78 -L3: - - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:264:22+1 - assume {:print "$at(18,9325,9326)"} true; -L4: - - // $t65 := vector::borrow
($t61, $t7) on_abort goto L11 with $t34 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:264:15+12 - assume {:print "$at(18,9318,9330)"} true; - call $t65 := $1_vector_borrow'address'($t61, $t7); - if ($abort_flag) { - assume {:print "$at(18,9318,9330)"} true; - $t34 := $abort_code; - assume {:print "$track_abort(57,8):", $t34} $t34 == $t34; - goto L11; - } - - // trace_local[shareholder#240]($t65) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:638:17+11 - assume {:print "$at(2,30410,30421)"} true; - assume {:print "$track_local(57,8,10):", $t65} $t65 == $t65; - - // $t66 := pool_u64::shares($t60, $t65) on_abort goto L11 with $t34 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:639:26+41 - assume {:print "$at(2,30463,30504)"} true; - call $t66 := $1_pool_u64_shares($t60, $t65); - if ($abort_flag) { - assume {:print "$at(2,30463,30504)"} true; - $t34 := $abort_code; - assume {:print "$track_abort(57,8):", $t34} $t34 == $t34; - goto L11; - } - - // trace_local[shares#241]($t66) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:639:17+6 - assume {:print "$track_local(57,8,11):", $t66} $t66 == $t66; - - // $t67 := pool_u64::shares_to_amount_with_total_coins($t60, $t66, $t55) on_abort goto L11 with $t34 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:640:26+90 - assume {:print "$at(2,30531,30621)"} true; - call $t67 := $1_pool_u64_shares_to_amount_with_total_coins($t60, $t66, $t55); - if ($abort_flag) { - assume {:print "$at(2,30531,30621)"} true; - $t34 := $abort_code; - assume {:print "$track_abort(57,8):", $t34} $t34 == $t34; - goto L11; - } - - // trace_local[amount#242]($t67) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:640:17+6 - assume {:print "$track_local(57,8,4):", $t67} $t67 == $t67; - - // $t73 := borrow_local($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:641:48+10 - assume {:print "$at(2,30670,30680)"} true; - $t73 := $Mutation($Local(5), EmptyVec(), $t5); - - // assume Identical($t74, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 - assume {:print "$at(95,1664,1763)"} true; - assume ($t74 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); - - // $t68 := coin::extract($t73, $t67) on_abort goto L11 with $t34 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:641:34+33 - assume {:print "$at(2,30656,30689)"} true; - call $t68,$t73 := $1_coin_extract'$1_aptos_coin_AptosCoin'($t73, $t67); - if ($abort_flag) { - assume {:print "$at(2,30656,30689)"} true; - $t34 := $abort_code; - assume {:print "$track_abort(57,8):", $t34} $t34 == $t34; - goto L11; - } - - // write_back[LocalRoot($t5)@]($t73) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:641:34+33 - $t5 := $Dereference($t73); - - // trace_local[coins]($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:641:34+33 - assume {:print "$track_local(57,8,5):", $t5} $t5 == $t5; - - // trace_local[share_of_coins#243]($t68) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:641:17+14 - assume {:print "$track_local(57,8,9):", $t68} $t68 == $t68; - - // $t69 := read_ref($t35) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:642:52+31 - assume {:print "$at(2,30742,30773)"} true; - $t69 := $Dereference($t35); - - // $t70 := vesting::get_beneficiary($t69, $t65) on_abort goto L11 with $t34 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:642:37+46 - call $t70 := $1_vesting_get_beneficiary($t69, $t65); - if ($abort_flag) { - assume {:print "$at(2,30727,30773)"} true; - $t34 := $abort_code; - assume {:print "$track_abort(57,8):", $t34} $t34 == $t34; - goto L11; - } - - // assume Identical($t75, global($t70)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.spec.move:200:9+39 - assume {:print "$at(81,9368,9407)"} true; - assume ($t75 == $ResourceValue($1_account_Account_$memory, $t70)); - - // aptos_account::deposit_coins($t70, $t68) on_abort goto L11 with $t34 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:643:13+63 - assume {:print "$at(2,30787,30850)"} true; - call $1_aptos_account_deposit_coins'$1_aptos_coin_AptosCoin'($t70, $t68); - if ($abort_flag) { - assume {:print "$at(2,30787,30850)"} true; - $t34 := $abort_code; - assume {:print "$track_abort(57,8):", $t34} $t34 == $t34; - goto L11; - } - - // $t71 := 1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:265:21+1 - assume {:print "$at(18,9353,9354)"} true; - $t71 := 1; - assume $IsValid'u64'($t71); - - // $t72 := +($t7, $t71) on_abort goto L11 with $t34 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:265:19+1 - call $t72 := $AddU64($t7, $t71); - if ($abort_flag) { - assume {:print "$at(18,9351,9352)"} true; - $t34 := $abort_code; - assume {:print "$track_abort(57,8):", $t34} $t34 == $t34; - goto L11; - } - - // trace_local[i#237]($t72) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:265:13+1 - assume {:print "$track_local(57,8,7):", $t72} $t72 == $t72; - - // goto L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:265:13+9 - goto L9; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:647:9+182 - assume {:print "$at(2,30970,31152)"} true; -L2: - - // $t76 := copy($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:647:25+6 - assume {:print "$at(2,30986,30992)"} true; - $t76 := $t5; - - // assume Identical($t77, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 - assume {:print "$at(95,1664,1763)"} true; - assume ($t77 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); - - // $t78 := coin::value($t76) on_abort goto L11 with $t34 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:647:13+19 - assume {:print "$at(2,30974,30993)"} true; - call $t78 := $1_coin_value'$1_aptos_coin_AptosCoin'($t76); - if ($abort_flag) { - assume {:print "$at(2,30974,30993)"} true; - $t34 := $abort_code; - assume {:print "$track_abort(57,8):", $t34} $t34 == $t34; - goto L11; - } - - // $t79 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:647:35+1 - $t79 := 0; - assume $IsValid'u64'($t79); - - // $t80 := >($t78, $t79) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:647:33+1 - call $t80 := $Gt($t78, $t79); - - // if ($t80) goto L7 else goto L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:647:9+182 - if ($t80) { goto L7; } else { goto L6; } - - // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:648:42+16 - assume {:print "$at(2,31042,31058)"} true; -L7: - - // $t81 := get_field.withdrawal_address($t35) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:648:42+35 - assume {:print "$at(2,31042,31077)"} true; - $t81 := $withdrawal_address#$1_vesting_VestingContract($Dereference($t35)); - - // $t82 := move($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:648:79+5 - $t82 := $t5; - - // assume Identical($t83, global($t81)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.spec.move:200:9+39 - assume {:print "$at(81,9368,9407)"} true; - assume ($t83 == $ResourceValue($1_account_Account_$memory, $t81)); - - // aptos_account::deposit_coins($t81, $t82) on_abort goto L11 with $t34 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:648:13+72 - assume {:print "$at(2,31013,31085)"} true; - call $1_aptos_account_deposit_coins'$1_aptos_coin_AptosCoin'($t81, $t82); - if ($abort_flag) { - assume {:print "$at(2,31013,31085)"} true; - $t34 := $abort_code; - assume {:print "$track_abort(57,8):", $t34} $t34 == $t34; - goto L11; - } - - // goto L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:648:85+1 - goto L8; - - // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:650:32+5 - assume {:print "$at(2,31135,31140)"} true; -L6: - - // $t84 := move($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:650:32+5 - assume {:print "$at(2,31135,31140)"} true; - $t84 := $t5; - - // assume Identical($t85, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 - assume {:print "$at(95,1664,1763)"} true; - assume ($t85 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); - - // coin::destroy_zero($t84) on_abort goto L11 with $t34 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:650:13+25 - assume {:print "$at(2,31116,31141)"} true; - call $1_coin_destroy_zero'$1_aptos_coin_AptosCoin'($t84); - if ($abort_flag) { - assume {:print "$at(2,31116,31141)"} true; - $t34 := $abort_code; - assume {:print "$track_abort(57,8):", $t34} $t34 == $t34; - goto L11; - } - - // label L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:654:18+16 - assume {:print "$at(2,31192,31208)"} true; -L8: - - // $t86 := borrow_field.distribute_events($t35) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:654:13+39 - assume {:print "$at(2,31187,31226)"} true; - $t86 := $ChildMutation($t35, 15, $distribute_events#$1_vesting_VestingContract($Dereference($t35))); - - // $t87 := get_field.admin($t35) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:656:24+22 - assume {:print "$at(2,31281,31303)"} true; - $t87 := $admin#$1_vesting_VestingContract($Dereference($t35)); - - // $t88 := pack vesting::DistributeEvent($t87, $t0, $t55) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:655:13+189 - assume {:print "$at(2,31240,31429)"} true; - $t88 := $1_vesting_DistributeEvent($t87, $t0, $t55); - - // opaque begin: event::emit_event($t86, $t88) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:653:9+277 - assume {:print "$at(2,31163,31440)"} true; - - // opaque end: event::emit_event($t86, $t88) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:653:9+277 - - // write_back[Reference($t35).distribute_events (event::EventHandle)]($t86) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:653:9+277 - $t35 := $UpdateMutation($t35, $Update'$1_vesting_VestingContract'_distribute_events($Dereference($t35), $Dereference($t86))); - - // assert forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t35)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t35)), addr)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 - // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 - assume {:print "$at(59,538,673)"} true; - assert {:msg "assert_failed(59,538,673): data invariant does not hold"} - (forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t35))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t35))), addr)))); - - // assert forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t35)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t35)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t35)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t35)), j)), Eq(i, j)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 - // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 - assume {:print "$at(59,738,867)"} true; - assert {:msg "assert_failed(59,738,867): data invariant does not hold"} - (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t35))))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t35))))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; - (var j := $i_3; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t35))), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t35))), j)) ==> $IsEqual'num'(i, j)))))))); - - // write_back[vesting::VestingContract@]($t35) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:653:9+277 - assume {:print "$at(2,31163,31440)"} true; - $1_vesting_VestingContract_$memory := $ResourceUpdate($1_vesting_VestingContract_$memory, $GlobalLocationAddress($t35), - $Dereference($t35)); - - // goto L10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:660:10+1 - assume {:print "$at(2,31440,31441)"} true; - goto L10; - - // label L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:654:18+16 - // Loop invariant checking block for the loop started with header: L5 - assume {:print "$at(2,31192,31208)"} true; -L9: - - // stop() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:654:18+16 - assume {:print "$at(2,31192,31208)"} true; - assume false; - return; - - // label L10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:661:5+1 - assume {:print "$at(2,31446,31447)"} true; -L10: - - // assert Not(Not(exists[@159]($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:517:9+53 - assume {:print "$at(3,22974,23027)"} true; - assert {:msg "assert_failed(3,22974,23027): function does not abort under this condition"} - !!$ResourceExists($1_vesting_VestingContract_$memory#159, $t0); - - // assert Not(Neq(select vesting::VestingContract.state($t16), 1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:519:9+56 - assume {:print "$at(3,23110,23166)"} true; - assert {:msg "assert_failed(3,23110,23166): function does not abort under this condition"} - !!$IsEqual'u64'($state#$1_vesting_VestingContract($t16), 1); - - // assert Not(Not(exists[@160]($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:267:9+33 - assume {:print "$at(134,11439,11472)"} true; - assert {:msg "assert_failed(134,11439,11472): function does not abort under this condition"} - !!$ResourceExists($1_staking_contract_Store_$memory#160, $t0); - - // assert Not(Not(simple_map::spec_contains_key[]($t20, $t17))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:269:9+70 - assume {:print "$at(134,11554,11624)"} true; - assert {:msg "assert_failed(134,11554,11624): function does not abort under this condition"} - !!$1_simple_map_spec_contains_key'address_$1_staking_contract_StakingContract'($t20, $t17); - - // assert Not(Not(exists[@161]($t21))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:471:9+50 - assume {:print "$at(3,20605,20655)"} true; - assert {:msg "assert_failed(3,20605,20655): function does not abort under this condition"} - !!$ResourceExists($1_stake_StakePool_$memory#161, $t21); - - // assert Not(Gt(Add($t23, $t24), 18446744073709551615)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:475:9+48 - assume {:print "$at(3,20845,20893)"} true; - assert {:msg "assert_failed(3,20845,20893): function does not abort under this condition"} - !(($t23 + $t24) > 18446744073709551615); - - // assert Not(Not(exists[@161]($t26))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:480:9+52 - assume {:print "$at(3,21090,21142)"} true; - assert {:msg "assert_failed(3,21090,21142): function does not abort under this condition"} - !!$ResourceExists($1_stake_StakePool_$memory#161, $t26); - - // assert Not(Not(exists[@162](0x1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:482:9+57 - assume {:print "$at(3,21220,21277)"} true; - assert {:msg "assert_failed(3,21220,21277): function does not abort under this condition"} - !!$ResourceExists($1_stake_ValidatorSet_$memory#162, 1); - - // assert Not(And(And($t29, Ge(timestamp::spec_now_seconds[@163](), select stake::StakePool.locked_until_secs($t27))), Gt(Add($t30, $t31), 18446744073709551615))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:490:9+150 - assume {:print "$at(3,21816,21966)"} true; - assert {:msg "assert_failed(3,21816,21966): function does not abort under this condition"} - !(($t29 && ($1_timestamp_spec_now_seconds($1_timestamp_CurrentTimeMicroseconds_$memory#163) >= $locked_until_secs#$1_stake_StakePool($t27))) && (($t30 + $t31) > 18446744073709551615)); - - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:490:9+150 - return; - - // label L11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:661:5+1 - assume {:print "$at(2,31446,31447)"} true; -L11: - - // abort($t34) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:661:5+1 - assume {:print "$at(2,31446,31447)"} true; - $abort_code := $t34; - $abort_flag := true; - return; - -} - -// fun vesting::reset_lockup [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+862 -procedure {:timeLimit 1000} $1_vesting_reset_lockup$verify(_$t0: $signer, _$t1: int) returns () -{ - // declare local variables - var $t2: $signer; - var $t3: $Mutation ($1_vesting_VestingContract); - var $t4: $1_vesting_VestingContract; - var $t5: int; - var $t6: int; - var $t7: $1_staking_contract_Store; - var $t8: $1_staking_contract_StakingContract; - var $t9: int; - var $t10: Table int ($1_staking_contract_StakingContract); - var $t11: $1_staking_contract_Store; - var $t12: $1_staking_contract_StakingContract; - var $t13: int; - var $t14: $1_staking_config_StakingConfig; - var $t15: $1_stake_StakePool; - var $t16: int; - var $t17: int; - var $t18: int; - var $t19: $Mutation ($1_vesting_VestingContract); - var $t20: int; - var $t21: $1_vesting_VestingContract; - var $t22: $1_vesting_VestingContract; - var $t23: $signer; - var $t24: $1_vesting_StakingInfo; - var $t25: int; - var $t26: int; - var $t27: Table int ($1_staking_contract_StakingContract); - var $t28: $1_staking_contract_Store; - var $t29: $1_staking_contract_StakingContract; - var $t30: int; - var $t31: $1_staking_config_StakingConfig; - var $t32: $1_stake_StakePool; - var $t33: int; - var $t34: int; - var $t35: int; - var $t36: $Mutation ($1_event_EventHandle'$1_vesting_ResetLockupEvent'); - var $t37: int; - var $t38: $1_vesting_StakingInfo; - var $t39: int; - var $t40: $1_vesting_StakingInfo; - var $t41: int; - var $t42: int; - var $t43: $1_vesting_ResetLockupEvent; - var $t0: $signer; - var $t1: int; - var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; - var $temp_0'address': int; - var $temp_0'signer': $signer; - var $1_vesting_VestingContract_$memory#122: $Memory $1_vesting_VestingContract; - var $1_staking_contract_Store_$memory#123: $Memory $1_staking_contract_Store; - var $1_stake_StakePool_$memory#124: $Memory $1_stake_StakePool; - var $1_staking_config_StakingConfig_$memory#125: $Memory $1_staking_config_StakingConfig; - var $1_timestamp_CurrentTimeMicroseconds_$memory#126: $Memory $1_timestamp_CurrentTimeMicroseconds; - $t0 := _$t0; - $t1 := _$t1; - - // verification entrypoint assumptions - call $InitVerification(); - - // bytecode translation starts here - // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+1 - assume {:print "$at(2,36776,36777)"} true; - assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($addr#$signer($t0)); - - // assume WellFormed($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+1 - assume $IsValid'address'($t1); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_chain_status_GenesisEndMarker_$memory, $a_0)}(var $rsc := $ResourceValue($1_chain_status_GenesisEndMarker_$memory, $a_0); - ($IsValid'$1_chain_status_GenesisEndMarker'($rsc)))); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_timestamp_CurrentTimeMicroseconds_$memory, $a_0)}(var $rsc := $ResourceValue($1_timestamp_CurrentTimeMicroseconds_$memory, $a_0); - ($IsValid'$1_timestamp_CurrentTimeMicroseconds'($rsc)))); - - // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(And(Le(select staking_config::StakingConfig.rewards_rate($rsc), 1000000), Gt(select staking_config::StakingConfig.rewards_rate_denominator($rsc), 0)), Le(select staking_config::StakingConfig.rewards_rate($rsc), select staking_config::StakingConfig.rewards_rate_denominator($rsc)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_staking_config_StakingConfig_$memory, $a_0)}(var $rsc := $ResourceValue($1_staking_config_StakingConfig_$memory, $a_0); - (($IsValid'$1_staking_config_StakingConfig'($rsc) && ((($rewards_rate#$1_staking_config_StakingConfig($rsc) <= 1000000) && ($rewards_rate_denominator#$1_staking_config_StakingConfig($rsc) > 0)) && ($rewards_rate#$1_staking_config_StakingConfig($rsc) <= $rewards_rate_denominator#$1_staking_config_StakingConfig($rsc))))))); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_stake_StakePool_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_StakePool_$memory, $a_0); - ($IsValid'$1_stake_StakePool'($rsc)))); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorConfig_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorConfig_$memory, $a_0); - ($IsValid'$1_stake_ValidatorConfig'($rsc)))); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorPerformance_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorPerformance_$memory, $a_0); - ($IsValid'$1_stake_ValidatorPerformance'($rsc)))); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorSet_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorSet_$memory, $a_0); - ($IsValid'$1_stake_ValidatorSet'($rsc)))); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_reconfiguration_Configuration_$memory, $a_0)}(var $rsc := $ResourceValue($1_reconfiguration_Configuration_$memory, $a_0); - ($IsValid'$1_reconfiguration_Configuration'($rsc)))); - - // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), forall $key: select staking_contract::Store.staking_contracts($rsc): And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), i), Index(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_staking_contract_Store_$memory, $a_0)}(var $rsc := $ResourceValue($1_staking_contract_Store_$memory, $a_0); - (($IsValid'$1_staking_contract_Store'($rsc) && (var $range_1 := $staking_contracts#$1_staking_contract_Store($rsc); (forall $key: int :: ContainsTable($range_1, $EncodeKey'address'($key)) ==> (((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), addr)))) && (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))))); (var $range_3 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))))); (forall $i_4: int, $i_5: int :: $InRange($range_2, $i_4) ==> $InRange($range_3, $i_5) ==> (var i := $i_4; - (var j := $i_5; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), i), ReadVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), j)) ==> $IsEqual'num'(i, j)))))))))))))))); - - // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); - (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; - (var j := $i_4; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); - - // assume Implies(chain_status::$is_operating(), exists(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+862 - // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.spec.move:4:9+93 - assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory, 1)); - - // assume Implies(chain_status::$is_operating(), exists(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+862 - // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/configs/staking_config.spec.move:4:9+83 - assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_staking_config_StakingConfig_$memory, 1)); - - // assume Implies(exists(0x1), stake::validator_set_is_valid()) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+862 - // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:8:9+92 - assume ($ResourceExists($1_stake_ValidatorSet_$memory, 1) ==> $1_stake_validator_set_is_valid($1_stake_StakePool_$memory, $1_stake_ValidatorConfig_$memory, $1_stake_ValidatorPerformance_$memory, $1_stake_ValidatorSet_$memory)); - - // assume Implies(chain_status::$is_operating(), Ge(timestamp::spec_now_microseconds(), reconfiguration::$last_reconfiguration_time())) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+862 - // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/reconfiguration.spec.move:8:9+137 - assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> ($1_timestamp_spec_now_microseconds($1_timestamp_CurrentTimeMicroseconds_$memory) >= $1_reconfiguration_$last_reconfiguration_time($1_reconfiguration_Configuration_$memory))); - - // assume Identical($t4, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:295:9+65 - assume {:print "$at(3,12666,12731)"} true; - assume ($t4 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); - - // assume Identical($t5, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t4))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:298:9+49 - assume {:print "$at(3,12812,12861)"} true; - assume ($t5 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t4))); - - // assume Identical($t6, select account::SignerCapability.account(select vesting::VestingContract.signer_cap($t4))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:299:9+49 - assume {:print "$at(3,12870,12919)"} true; - assume ($t6 == $account#$1_account_SignerCapability($signer_cap#$1_vesting_VestingContract($t4))); - - // assume Identical($t7, global($t6)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:304:9+52 - assume {:print "$at(3,13091,13143)"} true; - assume ($t7 == $ResourceValue($1_staking_contract_Store_$memory, $t6)); - - // assume Identical($t8, simple_map::spec_get(select staking_contract::Store.staking_contracts($t7), $t5)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:305:9+79 - assume {:print "$at(3,13152,13231)"} true; - assume ($t8 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($t7), $t5)); - - // assume Identical($t9, select stake::OwnerCapability.pool_address(select staking_contract::StakingContract.owner_cap($t8))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:306:9+59 - assume {:print "$at(3,13240,13299)"} true; - assume ($t9 == $pool_address#$1_stake_OwnerCapability($owner_cap#$1_staking_contract_StakingContract($t8))); - - // assume Identical($t10, select staking_contract::Store.staking_contracts(global($t6))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 - assume {:print "$at(134,11481,11545)"} true; - assume ($t10 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t6))); - - // assume Identical($t11, global($t6)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:316:9+34 - assume {:print "$at(134,13411,13445)"} true; - assume ($t11 == $ResourceValue($1_staking_contract_Store_$memory, $t6)); - - // assume Identical($t12, simple_map::spec_get(select staking_contract::Store.staking_contracts($t11), $t5)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:317:9+79 - assume {:print "$at(134,13454,13533)"} true; - assume ($t12 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($t11), $t5)); - - // assume Identical($t13, select stake::OwnerCapability.pool_address(select staking_contract::StakingContract.owner_cap($t12))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:318:9+59 - assume {:print "$at(134,13542,13601)"} true; - assume ($t13 == $pool_address#$1_stake_OwnerCapability($owner_cap#$1_staking_contract_StakingContract($t12))); - - // assume Identical($t14, global(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:323:9+69 - assume {:print "$at(134,13747,13816)"} true; - assume ($t14 == $ResourceValue($1_staking_config_StakingConfig_$memory, 1)); - - // assume Identical($t15, global($t13)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:324:9+56 - assume {:print "$at(134,13825,13881)"} true; - assume ($t15 == $ResourceValue($1_stake_StakePool_$memory, $t13)); - - // assume Identical($t16, select stake::StakePool.locked_until_secs($t15)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:325:9+57 - assume {:print "$at(134,13890,13947)"} true; - assume ($t16 == $locked_until_secs#$1_stake_StakePool($t15)); - - // assume Identical($t17, Div(select timestamp::CurrentTimeMicroseconds.microseconds(global(0x1)), 1000000)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:326:9+126 - assume {:print "$at(134,13956,14082)"} true; - assume ($t17 == ($microseconds#$1_timestamp_CurrentTimeMicroseconds($ResourceValue($1_timestamp_CurrentTimeMicroseconds_$memory, 1)) div 1000000)); - - // assume Identical($t18, Add($t17, select staking_config::StakingConfig.recurring_lockup_duration_secs($t14))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:327:9+77 - assume {:print "$at(134,14091,14168)"} true; - assume ($t18 == ($t17 + $recurring_lockup_duration_secs#$1_staking_config_StakingConfig($t14))); - - // @126 := save_mem(timestamp::CurrentTimeMicroseconds) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+1 - assume {:print "$at(2,36776,36777)"} true; - $1_timestamp_CurrentTimeMicroseconds_$memory#126 := $1_timestamp_CurrentTimeMicroseconds_$memory; - - // @125 := save_mem(staking_config::StakingConfig) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+1 - $1_staking_config_StakingConfig_$memory#125 := $1_staking_config_StakingConfig_$memory; - - // @124 := save_mem(stake::StakePool) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+1 - $1_stake_StakePool_$memory#124 := $1_stake_StakePool_$memory; - - // @123 := save_mem(staking_contract::Store) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+1 - $1_staking_contract_Store_$memory#123 := $1_staking_contract_Store_$memory; - - // @122 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+1 - $1_vesting_VestingContract_$memory#122 := $1_vesting_VestingContract_$memory; - - // trace_local[admin]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+1 - assume {:print "$track_local(57,19,0):", $t0} $t0 == $t0; - - // trace_local[contract_address]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+1 - assume {:print "$track_local(57,19,1):", $t1} $t1 == $t1; - - // $t19 := borrow_global($t1) on_abort goto L2 with $t20 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:791:32+17 - assume {:print "$at(2,36930,36947)"} true; - if (!$ResourceExists($1_vesting_VestingContract_$memory, $t1)) { - call $ExecFailureAbort(); - } else { - $t19 := $Mutation($Global($t1), EmptyVec(), $ResourceValue($1_vesting_VestingContract_$memory, $t1)); - } - if ($abort_flag) { - assume {:print "$at(2,36930,36947)"} true; - $t20 := $abort_code; - assume {:print "$track_abort(57,19):", $t20} $t20 == $t20; - goto L2; - } - - // trace_local[vesting_contract]($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:791:13+16 - $temp_0'$1_vesting_VestingContract' := $Dereference($t19); - assume {:print "$track_local(57,19,3):", $temp_0'$1_vesting_VestingContract'} $temp_0'$1_vesting_VestingContract' == $temp_0'$1_vesting_VestingContract'; - - // $t21 := read_ref($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:792:21+25 - assume {:print "$at(2,37004,37029)"} true; - $t21 := $Dereference($t19); - - // vesting::verify_admin($t0, $t21) on_abort goto L2 with $t20 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:792:9+37 - call $1_vesting_verify_admin($t0, $t21); - if ($abort_flag) { - assume {:print "$at(2,36992,37029)"} true; - $t20 := $abort_code; - assume {:print "$track_abort(57,19):", $t20} $t20 == $t20; - goto L2; - } - - // $t22 := read_ref($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:793:68+16 - assume {:print "$at(2,37098,37114)"} true; - $t22 := $Dereference($t19); - - // $t23 := vesting::get_vesting_account_signer_internal($t22) on_abort goto L2 with $t20 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:793:32+53 - call $t23 := $1_vesting_get_vesting_account_signer_internal($t22); - if ($abort_flag) { - assume {:print "$at(2,37062,37115)"} true; - $t20 := $abort_code; - assume {:print "$track_abort(57,19):", $t20} $t20 == $t20; - goto L2; - } - - // $t24 := get_field.staking($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:794:57+24 - assume {:print "$at(2,37173,37197)"} true; - $t24 := $staking#$1_vesting_VestingContract($Dereference($t19)); - - // $t25 := get_field.operator($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:794:57+33 - $t25 := $operator#$1_vesting_StakingInfo($t24); - - // assume Identical($t26, signer::$address_of($t23)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:106:9+48 - assume {:print "$at(134,4774,4822)"} true; - assume ($t26 == $1_signer_$address_of($t23)); - - // assume Identical($t27, select staking_contract::Store.staking_contracts(global($t26))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 - assume {:print "$at(134,11481,11545)"} true; - assume ($t27 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t26))); - - // assume Identical($t28, global($t26)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:316:9+34 - assume {:print "$at(134,13411,13445)"} true; - assume ($t28 == $ResourceValue($1_staking_contract_Store_$memory, $t26)); - - // assume Identical($t29, simple_map::spec_get(select staking_contract::Store.staking_contracts($t28), $t25)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:317:9+79 - assume {:print "$at(134,13454,13533)"} true; - assume ($t29 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($t28), $t25)); - - // assume Identical($t30, select stake::OwnerCapability.pool_address(select staking_contract::StakingContract.owner_cap($t29))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:318:9+59 - assume {:print "$at(134,13542,13601)"} true; - assume ($t30 == $pool_address#$1_stake_OwnerCapability($owner_cap#$1_staking_contract_StakingContract($t29))); - - // assume Identical($t31, global(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:323:9+69 - assume {:print "$at(134,13747,13816)"} true; - assume ($t31 == $ResourceValue($1_staking_config_StakingConfig_$memory, 1)); - - // assume Identical($t32, global($t30)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:324:9+56 - assume {:print "$at(134,13825,13881)"} true; - assume ($t32 == $ResourceValue($1_stake_StakePool_$memory, $t30)); - - // assume Identical($t33, select stake::StakePool.locked_until_secs($t32)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:325:9+57 - assume {:print "$at(134,13890,13947)"} true; - assume ($t33 == $locked_until_secs#$1_stake_StakePool($t32)); - - // assume Identical($t34, Div(select timestamp::CurrentTimeMicroseconds.microseconds(global(0x1)), 1000000)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:326:9+126 - assume {:print "$at(134,13956,14082)"} true; - assume ($t34 == ($microseconds#$1_timestamp_CurrentTimeMicroseconds($ResourceValue($1_timestamp_CurrentTimeMicroseconds_$memory, 1)) div 1000000)); - - // assume Identical($t35, Add($t34, select staking_config::StakingConfig.recurring_lockup_duration_secs($t31))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:327:9+77 - assume {:print "$at(134,14091,14168)"} true; - assume ($t35 == ($t34 + $recurring_lockup_duration_secs#$1_staking_config_StakingConfig($t31))); - - // staking_contract::reset_lockup($t23, $t25) on_abort goto L2 with $t20 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:794:9+82 - assume {:print "$at(2,37125,37207)"} true; - call $1_staking_contract_reset_lockup($t23, $t25); - if ($abort_flag) { - assume {:print "$at(2,37125,37207)"} true; - $t20 := $abort_code; - assume {:print "$track_abort(57,19):", $t20} $t20 == $t20; - goto L2; - } - - // $t36 := borrow_field.reset_lockup_events($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:797:13+41 - assume {:print "$at(2,37242,37283)"} true; - $t36 := $ChildMutation($t19, 11, $reset_lockup_events#$1_vesting_VestingContract($Dereference($t19))); - - // $t37 := get_field.admin($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:799:24+22 - assume {:print "$at(2,37339,37361)"} true; - $t37 := $admin#$1_vesting_VestingContract($Dereference($t19)); - - // $t38 := get_field.staking($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:801:39+24 - assume {:print "$at(2,37461,37485)"} true; - $t38 := $staking#$1_vesting_VestingContract($Dereference($t19)); - - // $t39 := get_field.pool_address($t38) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:801:39+37 - $t39 := $pool_address#$1_vesting_StakingInfo($t38); - - // $t40 := get_field.staking($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:802:68+24 - assume {:print "$at(2,37567,37591)"} true; - $t40 := $staking#$1_vesting_VestingContract($Dereference($t19)); - - // $t41 := get_field.pool_address($t40) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:802:68+37 - $t41 := $pool_address#$1_vesting_StakingInfo($t40); - - // $t42 := stake::get_lockup_secs($t41) on_abort goto L2 with $t20 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:802:45+61 - call $t42 := $1_stake_get_lockup_secs($t41); - if ($abort_flag) { - assume {:print "$at(2,37544,37605)"} true; - $t20 := $abort_code; - assume {:print "$track_abort(57,19):", $t20} $t20 == $t20; - goto L2; - } - - // $t43 := pack vesting::ResetLockupEvent($t37, $t1, $t39, $t42) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:798:13+323 - assume {:print "$at(2,37297,37620)"} true; - $t43 := $1_vesting_ResetLockupEvent($t37, $t1, $t39, $t42); - - // opaque begin: event::emit_event($t36, $t43) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:796:9+413 - assume {:print "$at(2,37218,37631)"} true; - - // opaque end: event::emit_event($t36, $t43) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:796:9+413 - - // write_back[Reference($t19).reset_lockup_events (event::EventHandle)]($t36) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:796:9+413 - $t19 := $UpdateMutation($t19, $Update'$1_vesting_VestingContract'_reset_lockup_events($Dereference($t19), $Dereference($t36))); - - // assert forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t19)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t19)), addr)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 - // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 - assume {:print "$at(59,538,673)"} true; - assert {:msg "assert_failed(59,538,673): data invariant does not hold"} - (forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t19))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t19))), addr)))); - - // assert forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t19)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t19)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t19)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t19)), j)), Eq(i, j)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 - // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 - assume {:print "$at(59,738,867)"} true; - assert {:msg "assert_failed(59,738,867): data invariant does not hold"} - (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t19))))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t19))))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; - (var j := $i_3; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t19))), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t19))), j)) ==> $IsEqual'num'(i, j)))))))); - - // write_back[vesting::VestingContract@]($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:796:9+413 - assume {:print "$at(2,37218,37631)"} true; - $1_vesting_VestingContract_$memory := $ResourceUpdate($1_vesting_VestingContract_$memory, $GlobalLocationAddress($t19), - $Dereference($t19)); - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:805:5+1 - assume {:print "$at(2,37637,37638)"} true; -L1: - - // assert Not(Not(exists[@122]($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:294:9+53 - assume {:print "$at(3,12604,12657)"} true; - assert {:msg "assert_failed(3,12604,12657): function does not abort under this condition"} - !!$ResourceExists($1_vesting_VestingContract_$memory#122, $t1); - - // assert Not(Neq
(signer::$address_of[]($t0), select vesting::VestingContract.admin($t4))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:296:9+62 - assume {:print "$at(3,12740,12802)"} true; - assert {:msg "assert_failed(3,12740,12802): function does not abort under this condition"} - !!$IsEqual'address'($1_signer_$address_of($t0), $admin#$1_vesting_VestingContract($t4)); - - // assert Not(Not(exists[@123]($t6))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:267:9+33 - assume {:print "$at(134,11439,11472)"} true; - assert {:msg "assert_failed(134,11439,11472): function does not abort under this condition"} - !!$ResourceExists($1_staking_contract_Store_$memory#123, $t6); - - // assert Not(Not(simple_map::spec_contains_key[]($t10, $t5))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:269:9+70 - assume {:print "$at(134,11554,11624)"} true; - assert {:msg "assert_failed(134,11554,11624): function does not abort under this condition"} - !!$1_simple_map_spec_contains_key'address_$1_staking_contract_StakingContract'($t10, $t5); - - // assert Not(Not(stake::$stake_pool_exists[@124]($t13))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:320:9+50 - assume {:print "$at(134,13611,13661)"} true; - assert {:msg "assert_failed(134,13611,13661): function does not abort under this condition"} - !!$1_stake_$stake_pool_exists($1_stake_StakePool_$memory#124, $t13); - - // assert Not(Not(exists[@125](0x1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:321:9+67 - assume {:print "$at(134,13670,13737)"} true; - assert {:msg "assert_failed(134,13670,13737): function does not abort under this condition"} - !!$ResourceExists($1_staking_config_StakingConfig_$memory#125, 1); - - // assert Not(Gt(Add($t17, select staking_config::StakingConfig.recurring_lockup_duration_secs($t14)), 18446744073709551615)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:328:9+68 - assume {:print "$at(134,14177,14245)"} true; - assert {:msg "assert_failed(134,14177,14245): function does not abort under this condition"} - !(($t17 + $recurring_lockup_duration_secs#$1_staking_config_StakingConfig($t14)) > 18446744073709551615); - - // assert Not(Or(Gt($t16, $t18), Eq($t16, $t18))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:329:9+106 - assume {:print "$at(134,14254,14360)"} true; - assert {:msg "assert_failed(134,14254,14360): function does not abort under this condition"} - !(($t16 > $t18) || $IsEqual'u64'($t16, $t18)); - - // assert Not(Not(exists[@126](0x1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:330:9+72 - assume {:print "$at(134,14369,14441)"} true; - assert {:msg "assert_failed(134,14369,14441): function does not abort under this condition"} - !!$ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory#126, 1); - - // assert Not(Not(exists[@124](select vesting::StakingInfo.pool_address(select vesting::VestingContract.staking($t4))))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:307:9+75 - assume {:print "$at(3,13308,13383)"} true; - assert {:msg "assert_failed(3,13308,13383): function does not abort under this condition"} - !!$ResourceExists($1_stake_StakePool_$memory#124, $pool_address#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t4))); - - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:307:9+75 - return; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:805:5+1 - assume {:print "$at(2,37637,37638)"} true; -L2: - - // assert Or(Or(Or(Or(Or(Or(Or(Or(Or(Not(exists[@122]($t1)), Neq
(signer::$address_of[]($t0), select vesting::VestingContract.admin($t4))), Not(exists[@123]($t6))), Not(simple_map::spec_contains_key[]($t10, $t5))), Not(stake::$stake_pool_exists[@124]($t13))), Not(exists[@125](0x1))), Gt(Add($t17, select staking_config::StakingConfig.recurring_lockup_duration_secs($t14)), 18446744073709551615)), Or(Gt($t16, $t18), Eq($t16, $t18))), Not(exists[@126](0x1))), Not(exists[@124](select vesting::StakingInfo.pool_address(select vesting::VestingContract.staking($t4))))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:290:5+879 - assume {:print "$at(3,12510,13389)"} true; - assert {:msg "assert_failed(3,12510,13389): abort not covered by any of the `aborts_if` clauses"} - (((((((((!$ResourceExists($1_vesting_VestingContract_$memory#122, $t1) || !$IsEqual'address'($1_signer_$address_of($t0), $admin#$1_vesting_VestingContract($t4))) || !$ResourceExists($1_staking_contract_Store_$memory#123, $t6)) || !$1_simple_map_spec_contains_key'address_$1_staking_contract_StakingContract'($t10, $t5)) || !$1_stake_$stake_pool_exists($1_stake_StakePool_$memory#124, $t13)) || !$ResourceExists($1_staking_config_StakingConfig_$memory#125, 1)) || (($t17 + $recurring_lockup_duration_secs#$1_staking_config_StakingConfig($t14)) > 18446744073709551615)) || (($t16 > $t18) || $IsEqual'u64'($t16, $t18))) || !$ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory#126, 1)) || !$ResourceExists($1_stake_StakePool_$memory#124, $pool_address#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t4)))); - - // abort($t20) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:290:5+879 - $abort_code := $t20; - $abort_flag := true; - return; - -} - -// fun vesting::stake_pool_address [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:251:5+258 -procedure {:timeLimit 1000} $1_vesting_stake_pool_address$verify(_$t0: int) returns ($ret0: int) -{ - // declare local variables - var $t1: int; - var $t2: $1_vesting_VestingContract; - var $t3: $1_vesting_StakingInfo; - var $t4: int; - var $t0: int; - var $temp_0'address': int; - var $1_vesting_VestingContract_$memory#58: $Memory $1_vesting_VestingContract; - $t0 := _$t0; - - // verification entrypoint assumptions - call $InitVerification(); - - // bytecode translation starts here - // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:251:5+1 - assume {:print "$at(2,11140,11141)"} true; - assume $IsValid'address'($t0); - - // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:251:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); - (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; - (var j := $i_4; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); - - // @58 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:251:5+1 - $1_vesting_VestingContract_$memory#58 := $1_vesting_VestingContract_$memory; - - // trace_local[vesting_contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:251:5+1 - assume {:print "$track_local(57,25,0):", $t0} $t0 == $t0; - - // vesting::assert_vesting_contract_exists($t0) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:252:9+56 - assume {:print "$at(2,11249,11305)"} true; - call $1_vesting_assert_vesting_contract_exists($t0); - if ($abort_flag) { - assume {:print "$at(2,11249,11305)"} true; - $t1 := $abort_code; - assume {:print "$track_abort(57,25):", $t1} $t1 == $t1; - goto L2; - } - - // $t2 := get_global($t0) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:253:9+13 - assume {:print "$at(2,11315,11328)"} true; - if (!$ResourceExists($1_vesting_VestingContract_$memory, $t0)) { - call $ExecFailureAbort(); - } else { - $t2 := $ResourceValue($1_vesting_VestingContract_$memory, $t0); - } - if ($abort_flag) { - assume {:print "$at(2,11315,11328)"} true; - $t1 := $abort_code; - assume {:print "$track_abort(57,25):", $t1} $t1 == $t1; - goto L2; - } - - // $t3 := get_field.staking($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:253:9+64 - $t3 := $staking#$1_vesting_VestingContract($t2); - - // $t4 := get_field.pool_address($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:253:9+77 - $t4 := $pool_address#$1_vesting_StakingInfo($t3); - - // trace_return[0]($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:253:9+77 - assume {:print "$track_return(57,25,0):", $t4} $t4 == $t4; - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:254:5+1 - assume {:print "$at(2,11397,11398)"} true; -L1: - - // assert Not(Not(exists[@58]($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:8:9+61 - assume {:print "$at(3,205,266)"} true; - assert {:msg "assert_failed(3,205,266): function does not abort under this condition"} - !!$ResourceExists($1_vesting_VestingContract_$memory#58, $t0); - - // return $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:8:9+61 - $ret0 := $t4; - return; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:254:5+1 - assume {:print "$at(2,11397,11398)"} true; -L2: - - // assert Not(exists[@58]($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:7:5+145 - assume {:print "$at(3,127,272)"} true; - assert {:msg "assert_failed(3,127,272): abort not covered by any of the `aborts_if` clauses"} - !$ResourceExists($1_vesting_VestingContract_$memory#58, $t0); - - // abort($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:7:5+145 - $abort_code := $t1; - $abort_flag := true; - return; - -} - -// fun vesting::unlock_rewards [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:539:5+312 -procedure {:inline 1} $1_vesting_unlock_rewards(_$t0: int) returns () -{ - // declare local variables - var $t1: int; - var $t2: $1_vesting_VestingContract; - var $t3: int; - var $t4: Table int ($1_staking_contract_StakingContract); - var $t5: $1_staking_contract_StakingContract; - var $t6: int; - var $t7: $1_stake_StakePool; - var $t8: int; - var $t9: int; - var $t10: int; - var $t11: int; - var $t12: int; - var $t13: int; - var $t14: $1_vesting_VestingContract; - var $t15: int; - var $t16: int; - var $t17: Table int ($1_staking_contract_StakingContract); - var $t18: $1_staking_contract_StakingContract; - var $t19: int; - var $t20: $1_stake_StakePool; - var $t21: int; - var $t22: int; - var $t23: int; - var $t24: int; - var $t25: int; - var $t26: $1_vesting_VestingContract; - var $t27: int; - var $t28: int; - var $t29: $1_staking_contract_Store; - var $t30: $1_staking_contract_StakingContract; - var $t31: Table int ($1_staking_contract_StakingContract); - var $t32: int; - var $t33: $1_stake_StakePool; - var $t34: int; - var $t35: int; - var $t36: int; - var $t37: int; - var $t38: $1_stake_StakePool; - var $t39: $1_stake_ValidatorSet; - var $t40: bool; - var $t41: int; - var $t42: int; - var $t43: int; - var $t44: $1_vesting_VestingContract; - var $t45: int; - var $t46: int; - var $t47: Table int ($1_staking_contract_StakingContract); - var $t48: $1_staking_contract_StakingContract; - var $t49: int; - var $t50: $1_stake_StakePool; - var $t51: int; - var $t52: int; - var $t53: int; - var $t54: int; - var $t55: int; - var $t56: $1_vesting_VestingContract; - var $t57: int; - var $t58: int; - var $t59: $1_vesting_VestingContract; - var $t60: int; - var $t61: int; - var $t62: $1_staking_contract_Store; - var $t63: $1_staking_contract_StakingContract; - var $t64: Table int ($1_staking_contract_StakingContract); - var $t65: int; - var $t66: $1_stake_StakePool; - var $t67: int; - var $t68: int; - var $t69: int; - var $t70: int; - var $t71: $1_stake_StakePool; - var $t72: $1_stake_ValidatorSet; - var $t73: bool; - var $t74: int; - var $t75: int; - var $t76: int; - var $t0: int; - var $temp_0'address': int; - var $temp_0'u64': int; - $t0 := _$t0; - - // bytecode translation starts here - // assume Identical($t2, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:161:9+65 - assume {:print "$at(3,7222,7287)"} true; - assume ($t2 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); - - // assume Identical($t3, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t2))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:162:9+49 - assume {:print "$at(3,7296,7345)"} true; - assume ($t3 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t2))); - - // assume Identical($t4, select staking_contract::Store.staking_contracts(global($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:163:9+92 - assume {:print "$at(3,7354,7446)"} true; - assume ($t4 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t0))); - - // assume Identical($t5, simple_map::spec_get($t4, $t3)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:164:9+73 - assume {:print "$at(3,7455,7528)"} true; - assume ($t5 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($t4, $t3)); - - // assume Identical($t6, select staking_contract::StakingContract.pool_address($t5)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:165:9+49 - assume {:print "$at(3,7537,7586)"} true; - assume ($t6 == $pool_address#$1_staking_contract_StakingContract($t5)); - - // assume Identical($t7, global($t6)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:166:9+56 - assume {:print "$at(3,7595,7651)"} true; - assume ($t7 == $ResourceValue($1_stake_StakePool_$memory, $t6)); - - // assume Identical($t8, coin::$value(select stake::StakePool.active($t7))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:167:9+44 - assume {:print "$at(3,7660,7704)"} true; - assume ($t8 == $1_coin_$value'$1_aptos_coin_AptosCoin'($active#$1_stake_StakePool($t7))); - - // assume Identical($t9, coin::$value(select stake::StakePool.pending_active($t7))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:168:9+60 - assume {:print "$at(3,7713,7773)"} true; - assume ($t9 == $1_coin_$value'$1_aptos_coin_AptosCoin'($pending_active#$1_stake_StakePool($t7))); - - // assume Identical($t10, Add($t8, $t9)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:169:9+49 - assume {:print "$at(3,7782,7831)"} true; - assume ($t10 == ($t8 + $t9)); - - // assume Identical($t11, Sub($t10, select staking_contract::StakingContract.principal($t5))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:170:9+74 - assume {:print "$at(3,7840,7914)"} true; - assume ($t11 == ($t10 - $principal#$1_staking_contract_StakingContract($t5))); - - // assume Identical($t12, Div(Mul($t11, select staking_contract::StakingContract.commission_percentage($t5)), 100)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:171:9+91 - assume {:print "$at(3,7923,8014)"} true; - assume ($t12 == (($t11 * $commission_percentage#$1_staking_contract_StakingContract($t5)) div 100)); - - // assume Identical($t13, Sub(Sub($t10, select vesting::VestingContract.remaining_grant($t2)), $t12)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:172:9+87 - assume {:print "$at(3,8023,8110)"} true; - assume ($t13 == (($t10 - $remaining_grant#$1_vesting_VestingContract($t2)) - $t12)); - - // assume Identical($t14, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:59:9+73 - assume {:print "$at(3,2072,2145)"} true; - assume ($t14 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); - - // assume Identical($t15, $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:61:9+38 - assume {:print "$at(3,2155,2193)"} true; - assume ($t15 == $t0); - - // assume Identical($t16, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t14))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:62:9+49 - assume {:print "$at(3,2202,2251)"} true; - assume ($t16 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t14))); - - // assume Identical($t17, select staking_contract::Store.staking_contracts(global($t15))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:63:9+82 - assume {:print "$at(3,2260,2342)"} true; - assume ($t17 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t15))); - - // assume Identical($t18, simple_map::spec_get($t17, $t16)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:64:9+73 - assume {:print "$at(3,2351,2424)"} true; - assume ($t18 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($t17, $t16)); - - // assume Identical($t19, select staking_contract::StakingContract.pool_address($t18)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:69:9+49 - assume {:print "$at(3,2574,2623)"} true; - assume ($t19 == $pool_address#$1_staking_contract_StakingContract($t18)); - - // assume Identical($t20, global($t19)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:70:9+56 - assume {:print "$at(3,2632,2688)"} true; - assume ($t20 == $ResourceValue($1_stake_StakePool_$memory, $t19)); - - // assume Identical($t21, coin::$value(select stake::StakePool.active($t20))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:71:9+44 - assume {:print "$at(3,2697,2741)"} true; - assume ($t21 == $1_coin_$value'$1_aptos_coin_AptosCoin'($active#$1_stake_StakePool($t20))); - - // assume Identical($t22, coin::$value(select stake::StakePool.pending_active($t20))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:72:9+60 - assume {:print "$at(3,2750,2810)"} true; - assume ($t22 == $1_coin_$value'$1_aptos_coin_AptosCoin'($pending_active#$1_stake_StakePool($t20))); - - // assume Identical($t23, Add($t21, $t22)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:73:9+49 - assume {:print "$at(3,2819,2868)"} true; - assume ($t23 == ($t21 + $t22)); - - // assume Identical($t24, Sub($t23, select staking_contract::StakingContract.principal($t18))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:74:9+74 - assume {:print "$at(3,2877,2951)"} true; - assume ($t24 == ($t23 - $principal#$1_staking_contract_StakingContract($t18))); - - // assume Identical($t25, Div(Mul($t24, select staking_contract::StakingContract.commission_percentage($t18)), 100)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:75:9+91 - assume {:print "$at(3,2960,3051)"} true; - assume ($t25 == (($t24 * $commission_percentage#$1_staking_contract_StakingContract($t18)) div 100)); - - // assume Identical($t26, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:518:9+65 - assume {:print "$at(3,23036,23101)"} true; - assume ($t26 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); - - // assume Identical($t27, select account::SignerCapability.account(select vesting::VestingContract.signer_cap($t26))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:434:9+46 - assume {:print "$at(3,18724,18770)"} true; - assume ($t27 == $account#$1_account_SignerCapability($signer_cap#$1_vesting_VestingContract($t26))); - - // assume Identical($t28, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t26))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:435:9+49 - assume {:print "$at(3,18779,18828)"} true; - assume ($t28 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t26))); - - // assume Identical($t29, global($t27)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:439:9+49 - assume {:print "$at(3,18996,19045)"} true; - assume ($t29 == $ResourceValue($1_staking_contract_Store_$memory, $t27)); - - // assume Identical($t30, simple_map::spec_get(select staking_contract::Store.staking_contracts($t29), $t28)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:440:9+79 - assume {:print "$at(3,19054,19133)"} true; - assume ($t30 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($t29), $t28)); - - // assume Identical($t31, select staking_contract::Store.staking_contracts(global($t27))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 - assume {:print "$at(134,11481,11545)"} true; - assume ($t31 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t27))); - - // assume Identical($t32, select staking_contract::StakingContract.pool_address($t30)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:470:9+49 - assume {:print "$at(3,20547,20596)"} true; - assume ($t32 == $pool_address#$1_staking_contract_StakingContract($t30)); - - // assume Identical($t33, global($t32)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:472:9+56 - assume {:print "$at(3,20664,20720)"} true; - assume ($t33 == $ResourceValue($1_stake_StakePool_$memory, $t32)); - - // assume Identical($t34, select coin::Coin.value(select stake::StakePool.inactive($t33))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:473:9+41 - assume {:print "$at(3,20729,20770)"} true; - assume ($t34 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t33))); - - // assume Identical($t35, select coin::Coin.value(select stake::StakePool.pending_inactive($t33))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:474:9+57 - assume {:print "$at(3,20779,20836)"} true; - assume ($t35 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t33))); - - // assume Identical($t36, Add($t34, $t35)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:478:9+63 - assume {:print "$at(3,20948,21011)"} true; - assume ($t36 == ($t34 + $t35)); - - // assume Identical($t37, select stake::OwnerCapability.pool_address(select staking_contract::StakingContract.owner_cap($t30))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:479:9+61 - assume {:print "$at(3,21020,21081)"} true; - assume ($t37 == $pool_address#$1_stake_OwnerCapability($owner_cap#$1_staking_contract_StakingContract($t30))); - - // assume Identical($t38, global($t37)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:481:9+60 - assume {:print "$at(3,21151,21211)"} true; - assume ($t38 == $ResourceValue($1_stake_StakePool_$memory, $t37)); - - // assume Identical($t39, global(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:483:9+66 - assume {:print "$at(3,21286,21352)"} true; - assume ($t39 == $ResourceValue($1_stake_ValidatorSet_$memory, 1)); - - // assume Identical($t40, And(And(Not(stake::spec_contains(select stake::ValidatorSet.pending_active($t39), $t37)), Not(stake::spec_contains(select stake::ValidatorSet.active_validators($t39), $t37))), Not(stake::spec_contains(select stake::ValidatorSet.pending_inactive($t39), $t37)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:484:9+260 - assume {:print "$at(3,21361,21621)"} true; - assume ($t40 == ((!$1_stake_spec_contains($pending_active#$1_stake_ValidatorSet($t39), $t37) && !$1_stake_spec_contains($active_validators#$1_stake_ValidatorSet($t39), $t37)) && !$1_stake_spec_contains($pending_inactive#$1_stake_ValidatorSet($t39), $t37))); - - // assume Identical($t41, select coin::Coin.value(select stake::StakePool.inactive($t38))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:487:9+45 - assume {:print "$at(3,21630,21675)"} true; - assume ($t41 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t38))); - - // assume Identical($t42, select coin::Coin.value(select stake::StakePool.pending_inactive($t38))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:488:9+61 - assume {:print "$at(3,21684,21745)"} true; - assume ($t42 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t38))); - - // assume Identical($t43, Add($t41, $t42)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:489:9+53 - assume {:print "$at(3,21754,21807)"} true; - assume ($t43 == ($t41 + $t42)); - - // assume And(Ge(select staking_contract::StakingContract.commission_percentage($t18), 0), Le(select staking_contract::StakingContract.commission_percentage($t18), 100)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:56:9+102 - assume {:print "$at(3,1852,1954)"} true; - assume (($commission_percentage#$1_staking_contract_StakingContract($t18) >= 0) && ($commission_percentage#$1_staking_contract_StakingContract($t18) <= 100)); - - // trace_local[contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:539:5+1 - assume {:print "$at(2,25614,25615)"} true; - assume {:print "$track_local(57,28,0):", $t0} $t0 == $t0; - - // assume Identical($t44, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:59:9+73 - assume {:print "$at(3,2072,2145)"} true; - assume ($t44 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); - - // assume Identical($t45, $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:61:9+38 - assume {:print "$at(3,2155,2193)"} true; - assume ($t45 == $t0); - - // assume Identical($t46, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t44))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:62:9+49 - assume {:print "$at(3,2202,2251)"} true; - assume ($t46 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t44))); - - // assume Identical($t47, select staking_contract::Store.staking_contracts(global($t45))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:63:9+82 - assume {:print "$at(3,2260,2342)"} true; - assume ($t47 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t45))); - - // assume Identical($t48, simple_map::spec_get($t47, $t46)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:64:9+73 - assume {:print "$at(3,2351,2424)"} true; - assume ($t48 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($t47, $t46)); - - // assume Identical($t49, select staking_contract::StakingContract.pool_address($t48)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:69:9+49 - assume {:print "$at(3,2574,2623)"} true; - assume ($t49 == $pool_address#$1_staking_contract_StakingContract($t48)); - - // assume Identical($t50, global($t49)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:70:9+56 - assume {:print "$at(3,2632,2688)"} true; - assume ($t50 == $ResourceValue($1_stake_StakePool_$memory, $t49)); - - // assume Identical($t51, coin::$value(select stake::StakePool.active($t50))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:71:9+44 - assume {:print "$at(3,2697,2741)"} true; - assume ($t51 == $1_coin_$value'$1_aptos_coin_AptosCoin'($active#$1_stake_StakePool($t50))); - - // assume Identical($t52, coin::$value(select stake::StakePool.pending_active($t50))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:72:9+60 - assume {:print "$at(3,2750,2810)"} true; - assume ($t52 == $1_coin_$value'$1_aptos_coin_AptosCoin'($pending_active#$1_stake_StakePool($t50))); - - // assume Identical($t53, Add($t51, $t52)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:73:9+49 - assume {:print "$at(3,2819,2868)"} true; - assume ($t53 == ($t51 + $t52)); - - // assume Identical($t54, Sub($t53, select staking_contract::StakingContract.principal($t48))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:74:9+74 - assume {:print "$at(3,2877,2951)"} true; - assume ($t54 == ($t53 - $principal#$1_staking_contract_StakingContract($t48))); - - // assume Identical($t55, Div(Mul($t54, select staking_contract::StakingContract.commission_percentage($t48)), 100)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:75:9+91 - assume {:print "$at(3,2960,3051)"} true; - assume ($t55 == (($t54 * $commission_percentage#$1_staking_contract_StakingContract($t48)) div 100)); - - // assume Identical($t56, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:518:9+65 - assume {:print "$at(3,23036,23101)"} true; - assume ($t56 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); - - // $t57 := vesting::total_accumulated_rewards($t0) on_abort goto L2 with $t58 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:540:35+43 - assume {:print "$at(2,25734,25777)"} true; - call $t57 := $1_vesting_total_accumulated_rewards($t0); - if ($abort_flag) { - assume {:print "$at(2,25734,25777)"} true; - $t58 := $abort_code; - assume {:print "$track_abort(57,28):", $t58} $t58 == $t58; - goto L2; - } - - // trace_local[accumulated_rewards]($t57) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:540:13+19 - assume {:print "$track_local(57,28,1):", $t57} $t57 == $t57; - - // $t59 := get_global($t0) on_abort goto L2 with $t58 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:541:32+13 - assume {:print "$at(2,25810,25823)"} true; - if (!$ResourceExists($1_vesting_VestingContract_$memory, $t0)) { - call $ExecFailureAbort(); - } else { - $t59 := $ResourceValue($1_vesting_VestingContract_$memory, $t0); - } - if ($abort_flag) { - assume {:print "$at(2,25810,25823)"} true; - $t58 := $abort_code; - assume {:print "$track_abort(57,28):", $t58} $t58 == $t58; - goto L2; - } - - // assume Identical($t60, select account::SignerCapability.account(select vesting::VestingContract.signer_cap($t59))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:434:9+46 - assume {:print "$at(3,18724,18770)"} true; - assume ($t60 == $account#$1_account_SignerCapability($signer_cap#$1_vesting_VestingContract($t59))); - - // assume Identical($t61, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t59))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:435:9+49 - assume {:print "$at(3,18779,18828)"} true; - assume ($t61 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t59))); - - // assume Identical($t62, global($t60)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:439:9+49 - assume {:print "$at(3,18996,19045)"} true; - assume ($t62 == $ResourceValue($1_staking_contract_Store_$memory, $t60)); - - // assume Identical($t63, simple_map::spec_get(select staking_contract::Store.staking_contracts($t62), $t61)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:440:9+79 - assume {:print "$at(3,19054,19133)"} true; - assume ($t63 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($t62), $t61)); - - // assume Identical($t64, select staking_contract::Store.staking_contracts(global($t60))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 - assume {:print "$at(134,11481,11545)"} true; - assume ($t64 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t60))); - - // assume Identical($t65, select staking_contract::StakingContract.pool_address($t63)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:470:9+49 - assume {:print "$at(3,20547,20596)"} true; - assume ($t65 == $pool_address#$1_staking_contract_StakingContract($t63)); - - // assume Identical($t66, global($t65)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:472:9+56 - assume {:print "$at(3,20664,20720)"} true; - assume ($t66 == $ResourceValue($1_stake_StakePool_$memory, $t65)); - - // assume Identical($t67, select coin::Coin.value(select stake::StakePool.inactive($t66))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:473:9+41 - assume {:print "$at(3,20729,20770)"} true; - assume ($t67 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t66))); - - // assume Identical($t68, select coin::Coin.value(select stake::StakePool.pending_inactive($t66))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:474:9+57 - assume {:print "$at(3,20779,20836)"} true; - assume ($t68 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t66))); - - // assume Identical($t69, Add($t67, $t68)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:478:9+63 - assume {:print "$at(3,20948,21011)"} true; - assume ($t69 == ($t67 + $t68)); - - // assume Identical($t70, select stake::OwnerCapability.pool_address(select staking_contract::StakingContract.owner_cap($t63))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:479:9+61 - assume {:print "$at(3,21020,21081)"} true; - assume ($t70 == $pool_address#$1_stake_OwnerCapability($owner_cap#$1_staking_contract_StakingContract($t63))); - - // assume Identical($t71, global($t70)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:481:9+60 - assume {:print "$at(3,21151,21211)"} true; - assume ($t71 == $ResourceValue($1_stake_StakePool_$memory, $t70)); - - // assume Identical($t72, global(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:483:9+66 - assume {:print "$at(3,21286,21352)"} true; - assume ($t72 == $ResourceValue($1_stake_ValidatorSet_$memory, 1)); - - // assume Identical($t73, And(And(Not(stake::spec_contains(select stake::ValidatorSet.pending_active($t72), $t70)), Not(stake::spec_contains(select stake::ValidatorSet.active_validators($t72), $t70))), Not(stake::spec_contains(select stake::ValidatorSet.pending_inactive($t72), $t70)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:484:9+260 - assume {:print "$at(3,21361,21621)"} true; - assume ($t73 == ((!$1_stake_spec_contains($pending_active#$1_stake_ValidatorSet($t72), $t70) && !$1_stake_spec_contains($active_validators#$1_stake_ValidatorSet($t72), $t70)) && !$1_stake_spec_contains($pending_inactive#$1_stake_ValidatorSet($t72), $t70))); - - // assume Identical($t74, select coin::Coin.value(select stake::StakePool.inactive($t71))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:487:9+45 - assume {:print "$at(3,21630,21675)"} true; - assume ($t74 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t71))); - - // assume Identical($t75, select coin::Coin.value(select stake::StakePool.pending_inactive($t71))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:488:9+61 - assume {:print "$at(3,21684,21745)"} true; - assume ($t75 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t71))); - - // assume Identical($t76, Add($t74, $t75)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:489:9+53 - assume {:print "$at(3,21754,21807)"} true; - assume ($t76 == ($t74 + $t75)); - - // vesting::unlock_stake($t59, $t57) on_abort goto L2 with $t58 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:542:9+51 - assume {:print "$at(2,25868,25919)"} true; - call $1_vesting_unlock_stake($t59, $t57); - if ($abort_flag) { - assume {:print "$at(2,25868,25919)"} true; - $t58 := $abort_code; - assume {:print "$track_abort(57,28):", $t58} $t58 == $t58; - goto L2; - } - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:543:5+1 - assume {:print "$at(2,25925,25926)"} true; -L1: - - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:543:5+1 - assume {:print "$at(2,25925,25926)"} true; - return; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:543:5+1 -L2: - - // abort($t58) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:543:5+1 - assume {:print "$at(2,25925,25926)"} true; - $abort_code := $t58; - $abort_flag := true; - return; - -} - -// fun vesting::unlock_stake [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:951:5+259 -procedure {:inline 1} $1_vesting_unlock_stake(_$t0: $1_vesting_VestingContract, _$t1: int) returns () -{ - // declare local variables - var $t2: $signer; - var $t3: int; - var $t4: int; - var $t5: $1_staking_contract_Store; - var $t6: $1_staking_contract_StakingContract; - var $t7: Table int ($1_staking_contract_StakingContract); - var $t8: int; - var $t9: $1_stake_StakePool; - var $t10: int; - var $t11: int; - var $t12: int; - var $t13: int; - var $t14: $1_stake_StakePool; - var $t15: $1_stake_ValidatorSet; - var $t16: bool; - var $t17: int; - var $t18: int; - var $t19: int; - var $t20: $signer; - var $t21: int; - var $t22: $1_vesting_StakingInfo; - var $t23: int; - var $t0: $1_vesting_VestingContract; - var $t1: int; - var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; - var $temp_0'u64': int; - $t0 := _$t0; - $t1 := _$t1; - - // bytecode translation starts here - // assume Identical($t3, select account::SignerCapability.account(select vesting::VestingContract.signer_cap($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:434:9+46 - assume {:print "$at(3,18724,18770)"} true; - assume ($t3 == $account#$1_account_SignerCapability($signer_cap#$1_vesting_VestingContract($t0))); - - // assume Identical($t4, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:435:9+49 - assume {:print "$at(3,18779,18828)"} true; - assume ($t4 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t0))); - - // assume Identical($t5, global($t3)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:439:9+49 - assume {:print "$at(3,18996,19045)"} true; - assume ($t5 == $ResourceValue($1_staking_contract_Store_$memory, $t3)); - - // assume Identical($t6, simple_map::spec_get(select staking_contract::Store.staking_contracts($t5), $t4)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:440:9+79 - assume {:print "$at(3,19054,19133)"} true; - assume ($t6 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($t5), $t4)); - - // assume Identical($t7, select staking_contract::Store.staking_contracts(global($t3))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 - assume {:print "$at(134,11481,11545)"} true; - assume ($t7 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t3))); - - // assume Identical($t8, select staking_contract::StakingContract.pool_address($t6)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:470:9+49 - assume {:print "$at(3,20547,20596)"} true; - assume ($t8 == $pool_address#$1_staking_contract_StakingContract($t6)); - - // assume Identical($t9, global($t8)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:472:9+56 - assume {:print "$at(3,20664,20720)"} true; - assume ($t9 == $ResourceValue($1_stake_StakePool_$memory, $t8)); - - // assume Identical($t10, select coin::Coin.value(select stake::StakePool.inactive($t9))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:473:9+41 - assume {:print "$at(3,20729,20770)"} true; - assume ($t10 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t9))); - - // assume Identical($t11, select coin::Coin.value(select stake::StakePool.pending_inactive($t9))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:474:9+57 - assume {:print "$at(3,20779,20836)"} true; - assume ($t11 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t9))); - - // assume Identical($t12, Add($t10, $t11)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:478:9+63 - assume {:print "$at(3,20948,21011)"} true; - assume ($t12 == ($t10 + $t11)); - - // assume Identical($t13, select stake::OwnerCapability.pool_address(select staking_contract::StakingContract.owner_cap($t6))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:479:9+61 - assume {:print "$at(3,21020,21081)"} true; - assume ($t13 == $pool_address#$1_stake_OwnerCapability($owner_cap#$1_staking_contract_StakingContract($t6))); - - // assume Identical($t14, global($t13)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:481:9+60 - assume {:print "$at(3,21151,21211)"} true; - assume ($t14 == $ResourceValue($1_stake_StakePool_$memory, $t13)); - - // assume Identical($t15, global(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:483:9+66 - assume {:print "$at(3,21286,21352)"} true; - assume ($t15 == $ResourceValue($1_stake_ValidatorSet_$memory, 1)); - - // assume Identical($t16, And(And(Not(stake::spec_contains(select stake::ValidatorSet.pending_active($t15), $t13)), Not(stake::spec_contains(select stake::ValidatorSet.active_validators($t15), $t13))), Not(stake::spec_contains(select stake::ValidatorSet.pending_inactive($t15), $t13)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:484:9+260 - assume {:print "$at(3,21361,21621)"} true; - assume ($t16 == ((!$1_stake_spec_contains($pending_active#$1_stake_ValidatorSet($t15), $t13) && !$1_stake_spec_contains($active_validators#$1_stake_ValidatorSet($t15), $t13)) && !$1_stake_spec_contains($pending_inactive#$1_stake_ValidatorSet($t15), $t13))); - - // assume Identical($t17, select coin::Coin.value(select stake::StakePool.inactive($t14))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:487:9+45 - assume {:print "$at(3,21630,21675)"} true; - assume ($t17 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t14))); - - // assume Identical($t18, select coin::Coin.value(select stake::StakePool.pending_inactive($t14))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:488:9+61 - assume {:print "$at(3,21684,21745)"} true; - assume ($t18 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t14))); - - // assume Identical($t19, Add($t17, $t18)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:489:9+53 - assume {:print "$at(3,21754,21807)"} true; - assume ($t19 == ($t17 + $t18)); - - // trace_local[vesting_contract]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:951:5+1 - assume {:print "$at(2,44426,44427)"} true; - assume {:print "$track_local(57,30,0):", $t0} $t0 == $t0; - - // trace_local[amount]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:951:5+1 - assume {:print "$track_local(57,30,1):", $t1} $t1 == $t1; - - // $t20 := vesting::get_vesting_account_signer_internal($t0) on_abort goto L2 with $t21 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:952:32+53 - assume {:print "$at(2,44525,44578)"} true; - call $t20 := $1_vesting_get_vesting_account_signer_internal($t0); - if ($abort_flag) { - assume {:print "$at(2,44525,44578)"} true; - $t21 := $abort_code; - assume {:print "$track_abort(57,30):", $t21} $t21 == $t21; - goto L2; - } - - // $t22 := get_field.staking($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:953:57+24 - assume {:print "$at(2,44636,44660)"} true; - $t22 := $staking#$1_vesting_VestingContract($t0); - - // $t23 := get_field.operator($t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:953:57+33 - $t23 := $operator#$1_vesting_StakingInfo($t22); - - // staking_contract::unlock_stake($t20, $t23, $t1) on_abort goto L2 with $t21 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:953:9+90 - call $1_staking_contract_unlock_stake($t20, $t23, $t1); - if ($abort_flag) { - assume {:print "$at(2,44588,44678)"} true; - $t21 := $abort_code; - assume {:print "$track_abort(57,30):", $t21} $t21 == $t21; - goto L2; - } - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:954:5+1 - assume {:print "$at(2,44684,44685)"} true; -L1: - - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:954:5+1 - assume {:print "$at(2,44684,44685)"} true; - return; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:954:5+1 -L2: - - // abort($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:954:5+1 - assume {:print "$at(2,44684,44685)"} true; - $abort_code := $t21; - $abort_flag := true; - return; - -} - -// fun vesting::unlock_stake [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:951:5+259 -procedure {:timeLimit 1000} $1_vesting_unlock_stake$verify(_$t0: $1_vesting_VestingContract, _$t1: int) returns () -{ - // declare local variables - var $t2: $signer; - var $t3: int; - var $t4: int; - var $t5: $1_staking_contract_Store; - var $t6: $1_staking_contract_StakingContract; - var $t7: Table int ($1_staking_contract_StakingContract); - var $t8: int; - var $t9: $1_stake_StakePool; - var $t10: int; - var $t11: int; - var $t12: int; - var $t13: int; - var $t14: $1_stake_StakePool; - var $t15: $1_stake_ValidatorSet; - var $t16: bool; - var $t17: int; - var $t18: int; - var $t19: int; - var $t20: $signer; - var $t21: int; - var $t22: $1_vesting_StakingInfo; - var $t23: int; - var $t0: $1_vesting_VestingContract; - var $t1: int; - var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; - var $temp_0'u64': int; - var $1_staking_contract_Store_$memory#146: $Memory $1_staking_contract_Store; - var $1_stake_StakePool_$memory#147: $Memory $1_stake_StakePool; - var $1_stake_ValidatorSet_$memory#148: $Memory $1_stake_ValidatorSet; - var $1_timestamp_CurrentTimeMicroseconds_$memory#149: $Memory $1_timestamp_CurrentTimeMicroseconds; - $t0 := _$t0; - $t1 := _$t1; - - // verification entrypoint assumptions - call $InitVerification(); - - // bytecode translation starts here - // assume And(WellFormed($t0), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t0)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t0)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t0)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t0)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t0)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t0)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:951:5+1 - assume {:print "$at(2,44426,44427)"} true; - assume ($IsValid'$1_vesting_VestingContract'($t0) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t0)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t0)), addr)))) && (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t0)))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t0)))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; - (var j := $i_3; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t0)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t0)), j)) ==> $IsEqual'num'(i, j)))))))))); - - // assume WellFormed($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:951:5+1 - assume $IsValid'u64'($t1); - - // assume forall $rsc: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: select option::Option.vec(select coin::CoinInfo.supply($rsc)): And(And(And(And(And(Iff(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($elem)), option::$is_none(select optional_aggregator::OptionalAggregator.integer($elem))), Iff(option::$is_some(select optional_aggregator::OptionalAggregator.integer($elem)), option::$is_none(select optional_aggregator::OptionalAggregator.aggregator($elem)))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.integer($elem)), Le(select optional_aggregator::Integer.value(option::$borrow(select optional_aggregator::OptionalAggregator.integer($elem))), select optional_aggregator::Integer.limit(option::$borrow(select optional_aggregator::OptionalAggregator.integer($elem)))))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($elem)), Le(aggregator::spec_aggregator_get_val(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($elem))), aggregator::spec_get_limit(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($elem)))))), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.aggregator($elem))), 1)), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.integer($elem))), 1)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:951:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $a_0); - (($IsValid'$1_coin_CoinInfo'$1_aptos_coin_AptosCoin''($rsc) && ((LenVec($vec#$1_option_Option'$1_optional_aggregator_OptionalAggregator'($supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($rsc))) <= 1) && (var $range_1 := $vec#$1_option_Option'$1_optional_aggregator_OptionalAggregator'($supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($rsc)); (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); - ((((((($1_option_$is_some'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)) <==> $1_option_$is_none'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)) ==> ($value#$1_optional_aggregator_Integer($1_option_$borrow'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) <= $limit#$1_optional_aggregator_Integer($1_option_$borrow'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)))))) && ($1_option_$is_some'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem))) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)))))) && (LenVec($vec#$1_option_Option'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem))) <= 1)) && (LenVec($vec#$1_option_Option'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) <= 1))))))))))); - - // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:951:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $a_0); - ($IsValid'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''($rsc)))); - - // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:951:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $a_0); - ($IsValid'$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin''($rsc)))); - - // assume exists>(0x0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:951:5+1 - assume $ResourceExists($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, 0); - - // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:951:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, $a_0); - ($IsValid'$1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin''($rsc)))); - - // assume exists>(0x0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:951:5+1 - assume $ResourceExists($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, 0); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:951:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_chain_status_GenesisEndMarker_$memory, $a_0)}(var $rsc := $ResourceValue($1_chain_status_GenesisEndMarker_$memory, $a_0); - ($IsValid'$1_chain_status_GenesisEndMarker'($rsc)))); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:951:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_timestamp_CurrentTimeMicroseconds_$memory, $a_0)}(var $rsc := $ResourceValue($1_timestamp_CurrentTimeMicroseconds_$memory, $a_0); - ($IsValid'$1_timestamp_CurrentTimeMicroseconds'($rsc)))); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:951:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_stake_StakePool_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_StakePool_$memory, $a_0); - ($IsValid'$1_stake_StakePool'($rsc)))); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:951:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorConfig_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorConfig_$memory, $a_0); - ($IsValid'$1_stake_ValidatorConfig'($rsc)))); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:951:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorPerformance_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorPerformance_$memory, $a_0); - ($IsValid'$1_stake_ValidatorPerformance'($rsc)))); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:951:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorSet_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorSet_$memory, $a_0); - ($IsValid'$1_stake_ValidatorSet'($rsc)))); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:951:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_reconfiguration_Configuration_$memory, $a_0)}(var $rsc := $ResourceValue($1_reconfiguration_Configuration_$memory, $a_0); - ($IsValid'$1_reconfiguration_Configuration'($rsc)))); - - // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), forall $key: select staking_contract::Store.staking_contracts($rsc): And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), i), Index(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:951:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_staking_contract_Store_$memory, $a_0)}(var $rsc := $ResourceValue($1_staking_contract_Store_$memory, $a_0); - (($IsValid'$1_staking_contract_Store'($rsc) && (var $range_1 := $staking_contracts#$1_staking_contract_Store($rsc); (forall $key: int :: ContainsTable($range_1, $EncodeKey'address'($key)) ==> (((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), addr)))) && (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))))); (var $range_3 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))))); (forall $i_4: int, $i_5: int :: $InRange($range_2, $i_4) ==> $InRange($range_3, $i_5) ==> (var i := $i_4; - (var j := $i_5; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), i), ReadVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), j)) ==> $IsEqual'num'(i, j)))))))))))))))); - - // assume Implies(chain_status::$is_operating(), exists(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:951:5+259 - // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.spec.move:4:9+93 - assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory, 1)); - - // assume Implies(exists(0x1), stake::validator_set_is_valid()) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:951:5+259 - // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:8:9+92 - assume ($ResourceExists($1_stake_ValidatorSet_$memory, 1) ==> $1_stake_validator_set_is_valid($1_stake_StakePool_$memory, $1_stake_ValidatorConfig_$memory, $1_stake_ValidatorPerformance_$memory, $1_stake_ValidatorSet_$memory)); - - // assume Implies(chain_status::$is_operating(), exists(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:951:5+259 - // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:12:9+96 - assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_stake_ValidatorSet_$memory, 1)); - - // assume Implies(chain_status::$is_operating(), Ge(timestamp::spec_now_microseconds(), reconfiguration::$last_reconfiguration_time())) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:951:5+259 - // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/reconfiguration.spec.move:8:9+137 - assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> ($1_timestamp_spec_now_microseconds($1_timestamp_CurrentTimeMicroseconds_$memory) >= $1_reconfiguration_$last_reconfiguration_time($1_reconfiguration_Configuration_$memory))); - - // assume Identical($t3, select account::SignerCapability.account(select vesting::VestingContract.signer_cap($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:434:9+46 - assume {:print "$at(3,18724,18770)"} true; - assume ($t3 == $account#$1_account_SignerCapability($signer_cap#$1_vesting_VestingContract($t0))); - - // assume Identical($t4, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:435:9+49 - assume {:print "$at(3,18779,18828)"} true; - assume ($t4 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t0))); - - // assume Identical($t5, global($t3)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:439:9+49 - assume {:print "$at(3,18996,19045)"} true; - assume ($t5 == $ResourceValue($1_staking_contract_Store_$memory, $t3)); - - // assume Identical($t6, simple_map::spec_get(select staking_contract::Store.staking_contracts($t5), $t4)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:440:9+79 - assume {:print "$at(3,19054,19133)"} true; - assume ($t6 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($t5), $t4)); - - // assume Identical($t7, select staking_contract::Store.staking_contracts(global($t3))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 - assume {:print "$at(134,11481,11545)"} true; - assume ($t7 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t3))); - - // assume Identical($t8, select staking_contract::StakingContract.pool_address($t6)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:470:9+49 - assume {:print "$at(3,20547,20596)"} true; - assume ($t8 == $pool_address#$1_staking_contract_StakingContract($t6)); - - // assume Identical($t9, global($t8)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:472:9+56 - assume {:print "$at(3,20664,20720)"} true; - assume ($t9 == $ResourceValue($1_stake_StakePool_$memory, $t8)); - - // assume Identical($t10, select coin::Coin.value(select stake::StakePool.inactive($t9))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:473:9+41 - assume {:print "$at(3,20729,20770)"} true; - assume ($t10 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t9))); - - // assume Identical($t11, select coin::Coin.value(select stake::StakePool.pending_inactive($t9))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:474:9+57 - assume {:print "$at(3,20779,20836)"} true; - assume ($t11 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t9))); - - // assume Identical($t12, Add($t10, $t11)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:478:9+63 - assume {:print "$at(3,20948,21011)"} true; - assume ($t12 == ($t10 + $t11)); - - // assume Identical($t13, select stake::OwnerCapability.pool_address(select staking_contract::StakingContract.owner_cap($t6))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:479:9+61 - assume {:print "$at(3,21020,21081)"} true; - assume ($t13 == $pool_address#$1_stake_OwnerCapability($owner_cap#$1_staking_contract_StakingContract($t6))); - - // assume Identical($t14, global($t13)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:481:9+60 - assume {:print "$at(3,21151,21211)"} true; - assume ($t14 == $ResourceValue($1_stake_StakePool_$memory, $t13)); - - // assume Identical($t15, global(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:483:9+66 - assume {:print "$at(3,21286,21352)"} true; - assume ($t15 == $ResourceValue($1_stake_ValidatorSet_$memory, 1)); - - // assume Identical($t16, And(And(Not(stake::spec_contains(select stake::ValidatorSet.pending_active($t15), $t13)), Not(stake::spec_contains(select stake::ValidatorSet.active_validators($t15), $t13))), Not(stake::spec_contains(select stake::ValidatorSet.pending_inactive($t15), $t13)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:484:9+260 - assume {:print "$at(3,21361,21621)"} true; - assume ($t16 == ((!$1_stake_spec_contains($pending_active#$1_stake_ValidatorSet($t15), $t13) && !$1_stake_spec_contains($active_validators#$1_stake_ValidatorSet($t15), $t13)) && !$1_stake_spec_contains($pending_inactive#$1_stake_ValidatorSet($t15), $t13))); - - // assume Identical($t17, select coin::Coin.value(select stake::StakePool.inactive($t14))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:487:9+45 - assume {:print "$at(3,21630,21675)"} true; - assume ($t17 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t14))); - - // assume Identical($t18, select coin::Coin.value(select stake::StakePool.pending_inactive($t14))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:488:9+61 - assume {:print "$at(3,21684,21745)"} true; - assume ($t18 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t14))); - - // assume Identical($t19, Add($t17, $t18)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:489:9+53 - assume {:print "$at(3,21754,21807)"} true; - assume ($t19 == ($t17 + $t18)); - - // @149 := save_mem(timestamp::CurrentTimeMicroseconds) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:951:5+1 - assume {:print "$at(2,44426,44427)"} true; - $1_timestamp_CurrentTimeMicroseconds_$memory#149 := $1_timestamp_CurrentTimeMicroseconds_$memory; - - // @147 := save_mem(stake::StakePool) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:951:5+1 - $1_stake_StakePool_$memory#147 := $1_stake_StakePool_$memory; - - // @148 := save_mem(stake::ValidatorSet) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:951:5+1 - $1_stake_ValidatorSet_$memory#148 := $1_stake_ValidatorSet_$memory; - - // @146 := save_mem(staking_contract::Store) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:951:5+1 - $1_staking_contract_Store_$memory#146 := $1_staking_contract_Store_$memory; - - // trace_local[vesting_contract]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:951:5+1 - assume {:print "$track_local(57,30,0):", $t0} $t0 == $t0; - - // trace_local[amount]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:951:5+1 - assume {:print "$track_local(57,30,1):", $t1} $t1 == $t1; - - // $t20 := vesting::get_vesting_account_signer_internal($t0) on_abort goto L2 with $t21 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:952:32+53 - assume {:print "$at(2,44525,44578)"} true; - call $t20 := $1_vesting_get_vesting_account_signer_internal($t0); - if ($abort_flag) { - assume {:print "$at(2,44525,44578)"} true; - $t21 := $abort_code; - assume {:print "$track_abort(57,30):", $t21} $t21 == $t21; - goto L2; - } - - // $t22 := get_field.staking($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:953:57+24 - assume {:print "$at(2,44636,44660)"} true; - $t22 := $staking#$1_vesting_VestingContract($t0); - - // $t23 := get_field.operator($t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:953:57+33 - $t23 := $operator#$1_vesting_StakingInfo($t22); - - // staking_contract::unlock_stake($t20, $t23, $t1) on_abort goto L2 with $t21 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:953:9+90 - call $1_staking_contract_unlock_stake($t20, $t23, $t1); - if ($abort_flag) { - assume {:print "$at(2,44588,44678)"} true; - $t21 := $abort_code; - assume {:print "$track_abort(57,30):", $t21} $t21 == $t21; - goto L2; - } - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:954:5+1 - assume {:print "$at(2,44684,44685)"} true; -L1: - - // assert Not(And(Neq($t1, 0), Not(exists[@146]($t3)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:267:9+33 - assume {:print "$at(134,11439,11472)"} true; - assert {:msg "assert_failed(134,11439,11472): function does not abort under this condition"} - !(!$IsEqual'u64'($t1, 0) && !$ResourceExists($1_staking_contract_Store_$memory#146, $t3)); - - // assert Not(And(Neq($t1, 0), Not(simple_map::spec_contains_key[]($t7, $t4)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:269:9+70 - assume {:print "$at(134,11554,11624)"} true; - assert {:msg "assert_failed(134,11554,11624): function does not abort under this condition"} - !(!$IsEqual'u64'($t1, 0) && !$1_simple_map_spec_contains_key'address_$1_staking_contract_StakingContract'($t7, $t4)); - - // assert Not(And(Neq($t1, 0), Not(exists[@147]($t8)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:471:9+50 - assume {:print "$at(3,20605,20655)"} true; - assert {:msg "assert_failed(3,20605,20655): function does not abort under this condition"} - !(!$IsEqual'u64'($t1, 0) && !$ResourceExists($1_stake_StakePool_$memory#147, $t8)); - - // assert Not(And(Neq($t1, 0), Gt(Add($t10, $t11), 18446744073709551615))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:475:9+48 - assume {:print "$at(3,20845,20893)"} true; - assert {:msg "assert_failed(3,20845,20893): function does not abort under this condition"} - !(!$IsEqual'u64'($t1, 0) && (($t10 + $t11) > 18446744073709551615)); - - // assert Not(And(Neq($t1, 0), Not(exists[@147]($t13)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:480:9+52 - assume {:print "$at(3,21090,21142)"} true; - assert {:msg "assert_failed(3,21090,21142): function does not abort under this condition"} - !(!$IsEqual'u64'($t1, 0) && !$ResourceExists($1_stake_StakePool_$memory#147, $t13)); - - // assert Not(And(Neq($t1, 0), Not(exists[@148](0x1)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:482:9+57 - assume {:print "$at(3,21220,21277)"} true; - assert {:msg "assert_failed(3,21220,21277): function does not abort under this condition"} - !(!$IsEqual'u64'($t1, 0) && !$ResourceExists($1_stake_ValidatorSet_$memory#148, 1)); - - // assert Not(And(Neq($t1, 0), And(And($t16, Ge(timestamp::spec_now_seconds[@149](), select stake::StakePool.locked_until_secs($t14))), Gt(Add($t17, $t18), 18446744073709551615)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:490:9+150 - assume {:print "$at(3,21816,21966)"} true; - assert {:msg "assert_failed(3,21816,21966): function does not abort under this condition"} - !(!$IsEqual'u64'($t1, 0) && (($t16 && ($1_timestamp_spec_now_seconds($1_timestamp_CurrentTimeMicroseconds_$memory#149) >= $locked_until_secs#$1_stake_StakePool($t14))) && (($t17 + $t18) > 18446744073709551615))); - - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:490:9+150 - return; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:954:5+1 - assume {:print "$at(2,44684,44685)"} true; -L2: - - // abort($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:954:5+1 - assume {:print "$at(2,44684,44685)"} true; - $abort_code := $t21; - $abort_flag := true; - return; - -} - -// fun vesting::update_voter [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:763:5+956 -procedure {:timeLimit 1000} $1_vesting_update_voter$verify(_$t0: $signer, _$t1: int, _$t2: int) returns () -{ - // declare local variables - var $t3: $signer; - var $t4: $signer; - var $t5: int; - var $t6: $Mutation ($1_vesting_VestingContract); - var $t7: $1_vesting_VestingContract; - var $t8: int; - var $t9: int; - var $t10: $1_vesting_VestingContract; - var $t11: $1_staking_contract_Store; - var $t12: $1_staking_contract_StakingContract; - var $t13: int; - var $t14: Table int ($1_staking_contract_StakingContract); - var $t15: $Mutation ($1_vesting_VestingContract); - var $t16: int; - var $t17: $1_vesting_VestingContract; - var $t18: $1_vesting_VestingContract; - var $t19: $signer; - var $t20: $1_vesting_StakingInfo; - var $t21: int; - var $t22: $1_vesting_StakingInfo; - var $t23: int; - var $t24: int; - var $t25: $1_staking_contract_Store; - var $t26: $1_staking_contract_StakingContract; - var $t27: int; - var $t28: Table int ($1_staking_contract_StakingContract); - var $t29: $Mutation ($1_vesting_StakingInfo); - var $t30: $Mutation (int); - var $t31: $Mutation ($1_event_EventHandle'$1_vesting_UpdateVoterEvent'); - var $t32: int; - var $t33: $1_vesting_StakingInfo; - var $t34: int; - var $t35: $1_vesting_UpdateVoterEvent; - var $t0: $signer; - var $t1: int; - var $t2: int; - var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; - var $temp_0'address': int; - var $temp_0'signer': $signer; - var $1_vesting_VestingContract_$memory#113: $Memory $1_vesting_VestingContract; - var $1_stake_StakePool_$memory#114: $Memory $1_stake_StakePool; - var $1_staking_contract_Store_$memory#115: $Memory $1_staking_contract_Store; - $t0 := _$t0; - $t1 := _$t1; - $t2 := _$t2; - - // verification entrypoint assumptions - call $InitVerification(); - - // bytecode translation starts here - // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:763:5+1 - assume {:print "$at(2,35814,35815)"} true; - assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($addr#$signer($t0)); - - // assume WellFormed($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:763:5+1 - assume $IsValid'address'($t1); - - // assume WellFormed($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:763:5+1 - assume $IsValid'address'($t2); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:763:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_stake_StakePool_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_StakePool_$memory, $a_0); - ($IsValid'$1_stake_StakePool'($rsc)))); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:763:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorConfig_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorConfig_$memory, $a_0); - ($IsValid'$1_stake_ValidatorConfig'($rsc)))); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:763:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorPerformance_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorPerformance_$memory, $a_0); - ($IsValid'$1_stake_ValidatorPerformance'($rsc)))); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:763:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorSet_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorSet_$memory, $a_0); - ($IsValid'$1_stake_ValidatorSet'($rsc)))); - - // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), forall $key: select staking_contract::Store.staking_contracts($rsc): And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), i), Index(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:763:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_staking_contract_Store_$memory, $a_0)}(var $rsc := $ResourceValue($1_staking_contract_Store_$memory, $a_0); - (($IsValid'$1_staking_contract_Store'($rsc) && (var $range_1 := $staking_contracts#$1_staking_contract_Store($rsc); (forall $key: int :: ContainsTable($range_1, $EncodeKey'address'($key)) ==> (((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), addr)))) && (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))))); (var $range_3 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))))); (forall $i_4: int, $i_5: int :: $InRange($range_2, $i_4) ==> $InRange($range_3, $i_5) ==> (var i := $i_4; - (var j := $i_5; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), i), ReadVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), j)) ==> $IsEqual'num'(i, j)))))))))))))))); - - // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:763:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); - (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; - (var j := $i_4; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); - - // assume Implies(exists(0x1), stake::validator_set_is_valid()) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:763:5+956 - // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:8:9+92 - assume ($ResourceExists($1_stake_ValidatorSet_$memory, 1) ==> $1_stake_validator_set_is_valid($1_stake_StakePool_$memory, $1_stake_ValidatorConfig_$memory, $1_stake_ValidatorPerformance_$memory, $1_stake_ValidatorSet_$memory)); - - // assume Identical($t7, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:283:9+65 - assume {:print "$at(3,12263,12328)"} true; - assume ($t7 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); - - // assume Identical($t8, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t7))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:284:9+49 - assume {:print "$at(3,12337,12386)"} true; - assume ($t8 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t7))); - - // assume Identical($t9, select account::SignerCapability.account(select vesting::VestingContract.signer_cap($t7))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:285:9+49 - assume {:print "$at(3,12395,12444)"} true; - assume ($t9 == $account#$1_account_SignerCapability($signer_cap#$1_vesting_VestingContract($t7))); - - // assume Identical($t10, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:511:9+65 - assume {:print "$at(3,22722,22787)"} true; - assume ($t10 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); - - // assume Identical($t11, global($t9)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:276:9+34 - assume {:print "$at(134,11729,11763)"} true; - assume ($t11 == $ResourceValue($1_staking_contract_Store_$memory, $t9)); - - // assume Identical($t12, simple_map::spec_get(select staking_contract::Store.staking_contracts($t11), $t8)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:277:9+79 - assume {:print "$at(134,11772,11851)"} true; - assume ($t12 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($t11), $t8)); - - // assume Identical($t13, select staking_contract::StakingContract.pool_address($t12)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:278:9+49 - assume {:print "$at(134,11860,11909)"} true; - assume ($t13 == $pool_address#$1_staking_contract_StakingContract($t12)); - - // assume Identical($t14, select staking_contract::Store.staking_contracts(global($t9))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 - assume {:print "$at(134,11481,11545)"} true; - assume ($t14 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t9))); - - // @114 := save_mem(stake::StakePool) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:763:5+1 - assume {:print "$at(2,35814,35815)"} true; - $1_stake_StakePool_$memory#114 := $1_stake_StakePool_$memory; - - // @115 := save_mem(staking_contract::Store) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:763:5+1 - $1_staking_contract_Store_$memory#115 := $1_staking_contract_Store_$memory; - - // @113 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:763:5+1 - $1_vesting_VestingContract_$memory#113 := $1_vesting_VestingContract_$memory; - - // trace_local[admin]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:763:5+1 - assume {:print "$track_local(57,33,0):", $t0} $t0 == $t0; - - // trace_local[contract_address]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:763:5+1 - assume {:print "$track_local(57,33,1):", $t1} $t1 == $t1; - - // trace_local[new_voter]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:763:5+1 - assume {:print "$track_local(57,33,2):", $t2} $t2 == $t2; - - // $t15 := borrow_global($t1) on_abort goto L2 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:768:32+17 - assume {:print "$at(2,35996,36013)"} true; - if (!$ResourceExists($1_vesting_VestingContract_$memory, $t1)) { - call $ExecFailureAbort(); - } else { - $t15 := $Mutation($Global($t1), EmptyVec(), $ResourceValue($1_vesting_VestingContract_$memory, $t1)); - } - if ($abort_flag) { - assume {:print "$at(2,35996,36013)"} true; - $t16 := $abort_code; - assume {:print "$track_abort(57,33):", $t16} $t16 == $t16; - goto L2; - } - - // trace_local[vesting_contract]($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:768:13+16 - $temp_0'$1_vesting_VestingContract' := $Dereference($t15); - assume {:print "$track_local(57,33,6):", $temp_0'$1_vesting_VestingContract'} $temp_0'$1_vesting_VestingContract' == $temp_0'$1_vesting_VestingContract'; - - // $t17 := read_ref($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:769:21+25 - assume {:print "$at(2,36070,36095)"} true; - $t17 := $Dereference($t15); - - // vesting::verify_admin($t0, $t17) on_abort goto L2 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:769:9+37 - call $1_vesting_verify_admin($t0, $t17); - if ($abort_flag) { - assume {:print "$at(2,36058,36095)"} true; - $t16 := $abort_code; - assume {:print "$track_abort(57,33):", $t16} $t16 == $t16; - goto L2; - } - - // $t18 := read_ref($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:770:68+16 - assume {:print "$at(2,36164,36180)"} true; - $t18 := $Dereference($t15); - - // $t19 := vesting::get_vesting_account_signer_internal($t18) on_abort goto L2 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:770:32+53 - call $t19 := $1_vesting_get_vesting_account_signer_internal($t18); - if ($abort_flag) { - assume {:print "$at(2,36128,36181)"} true; - $t16 := $abort_code; - assume {:print "$track_abort(57,33):", $t16} $t16 == $t16; - goto L2; - } - - // trace_local[contract_signer]($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:770:13+15 - assume {:print "$track_local(57,33,4):", $t19} $t19 == $t19; - - // $t20 := get_field.staking($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:771:25+24 - assume {:print "$at(2,36207,36231)"} true; - $t20 := $staking#$1_vesting_VestingContract($Dereference($t15)); - - // $t21 := get_field.voter($t20) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:771:25+30 - $t21 := $voter#$1_vesting_StakingInfo($t20); - - // trace_local[old_voter]($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:771:13+9 - assume {:print "$track_local(57,33,5):", $t21} $t21 == $t21; - - // $t22 := get_field.staking($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:772:57+24 - assume {:print "$at(2,36295,36319)"} true; - $t22 := $staking#$1_vesting_VestingContract($Dereference($t15)); - - // $t23 := get_field.operator($t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:772:57+33 - $t23 := $operator#$1_vesting_StakingInfo($t22); - - // assume Identical($t24, signer::$address_of($t19)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:99:9+48 - assume {:print "$at(134,4471,4519)"} true; - assume ($t24 == $1_signer_$address_of($t19)); - - // assume Identical($t25, global($t24)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:276:9+34 - assume {:print "$at(134,11729,11763)"} true; - assume ($t25 == $ResourceValue($1_staking_contract_Store_$memory, $t24)); - - // assume Identical($t26, simple_map::spec_get(select staking_contract::Store.staking_contracts($t25), $t23)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:277:9+79 - assume {:print "$at(134,11772,11851)"} true; - assume ($t26 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($t25), $t23)); - - // assume Identical($t27, select staking_contract::StakingContract.pool_address($t26)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:278:9+49 - assume {:print "$at(134,11860,11909)"} true; - assume ($t27 == $pool_address#$1_staking_contract_StakingContract($t26)); - - // assume Identical($t28, select staking_contract::Store.staking_contracts(global($t24))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 - assume {:print "$at(134,11481,11545)"} true; - assume ($t28 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t24))); - - // staking_contract::update_voter($t19, $t23, $t2) on_abort goto L2 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:772:9+93 - assume {:print "$at(2,36247,36340)"} true; - call $1_staking_contract_update_voter($t19, $t23, $t2); - if ($abort_flag) { - assume {:print "$at(2,36247,36340)"} true; - $t16 := $abort_code; - assume {:print "$track_abort(57,33):", $t16} $t16 == $t16; - goto L2; - } - - // $t29 := borrow_field.staking($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:773:9+24 - assume {:print "$at(2,36350,36374)"} true; - $t29 := $ChildMutation($t15, 6, $staking#$1_vesting_VestingContract($Dereference($t15))); - - // $t30 := borrow_field.voter($t29) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:773:9+30 - $t30 := $ChildMutation($t29, 2, $voter#$1_vesting_StakingInfo($Dereference($t29))); - - // write_ref($t30, $t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:773:9+42 - $t30 := $UpdateMutation($t30, $t2); - - // write_back[Reference($t29).voter (address)]($t30) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:773:9+42 - $t29 := $UpdateMutation($t29, $Update'$1_vesting_StakingInfo'_voter($Dereference($t29), $Dereference($t30))); - - // write_back[Reference($t15).staking (vesting::StakingInfo)]($t29) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:773:9+42 - $t15 := $UpdateMutation($t15, $Update'$1_vesting_VestingContract'_staking($Dereference($t15), $Dereference($t29))); - - // $t31 := borrow_field.update_voter_events($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:776:13+41 - assume {:print "$at(2,36427,36468)"} true; - $t31 := $ChildMutation($t15, 10, $update_voter_events#$1_vesting_VestingContract($Dereference($t15))); - - // $t32 := get_field.admin($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:778:24+22 - assume {:print "$at(2,36524,36546)"} true; - $t32 := $admin#$1_vesting_VestingContract($Dereference($t15)); - - // $t33 := get_field.staking($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:780:39+24 - assume {:print "$at(2,36646,36670)"} true; - $t33 := $staking#$1_vesting_VestingContract($Dereference($t15)); - - // $t34 := get_field.pool_address($t33) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:780:39+37 - $t34 := $pool_address#$1_vesting_StakingInfo($t33); - - // $t35 := pack vesting::UpdateVoterEvent($t32, $t1, $t34, $t21, $t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:777:13+270 - assume {:print "$at(2,36482,36752)"} true; - $t35 := $1_vesting_UpdateVoterEvent($t32, $t1, $t34, $t21, $t2); - - // opaque begin: event::emit_event($t31, $t35) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:775:9+360 - assume {:print "$at(2,36403,36763)"} true; - - // opaque end: event::emit_event($t31, $t35) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:775:9+360 - - // write_back[Reference($t15).update_voter_events (event::EventHandle)]($t31) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:775:9+360 - $t15 := $UpdateMutation($t15, $Update'$1_vesting_VestingContract'_update_voter_events($Dereference($t15), $Dereference($t31))); - - // assert forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t15)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t15)), addr)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 - // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 - assume {:print "$at(59,538,673)"} true; - assert {:msg "assert_failed(59,538,673): data invariant does not hold"} - (forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t15))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t15))), addr)))); - - // assert forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t15)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t15)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t15)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t15)), j)), Eq(i, j)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 - // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 - assume {:print "$at(59,738,867)"} true; - assert {:msg "assert_failed(59,738,867): data invariant does not hold"} - (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t15))))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t15))))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; - (var j := $i_3; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t15))), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t15))), j)) ==> $IsEqual'num'(i, j)))))))); - - // write_back[vesting::VestingContract@]($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:775:9+360 - assume {:print "$at(2,36403,36763)"} true; - $1_vesting_VestingContract_$memory := $ResourceUpdate($1_vesting_VestingContract_$memory, $GlobalLocationAddress($t15), - $Dereference($t15)); - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:785:5+1 - assume {:print "$at(2,36769,36770)"} true; -L1: - - // assert Not(Not(exists[@113]($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:510:9+53 - assume {:print "$at(3,22660,22713)"} true; - assert {:msg "assert_failed(3,22660,22713): function does not abort under this condition"} - !!$ResourceExists($1_vesting_VestingContract_$memory#113, $t1); - - // assert Not(Neq
(signer::$address_of[]($t0), select vesting::VestingContract.admin($t10))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:512:9+62 - assume {:print "$at(3,22796,22858)"} true; - assert {:msg "assert_failed(3,22796,22858): function does not abort under this condition"} - !!$IsEqual'address'($1_signer_$address_of($t0), $admin#$1_vesting_VestingContract($t10)); - - // assert Not(Not(exists[@114]($t13))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:279:9+50 - assume {:print "$at(134,11918,11968)"} true; - assert {:msg "assert_failed(134,11918,11968): function does not abort under this condition"} - !!$ResourceExists($1_stake_StakePool_$memory#114, $t13); - - // assert Not(Not(exists[@114](select stake::OwnerCapability.pool_address(select staking_contract::StakingContract.owner_cap($t12))))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:280:9+77 - assume {:print "$at(134,11977,12054)"} true; - assert {:msg "assert_failed(134,11977,12054): function does not abort under this condition"} - !!$ResourceExists($1_stake_StakePool_$memory#114, $pool_address#$1_stake_OwnerCapability($owner_cap#$1_staking_contract_StakingContract($t12))); - - // assert Not(Not(exists[@115]($t9))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:267:9+33 - assume {:print "$at(134,11439,11472)"} true; - assert {:msg "assert_failed(134,11439,11472): function does not abort under this condition"} - !!$ResourceExists($1_staking_contract_Store_$memory#115, $t9); - - // assert Not(Not(simple_map::spec_contains_key[]($t14, $t8))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:269:9+70 - assume {:print "$at(134,11554,11624)"} true; - assert {:msg "assert_failed(134,11554,11624): function does not abort under this condition"} - !!$1_simple_map_spec_contains_key'address_$1_staking_contract_StakingContract'($t14, $t8); - - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:269:9+70 - return; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:785:5+1 - assume {:print "$at(2,36769,36770)"} true; -L2: - - // assert Or(Or(Or(Or(Or(Not(exists[@113]($t1)), Neq
(signer::$address_of[]($t0), select vesting::VestingContract.admin($t10))), Not(exists[@114]($t13))), Not(exists[@114](select stake::OwnerCapability.pool_address(select staking_contract::StakingContract.owner_cap($t12))))), Not(exists[@115]($t9))), Not(simple_map::spec_contains_key[]($t14, $t8))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:276:5+401 - assume {:print "$at(3,12103,12504)"} true; - assert {:msg "assert_failed(3,12103,12504): abort not covered by any of the `aborts_if` clauses"} - (((((!$ResourceExists($1_vesting_VestingContract_$memory#113, $t1) || !$IsEqual'address'($1_signer_$address_of($t0), $admin#$1_vesting_VestingContract($t10))) || !$ResourceExists($1_stake_StakePool_$memory#114, $t13)) || !$ResourceExists($1_stake_StakePool_$memory#114, $pool_address#$1_stake_OwnerCapability($owner_cap#$1_staking_contract_StakingContract($t12)))) || !$ResourceExists($1_staking_contract_Store_$memory#115, $t9)) || !$1_simple_map_spec_contains_key'address_$1_staking_contract_StakingContract'($t14, $t8)); - - // abort($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:276:5+401 - $abort_code := $t16; - $abort_flag := true; - return; - -} - -// fun vesting::admin_withdraw [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:703:5+1003 -procedure {:timeLimit 1000} $1_vesting_admin_withdraw$verify(_$t0: $signer, _$t1: int) returns () -{ - // declare local variables - var $t2: int; - var $t3: int; - var $t4: $1_coin_Coin'$1_aptos_coin_AptosCoin'; - var $t5: $Mutation ($1_vesting_VestingContract); - var $t6: $1_vesting_VestingContract; - var $t7: $1_vesting_VestingContract; - var $t8: int; - var $t9: $1_staking_contract_Store; - var $t10: $1_staking_contract_StakingContract; - var $t11: Table int ($1_staking_contract_StakingContract); - var $t12: int; - var $t13: $1_stake_StakePool; - var $t14: int; - var $t15: int; - var $t16: int; - var $t17: int; - var $t18: $1_stake_StakePool; - var $t19: $1_stake_ValidatorSet; - var $t20: bool; - var $t21: int; - var $t22: int; - var $t23: int; - var $t24: $1_vesting_VestingContract; - var $t25: int; - var $t26: int; - var $t27: int; - var $t28: bool; - var $t29: int; - var $t30: int; - var $t31: $Mutation ($1_vesting_VestingContract); - var $t32: $1_vesting_VestingContract; - var $t33: $1_vesting_VestingContract; - var $t34: int; - var $t35: $1_staking_contract_Store; - var $t36: $1_staking_contract_StakingContract; - var $t37: Table int ($1_staking_contract_StakingContract); - var $t38: int; - var $t39: $1_stake_StakePool; - var $t40: int; - var $t41: int; - var $t42: int; - var $t43: int; - var $t44: $1_stake_StakePool; - var $t45: $1_stake_ValidatorSet; - var $t46: bool; - var $t47: int; - var $t48: int; - var $t49: int; - var $t50: $1_coin_Coin'$1_aptos_coin_AptosCoin'; - var $t51: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; - var $t52: int; - var $t53: int; - var $t54: bool; - var $t55: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; - var $t56: int; - var $t57: $1_account_Account; - var $t58: $Mutation ($1_event_EventHandle'$1_vesting_AdminWithdrawEvent'); - var $t59: int; - var $t60: $1_vesting_AdminWithdrawEvent; - var $t0: $signer; - var $t1: int; - var $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin'': $1_coin_Coin'$1_aptos_coin_AptosCoin'; - var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; - var $temp_0'address': int; - var $temp_0'signer': $signer; - var $temp_0'u64': int; - var $1_vesting_VestingContract_$memory#154: $Memory $1_vesting_VestingContract; - var $1_staking_contract_Store_$memory#155: $Memory $1_staking_contract_Store; - var $1_stake_StakePool_$memory#156: $Memory $1_stake_StakePool; - var $1_stake_ValidatorSet_$memory#157: $Memory $1_stake_ValidatorSet; - var $1_timestamp_CurrentTimeMicroseconds_$memory#158: $Memory $1_timestamp_CurrentTimeMicroseconds; - $t0 := _$t0; - $t1 := _$t1; - - // verification entrypoint assumptions - call $InitVerification(); - - // bytecode translation starts here - // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:703:5+1 - assume {:print "$at(2,33288,33289)"} true; - assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($addr#$signer($t0)); - - // assume WellFormed($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:703:5+1 - assume $IsValid'address'($t1); - - // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.rotation_capability_offer($rsc)))), 1), Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.signer_capability_offer($rsc)))), 1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:703:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_account_Account_$memory, $a_0)}(var $rsc := $ResourceValue($1_account_Account_$memory, $a_0); - (($IsValid'$1_account_Account'($rsc) && ((LenVec($vec#$1_option_Option'address'($for#$1_account_CapabilityOffer'$1_account_RotationCapability'($rotation_capability_offer#$1_account_Account($rsc)))) <= 1) && (LenVec($vec#$1_option_Option'address'($for#$1_account_CapabilityOffer'$1_account_SignerCapability'($signer_capability_offer#$1_account_Account($rsc)))) <= 1)))))); - - // assume forall $rsc: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: select option::Option.vec(select coin::CoinInfo.supply($rsc)): And(And(And(And(And(Iff(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($elem)), option::$is_none(select optional_aggregator::OptionalAggregator.integer($elem))), Iff(option::$is_some(select optional_aggregator::OptionalAggregator.integer($elem)), option::$is_none(select optional_aggregator::OptionalAggregator.aggregator($elem)))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.integer($elem)), Le(select optional_aggregator::Integer.value(option::$borrow(select optional_aggregator::OptionalAggregator.integer($elem))), select optional_aggregator::Integer.limit(option::$borrow(select optional_aggregator::OptionalAggregator.integer($elem)))))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($elem)), Le(aggregator::spec_aggregator_get_val(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($elem))), aggregator::spec_get_limit(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($elem)))))), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.aggregator($elem))), 1)), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.integer($elem))), 1)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:703:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $a_0); - (($IsValid'$1_coin_CoinInfo'$1_aptos_coin_AptosCoin''($rsc) && ((LenVec($vec#$1_option_Option'$1_optional_aggregator_OptionalAggregator'($supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($rsc))) <= 1) && (var $range_1 := $vec#$1_option_Option'$1_optional_aggregator_OptionalAggregator'($supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($rsc)); (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); - ((((((($1_option_$is_some'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)) <==> $1_option_$is_none'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)) ==> ($value#$1_optional_aggregator_Integer($1_option_$borrow'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) <= $limit#$1_optional_aggregator_Integer($1_option_$borrow'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)))))) && ($1_option_$is_some'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem))) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)))))) && (LenVec($vec#$1_option_Option'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem))) <= 1)) && (LenVec($vec#$1_option_Option'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) <= 1))))))))))); - - // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:703:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $a_0); - ($IsValid'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''($rsc)))); - - // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:703:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $a_0); - ($IsValid'$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin''($rsc)))); - - // assume exists>(0x0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:703:5+1 - assume $ResourceExists($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, 0); - - // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:703:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, $a_0); - ($IsValid'$1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin''($rsc)))); - - // assume exists>(0x0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:703:5+1 - assume $ResourceExists($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, 0); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:703:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_aptos_account_DirectTransferConfig_$memory, $a_0)}(var $rsc := $ResourceValue($1_aptos_account_DirectTransferConfig_$memory, $a_0); - ($IsValid'$1_aptos_account_DirectTransferConfig'($rsc)))); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:703:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_chain_status_GenesisEndMarker_$memory, $a_0)}(var $rsc := $ResourceValue($1_chain_status_GenesisEndMarker_$memory, $a_0); - ($IsValid'$1_chain_status_GenesisEndMarker'($rsc)))); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:703:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_timestamp_CurrentTimeMicroseconds_$memory, $a_0)}(var $rsc := $ResourceValue($1_timestamp_CurrentTimeMicroseconds_$memory, $a_0); - ($IsValid'$1_timestamp_CurrentTimeMicroseconds'($rsc)))); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:703:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_stake_StakePool_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_StakePool_$memory, $a_0); - ($IsValid'$1_stake_StakePool'($rsc)))); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:703:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorConfig_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorConfig_$memory, $a_0); - ($IsValid'$1_stake_ValidatorConfig'($rsc)))); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:703:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorPerformance_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorPerformance_$memory, $a_0); - ($IsValid'$1_stake_ValidatorPerformance'($rsc)))); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:703:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorSet_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorSet_$memory, $a_0); - ($IsValid'$1_stake_ValidatorSet'($rsc)))); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:703:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_reconfiguration_Configuration_$memory, $a_0)}(var $rsc := $ResourceValue($1_reconfiguration_Configuration_$memory, $a_0); - ($IsValid'$1_reconfiguration_Configuration'($rsc)))); - - // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), forall $key: select staking_contract::Store.staking_contracts($rsc): And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), i), Index(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:703:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_staking_contract_Store_$memory, $a_0)}(var $rsc := $ResourceValue($1_staking_contract_Store_$memory, $a_0); - (($IsValid'$1_staking_contract_Store'($rsc) && (var $range_1 := $staking_contracts#$1_staking_contract_Store($rsc); (forall $key: int :: ContainsTable($range_1, $EncodeKey'address'($key)) ==> (((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), addr)))) && (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))))); (var $range_3 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))))); (forall $i_4: int, $i_5: int :: $InRange($range_2, $i_4) ==> $InRange($range_3, $i_5) ==> (var i := $i_4; - (var j := $i_5; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), i), ReadVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), j)) ==> $IsEqual'num'(i, j)))))))))))))))); - - // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:703:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); - (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; - (var j := $i_4; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); - - // assume Implies(chain_status::$is_operating(), exists(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:703:5+1003 - // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.spec.move:4:9+93 - assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory, 1)); - - // assume Implies(exists(0x1), stake::validator_set_is_valid()) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:703:5+1003 - // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:8:9+92 - assume ($ResourceExists($1_stake_ValidatorSet_$memory, 1) ==> $1_stake_validator_set_is_valid($1_stake_StakePool_$memory, $1_stake_ValidatorConfig_$memory, $1_stake_ValidatorPerformance_$memory, $1_stake_ValidatorSet_$memory)); - - // assume Implies(chain_status::$is_operating(), exists(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:703:5+1003 - // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:12:9+96 - assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_stake_ValidatorSet_$memory, 1)); - - // assume Implies(chain_status::$is_operating(), Ge(timestamp::spec_now_microseconds(), reconfiguration::$last_reconfiguration_time())) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:703:5+1003 - // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/reconfiguration.spec.move:8:9+137 - assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> ($1_timestamp_spec_now_microseconds($1_timestamp_CurrentTimeMicroseconds_$memory) >= $1_reconfiguration_$last_reconfiguration_time($1_reconfiguration_Configuration_$memory))); - - // assume Identical($t6, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:237:9+65 - assume {:print "$at(3,10631,10696)"} true; - assume ($t6 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); - - // assume Identical($t7, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:511:9+65 - assume {:print "$at(3,22722,22787)"} true; - assume ($t7 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); - - // assume Identical($t8, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t6))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:455:9+49 - assume {:print "$at(3,19684,19733)"} true; - assume ($t8 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t6))); - - // assume Identical($t9, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:459:9+62 - assume {:print "$at(3,19898,19960)"} true; - assume ($t9 == $ResourceValue($1_staking_contract_Store_$memory, $t1)); - - // assume Identical($t10, simple_map::spec_get(select staking_contract::Store.staking_contracts($t9), $t8)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:460:9+79 - assume {:print "$at(3,19969,20048)"} true; - assume ($t10 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($t9), $t8)); - - // assume Identical($t11, select staking_contract::Store.staking_contracts(global($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 - assume {:print "$at(134,11481,11545)"} true; - assume ($t11 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t1))); - - // assume Identical($t12, select staking_contract::StakingContract.pool_address($t10)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:470:9+49 - assume {:print "$at(3,20547,20596)"} true; - assume ($t12 == $pool_address#$1_staking_contract_StakingContract($t10)); - - // assume Identical($t13, global($t12)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:472:9+56 - assume {:print "$at(3,20664,20720)"} true; - assume ($t13 == $ResourceValue($1_stake_StakePool_$memory, $t12)); - - // assume Identical($t14, select coin::Coin.value(select stake::StakePool.inactive($t13))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:473:9+41 - assume {:print "$at(3,20729,20770)"} true; - assume ($t14 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t13))); - - // assume Identical($t15, select coin::Coin.value(select stake::StakePool.pending_inactive($t13))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:474:9+57 - assume {:print "$at(3,20779,20836)"} true; - assume ($t15 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t13))); - - // assume Identical($t16, Add($t14, $t15)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:478:9+63 - assume {:print "$at(3,20948,21011)"} true; - assume ($t16 == ($t14 + $t15)); - - // assume Identical($t17, select stake::OwnerCapability.pool_address(select staking_contract::StakingContract.owner_cap($t10))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:479:9+61 - assume {:print "$at(3,21020,21081)"} true; - assume ($t17 == $pool_address#$1_stake_OwnerCapability($owner_cap#$1_staking_contract_StakingContract($t10))); - - // assume Identical($t18, global($t17)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:481:9+60 - assume {:print "$at(3,21151,21211)"} true; - assume ($t18 == $ResourceValue($1_stake_StakePool_$memory, $t17)); - - // assume Identical($t19, global(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:483:9+66 - assume {:print "$at(3,21286,21352)"} true; - assume ($t19 == $ResourceValue($1_stake_ValidatorSet_$memory, 1)); - - // assume Identical($t20, And(And(Not(stake::spec_contains(select stake::ValidatorSet.pending_active($t19), $t17)), Not(stake::spec_contains(select stake::ValidatorSet.active_validators($t19), $t17))), Not(stake::spec_contains(select stake::ValidatorSet.pending_inactive($t19), $t17)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:484:9+260 - assume {:print "$at(3,21361,21621)"} true; - assume ($t20 == ((!$1_stake_spec_contains($pending_active#$1_stake_ValidatorSet($t19), $t17) && !$1_stake_spec_contains($active_validators#$1_stake_ValidatorSet($t19), $t17)) && !$1_stake_spec_contains($pending_inactive#$1_stake_ValidatorSet($t19), $t17))); - - // assume Identical($t21, select coin::Coin.value(select stake::StakePool.inactive($t18))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:487:9+45 - assume {:print "$at(3,21630,21675)"} true; - assume ($t21 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t18))); - - // assume Identical($t22, select coin::Coin.value(select stake::StakePool.pending_inactive($t18))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:488:9+61 - assume {:print "$at(3,21684,21745)"} true; - assume ($t22 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t18))); - - // assume Identical($t23, Add($t21, $t22)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:489:9+53 - assume {:print "$at(3,21754,21807)"} true; - assume ($t23 == ($t21 + $t22)); - - // @158 := save_mem(timestamp::CurrentTimeMicroseconds) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:703:5+1 - assume {:print "$at(2,33288,33289)"} true; - $1_timestamp_CurrentTimeMicroseconds_$memory#158 := $1_timestamp_CurrentTimeMicroseconds_$memory; - - // @156 := save_mem(stake::StakePool) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:703:5+1 - $1_stake_StakePool_$memory#156 := $1_stake_StakePool_$memory; - - // @157 := save_mem(stake::ValidatorSet) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:703:5+1 - $1_stake_ValidatorSet_$memory#157 := $1_stake_ValidatorSet_$memory; - - // @155 := save_mem(staking_contract::Store) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:703:5+1 - $1_staking_contract_Store_$memory#155 := $1_staking_contract_Store_$memory; - - // @154 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:703:5+1 - $1_vesting_VestingContract_$memory#154 := $1_vesting_VestingContract_$memory; - - // trace_local[admin]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:703:5+1 - assume {:print "$track_local(57,1,0):", $t0} $t0 == $t0; - - // trace_local[contract_address]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:703:5+1 - assume {:print "$track_local(57,1,1):", $t1} $t1 == $t1; - - // $t24 := get_global($t1) on_abort goto L6 with $t25 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:704:32+13 - assume {:print "$at(2,33421,33434)"} true; - if (!$ResourceExists($1_vesting_VestingContract_$memory, $t1)) { - call $ExecFailureAbort(); - } else { - $t24 := $ResourceValue($1_vesting_VestingContract_$memory, $t1); - } - if ($abort_flag) { - assume {:print "$at(2,33421,33434)"} true; - $t25 := $abort_code; - assume {:print "$track_abort(57,1):", $t25} $t25 == $t25; - goto L6; - } - - // $t26 := get_field.state($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:705:17+22 - assume {:print "$at(2,33487,33509)"} true; - $t26 := $state#$1_vesting_VestingContract($t24); - - // $t27 := 2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:705:43+23 - $t27 := 2; - assume $IsValid'u64'($t27); - - // $t28 := ==($t26, $t27) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:705:40+2 - $t28 := $IsEqual'u64'($t26, $t27); - - // if ($t28) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:705:9+112 - if ($t28) { goto L1; } else { goto L0; } - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:705:9+112 -L1: - - // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:705:9+112 - assume {:print "$at(2,33479,33591)"} true; - goto L2; - - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:705:9+112 -L0: - - // $t29 := 9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:705:89+30 - assume {:print "$at(2,33559,33589)"} true; - $t29 := 9; - assume $IsValid'u64'($t29); - - // $t30 := error::invalid_state($t29) on_abort goto L6 with $t25 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:705:68+52 - call $t30 := $1_error_invalid_state($t29); - if ($abort_flag) { - assume {:print "$at(2,33538,33590)"} true; - $t25 := $abort_code; - assume {:print "$track_abort(57,1):", $t25} $t25 == $t25; - goto L6; - } - - // trace_abort($t30) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:705:9+112 - assume {:print "$at(2,33479,33591)"} true; - assume {:print "$track_abort(57,1):", $t30} $t30 == $t30; - - // $t25 := move($t30) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:705:9+112 - $t25 := $t30; - - // goto L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:705:9+112 - goto L6; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:707:67+16 - assume {:print "$at(2,33660,33676)"} true; -L2: - - // $t31 := borrow_global($t1) on_abort goto L6 with $t25 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:707:32+17 - assume {:print "$at(2,33625,33642)"} true; - if (!$ResourceExists($1_vesting_VestingContract_$memory, $t1)) { - call $ExecFailureAbort(); - } else { - $t31 := $Mutation($Global($t1), EmptyVec(), $ResourceValue($1_vesting_VestingContract_$memory, $t1)); - } - if ($abort_flag) { - assume {:print "$at(2,33625,33642)"} true; - $t25 := $abort_code; - assume {:print "$track_abort(57,1):", $t25} $t25 == $t25; - goto L6; - } - - // trace_local[vesting_contract#1]($t31) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:707:13+16 - $temp_0'$1_vesting_VestingContract' := $Dereference($t31); - assume {:print "$track_local(57,1,5):", $temp_0'$1_vesting_VestingContract'} $temp_0'$1_vesting_VestingContract' == $temp_0'$1_vesting_VestingContract'; - - // $t32 := read_ref($t31) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:708:21+25 - assume {:print "$at(2,33699,33724)"} true; - $t32 := $Dereference($t31); - - // vesting::verify_admin($t0, $t32) on_abort goto L6 with $t25 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:708:9+37 - call $1_vesting_verify_admin($t0, $t32); - if ($abort_flag) { - assume {:print "$at(2,33687,33724)"} true; - $t25 := $abort_code; - assume {:print "$track_abort(57,1):", $t25} $t25 == $t25; - goto L6; - } - - // $t33 := read_ref($t31) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:709:35+36 - assume {:print "$at(2,33760,33796)"} true; - $t33 := $Dereference($t31); - - // assume Identical($t34, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t33))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:455:9+49 - assume {:print "$at(3,19684,19733)"} true; - assume ($t34 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t33))); - - // assume Identical($t35, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:459:9+62 - assume {:print "$at(3,19898,19960)"} true; - assume ($t35 == $ResourceValue($1_staking_contract_Store_$memory, $t1)); - - // assume Identical($t36, simple_map::spec_get(select staking_contract::Store.staking_contracts($t35), $t34)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:460:9+79 - assume {:print "$at(3,19969,20048)"} true; - assume ($t36 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($t35), $t34)); - - // assume Identical($t37, select staking_contract::Store.staking_contracts(global($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 - assume {:print "$at(134,11481,11545)"} true; - assume ($t37 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t1))); - - // assume Identical($t38, select staking_contract::StakingContract.pool_address($t36)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:470:9+49 - assume {:print "$at(3,20547,20596)"} true; - assume ($t38 == $pool_address#$1_staking_contract_StakingContract($t36)); - - // assume Identical($t39, global($t38)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:472:9+56 - assume {:print "$at(3,20664,20720)"} true; - assume ($t39 == $ResourceValue($1_stake_StakePool_$memory, $t38)); - - // assume Identical($t40, select coin::Coin.value(select stake::StakePool.inactive($t39))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:473:9+41 - assume {:print "$at(3,20729,20770)"} true; - assume ($t40 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t39))); - - // assume Identical($t41, select coin::Coin.value(select stake::StakePool.pending_inactive($t39))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:474:9+57 - assume {:print "$at(3,20779,20836)"} true; - assume ($t41 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t39))); - - // assume Identical($t42, Add($t40, $t41)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:478:9+63 - assume {:print "$at(3,20948,21011)"} true; - assume ($t42 == ($t40 + $t41)); - - // assume Identical($t43, select stake::OwnerCapability.pool_address(select staking_contract::StakingContract.owner_cap($t36))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:479:9+61 - assume {:print "$at(3,21020,21081)"} true; - assume ($t43 == $pool_address#$1_stake_OwnerCapability($owner_cap#$1_staking_contract_StakingContract($t36))); - - // assume Identical($t44, global($t43)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:481:9+60 - assume {:print "$at(3,21151,21211)"} true; - assume ($t44 == $ResourceValue($1_stake_StakePool_$memory, $t43)); - - // assume Identical($t45, global(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:483:9+66 - assume {:print "$at(3,21286,21352)"} true; - assume ($t45 == $ResourceValue($1_stake_ValidatorSet_$memory, 1)); - - // assume Identical($t46, And(And(Not(stake::spec_contains(select stake::ValidatorSet.pending_active($t45), $t43)), Not(stake::spec_contains(select stake::ValidatorSet.active_validators($t45), $t43))), Not(stake::spec_contains(select stake::ValidatorSet.pending_inactive($t45), $t43)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:484:9+260 - assume {:print "$at(3,21361,21621)"} true; - assume ($t46 == ((!$1_stake_spec_contains($pending_active#$1_stake_ValidatorSet($t45), $t43) && !$1_stake_spec_contains($active_validators#$1_stake_ValidatorSet($t45), $t43)) && !$1_stake_spec_contains($pending_inactive#$1_stake_ValidatorSet($t45), $t43))); - - // assume Identical($t47, select coin::Coin.value(select stake::StakePool.inactive($t44))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:487:9+45 - assume {:print "$at(3,21630,21675)"} true; - assume ($t47 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t44))); - - // assume Identical($t48, select coin::Coin.value(select stake::StakePool.pending_inactive($t44))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:488:9+61 - assume {:print "$at(3,21684,21745)"} true; - assume ($t48 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t44))); - - // assume Identical($t49, Add($t47, $t48)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:489:9+53 - assume {:print "$at(3,21754,21807)"} true; - assume ($t49 == ($t47 + $t48)); - - // $t50 := vesting::withdraw_stake($t33, $t1) on_abort goto L6 with $t25 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:709:21+50 - assume {:print "$at(2,33746,33796)"} true; - call $t50 := $1_vesting_withdraw_stake($t33, $t1); - if ($abort_flag) { - assume {:print "$at(2,33746,33796)"} true; - $t25 := $abort_code; - assume {:print "$track_abort(57,1):", $t25} $t25 == $t25; - goto L6; - } - - // trace_local[coins]($t50) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:709:13+5 - assume {:print "$track_local(57,1,4):", $t50} $t50 == $t50; - - // assume Identical($t51, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 - assume {:print "$at(95,1664,1763)"} true; - assume ($t51 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); - - // $t52 := coin::value($t50) on_abort goto L6 with $t25 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:710:22+19 - assume {:print "$at(2,33819,33838)"} true; - call $t52 := $1_coin_value'$1_aptos_coin_AptosCoin'($t50); - if ($abort_flag) { - assume {:print "$at(2,33819,33838)"} true; - $t25 := $abort_code; - assume {:print "$track_abort(57,1):", $t25} $t25 == $t25; - goto L6; - } - - // trace_local[amount]($t52) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:710:13+6 - assume {:print "$track_local(57,1,3):", $t52} $t52 == $t52; - - // $t53 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:711:23+1 - assume {:print "$at(2,33862,33863)"} true; - $t53 := 0; - assume $IsValid'u64'($t53); - - // $t54 := ==($t52, $t53) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:711:20+2 - $t54 := $IsEqual'u64'($t52, $t53); - - // if ($t54) goto L4 else goto L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:711:9+86 - if ($t54) { goto L4; } else { goto L3; } - - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:712:13+25 - assume {:print "$at(2,33879,33904)"} true; -L4: - - // assert forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t31)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t31)), addr)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 - // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 - assume {:print "$at(59,538,673)"} true; - assert {:msg "assert_failed(59,538,673): data invariant does not hold"} - (forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t31))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t31))), addr)))); - - // assert forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t31)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t31)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t31)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t31)), j)), Eq(i, j)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 - // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 - assume {:print "$at(59,738,867)"} true; - assert {:msg "assert_failed(59,738,867): data invariant does not hold"} - (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t31))))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t31))))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; - (var j := $i_3; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t31))), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t31))), j)) ==> $IsEqual'num'(i, j)))))))); - - // destroy($t31) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:712:13+25 - assume {:print "$at(2,33879,33904)"} true; - - // assume Identical($t55, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 - assume {:print "$at(95,1664,1763)"} true; - assume ($t55 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); - - // coin::destroy_zero($t50) on_abort goto L6 with $t25 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:712:13+25 - assume {:print "$at(2,33879,33904)"} true; - call $1_coin_destroy_zero'$1_aptos_coin_AptosCoin'($t50); - if ($abort_flag) { - assume {:print "$at(2,33879,33904)"} true; - $t25 := $abort_code; - assume {:print "$track_abort(57,1):", $t25} $t25 == $t25; - goto L6; - } - - // goto L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:713:13+6 - assume {:print "$at(2,33918,33924)"} true; - goto L5; - - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:715:38+16 - assume {:print "$at(2,33973,33989)"} true; -L3: - - // $t56 := get_field.withdrawal_address($t31) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:715:38+35 - assume {:print "$at(2,33973,34008)"} true; - $t56 := $withdrawal_address#$1_vesting_VestingContract($Dereference($t31)); - - // assume Identical($t57, global($t56)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.spec.move:200:9+39 - assume {:print "$at(81,9368,9407)"} true; - assume ($t57 == $ResourceValue($1_account_Account_$memory, $t56)); - - // aptos_account::deposit_coins($t56, $t50) on_abort goto L6 with $t25 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:715:9+72 - assume {:print "$at(2,33944,34016)"} true; - call $1_aptos_account_deposit_coins'$1_aptos_coin_AptosCoin'($t56, $t50); - if ($abort_flag) { - assume {:print "$at(2,33944,34016)"} true; - $t25 := $abort_code; - assume {:print "$track_abort(57,1):", $t25} $t25 == $t25; - goto L6; - } - - // $t58 := borrow_field.admin_withdraw_events($t31) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:718:13+43 - assume {:print "$at(2,34051,34094)"} true; - $t58 := $ChildMutation($t31, 17, $admin_withdraw_events#$1_vesting_VestingContract($Dereference($t31))); - - // $t59 := get_field.admin($t31) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:720:24+22 - assume {:print "$at(2,34152,34174)"} true; - $t59 := $admin#$1_vesting_VestingContract($Dereference($t31)); - - // $t60 := pack vesting::AdminWithdrawEvent($t59, $t1, $t52) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:719:13+165 - assume {:print "$at(2,34108,34273)"} true; - $t60 := $1_vesting_AdminWithdrawEvent($t59, $t1, $t52); - - // opaque begin: event::emit_event($t58, $t60) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:717:9+257 - assume {:print "$at(2,34027,34284)"} true; - - // opaque end: event::emit_event($t58, $t60) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:717:9+257 - - // write_back[Reference($t31).admin_withdraw_events (event::EventHandle)]($t58) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:717:9+257 - $t31 := $UpdateMutation($t31, $Update'$1_vesting_VestingContract'_admin_withdraw_events($Dereference($t31), $Dereference($t58))); - - // assert forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t31)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t31)), addr)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 - // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 - assume {:print "$at(59,538,673)"} true; - assert {:msg "assert_failed(59,538,673): data invariant does not hold"} - (forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t31))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t31))), addr)))); - - // assert forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t31)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t31)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t31)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t31)), j)), Eq(i, j)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 - // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 - assume {:print "$at(59,738,867)"} true; - assert {:msg "assert_failed(59,738,867): data invariant does not hold"} - (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t31))))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t31))))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; - (var j := $i_3; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t31))), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t31))), j)) ==> $IsEqual'num'(i, j)))))))); - - // write_back[vesting::VestingContract@]($t31) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:717:9+257 - assume {:print "$at(2,34027,34284)"} true; - $1_vesting_VestingContract_$memory := $ResourceUpdate($1_vesting_VestingContract_$memory, $GlobalLocationAddress($t31), - $Dereference($t31)); - - // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:725:5+1 - assume {:print "$at(2,34290,34291)"} true; -L5: - - // assert Not(Neq(select vesting::VestingContract.state($t6), 2)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:238:9+60 - assume {:print "$at(3,10705,10765)"} true; - assert {:msg "assert_failed(3,10705,10765): function does not abort under this condition"} - !!$IsEqual'u64'($state#$1_vesting_VestingContract($t6), 2); - - // assert Not(Not(exists[@154]($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:510:9+53 - assume {:print "$at(3,22660,22713)"} true; - assert {:msg "assert_failed(3,22660,22713): function does not abort under this condition"} - !!$ResourceExists($1_vesting_VestingContract_$memory#154, $t1); - - // assert Not(Neq
(signer::$address_of[]($t0), select vesting::VestingContract.admin($t7))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:512:9+62 - assume {:print "$at(3,22796,22858)"} true; - assert {:msg "assert_failed(3,22796,22858): function does not abort under this condition"} - !!$IsEqual'address'($1_signer_$address_of($t0), $admin#$1_vesting_VestingContract($t7)); - - // assert Not(Not(exists[@155]($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:267:9+33 - assume {:print "$at(134,11439,11472)"} true; - assert {:msg "assert_failed(134,11439,11472): function does not abort under this condition"} - !!$ResourceExists($1_staking_contract_Store_$memory#155, $t1); - - // assert Not(Not(simple_map::spec_contains_key[]($t11, $t8))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:269:9+70 - assume {:print "$at(134,11554,11624)"} true; - assert {:msg "assert_failed(134,11554,11624): function does not abort under this condition"} - !!$1_simple_map_spec_contains_key'address_$1_staking_contract_StakingContract'($t11, $t8); - - // assert Not(Not(exists[@156]($t12))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:471:9+50 - assume {:print "$at(3,20605,20655)"} true; - assert {:msg "assert_failed(3,20605,20655): function does not abort under this condition"} - !!$ResourceExists($1_stake_StakePool_$memory#156, $t12); - - // assert Not(Gt(Add($t14, $t15), 18446744073709551615)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:475:9+48 - assume {:print "$at(3,20845,20893)"} true; - assert {:msg "assert_failed(3,20845,20893): function does not abort under this condition"} - !(($t14 + $t15) > 18446744073709551615); - - // assert Not(Not(exists[@156]($t17))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:480:9+52 - assume {:print "$at(3,21090,21142)"} true; - assert {:msg "assert_failed(3,21090,21142): function does not abort under this condition"} - !!$ResourceExists($1_stake_StakePool_$memory#156, $t17); - - // assert Not(Not(exists[@157](0x1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:482:9+57 - assume {:print "$at(3,21220,21277)"} true; - assert {:msg "assert_failed(3,21220,21277): function does not abort under this condition"} - !!$ResourceExists($1_stake_ValidatorSet_$memory#157, 1); - - // assert Not(And(And($t20, Ge(timestamp::spec_now_seconds[@158](), select stake::StakePool.locked_until_secs($t18))), Gt(Add($t21, $t22), 18446744073709551615))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:490:9+150 - assume {:print "$at(3,21816,21966)"} true; - assert {:msg "assert_failed(3,21816,21966): function does not abort under this condition"} - !(($t20 && ($1_timestamp_spec_now_seconds($1_timestamp_CurrentTimeMicroseconds_$memory#158) >= $locked_until_secs#$1_stake_StakePool($t18))) && (($t21 + $t22) > 18446744073709551615)); - - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:490:9+150 - return; - - // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:725:5+1 - assume {:print "$at(2,34290,34291)"} true; -L6: - - // abort($t25) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:725:5+1 - assume {:print "$at(2,34290,34291)"} true; - $abort_code := $t25; - $abort_flag := true; - return; - -} - -// fun vesting::assert_active_vesting_contract [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:945:5+349 -procedure {:inline 1} $1_vesting_assert_active_vesting_contract(_$t0: int) returns () -{ - // declare local variables - var $t1: $1_vesting_VestingContract; - var $t2: int; - var $t3: $1_vesting_VestingContract; - var $t4: int; - var $t5: int; - var $t6: bool; - var $t7: int; - var $t8: int; - var $t0: int; - var $temp_0'address': int; - $t0 := _$t0; - - // bytecode translation starts here - // assume Identical($t1, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:518:9+65 - assume {:print "$at(3,23036,23101)"} true; - assume ($t1 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); - - // trace_local[contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:945:5+1 - assume {:print "$at(2,44071,44072)"} true; - assume {:print "$track_local(57,2,0):", $t0} $t0 == $t0; - - // vesting::assert_vesting_contract_exists($t0) on_abort goto L4 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:946:9+48 - assume {:print "$at(2,44168,44216)"} true; - call $1_vesting_assert_vesting_contract_exists($t0); - if ($abort_flag) { - assume {:print "$at(2,44168,44216)"} true; - $t2 := $abort_code; - assume {:print "$track_abort(57,2):", $t2} $t2 == $t2; - goto L4; - } - - // $t3 := get_global($t0) on_abort goto L4 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:947:32+13 - assume {:print "$at(2,44249,44262)"} true; - if (!$ResourceExists($1_vesting_VestingContract_$memory, $t0)) { - call $ExecFailureAbort(); - } else { - $t3 := $ResourceValue($1_vesting_VestingContract_$memory, $t0); - } - if ($abort_flag) { - assume {:print "$at(2,44249,44262)"} true; - $t2 := $abort_code; - assume {:print "$track_abort(57,2):", $t2} $t2 == $t2; - goto L4; - } - - // $t4 := get_field.state($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:17+22 - assume {:print "$at(2,44315,44337)"} true; - $t4 := $state#$1_vesting_VestingContract($t3); - - // $t5 := 1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:43+19 - $t5 := 1; - assume $IsValid'u64'($t5); - - // $t6 := ==($t4, $t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:40+2 - $t6 := $IsEqual'u64'($t4, $t5); - - // if ($t6) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:9+106 - if ($t6) { goto L1; } else { goto L0; } - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:9+106 -L1: - - // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:9+106 - assume {:print "$at(2,44307,44413)"} true; - goto L2; - - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:85+28 -L0: - - // $t7 := 8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:85+28 - assume {:print "$at(2,44383,44411)"} true; - $t7 := 8; - assume $IsValid'u64'($t7); - - // $t8 := error::invalid_state($t7) on_abort goto L4 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:64+50 - call $t8 := $1_error_invalid_state($t7); - if ($abort_flag) { - assume {:print "$at(2,44362,44412)"} true; - $t2 := $abort_code; - assume {:print "$track_abort(57,2):", $t2} $t2 == $t2; - goto L4; - } - - // trace_abort($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:9+106 - assume {:print "$at(2,44307,44413)"} true; - assume {:print "$track_abort(57,2):", $t8} $t8 == $t8; - - // $t2 := move($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:9+106 - $t2 := $t8; - - // goto L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:9+106 - goto L4; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:115+1 -L2: - - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:949:5+1 - assume {:print "$at(2,44419,44420)"} true; -L3: - - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:949:5+1 - assume {:print "$at(2,44419,44420)"} true; - return; - - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:949:5+1 -L4: - - // abort($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:949:5+1 - assume {:print "$at(2,44419,44420)"} true; - $abort_code := $t2; - $abort_flag := true; - return; - +// struct staking_contract::UpdateVoterEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:117:5+161 +type {:datatype} $1_staking_contract_UpdateVoterEvent; +function {:constructor} $1_staking_contract_UpdateVoterEvent($operator: int, $pool_address: int, $old_voter: int, $new_voter: int): $1_staking_contract_UpdateVoterEvent; +function {:inline} $Update'$1_staking_contract_UpdateVoterEvent'_operator(s: $1_staking_contract_UpdateVoterEvent, x: int): $1_staking_contract_UpdateVoterEvent { + $1_staking_contract_UpdateVoterEvent(x, $pool_address#$1_staking_contract_UpdateVoterEvent(s), $old_voter#$1_staking_contract_UpdateVoterEvent(s), $new_voter#$1_staking_contract_UpdateVoterEvent(s)) } - -// fun vesting::assert_active_vesting_contract [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:945:5+349 -procedure {:timeLimit 1000} $1_vesting_assert_active_vesting_contract$verify(_$t0: int) returns () -{ - // declare local variables - var $t1: $1_vesting_VestingContract; - var $t2: int; - var $t3: $1_vesting_VestingContract; - var $t4: int; - var $t5: int; - var $t6: bool; - var $t7: int; - var $t8: int; - var $t0: int; - var $temp_0'address': int; - var $1_vesting_VestingContract_$memory#61: $Memory $1_vesting_VestingContract; - $t0 := _$t0; - - // verification entrypoint assumptions - call $InitVerification(); - - // bytecode translation starts here - // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:945:5+1 - assume {:print "$at(2,44071,44072)"} true; - assume $IsValid'address'($t0); - - // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:945:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); - (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; - (var j := $i_4; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); - - // assume Identical($t1, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:518:9+65 - assume {:print "$at(3,23036,23101)"} true; - assume ($t1 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); - - // @61 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:945:5+1 - assume {:print "$at(2,44071,44072)"} true; - $1_vesting_VestingContract_$memory#61 := $1_vesting_VestingContract_$memory; - - // trace_local[contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:945:5+1 - assume {:print "$track_local(57,2,0):", $t0} $t0 == $t0; - - // vesting::assert_vesting_contract_exists($t0) on_abort goto L4 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:946:9+48 - assume {:print "$at(2,44168,44216)"} true; - call $1_vesting_assert_vesting_contract_exists($t0); - if ($abort_flag) { - assume {:print "$at(2,44168,44216)"} true; - $t2 := $abort_code; - assume {:print "$track_abort(57,2):", $t2} $t2 == $t2; - goto L4; - } - - // $t3 := get_global($t0) on_abort goto L4 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:947:32+13 - assume {:print "$at(2,44249,44262)"} true; - if (!$ResourceExists($1_vesting_VestingContract_$memory, $t0)) { - call $ExecFailureAbort(); - } else { - $t3 := $ResourceValue($1_vesting_VestingContract_$memory, $t0); - } - if ($abort_flag) { - assume {:print "$at(2,44249,44262)"} true; - $t2 := $abort_code; - assume {:print "$track_abort(57,2):", $t2} $t2 == $t2; - goto L4; - } - - // $t4 := get_field.state($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:17+22 - assume {:print "$at(2,44315,44337)"} true; - $t4 := $state#$1_vesting_VestingContract($t3); - - // $t5 := 1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:43+19 - $t5 := 1; - assume $IsValid'u64'($t5); - - // $t6 := ==($t4, $t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:40+2 - $t6 := $IsEqual'u64'($t4, $t5); - - // if ($t6) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:9+106 - if ($t6) { goto L1; } else { goto L0; } - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:9+106 -L1: - - // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:9+106 - assume {:print "$at(2,44307,44413)"} true; - goto L2; - - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:85+28 -L0: - - // $t7 := 8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:85+28 - assume {:print "$at(2,44383,44411)"} true; - $t7 := 8; - assume $IsValid'u64'($t7); - - // $t8 := error::invalid_state($t7) on_abort goto L4 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:64+50 - call $t8 := $1_error_invalid_state($t7); - if ($abort_flag) { - assume {:print "$at(2,44362,44412)"} true; - $t2 := $abort_code; - assume {:print "$track_abort(57,2):", $t2} $t2 == $t2; - goto L4; - } - - // trace_abort($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:9+106 - assume {:print "$at(2,44307,44413)"} true; - assume {:print "$track_abort(57,2):", $t8} $t8 == $t8; - - // $t2 := move($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:9+106 - $t2 := $t8; - - // goto L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:9+106 - goto L4; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:115+1 -L2: - - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:949:5+1 - assume {:print "$at(2,44419,44420)"} true; -L3: - - // assert Not(Not(exists[@61]($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:517:9+53 - assume {:print "$at(3,22974,23027)"} true; - assert {:msg "assert_failed(3,22974,23027): function does not abort under this condition"} - !!$ResourceExists($1_vesting_VestingContract_$memory#61, $t0); - - // assert Not(Neq(select vesting::VestingContract.state($t1), 1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:519:9+56 - assume {:print "$at(3,23110,23166)"} true; - assert {:msg "assert_failed(3,23110,23166): function does not abort under this condition"} - !!$IsEqual'u64'($state#$1_vesting_VestingContract($t1), 1); - - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:519:9+56 - return; - - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:949:5+1 - assume {:print "$at(2,44419,44420)"} true; -L4: - - // assert Or(Not(exists[@61]($t0)), Neq(select vesting::VestingContract.state($t1), 1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:418:5+134 - assume {:print "$at(3,18183,18317)"} true; - assert {:msg "assert_failed(3,18183,18317): abort not covered by any of the `aborts_if` clauses"} - (!$ResourceExists($1_vesting_VestingContract_$memory#61, $t0) || !$IsEqual'u64'($state#$1_vesting_VestingContract($t1), 1)); - - // abort($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:418:5+134 - $abort_code := $t2; - $abort_flag := true; - return; - +function {:inline} $Update'$1_staking_contract_UpdateVoterEvent'_pool_address(s: $1_staking_contract_UpdateVoterEvent, x: int): $1_staking_contract_UpdateVoterEvent { + $1_staking_contract_UpdateVoterEvent($operator#$1_staking_contract_UpdateVoterEvent(s), x, $old_voter#$1_staking_contract_UpdateVoterEvent(s), $new_voter#$1_staking_contract_UpdateVoterEvent(s)) } - -// fun vesting::assert_vesting_contract_exists [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:941:5+176 -procedure {:inline 1} $1_vesting_assert_vesting_contract_exists(_$t0: int) returns () -{ - // declare local variables - var $t1: bool; - var $t2: int; - var $t3: int; - var $t4: int; - var $t0: int; - var $temp_0'address': int; - $t0 := _$t0; - - // bytecode translation starts here - // trace_local[contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:941:5+1 - assume {:print "$at(2,43889,43890)"} true; - assume {:print "$track_local(57,3,0):", $t0} $t0 == $t0; - - // $t1 := exists($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:17+6 - assume {:print "$at(2,43969,43975)"} true; - $t1 := $ResourceExists($1_vesting_VestingContract_$memory, $t0); - - // if ($t1) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:9+97 - if ($t1) { goto L1; } else { goto L0; } - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:9+97 -L1: - - // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:9+97 - assume {:print "$at(2,43961,44058)"} true; - goto L2; - - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:77+27 -L0: - - // $t2 := 10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:77+27 - assume {:print "$at(2,44029,44056)"} true; - $t2 := 10; - assume $IsValid'u64'($t2); - - // $t3 := error::not_found($t2) on_abort goto L4 with $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:60+45 - call $t3 := $1_error_not_found($t2); - if ($abort_flag) { - assume {:print "$at(2,44012,44057)"} true; - $t4 := $abort_code; - assume {:print "$track_abort(57,3):", $t4} $t4 == $t4; - goto L4; - } - - // trace_abort($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:9+97 - assume {:print "$at(2,43961,44058)"} true; - assume {:print "$track_abort(57,3):", $t3} $t3 == $t3; - - // $t4 := move($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:9+97 - $t4 := $t3; - - // goto L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:9+97 - goto L4; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:106+1 -L2: - - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:943:5+1 - assume {:print "$at(2,44064,44065)"} true; -L3: - - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:943:5+1 - assume {:print "$at(2,44064,44065)"} true; - return; - - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:943:5+1 -L4: - - // abort($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:943:5+1 - assume {:print "$at(2,44064,44065)"} true; - $abort_code := $t4; - $abort_flag := true; - return; - +function {:inline} $Update'$1_staking_contract_UpdateVoterEvent'_old_voter(s: $1_staking_contract_UpdateVoterEvent, x: int): $1_staking_contract_UpdateVoterEvent { + $1_staking_contract_UpdateVoterEvent($operator#$1_staking_contract_UpdateVoterEvent(s), $pool_address#$1_staking_contract_UpdateVoterEvent(s), x, $new_voter#$1_staking_contract_UpdateVoterEvent(s)) +} +function {:inline} $Update'$1_staking_contract_UpdateVoterEvent'_new_voter(s: $1_staking_contract_UpdateVoterEvent, x: int): $1_staking_contract_UpdateVoterEvent { + $1_staking_contract_UpdateVoterEvent($operator#$1_staking_contract_UpdateVoterEvent(s), $pool_address#$1_staking_contract_UpdateVoterEvent(s), $old_voter#$1_staking_contract_UpdateVoterEvent(s), x) +} +function $IsValid'$1_staking_contract_UpdateVoterEvent'(s: $1_staking_contract_UpdateVoterEvent): bool { + $IsValid'address'($operator#$1_staking_contract_UpdateVoterEvent(s)) + && $IsValid'address'($pool_address#$1_staking_contract_UpdateVoterEvent(s)) + && $IsValid'address'($old_voter#$1_staking_contract_UpdateVoterEvent(s)) + && $IsValid'address'($new_voter#$1_staking_contract_UpdateVoterEvent(s)) +} +function {:inline} $IsEqual'$1_staking_contract_UpdateVoterEvent'(s1: $1_staking_contract_UpdateVoterEvent, s2: $1_staking_contract_UpdateVoterEvent): bool { + s1 == s2 } -// fun vesting::assert_vesting_contract_exists [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:941:5+176 -procedure {:timeLimit 1000} $1_vesting_assert_vesting_contract_exists$verify(_$t0: int) returns () +// fun staking_contract::assert_staking_contract_exists [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:633:5+446 +procedure {:inline 1} $1_staking_contract_assert_staking_contract_exists(_$t0: int, _$t1: int) returns () { // declare local variables - var $t1: bool; var $t2: int; - var $t3: int; - var $t4: int; + var $t3: Table int ($1_staking_contract_StakingContract); + var $t4: bool; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: $Mutation ($1_staking_contract_Store); + var $t9: $Mutation (Table int ($1_staking_contract_StakingContract)); + var $t10: Table int ($1_staking_contract_StakingContract); + var $t11: bool; + var $t12: int; + var $t13: int; var $t0: int; + var $t1: int; var $temp_0'address': int; - var $1_vesting_VestingContract_$memory#31: $Memory $1_vesting_VestingContract; $t0 := _$t0; - - // verification entrypoint assumptions - call $InitVerification(); + $t1 := _$t1; // bytecode translation starts here - // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:941:5+1 - assume {:print "$at(2,43889,43890)"} true; - assume $IsValid'address'($t0); - - // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:941:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); - (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; - (var j := $i_4; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); + // assume Identical($t3, select staking_contract::Store.staking_contracts(global($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:302:9+64 + assume {:print "$at(141,12978,13042)"} true; + assume ($t3 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t0))); - // @31 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:941:5+1 - $1_vesting_VestingContract_$memory#31 := $1_vesting_VestingContract_$memory; + // trace_local[staker]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:633:5+1 + assume {:print "$at(140,29972,29973)"} true; + assume {:print "$track_local(58,2,0):", $t0} $t0 == $t0; - // trace_local[contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:941:5+1 - assume {:print "$track_local(57,3,0):", $t0} $t0 == $t0; + // trace_local[operator]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:633:5+1 + assume {:print "$track_local(58,2,1):", $t1} $t1 == $t1; - // $t1 := exists($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:17+6 - assume {:print "$at(2,43969,43975)"} true; - $t1 := $ResourceExists($1_vesting_VestingContract_$memory, $t0); + // $t4 := exists($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:634:17+6 + assume {:print "$at(140,30076,30082)"} true; + $t4 := $ResourceExists($1_staking_contract_Store_$memory, $t0); - // if ($t1) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:9+97 - if ($t1) { goto L1; } else { goto L0; } + // if ($t4) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:634:9+87 + if ($t4) { goto L1; } else { goto L0; } - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:9+97 + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:634:9+87 L1: - // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:9+97 - assume {:print "$at(2,43961,44058)"} true; + // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:634:9+87 + assume {:print "$at(140,30068,30155)"} true; goto L2; - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:77+27 + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:634:57+37 L0: - // $t2 := 10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:77+27 - assume {:print "$at(2,44029,44056)"} true; - $t2 := 10; - assume $IsValid'u64'($t2); + // $t5 := 3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:634:57+37 + assume {:print "$at(140,30116,30153)"} true; + $t5 := 3; + assume $IsValid'u64'($t5); - // $t3 := error::not_found($t2) on_abort goto L4 with $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:60+45 - call $t3 := $1_error_not_found($t2); + // $t6 := error::not_found($t5) on_abort goto L7 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:634:40+55 + call $t6 := $1_error_not_found($t5); if ($abort_flag) { - assume {:print "$at(2,44012,44057)"} true; - $t4 := $abort_code; - assume {:print "$track_abort(57,3):", $t4} $t4 == $t4; - goto L4; + assume {:print "$at(140,30099,30154)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(58,2):", $t7} $t7 == $t7; + goto L7; } - // trace_abort($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:9+97 - assume {:print "$at(2,43961,44058)"} true; - assume {:print "$track_abort(57,3):", $t3} $t3 == $t3; + // trace_abort($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:634:9+87 + assume {:print "$at(140,30068,30155)"} true; + assume {:print "$track_abort(58,2):", $t6} $t6 == $t6; - // $t4 := move($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:9+97 - $t4 := $t3; + // $t7 := move($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:634:9+87 + $t7 := $t6; - // goto L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:9+97 - goto L4; + // goto L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:634:9+87 + goto L7; - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:106+1 + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:635:63+6 + assume {:print "$at(140,30219,30225)"} true; L2: - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:943:5+1 - assume {:print "$at(2,44064,44065)"} true; -L3: - - // assert Not(Not(exists[@31]($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:415:9+53 - assume {:print "$at(3,18118,18171)"} true; - assert {:msg "assert_failed(3,18118,18171): function does not abort under this condition"} - !!$ResourceExists($1_vesting_VestingContract_$memory#31, $t0); - - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:415:9+53 - return; - - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:943:5+1 - assume {:print "$at(2,44064,44065)"} true; -L4: - - // assert Not(exists[@31]($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:414:5+132 - assume {:print "$at(3,18045,18177)"} true; - assert {:msg "assert_failed(3,18045,18177): abort not covered by any of the `aborts_if` clauses"} - !$ResourceExists($1_vesting_VestingContract_$memory#31, $t0); - - // abort($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:414:5+132 - $abort_code := $t4; - $abort_flag := true; - return; + // $t8 := borrow_global($t0) on_abort goto L7 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:635:38+17 + assume {:print "$at(140,30194,30211)"} true; + if (!$ResourceExists($1_staking_contract_Store_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t8 := $Mutation($Global($t0), EmptyVec(), $ResourceValue($1_staking_contract_Store_$memory, $t0)); + } + if ($abort_flag) { + assume {:print "$at(140,30194,30211)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(58,2):", $t7} $t7 == $t7; + goto L7; + } -} + // $t9 := borrow_field.staking_contracts($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:635:33+55 + $t9 := $ChildMutation($t8, 0, $staking_contracts#$1_staking_contract_Store($Dereference($t8))); -// fun vesting::beneficiary [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:293:5+282 -procedure {:timeLimit 1000} $1_vesting_beneficiary$verify(_$t0: int, _$t1: int) returns ($ret0: int) -{ - // declare local variables - var $t2: int; - var $t3: $1_vesting_VestingContract; - var $t4: int; - var $t0: int; - var $t1: int; - var $temp_0'address': int; - var $1_vesting_VestingContract_$memory#104: $Memory $1_vesting_VestingContract; - $t0 := _$t0; - $t1 := _$t1; + // $t10 := read_ref($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:637:37+30 + assume {:print "$at(140,30299,30329)"} true; + $t10 := $Dereference($t9); - // verification entrypoint assumptions - call $InitVerification(); + // pack_ref_deep($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:637:37+30 - // bytecode translation starts here - // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:293:5+1 - assume {:print "$at(2,13591,13592)"} true; - assume $IsValid'address'($t0); + // $t11 := simple_map::contains_key($t10, $t1) on_abort goto L7 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:637:13+54 + call $t11 := $1_simple_map_contains_key'address_$1_staking_contract_StakingContract'($t10, $t1); + if ($abort_flag) { + assume {:print "$at(140,30275,30329)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(58,2):", $t7} $t7 == $t7; + goto L7; + } - // assume WellFormed($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:293:5+1 - assume $IsValid'address'($t1); + // if ($t11) goto L4 else goto L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:636:9+157 + assume {:print "$at(140,30254,30411)"} true; + if ($t11) { goto L4; } else { goto L3; } - // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:293:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); - (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; - (var j := $i_4; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:636:9+157 +L4: - // @104 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:293:5+1 - $1_vesting_VestingContract_$memory#104 := $1_vesting_VestingContract_$memory; + // goto L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:636:9+157 + assume {:print "$at(140,30254,30411)"} true; + goto L5; - // trace_local[vesting_contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:293:5+1 - assume {:print "$track_local(57,4,0):", $t0} $t0 == $t0; + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:638:30+39 + assume {:print "$at(140,30360,30399)"} true; +L3: - // trace_local[shareholder]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:293:5+1 - assume {:print "$track_local(57,4,1):", $t1} $t1 == $t1; + // $t12 := 4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:638:30+39 + assume {:print "$at(140,30360,30399)"} true; + $t12 := 4; + assume $IsValid'u64'($t12); - // vesting::assert_vesting_contract_exists($t0) on_abort goto L2 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:294:9+56 - assume {:print "$at(2,13715,13771)"} true; - call $1_vesting_assert_vesting_contract_exists($t0); + // $t13 := error::not_found($t12) on_abort goto L7 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:638:13+57 + call $t13 := $1_error_not_found($t12); if ($abort_flag) { - assume {:print "$at(2,13715,13771)"} true; - $t2 := $abort_code; - assume {:print "$track_abort(57,4):", $t2} $t2 == $t2; - goto L2; + assume {:print "$at(140,30343,30400)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(58,2):", $t7} $t7 == $t7; + goto L7; } - // $t3 := get_global($t0) on_abort goto L2 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:295:25+13 - assume {:print "$at(2,13797,13810)"} true; - if (!$ResourceExists($1_vesting_VestingContract_$memory, $t0)) { - call $ExecFailureAbort(); - } else { - $t3 := $ResourceValue($1_vesting_VestingContract_$memory, $t0); - } - if ($abort_flag) { - assume {:print "$at(2,13797,13810)"} true; - $t2 := $abort_code; - assume {:print "$track_abort(57,4):", $t2} $t2 == $t2; - goto L2; - } + // trace_abort($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:636:9+157 + assume {:print "$at(140,30254,30411)"} true; + assume {:print "$track_abort(58,2):", $t13} $t13 == $t13; - // $t4 := vesting::get_beneficiary($t3, $t1) on_abort goto L2 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:295:9+86 - call $t4 := $1_vesting_get_beneficiary($t3, $t1); - if ($abort_flag) { - assume {:print "$at(2,13781,13867)"} true; - $t2 := $abort_code; - assume {:print "$track_abort(57,4):", $t2} $t2 == $t2; - goto L2; - } + // $t7 := move($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:636:9+157 + $t7 := $t13; - // trace_return[0]($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:295:9+86 - assume {:print "$track_return(57,4,0):", $t4} $t4 == $t4; + // goto L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:636:9+157 + goto L7; - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:296:5+1 - assume {:print "$at(2,13872,13873)"} true; -L1: + // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:639:10+1 + assume {:print "$at(140,30411,30412)"} true; +L5: - // assert Not(Not(exists[@104]($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:24:9+61 - assume {:print "$at(3,811,872)"} true; - assert {:msg "assert_failed(3,811,872): function does not abort under this condition"} - !!$ResourceExists($1_vesting_VestingContract_$memory#104, $t0); + // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:640:5+1 + assume {:print "$at(140,30417,30418)"} true; +L6: - // return $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:24:9+61 - $ret0 := $t4; + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:640:5+1 + assume {:print "$at(140,30417,30418)"} true; return; - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:296:5+1 - assume {:print "$at(2,13872,13873)"} true; -L2: - - // assert Not(exists[@104]($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:23:5+160 - assume {:print "$at(3,718,878)"} true; - assert {:msg "assert_failed(3,718,878): abort not covered by any of the `aborts_if` clauses"} - !$ResourceExists($1_vesting_VestingContract_$memory#104, $t0); + // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:640:5+1 +L7: - // abort($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:23:5+160 - $abort_code := $t2; + // abort($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:640:5+1 + assume {:print "$at(140,30417,30418)"} true; + $abort_code := $t7; $abort_flag := true; return; } -// fun vesting::vesting_schedule [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:346:5+260 -procedure {:timeLimit 1000} $1_vesting_vesting_schedule$verify(_$t0: int) returns ($ret0: $1_vesting_VestingSchedule) +// fun staking_contract::get_staking_contract_amounts_internal [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:664:5+869 +procedure {:inline 1} $1_staking_contract_get_staking_contract_amounts_internal(_$t0: $1_staking_contract_StakingContract) returns ($ret0: int, $ret1: int, $ret2: int) { // declare local variables var $t1: int; - var $t2: $1_vesting_VestingContract; - var $t3: $1_vesting_VestingSchedule; - var $t0: int; - var $temp_0'$1_vesting_VestingSchedule': $1_vesting_VestingSchedule; - var $temp_0'address': int; - var $1_vesting_VestingContract_$memory#57: $Memory $1_vesting_VestingContract; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: $1_stake_StakePool; + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: int; + var $t12: int; + var $t13: int; + var $t14: int; + var $t15: int; + var $t16: int; + var $t17: int; + var $t18: int; + var $t19: int; + var $t20: int; + var $t21: int; + var $t22: int; + var $t23: int; + var $t0: $1_staking_contract_StakingContract; + var $temp_0'$1_staking_contract_StakingContract': $1_staking_contract_StakingContract; + var $temp_0'u64': int; $t0 := _$t0; - // verification entrypoint assumptions - call $InitVerification(); - // bytecode translation starts here - // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:346:5+1 - assume {:print "$at(2,16253,16254)"} true; - assume $IsValid'address'($t0); + // assume Identical($t5, select staking_contract::StakingContract.pool_address($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:334:9+49 + assume {:print "$at(141,14229,14278)"} true; + assume ($t5 == $pool_address#$1_staking_contract_StakingContract($t0)); - // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:346:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); - (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; - (var j := $i_4; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); + // assume Identical($t6, global($t5)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:335:9+56 + assume {:print "$at(141,14287,14343)"} true; + assume ($t6 == $ResourceValue($1_stake_StakePool_$memory, $t5)); + + // assume Identical($t7, coin::$value(select stake::StakePool.active($t6))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:336:9+44 + assume {:print "$at(141,14352,14396)"} true; + assume ($t7 == $1_coin_$value'$1_aptos_coin_AptosCoin'($active#$1_stake_StakePool($t6))); + + // assume Identical($t8, coin::$value(select stake::StakePool.pending_active($t6))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:337:9+60 + assume {:print "$at(141,14405,14465)"} true; + assume ($t8 == $1_coin_$value'$1_aptos_coin_AptosCoin'($pending_active#$1_stake_StakePool($t6))); + + // assume Identical($t9, Add($t7, $t8)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:338:9+49 + assume {:print "$at(141,14474,14523)"} true; + assume ($t9 == ($t7 + $t8)); + + // assume Identical($t10, Sub($t9, select staking_contract::StakingContract.principal($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:339:9+74 + assume {:print "$at(141,14532,14606)"} true; + assume ($t10 == ($t9 - $principal#$1_staking_contract_StakingContract($t0))); + + // assume And(Ge(select staking_contract::StakingContract.commission_percentage($t0), 0), Le(select staking_contract::StakingContract.commission_percentage($t0), 100)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:332:9+102 + assume {:print "$at(141,14117,14219)"} true; + assume (($commission_percentage#$1_staking_contract_StakingContract($t0) >= 0) && ($commission_percentage#$1_staking_contract_StakingContract($t0) <= 100)); + + // trace_local[staking_contract]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:664:5+1 + assume {:print "$at(140,31442,31443)"} true; + assume {:print "$track_local(58,11,0):", $t0} $t0 == $t0; + + // $t11 := get_field.pool_address($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:669:63+29 + assume {:print "$at(140,31963,31992)"} true; + $t11 := $pool_address#$1_staking_contract_StakingContract($t0); + + // ($t12, $t13, $t14, $t15) := stake::get_stake($t11) on_abort goto L2 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:669:46+47 + call $t12,$t13,$t14,$t15 := $1_stake_get_stake($t11); + if ($abort_flag) { + assume {:print "$at(140,31946,31993)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(58,11):", $t16} $t16 == $t16; + goto L2; + } + + // destroy($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:669:41+1 + + // trace_local[pending_active]($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:669:25+14 + assume {:print "$track_local(58,11,3):", $t14} $t14 == $t14; + + // destroy($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:669:22+1 + + // $t17 := +($t12, $t14) on_abort goto L2 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:670:41+1 + assume {:print "$at(140,32035,32036)"} true; + call $t17 := $AddU64($t12, $t14); + if ($abort_flag) { + assume {:print "$at(140,32035,32036)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(58,11):", $t16} $t16 == $t16; + goto L2; + } - // @57 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:346:5+1 - $1_vesting_VestingContract_$memory#57 := $1_vesting_VestingContract_$memory; + // trace_local[total_active_stake]($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:670:13+18 + assume {:print "$track_local(58,11,4):", $t17} $t17 == $t17; - // trace_local[vesting_contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:346:5+1 - assume {:print "$track_local(57,38,0):", $t0} $t0 == $t0; + // $t18 := get_field.principal($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:671:56+26 + assume {:print "$at(140,32108,32134)"} true; + $t18 := $principal#$1_staking_contract_StakingContract($t0); - // vesting::assert_vesting_contract_exists($t0) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:347:9+56 - assume {:print "$at(2,16368,16424)"} true; - call $1_vesting_assert_vesting_contract_exists($t0); + // $t19 := -($t17, $t18) on_abort goto L2 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:671:54+1 + call $t19 := $Sub($t17, $t18); if ($abort_flag) { - assume {:print "$at(2,16368,16424)"} true; - $t1 := $abort_code; - assume {:print "$track_abort(57,38):", $t1} $t1 == $t1; + assume {:print "$at(140,32106,32107)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(58,11):", $t16} $t16 == $t16; goto L2; } - // $t2 := get_global($t0) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:348:9+13 - assume {:print "$at(2,16434,16447)"} true; - if (!$ResourceExists($1_vesting_VestingContract_$memory, $t0)) { - call $ExecFailureAbort(); - } else { - $t2 := $ResourceValue($1_vesting_VestingContract_$memory, $t0); + // trace_local[accumulated_rewards]($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:671:13+19 + assume {:print "$track_local(58,11,1):", $t19} $t19 == $t19; + + // $t20 := get_field.commission_percentage($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:672:55+38 + assume {:print "$at(140,32190,32228)"} true; + $t20 := $commission_percentage#$1_staking_contract_StakingContract($t0); + + // $t21 := *($t19, $t20) on_abort goto L2 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:672:53+1 + call $t21 := $MulU64($t19, $t20); + if ($abort_flag) { + assume {:print "$at(140,32188,32189)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(58,11):", $t16} $t16 == $t16; + goto L2; } + + // $t22 := 100 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:672:96+3 + $t22 := 100; + assume $IsValid'u64'($t22); + + // $t23 := /($t21, $t22) on_abort goto L2 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:672:94+1 + call $t23 := $Div($t21, $t22); if ($abort_flag) { - assume {:print "$at(2,16434,16447)"} true; - $t1 := $abort_code; - assume {:print "$track_abort(57,38):", $t1} $t1 == $t1; + assume {:print "$at(140,32229,32230)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(58,11):", $t16} $t16 == $t16; goto L2; } - // $t3 := get_field.vesting_schedule($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:348:9+73 - $t3 := $vesting_schedule#$1_vesting_VestingContract($t2); + // trace_local[commission_amount]($t23) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:672:13+17 + assume {:print "$track_local(58,11,2):", $t23} $t23 == $t23; - // trace_return[0]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:348:9+73 - assume {:print "$track_return(57,38,0):", $t3} $t3 == $t3; + // trace_return[0]($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:674:9+60 + assume {:print "$at(140,32245,32305)"} true; + assume {:print "$track_return(58,11,0):", $t17} $t17 == $t17; - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:349:5+1 - assume {:print "$at(2,16512,16513)"} true; -L1: + // trace_return[1]($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:674:9+60 + assume {:print "$track_return(58,11,1):", $t19} $t19 == $t19; - // assert Not(Not(exists[@57]($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:44:9+61 - assume {:print "$at(3,1500,1561)"} true; - assert {:msg "assert_failed(3,1500,1561): function does not abort under this condition"} - !!$ResourceExists($1_vesting_VestingContract_$memory#57, $t0); + // trace_return[2]($t23) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:674:9+60 + assume {:print "$track_return(58,11,2):", $t23} $t23 == $t23; - // return $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:44:9+61 - $ret0 := $t3; + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:675:5+1 + assume {:print "$at(140,32310,32311)"} true; +L1: + + // return ($t17, $t19, $t23) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:675:5+1 + assume {:print "$at(140,32310,32311)"} true; + $ret0 := $t17; + $ret1 := $t19; + $ret2 := $t23; return; - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:349:5+1 - assume {:print "$at(2,16512,16513)"} true; + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:675:5+1 L2: - // assert Not(exists[@57]($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:43:5+151 - assume {:print "$at(3,1416,1567)"} true; - assert {:msg "assert_failed(3,1416,1567): abort not covered by any of the `aborts_if` clauses"} - !$ResourceExists($1_vesting_VestingContract_$memory#57, $t0); - - // abort($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:43:5+151 - $abort_code := $t1; + // abort($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:675:5+1 + assume {:print "$at(140,32310,32311)"} true; + $abort_code := $t16; $abort_flag := true; return; } -// fun vesting::create_vesting_contract_account [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:915:5+1075 -procedure {:timeLimit 1000} $1_vesting_create_vesting_contract_account$verify(_$t0: $signer, _$t1: Vec (int)) returns ($ret0: $signer, $ret1: $1_account_SignerCapability) +// fun staking_contract::reset_lockup [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:363:5+596 +procedure {:inline 1} $1_staking_contract_reset_lockup(_$t0: $signer, _$t1: int) returns () { // declare local variables var $t2: int; - var $t3: $signer; - var $t4: $Mutation ($1_vesting_AdminStore); - var $t5: Vec (int); - var $t6: $1_account_SignerCapability; - var $t7: int; - var $t8: $1_vesting_AdminStore; - var $t9: Vec (int); - var $t10: Vec (int); - var $t11: Vec (int); - var $t12: Vec (int); - var $t13: Vec (int); + var $t3: int; + var $t4: $Mutation ($1_staking_contract_StakingContract); + var $t5: $Mutation ($1_staking_contract_Store); + var $t6: int; + var $t7: Table int ($1_staking_contract_StakingContract); + var $t8: $1_staking_contract_Store; + var $t9: $1_staking_contract_StakingContract; + var $t10: int; + var $t11: $1_staking_config_StakingConfig; + var $t12: $1_stake_StakePool; + var $t13: int; var $t14: int; - var $t15: bool; - var $t16: $1_account_Account; - var $t17: $1_account_Account; - var $t18: Vec (int); - var $t19: int; - var $t20: int; - var $t21: $Mutation ($1_vesting_AdminStore); + var $t15: int; + var $t16: int; + var $t17: int; + var $t18: Table int ($1_staking_contract_StakingContract); + var $t19: $Mutation ($1_staking_contract_Store); + var $t20: $Mutation (Table int ($1_staking_contract_StakingContract)); + var $t21: $Mutation ($1_staking_contract_StakingContract); var $t22: int; - var $t23: $Mutation (Vec (int)); - var $t24: int; - var $t25: Vec (int); - var $t26: int; + var $t23: $1_stake_OwnerCapability; + var $t24: $1_staking_config_StakingConfig; + var $t25: int; + var $t26: $1_stake_StakePool; var $t27: int; var $t28: int; - var $t29: $Mutation (int); - var $t30: $Mutation (Vec (int)); - var $t31: Vec (int); - var $t32: $Mutation (Vec (int)); - var $t33: Vec (int); - var $t34: int; - var $t35: int; - var $t36: $1_account_Account; - var $t37: Vec (int); - var $t38: $signer; - var $t39: $1_account_SignerCapability; - var $t40: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; - var $t41: int; - var $t42: $1_account_Account; - var $t43: $1_account_Account; + var $t29: $Mutation ($1_event_EventHandle'$1_staking_contract_ResetLockupEvent'); + var $t30: $1_staking_contract_ResetLockupEvent; var $t0: $signer; - var $t1: Vec (int); - var $temp_0'$1_account_SignerCapability': $1_account_SignerCapability; - var $temp_0'$1_vesting_AdminStore': $1_vesting_AdminStore; + var $t1: int; + var $temp_0'$1_staking_contract_StakingContract': $1_staking_contract_StakingContract; + var $temp_0'$1_staking_contract_Store': $1_staking_contract_Store; + var $temp_0'address': int; var $temp_0'signer': $signer; - var $temp_0'vec'u8'': Vec (int); - var $1_vesting_AdminStore_$memory#98: $Memory $1_vesting_AdminStore; - var $1_account_Account_$memory#99: $Memory $1_account_Account; - var $1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory#100: $Memory $1_coin_CoinStore'$1_aptos_coin_AptosCoin'; $t0 := _$t0; $t1 := _$t1; - // verification entrypoint assumptions - call $InitVerification(); - // bytecode translation starts here - // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:915:5+1 - assume {:print "$at(2,42620,42621)"} true; - assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($addr#$signer($t0)); - - // assume WellFormed($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:915:5+1 - assume $IsValid'vec'u8''($t1); - - // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.rotation_capability_offer($rsc)))), 1), Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.signer_capability_offer($rsc)))), 1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:915:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_account_Account_$memory, $a_0)}(var $rsc := $ResourceValue($1_account_Account_$memory, $a_0); - (($IsValid'$1_account_Account'($rsc) && ((LenVec($vec#$1_option_Option'address'($for#$1_account_CapabilityOffer'$1_account_RotationCapability'($rotation_capability_offer#$1_account_Account($rsc)))) <= 1) && (LenVec($vec#$1_option_Option'address'($for#$1_account_CapabilityOffer'$1_account_SignerCapability'($signer_capability_offer#$1_account_Account($rsc)))) <= 1)))))); - - // assume forall $rsc: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: select option::Option.vec(select coin::CoinInfo.supply($rsc)): And(And(And(And(And(Iff(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($elem)), option::$is_none(select optional_aggregator::OptionalAggregator.integer($elem))), Iff(option::$is_some(select optional_aggregator::OptionalAggregator.integer($elem)), option::$is_none(select optional_aggregator::OptionalAggregator.aggregator($elem)))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.integer($elem)), Le(select optional_aggregator::Integer.value(option::$borrow(select optional_aggregator::OptionalAggregator.integer($elem))), select optional_aggregator::Integer.limit(option::$borrow(select optional_aggregator::OptionalAggregator.integer($elem)))))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($elem)), Le(aggregator::spec_aggregator_get_val(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($elem))), aggregator::spec_get_limit(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($elem)))))), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.aggregator($elem))), 1)), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.integer($elem))), 1)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:915:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $a_0); - (($IsValid'$1_coin_CoinInfo'$1_aptos_coin_AptosCoin''($rsc) && ((LenVec($vec#$1_option_Option'$1_optional_aggregator_OptionalAggregator'($supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($rsc))) <= 1) && (var $range_1 := $vec#$1_option_Option'$1_optional_aggregator_OptionalAggregator'($supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($rsc)); (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); - ((((((($1_option_$is_some'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)) <==> $1_option_$is_none'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)) ==> ($value#$1_optional_aggregator_Integer($1_option_$borrow'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) <= $limit#$1_optional_aggregator_Integer($1_option_$borrow'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)))))) && ($1_option_$is_some'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem))) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)))))) && (LenVec($vec#$1_option_Option'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem))) <= 1)) && (LenVec($vec#$1_option_Option'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) <= 1))))))))))); - - // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:915:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $a_0); - ($IsValid'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''($rsc)))); - - // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:915:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $a_0); - ($IsValid'$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin''($rsc)))); - - // assume exists>(0x0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:915:5+1 - assume $ResourceExists($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, 0); - - // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:915:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, $a_0); - ($IsValid'$1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin''($rsc)))); - - // assume exists>(0x0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:915:5+1 - assume $ResourceExists($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, 0); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:915:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_vesting_AdminStore_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_AdminStore_$memory, $a_0); - ($IsValid'$1_vesting_AdminStore'($rsc)))); - - // assume Identical($t7, signer::$address_of($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:383:9+43 - assume {:print "$at(3,16304,16347)"} true; - assume ($t7 == $1_signer_$address_of($t0)); - - // assume Identical($t8, global($t7)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:384:9+49 - assume {:print "$at(3,16356,16405)"} true; - assume ($t8 == $ResourceValue($1_vesting_AdminStore_$memory, $t7)); - - // assume Identical($t9, bcs::$to_bytes
($t7)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:385:9+37 - assume {:print "$at(3,16414,16451)"} true; - assume ($t9 == $1_bcs_$to_bytes'address'($t7)); + // assume Identical($t6, signer::$address_of($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:124:9+48 + assume {:print "$at(141,5165,5213)"} true; + assume ($t6 == $1_signer_$address_of($t0)); - // assume Identical($t10, bcs::$to_bytes(select vesting::AdminStore.nonce($t8))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:386:9+45 - assume {:print "$at(3,16460,16505)"} true; - assume ($t10 == $1_bcs_$to_bytes'u64'($nonce#$1_vesting_AdminStore($t8))); + // assume Identical($t7, select staking_contract::Store.staking_contracts(global($t6))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:302:9+64 + assume {:print "$at(141,12978,13042)"} true; + assume ($t7 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t6))); - // assume Identical($t11, ConcatVec($t9, $t10)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:388:9+32 - assume {:print "$at(3,16515,16547)"} true; - assume ($t11 == ConcatVec($t9, $t10)); + // assume Identical($t8, global($t6)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:352:9+34 + assume {:print "$at(141,15082,15116)"} true; + assume ($t8 == $ResourceValue($1_staking_contract_Store_$memory, $t6)); - // assume Identical($t12, ConcatVec($t11, [97, 112, 116, 111, 115, 95, 102, 114, 97, 109, 101, 119, 111, 114, 107, 58, 58, 118, 101, 115, 116, 105, 110, 103])) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:389:9+46 - assume {:print "$at(3,16556,16602)"} true; - assume ($t12 == ConcatVec($t11, ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(97, 112, 116, 111), MakeVec4(115, 95, 102, 114)), MakeVec4(97, 109, 101, 119)), MakeVec4(111, 114, 107, 58)), MakeVec4(58, 118, 101, 115)), MakeVec4(116, 105, 110, 103)))); + // assume Identical($t9, simple_map::spec_get(select staking_contract::Store.staking_contracts($t8), $t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:353:9+79 + assume {:print "$at(141,15125,15204)"} true; + assume ($t9 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($t8), $t1)); - // assume Identical($t13, ConcatVec($t12, $t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:390:9+49 - assume {:print "$at(3,16611,16660)"} true; - assume ($t13 == ConcatVec($t12, $t1)); + // assume Identical($t10, select stake::OwnerCapability.pool_address(select staking_contract::StakingContract.owner_cap($t9))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:354:9+59 + assume {:print "$at(141,15213,15272)"} true; + assume ($t10 == $pool_address#$1_stake_OwnerCapability($owner_cap#$1_staking_contract_StakingContract($t9))); - // assume Identical($t14, account::spec_create_resource_address($t7, $t13)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:392:9+75 - assume {:print "$at(3,16670,16745)"} true; - assume ($t14 == $1_account_spec_create_resource_address($t7, $t13)); + // assume Identical($t11, global(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:359:9+69 + assume {:print "$at(141,15418,15487)"} true; + assume ($t11 == $ResourceValue($1_staking_config_StakingConfig_$memory, 1)); - // assume Identical($t15, account::$exists_at($t14)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:396:9+43 - assume {:print "$at(3,16909,16952)"} true; - assume ($t15 == $1_account_$exists_at($1_account_Account_$memory, $t14)); + // assume Identical($t12, global($t10)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:360:9+56 + assume {:print "$at(141,15496,15552)"} true; + assume ($t12 == $ResourceValue($1_stake_StakePool_$memory, $t10)); - // assume Identical($t16, global($t14)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:399:9+50 - assume {:print "$at(3,17084,17134)"} true; - assume ($t16 == $ResourceValue($1_account_Account_$memory, $t14)); + // assume Identical($t13, select stake::StakePool.locked_until_secs($t12)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:361:9+57 + assume {:print "$at(141,15561,15618)"} true; + assume ($t13 == $locked_until_secs#$1_stake_StakePool($t12)); - // assume Identical($t17, global($t14)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:464:9+45 - assume {:print "$at(73,22404,22449)"} true; - assume ($t17 == $ResourceValue($1_account_Account_$memory, $t14)); + // assume Identical($t14, Div(select timestamp::CurrentTimeMicroseconds.microseconds(global(0x1)), 1000000)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:362:9+126 + assume {:print "$at(141,15627,15753)"} true; + assume ($t14 == ($microseconds#$1_timestamp_CurrentTimeMicroseconds($ResourceValue($1_timestamp_CurrentTimeMicroseconds_$memory, 1)) div 1000000)); - // assume Identical($t18, bcs::$to_bytes
($t14)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:34:9+45 - assume {:print "$at(73,1495,1540)"} true; - assume ($t18 == $1_bcs_$to_bytes'address'($t14)); + // assume Identical($t15, Add($t14, select staking_config::StakingConfig.recurring_lockup_duration_secs($t11))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:363:9+77 + assume {:print "$at(141,15762,15839)"} true; + assume ($t15 == ($t14 + $recurring_lockup_duration_secs#$1_staking_config_StakingConfig($t11))); - // @99 := save_mem(account::Account) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:915:5+1 - assume {:print "$at(2,42620,42621)"} true; - $1_account_Account_$memory#99 := $1_account_Account_$memory; + // trace_local[staker]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:363:5+1 + assume {:print "$track_local(58,17,0):", $t0} $t0 == $t0; - // @100 := save_mem(coin::CoinStore) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:915:5+1 - $1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory#100 := $1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory; + // trace_local[operator]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:363:5+1 + assume {:print "$track_local(58,17,1):", $t1} $t1 == $t1; - // @98 := save_mem(vesting::AdminStore) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:915:5+1 - $1_vesting_AdminStore_$memory#98 := $1_vesting_AdminStore_$memory; + // $t16 := signer::address_of($t0) on_abort goto L2 with $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:364:30+26 + assume {:print "$at(140,17010,17036)"} true; + call $t16 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(140,17010,17036)"} true; + $t17 := $abort_code; + assume {:print "$track_abort(58,17):", $t17} $t17 == $t17; + goto L2; + } - // trace_local[admin]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:915:5+1 - assume {:print "$track_local(57,6,0):", $t0} $t0 == $t0; + // trace_local[staker_address]($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:364:13+14 + assume {:print "$track_local(58,17,3):", $t16} $t16 == $t16; - // trace_local[contract_creation_seed]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:915:5+1 - assume {:print "$track_local(57,6,1):", $t1} $t1 == $t1; + // assume Identical($t18, select staking_contract::Store.staking_contracts(global($t16))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:302:9+64 + assume {:print "$at(141,12978,13042)"} true; + assume ($t18 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t16))); - // $t19 := signer::address_of($t0) on_abort goto L2 with $t20 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:919:57+25 - assume {:print "$at(2,42837,42862)"} true; - call $t19 := $1_signer_address_of($t0); + // staking_contract::assert_staking_contract_exists($t16, $t1) on_abort goto L2 with $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:365:9+56 + assume {:print "$at(140,17046,17102)"} true; + call $1_staking_contract_assert_staking_contract_exists($t16, $t1); if ($abort_flag) { - assume {:print "$at(2,42837,42862)"} true; - $t20 := $abort_code; - assume {:print "$track_abort(57,6):", $t20} $t20 == $t20; + assume {:print "$at(140,17046,17102)"} true; + $t17 := $abort_code; + assume {:print "$track_abort(58,17):", $t17} $t17 == $t17; goto L2; } - // $t21 := borrow_global($t19) on_abort goto L2 with $t20 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:919:27+17 - if (!$ResourceExists($1_vesting_AdminStore_$memory, $t19)) { + // $t19 := borrow_global($t16) on_abort goto L2 with $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:367:21+17 + assume {:print "$at(140,17125,17142)"} true; + if (!$ResourceExists($1_staking_contract_Store_$memory, $t16)) { call $ExecFailureAbort(); } else { - $t21 := $Mutation($Global($t19), EmptyVec(), $ResourceValue($1_vesting_AdminStore_$memory, $t19)); + $t19 := $Mutation($Global($t16), EmptyVec(), $ResourceValue($1_staking_contract_Store_$memory, $t16)); } if ($abort_flag) { - assume {:print "$at(2,42807,42824)"} true; - $t20 := $abort_code; - assume {:print "$track_abort(57,6):", $t20} $t20 == $t20; + assume {:print "$at(140,17125,17142)"} true; + $t17 := $abort_code; + assume {:print "$track_abort(58,17):", $t17} $t17 == $t17; goto L2; } - // trace_local[admin_store]($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:919:13+11 - $temp_0'$1_vesting_AdminStore' := $Dereference($t21); - assume {:print "$track_local(57,6,4):", $temp_0'$1_vesting_AdminStore'} $temp_0'$1_vesting_AdminStore' == $temp_0'$1_vesting_AdminStore'; + // trace_local[store]($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:367:13+5 + $temp_0'$1_staking_contract_Store' := $Dereference($t19); + assume {:print "$track_local(58,17,5):", $temp_0'$1_staking_contract_Store'} $temp_0'$1_staking_contract_Store' == $temp_0'$1_staking_contract_Store'; - // $t22 := signer::address_of($t0) on_abort goto L2 with $t20 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:920:35+25 - assume {:print "$at(2,42899,42924)"} true; - call $t22 := $1_signer_address_of($t0); - if ($abort_flag) { - assume {:print "$at(2,42899,42924)"} true; - $t20 := $abort_code; - assume {:print "$track_abort(57,6):", $t20} $t20 == $t20; - goto L2; - } + // $t20 := borrow_field.staking_contracts($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:368:55+28 + assume {:print "$at(140,17221,17249)"} true; + $t20 := $ChildMutation($t19, 0, $staking_contracts#$1_staking_contract_Store($Dereference($t19))); - // $t5 := bcs::to_bytes
($t22) on_abort goto L2 with $t20 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:920:20+41 - call $t5 := $1_bcs_to_bytes'address'($t22); + // $t21 := simple_map::borrow_mut($t20, $t1) on_abort goto L2 with $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:368:32+63 + call $t21,$t20 := $1_simple_map_borrow_mut'address_$1_staking_contract_StakingContract'($t20, $t1); if ($abort_flag) { - assume {:print "$at(2,42884,42925)"} true; - $t20 := $abort_code; - assume {:print "$track_abort(57,6):", $t20} $t20 == $t20; + assume {:print "$at(140,17198,17261)"} true; + $t17 := $abort_code; + assume {:print "$track_abort(58,17):", $t17} $t17 == $t17; goto L2; } - // trace_local[seed]($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:920:13+4 - assume {:print "$track_local(57,6,5):", $t5} $t5 == $t5; + // trace_local[staking_contract]($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:368:13+16 + $temp_0'$1_staking_contract_StakingContract' := $Dereference($t21); + assume {:print "$track_local(58,17,4):", $temp_0'$1_staking_contract_StakingContract'} $temp_0'$1_staking_contract_StakingContract' == $temp_0'$1_staking_contract_StakingContract'; - // $t23 := borrow_local($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:921:24+9 - assume {:print "$at(2,42950,42959)"} true; - $t23 := $Mutation($Local(5), EmptyVec(), $t5); + // $t22 := get_field.pool_address($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:369:28+29 + assume {:print "$at(140,17290,17319)"} true; + $t22 := $pool_address#$1_staking_contract_StakingContract($Dereference($t21)); - // $t24 := get_field.nonce($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:921:49+18 - $t24 := $nonce#$1_vesting_AdminStore($Dereference($t21)); + // trace_local[pool_address]($t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:369:13+12 + assume {:print "$track_local(58,17,2):", $t22} $t22 == $t22; + + // $t23 := get_field.owner_cap($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:370:41+27 + assume {:print "$at(140,17361,17388)"} true; + $t23 := $owner_cap#$1_staking_contract_StakingContract($Dereference($t21)); + + // assume Identical($t24, global(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:67:9+69 + assume {:print "$at(139,3047,3116)"} true; + assume ($t24 == $ResourceValue($1_staking_config_StakingConfig_$memory, 1)); + + // assume Identical($t25, select stake::OwnerCapability.pool_address($t23)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:68:9+42 + assume {:print "$at(139,3125,3167)"} true; + assume ($t25 == $pool_address#$1_stake_OwnerCapability($t23)); + + // assume Identical($t26, global($t25)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:69:9+53 + assume {:print "$at(139,3176,3229)"} true; + assume ($t26 == $ResourceValue($1_stake_StakePool_$memory, $t25)); + + // assume Identical($t27, timestamp::spec_now_seconds()) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:71:9+48 + assume {:print "$at(139,3301,3349)"} true; + assume ($t27 == $1_timestamp_spec_now_seconds($1_timestamp_CurrentTimeMicroseconds_$memory)); - // $t25 := bcs::to_bytes($t24) on_abort goto L2 with $t20 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:921:35+33 - call $t25 := $1_bcs_to_bytes'u64'($t24); - if ($abort_flag) { - assume {:print "$at(2,42961,42994)"} true; - $t20 := $abort_code; - assume {:print "$track_abort(57,6):", $t20} $t20 == $t20; - goto L2; - } + // assume Identical($t28, select staking_config::StakingConfig.recurring_lockup_duration_secs($t24)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:72:9+51 + assume {:print "$at(139,3358,3409)"} true; + assume ($t28 == $recurring_lockup_duration_secs#$1_staking_config_StakingConfig($t24)); - // vector::append($t23, $t25) on_abort goto L2 with $t20 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:921:9+60 - call $t23 := $1_vector_append'u8'($t23, $t25); + // stake::increase_lockup_with_cap($t23) on_abort goto L2 with $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:370:9+60 + assume {:print "$at(140,17329,17389)"} true; + call $1_stake_increase_lockup_with_cap($t23); if ($abort_flag) { - assume {:print "$at(2,42935,42995)"} true; - $t20 := $abort_code; - assume {:print "$track_abort(57,6):", $t20} $t20 == $t20; + assume {:print "$at(140,17329,17389)"} true; + $t17 := $abort_code; + assume {:print "$track_abort(58,17):", $t17} $t17 == $t17; goto L2; } - // write_back[LocalRoot($t5)@]($t23) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:921:9+60 - $t5 := $Dereference($t23); + // $t29 := borrow_field.reset_lockup_events($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:372:20+30 + assume {:print "$at(140,17411,17441)"} true; + $t29 := $ChildMutation($t19, 3, $reset_lockup_events#$1_staking_contract_Store($Dereference($t19))); - // trace_local[seed]($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:921:9+60 - assume {:print "$track_local(57,6,5):", $t5} $t5 == $t5; + // $t30 := pack staking_contract::ResetLockupEvent($t1, $t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:372:52+43 + $t30 := $1_staking_contract_ResetLockupEvent($t1, $t22); - // $t26 := get_field.nonce($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:922:29+17 - assume {:print "$at(2,43025,43042)"} true; - $t26 := $nonce#$1_vesting_AdminStore($Dereference($t21)); + // opaque begin: event::emit_event($t29, $t30) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:372:9+87 - // $t27 := 1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:922:49+1 - $t27 := 1; - assume $IsValid'u64'($t27); + // opaque end: event::emit_event($t29, $t30) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:372:9+87 - // $t28 := +($t26, $t27) on_abort goto L2 with $t20 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:922:47+1 - call $t28 := $AddU64($t26, $t27); - if ($abort_flag) { - assume {:print "$at(2,43043,43044)"} true; - $t20 := $abort_code; - assume {:print "$track_abort(57,6):", $t20} $t20 == $t20; - goto L2; - } + // write_back[Reference($t19).reset_lockup_events (event::EventHandle)]($t29) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:372:9+87 + $t19 := $UpdateMutation($t19, $Update'$1_staking_contract_Store'_reset_lockup_events($Dereference($t19), $Dereference($t29))); - // $t29 := borrow_field.nonce($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:922:9+17 - $t29 := $ChildMutation($t21, 1, $nonce#$1_vesting_AdminStore($Dereference($t21))); + // pack_ref_deep($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:372:9+87 - // write_ref($t29, $t28) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:922:9+41 - $t29 := $UpdateMutation($t29, $t28); + // write_back[staking_contract::Store@]($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:372:9+87 + $1_staking_contract_Store_$memory := $ResourceUpdate($1_staking_contract_Store_$memory, $GlobalLocationAddress($t19), + $Dereference($t19)); - // write_back[Reference($t21).nonce (u64)]($t29) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:922:9+41 - $t21 := $UpdateMutation($t21, $Update'$1_vesting_AdminStore'_nonce($Dereference($t21), $Dereference($t29))); + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:373:5+1 + assume {:print "$at(140,17493,17494)"} true; +L1: - // write_back[vesting::AdminStore@]($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:922:9+41 - $1_vesting_AdminStore_$memory := $ResourceUpdate($1_vesting_AdminStore_$memory, $GlobalLocationAddress($t21), - $Dereference($t21)); + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:373:5+1 + assume {:print "$at(140,17493,17494)"} true; + return; - // $t30 := borrow_local($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:926:24+9 - assume {:print "$at(2,43254,43263)"} true; - $t30 := $Mutation($Local(5), EmptyVec(), $t5); + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:373:5+1 +L2: - // $t31 := [97, 112, 116, 111, 115, 95, 102, 114, 97, 109, 101, 119, 111, 114, 107, 58, 58, 118, 101, 115, 116, 105, 110, 103] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:926:35+17 - $t31 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(97, 112, 116, 111), MakeVec4(115, 95, 102, 114)), MakeVec4(97, 109, 101, 119)), MakeVec4(111, 114, 107, 58)), MakeVec4(58, 118, 101, 115)), MakeVec4(116, 105, 110, 103)); - assume $IsValid'vec'u8''($t31); + // abort($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:373:5+1 + assume {:print "$at(140,17493,17494)"} true; + $abort_code := $t17; + $abort_flag := true; + return; - // vector::append($t30, $t31) on_abort goto L2 with $t20 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:926:9+44 - call $t30 := $1_vector_append'u8'($t30, $t31); - if ($abort_flag) { - assume {:print "$at(2,43239,43283)"} true; - $t20 := $abort_code; - assume {:print "$track_abort(57,6):", $t20} $t20 == $t20; - goto L2; - } +} - // write_back[LocalRoot($t5)@]($t30) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:926:9+44 - $t5 := $Dereference($t30); +// fun staking_contract::staking_contract_amounts [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:208:5+395 +procedure {:inline 1} $1_staking_contract_staking_contract_amounts(_$t0: int, _$t1: int) returns ($ret0: int, $ret1: int, $ret2: int) +{ + // declare local variables + var $t2: Table int ($1_staking_contract_StakingContract); + var $t3: $1_staking_contract_StakingContract; + var $t4: int; + var $t5: $1_stake_StakePool; + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: Table int ($1_staking_contract_StakingContract); + var $t11: int; + var $t12: $1_stake_StakePool; + var $t13: int; + var $t14: int; + var $t15: int; + var $t16: int; + var $t17: Table int ($1_staking_contract_StakingContract); + var $t18: int; + var $t19: $1_staking_contract_Store; + var $t20: Table int ($1_staking_contract_StakingContract); + var $t21: $1_staking_contract_StakingContract; + var $t22: int; + var $t23: $1_stake_StakePool; + var $t24: int; + var $t25: int; + var $t26: int; + var $t27: int; + var $t28: int; + var $t29: int; + var $t30: int; + var $t0: int; + var $t1: int; + var $temp_0'address': int; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; - // trace_local[seed]($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:926:9+44 - assume {:print "$track_local(57,6,5):", $t5} $t5 == $t5; + // bytecode translation starts here + // assume Identical($t2, select staking_contract::Store.staking_contracts(global($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:25:9+64 + assume {:print "$at(141,843,907)"} true; + assume ($t2 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t0))); - // $t32 := borrow_local($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:927:24+9 - assume {:print "$at(2,43308,43317)"} true; - $t32 := $Mutation($Local(5), EmptyVec(), $t5); + // assume Identical($t3, simple_map::spec_get($t2, $t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:26:9+73 + assume {:print "$at(141,916,989)"} true; + assume ($t3 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($t2, $t1)); - // vector::append($t32, $t1) on_abort goto L2 with $t20 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:927:9+49 - call $t32 := $1_vector_append'u8'($t32, $t1); - if ($abort_flag) { - assume {:print "$at(2,43293,43342)"} true; - $t20 := $abort_code; - assume {:print "$track_abort(57,6):", $t20} $t20 == $t20; - goto L2; - } + // assume Identical($t4, select staking_contract::StakingContract.pool_address($t3)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:30:9+49 + assume {:print "$at(141,1108,1157)"} true; + assume ($t4 == $pool_address#$1_staking_contract_StakingContract($t3)); - // write_back[LocalRoot($t5)@]($t32) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:927:9+49 - $t5 := $Dereference($t32); + // assume Identical($t5, global($t4)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:31:9+56 + assume {:print "$at(141,1166,1222)"} true; + assume ($t5 == $ResourceValue($1_stake_StakePool_$memory, $t4)); - // trace_local[seed]($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:927:9+49 - assume {:print "$track_local(57,6,5):", $t5} $t5 == $t5; + // assume Identical($t6, coin::$value(select stake::StakePool.active($t5))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:32:9+44 + assume {:print "$at(141,1231,1275)"} true; + assume ($t6 == $1_coin_$value'$1_aptos_coin_AptosCoin'($active#$1_stake_StakePool($t5))); - // $t33 := move($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:929:84+4 - assume {:print "$at(2,43428,43432)"} true; - $t33 := $t5; + // assume Identical($t7, coin::$value(select stake::StakePool.pending_active($t5))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:33:9+60 + assume {:print "$at(141,1284,1344)"} true; + assume ($t7 == $1_coin_$value'$1_aptos_coin_AptosCoin'($pending_active#$1_stake_StakePool($t5))); - // assume Identical($t34, signer::$address_of($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:396:9+45 - assume {:print "$at(73,19766,19811)"} true; - assume ($t34 == $1_signer_$address_of($t0)); + // assume Identical($t8, Add($t6, $t7)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:34:9+49 + assume {:print "$at(141,1353,1402)"} true; + assume ($t8 == ($t6 + $t7)); - // assume Identical($t35, account::spec_create_resource_address($t34, $t33)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:397:9+68 - assume {:print "$at(73,19820,19888)"} true; - assume ($t35 == $1_account_spec_create_resource_address($t34, $t33)); + // assume Identical($t9, Sub($t8, select staking_contract::StakingContract.principal($t3))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:35:9+74 + assume {:print "$at(141,1411,1485)"} true; + assume ($t9 == ($t8 - $principal#$1_staking_contract_StakingContract($t3))); - // assume Identical($t36, global($t35)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:464:9+45 - assume {:print "$at(73,22404,22449)"} true; - assume ($t36 == $ResourceValue($1_account_Account_$memory, $t35)); + // assume Identical($t10, select staking_contract::Store.staking_contracts(global($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:302:9+64 + assume {:print "$at(141,12978,13042)"} true; + assume ($t10 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t0))); - // assume Identical($t37, bcs::$to_bytes
($t35)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:34:9+45 - assume {:print "$at(73,1495,1540)"} true; - assume ($t37 == $1_bcs_$to_bytes'address'($t35)); + // assume Identical($t11, select staking_contract::StakingContract.pool_address($t3)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:334:9+49 + assume {:print "$at(141,14229,14278)"} true; + assume ($t11 == $pool_address#$1_staking_contract_StakingContract($t3)); - // ($t38, $t39) := account::create_resource_account($t0, $t33) on_abort goto L2 with $t20 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:929:44+45 - assume {:print "$at(2,43388,43433)"} true; - call $t38,$t39 := $1_account_create_resource_account($t0, $t33); - if ($abort_flag) { - assume {:print "$at(2,43388,43433)"} true; - $t20 := $abort_code; - assume {:print "$track_abort(57,6):", $t20} $t20 == $t20; - goto L2; - } + // assume Identical($t12, global($t11)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:335:9+56 + assume {:print "$at(141,14287,14343)"} true; + assume ($t12 == $ResourceValue($1_stake_StakePool_$memory, $t11)); - // trace_local[signer_cap]($t39) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:929:30+10 - assume {:print "$track_local(57,6,6):", $t39} $t39 == $t39; + // assume Identical($t13, coin::$value(select stake::StakePool.active($t12))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:336:9+44 + assume {:print "$at(141,14352,14396)"} true; + assume ($t13 == $1_coin_$value'$1_aptos_coin_AptosCoin'($active#$1_stake_StakePool($t12))); - // trace_local[account_signer]($t38) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:929:14+14 - assume {:print "$track_local(57,6,3):", $t38} $t38 == $t38; + // assume Identical($t14, coin::$value(select stake::StakePool.pending_active($t12))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:337:9+60 + assume {:print "$at(141,14405,14465)"} true; + assume ($t14 == $1_coin_$value'$1_aptos_coin_AptosCoin'($pending_active#$1_stake_StakePool($t12))); - // assume Identical($t40, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 - assume {:print "$at(95,1664,1763)"} true; - assume ($t40 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + // assume Identical($t15, Add($t13, $t14)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:338:9+49 + assume {:print "$at(141,14474,14523)"} true; + assume ($t15 == ($t13 + $t14)); - // assume Identical($t41, signer::$address_of($t38)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:342:9+47 - assume {:print "$at(95,14541,14588)"} true; - assume ($t41 == $1_signer_$address_of($t38)); + // assume Identical($t16, Sub($t15, select staking_contract::StakingContract.principal($t3))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:339:9+74 + assume {:print "$at(141,14532,14606)"} true; + assume ($t16 == ($t15 - $principal#$1_staking_contract_StakingContract($t3))); - // assume Identical($t42, global($t41)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:343:9+49 - assume {:print "$at(95,14597,14646)"} true; - assume ($t42 == $ResourceValue($1_account_Account_$memory, $t41)); + // assume And(Ge(select staking_contract::StakingContract.commission_percentage($t3), 0), Le(select staking_contract::StakingContract.commission_percentage($t3), 100)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:332:9+102 + assume {:print "$at(141,14117,14219)"} true; + assume (($commission_percentage#$1_staking_contract_StakingContract($t3) >= 0) && ($commission_percentage#$1_staking_contract_StakingContract($t3) <= 100)); - // coin::register($t38) on_abort goto L2 with $t20 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:932:9+42 - assume {:print "$at(2,43608,43650)"} true; - call $1_coin_register'$1_aptos_coin_AptosCoin'($t38); + // trace_local[staker]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:208:5+1 + assume {:print "$at(140,9573,9574)"} true; + assume {:print "$track_local(58,19,0):", $t0} $t0 == $t0; + + // trace_local[operator]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:208:5+1 + assume {:print "$track_local(58,19,1):", $t1} $t1 == $t1; + + // assume Identical($t17, select staking_contract::Store.staking_contracts(global($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:302:9+64 + assume {:print "$at(141,12978,13042)"} true; + assume ($t17 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t0))); + + // staking_contract::assert_staking_contract_exists($t0, $t1) on_abort goto L2 with $t18 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:209:9+48 + assume {:print "$at(140,9687,9735)"} true; + call $1_staking_contract_assert_staking_contract_exists($t0, $t1); if ($abort_flag) { - assume {:print "$at(2,43608,43650)"} true; - $t20 := $abort_code; - assume {:print "$track_abort(57,6):", $t20} $t20 == $t20; + assume {:print "$at(140,9687,9735)"} true; + $t18 := $abort_code; + assume {:print "$track_abort(58,19):", $t18} $t18 == $t18; goto L2; } - // trace_return[0]($t38) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:934:9+28 - assume {:print "$at(2,43661,43689)"} true; - assume {:print "$track_return(57,6,0):", $t38} $t38 == $t38; + // $t19 := get_global($t0) on_abort goto L2 with $t18 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:210:34+13 + assume {:print "$at(140,9770,9783)"} true; + if (!$ResourceExists($1_staking_contract_Store_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t19 := $ResourceValue($1_staking_contract_Store_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(140,9770,9783)"} true; + $t18 := $abort_code; + assume {:print "$track_abort(58,19):", $t18} $t18 == $t18; + goto L2; + } - // trace_return[1]($t39) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:934:9+28 - assume {:print "$track_return(57,6,1):", $t39} $t39 == $t39; + // $t20 := get_field.staking_contracts($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:210:33+47 + $t20 := $staking_contracts#$1_staking_contract_Store($t19); - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:935:5+1 - assume {:print "$at(2,43694,43695)"} true; -L1: + // $t21 := simple_map::borrow($t20, $t1) on_abort goto L2 with $t18 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:211:32+48 + assume {:print "$at(140,9849,9897)"} true; + call $t21 := $1_simple_map_borrow'address_$1_staking_contract_StakingContract'($t20, $t1); + if ($abort_flag) { + assume {:print "$at(140,9849,9897)"} true; + $t18 := $abort_code; + assume {:print "$track_abort(58,19):", $t18} $t18 == $t18; + goto L2; + } - // assume Identical($t43, global($t14)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:400:9+60 - assume {:print "$at(3,17143,17203)"} true; - assume ($t43 == $ResourceValue($1_account_Account_$memory, $t14)); + // assume Identical($t22, select staking_contract::StakingContract.pool_address($t21)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:334:9+49 + assume {:print "$at(141,14229,14278)"} true; + assume ($t22 == $pool_address#$1_staking_contract_StakingContract($t21)); - // assert Not(Not(exists[@98]($t7))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:393:9+42 - assume {:print "$at(3,16754,16796)"} true; - assert {:msg "assert_failed(3,16754,16796): function does not abort under this condition"} - !!$ResourceExists($1_vesting_AdminStore_$memory#98, $t7); + // assume Identical($t23, global($t22)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:335:9+56 + assume {:print "$at(141,14287,14343)"} true; + assume ($t23 == $ResourceValue($1_stake_StakePool_$memory, $t22)); - // assert Not(Neq(Len([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), 32)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:394:9+44 - assume {:print "$at(3,16805,16849)"} true; - assert {:msg "assert_failed(3,16805,16849): function does not abort under this condition"} - !!$IsEqual'num'(LenVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(0, 0, 0, 0), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0))), 32); + // assume Identical($t24, coin::$value(select stake::StakePool.active($t23))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:336:9+44 + assume {:print "$at(141,14352,14396)"} true; + assume ($t24 == $1_coin_$value'$1_aptos_coin_AptosCoin'($active#$1_stake_StakePool($t23))); - // assert Not(Gt(Add(select vesting::AdminStore.nonce($t8), 1), 18446744073709551615)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:395:9+42 - assume {:print "$at(3,16858,16900)"} true; - assert {:msg "assert_failed(3,16858,16900): function does not abort under this condition"} - !(($nonce#$1_vesting_AdminStore($t8) + 1) > 18446744073709551615); + // assume Identical($t25, coin::$value(select stake::StakePool.pending_active($t23))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:337:9+60 + assume {:print "$at(141,14405,14465)"} true; + assume ($t25 == $1_coin_$value'$1_aptos_coin_AptosCoin'($pending_active#$1_stake_StakePool($t23))); - // assert Not(And($t15, Neq(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.signer_capability_offer($t17)))), 0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:465:9+60 - assume {:print "$at(73,22458,22518)"} true; - assert {:msg "assert_failed(73,22458,22518): function does not abort under this condition"} - !($t15 && !$IsEqual'num'(LenVec($vec#$1_option_Option'address'($for#$1_account_CapabilityOffer'$1_account_SignerCapability'($signer_capability_offer#$1_account_Account($t17)))), 0)); + // assume Identical($t26, Add($t24, $t25)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:338:9+49 + assume {:print "$at(141,14474,14523)"} true; + assume ($t26 == ($t24 + $t25)); - // assert Not(And($t15, Neq(select account::Account.sequence_number($t17), 0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:466:9+39 - assume {:print "$at(73,22527,22566)"} true; - assert {:msg "assert_failed(73,22527,22566): function does not abort under this condition"} - !($t15 && !$IsEqual'u64'($sequence_number#$1_account_Account($t17), 0)); + // assume Identical($t27, Sub($t26, select staking_contract::StakingContract.principal($t21))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:339:9+74 + assume {:print "$at(141,14532,14606)"} true; + assume ($t27 == ($t26 - $principal#$1_staking_contract_StakingContract($t21))); - // assert Not(And(Not($t15), Neq(Len($t18), 32))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:35:9+40 - assume {:print "$at(73,1549,1589)"} true; - assert {:msg "assert_failed(73,1549,1589): function does not abort under this condition"} - !(!$t15 && !$IsEqual'num'(LenVec($t18), 32)); + // ($t28, $t29, $t30) := staking_contract::get_staking_contract_amounts_internal($t21) on_abort goto L2 with $t18 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:212:9+55 + assume {:print "$at(140,9907,9962)"} true; + call $t28,$t29,$t30 := $1_staking_contract_get_staking_contract_amounts_internal($t21); + if ($abort_flag) { + assume {:print "$at(140,9907,9962)"} true; + $t18 := $abort_code; + assume {:print "$track_abort(58,19):", $t18} $t18 == $t18; + goto L2; + } - // assert Not(And(Not($t15), exists[@99]($t14))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:36:9+32 - assume {:print "$at(73,1598,1630)"} true; - assert {:msg "assert_failed(73,1598,1630): function does not abort under this condition"} - !(!$t15 && $ResourceExists($1_account_Account_$memory#99, $t14)); - - // assert Not(And(Not(exists[@100]>($t14)), Not(type_info::spec_is_struct[]()))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:401:9+115 - assume {:print "$at(3,17212,17327)"} true; - assert {:msg "assert_failed(3,17212,17327): function does not abort under this condition"} - !(!$ResourceExists($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory#100, $t14) && !true); - - // assert Not(And(And(Not(exists[@100]>($t14)), $t15), Gt(Add(select account::Account.guid_creation_num($t16), 2), 18446744073709551615))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:402:9+106 - assume {:print "$at(3,17336,17442)"} true; - assert {:msg "assert_failed(3,17336,17442): function does not abort under this condition"} - !((!$ResourceExists($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory#100, $t14) && $t15) && (($guid_creation_num#$1_account_Account($t16) + 2) > 18446744073709551615)); - - // assert Not(And(And(Not(exists[@100]>($t14)), $t15), Ge(Add(select account::Account.guid_creation_num($t16), 2), 1125899906842624))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:403:9+130 - assume {:print "$at(3,17451,17581)"} true; - assert {:msg "assert_failed(3,17451,17581): function does not abort under this condition"} - !((!$ResourceExists($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory#100, $t14) && $t15) && (($guid_creation_num#$1_account_Account($t16) + 2) >= 1125899906842624)); - - // assert And(And(exists($t14), Eq>(select account::Account.authentication_key($t43), [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])), exists>($t14)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:404:9+175 - assume {:print "$at(3,17590,17765)"} true; - assert {:msg "assert_failed(3,17590,17765): post-condition does not hold"} - (($ResourceExists($1_account_Account_$memory, $t14) && $IsEqual'vec'u8''($authentication_key#$1_account_Account($t43), ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(0, 0, 0, 0), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)))) && $ResourceExists($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $t14)); + // trace_return[0]($t28) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:212:9+55 + assume {:print "$track_return(58,19,0):", $t28} $t28 == $t28; - // assert Eq
(signer::$address_of($t38), $t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:406:9+54 - assume {:print "$at(3,17774,17828)"} true; - assert {:msg "assert_failed(3,17774,17828): post-condition does not hold"} - $IsEqual'address'($1_signer_$address_of($t38), $t14); + // trace_return[1]($t29) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:212:9+55 + assume {:print "$track_return(58,19,1):", $t29} $t29 == $t29; - // assert Eq
(select account::SignerCapability.account($t39), $t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:407:9+42 - assume {:print "$at(3,17837,17879)"} true; - assert {:msg "assert_failed(3,17837,17879): post-condition does not hold"} - $IsEqual'address'($account#$1_account_SignerCapability($t39), $t14); + // trace_return[2]($t30) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:212:9+55 + assume {:print "$track_return(58,19,2):", $t30} $t30 == $t30; - // return ($t38, $t39) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:407:9+42 - $ret0 := $t38; - $ret1 := $t39; + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:213:5+1 + assume {:print "$at(140,9967,9968)"} true; +L1: + + // return ($t28, $t29, $t30) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:213:5+1 + assume {:print "$at(140,9967,9968)"} true; + $ret0 := $t28; + $ret1 := $t29; + $ret2 := $t30; return; - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:935:5+1 - assume {:print "$at(2,43694,43695)"} true; + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:213:5+1 L2: - // assert Or(Or(Or(Or(Or(Or(Or(Or(Or(Not(exists[@98]($t7)), Neq(Len([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), 32)), Gt(Add(select vesting::AdminStore.nonce($t8), 1), 18446744073709551615)), And($t15, Neq(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.signer_capability_offer($t17)))), 0))), And($t15, Neq(select account::Account.sequence_number($t17), 0))), And(Not($t15), Neq(Len($t18), 32))), And(Not($t15), exists[@99]($t14))), And(Not(exists[@100]>($t14)), Not(type_info::spec_is_struct[]()))), And(And(Not(exists[@100]>($t14)), $t15), Gt(Add(select account::Account.guid_creation_num($t16), 2), 18446744073709551615))), And(And(Not(exists[@100]>($t14)), $t15), Ge(Add(select account::Account.guid_creation_num($t16), 2), 1125899906842624))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:379:5+1731 - assume {:print "$at(3,16154,17885)"} true; - assert {:msg "assert_failed(3,16154,17885): abort not covered by any of the `aborts_if` clauses"} - (((((((((!$ResourceExists($1_vesting_AdminStore_$memory#98, $t7) || !$IsEqual'num'(LenVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(0, 0, 0, 0), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0))), 32)) || (($nonce#$1_vesting_AdminStore($t8) + 1) > 18446744073709551615)) || ($t15 && !$IsEqual'num'(LenVec($vec#$1_option_Option'address'($for#$1_account_CapabilityOffer'$1_account_SignerCapability'($signer_capability_offer#$1_account_Account($t17)))), 0))) || ($t15 && !$IsEqual'u64'($sequence_number#$1_account_Account($t17), 0))) || (!$t15 && !$IsEqual'num'(LenVec($t18), 32))) || (!$t15 && $ResourceExists($1_account_Account_$memory#99, $t14))) || (!$ResourceExists($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory#100, $t14) && !true)) || ((!$ResourceExists($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory#100, $t14) && $t15) && (($guid_creation_num#$1_account_Account($t16) + 2) > 18446744073709551615))) || ((!$ResourceExists($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory#100, $t14) && $t15) && (($guid_creation_num#$1_account_Account($t16) + 2) >= 1125899906842624))); - - // abort($t20) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:379:5+1731 - $abort_code := $t20; + // abort($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:213:5+1 + assume {:print "$at(140,9967,9968)"} true; + $abort_code := $t18; $abort_flag := true; return; } -// fun vesting::create_vesting_schedule [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:418:5+672 -procedure {:timeLimit 1000} $1_vesting_create_vesting_schedule$verify(_$t0: Vec ($1_fixed_point32_FixedPoint32), _$t1: int, _$t2: int) returns ($ret0: $1_vesting_VestingSchedule) +// fun staking_contract::update_voter [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:346:5+754 +procedure {:inline 1} $1_staking_contract_update_voter(_$t0: $signer, _$t1: int, _$t2: int) returns () { // declare local variables var $t3: int; var $t4: int; var $t5: int; - var $t6: bool; - var $t7: int; + var $t6: $Mutation ($1_staking_contract_StakingContract); + var $t7: $Mutation ($1_staking_contract_Store); var $t8: int; - var $t9: int; - var $t10: bool; + var $t9: $1_staking_contract_Store; + var $t10: $1_staking_contract_StakingContract; var $t11: int; - var $t12: int; + var $t12: Table int ($1_staking_contract_StakingContract); var $t13: int; - var $t14: bool; - var $t15: int; - var $t16: int; - var $t17: int; - var $t18: $1_vesting_VestingSchedule; - var $t0: Vec ($1_fixed_point32_FixedPoint32); + var $t14: int; + var $t15: Table int ($1_staking_contract_StakingContract); + var $t16: $Mutation ($1_staking_contract_Store); + var $t17: $Mutation (Table int ($1_staking_contract_StakingContract)); + var $t18: $Mutation ($1_staking_contract_StakingContract); + var $t19: int; + var $t20: int; + var $t21: $1_stake_OwnerCapability; + var $t22: int; + var $t23: $Mutation ($1_event_EventHandle'$1_staking_contract_UpdateVoterEvent'); + var $t24: $1_staking_contract_UpdateVoterEvent; + var $t0: $signer; var $t1: int; var $t2: int; - var $temp_0'$1_vesting_VestingSchedule': $1_vesting_VestingSchedule; - var $temp_0'u64': int; - var $temp_0'vec'$1_fixed_point32_FixedPoint32'': Vec ($1_fixed_point32_FixedPoint32); - var $1_timestamp_CurrentTimeMicroseconds_$memory#45: $Memory $1_timestamp_CurrentTimeMicroseconds; + var $temp_0'$1_staking_contract_StakingContract': $1_staking_contract_StakingContract; + var $temp_0'$1_staking_contract_Store': $1_staking_contract_Store; + var $temp_0'address': int; + var $temp_0'signer': $signer; $t0 := _$t0; $t1 := _$t1; - $t2 := _$t2; - - // verification entrypoint assumptions - call $InitVerification(); - - // bytecode translation starts here - // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:418:5+1 - assume {:print "$at(2,20152,20153)"} true; - assume $IsValid'vec'$1_fixed_point32_FixedPoint32''($t0); - - // assume WellFormed($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:418:5+1 - assume $IsValid'u64'($t1); - - // assume WellFormed($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:418:5+1 - assume $IsValid'u64'($t2); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:418:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_chain_status_GenesisEndMarker_$memory, $a_0)}(var $rsc := $ResourceValue($1_chain_status_GenesisEndMarker_$memory, $a_0); - ($IsValid'$1_chain_status_GenesisEndMarker'($rsc)))); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:418:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_timestamp_CurrentTimeMicroseconds_$memory, $a_0)}(var $rsc := $ResourceValue($1_timestamp_CurrentTimeMicroseconds_$memory, $a_0); - ($IsValid'$1_timestamp_CurrentTimeMicroseconds'($rsc)))); + $t2 := _$t2; - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:418:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_reconfiguration_Configuration_$memory, $a_0)}(var $rsc := $ResourceValue($1_reconfiguration_Configuration_$memory, $a_0); - ($IsValid'$1_reconfiguration_Configuration'($rsc)))); + // bytecode translation starts here + // assume Identical($t8, signer::$address_of($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:117:9+48 + assume {:print "$at(141,4862,4910)"} true; + assume ($t8 == $1_signer_$address_of($t0)); - // assume Implies(chain_status::$is_operating(), exists(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:418:5+672 - // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.spec.move:4:9+93 - assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory, 1)); + // assume Identical($t9, global($t8)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:310:9+34 + assume {:print "$at(141,13226,13260)"} true; + assume ($t9 == $ResourceValue($1_staking_contract_Store_$memory, $t8)); - // assume Implies(chain_status::$is_operating(), Ge(timestamp::spec_now_microseconds(), reconfiguration::$last_reconfiguration_time())) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:418:5+672 - // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/reconfiguration.spec.move:8:9+137 - assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> ($1_timestamp_spec_now_microseconds($1_timestamp_CurrentTimeMicroseconds_$memory) >= $1_reconfiguration_$last_reconfiguration_time($1_reconfiguration_Configuration_$memory))); + // assume Identical($t10, simple_map::spec_get(select staking_contract::Store.staking_contracts($t9), $t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:311:9+79 + assume {:print "$at(141,13269,13348)"} true; + assume ($t10 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($t9), $t1)); - // @45 := save_mem(timestamp::CurrentTimeMicroseconds) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:418:5+1 - $1_timestamp_CurrentTimeMicroseconds_$memory#45 := $1_timestamp_CurrentTimeMicroseconds_$memory; + // assume Identical($t11, select staking_contract::StakingContract.pool_address($t10)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:312:9+49 + assume {:print "$at(141,13357,13406)"} true; + assume ($t11 == $pool_address#$1_staking_contract_StakingContract($t10)); - // trace_local[schedule]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:418:5+1 - assume {:print "$track_local(57,7,0):", $t0} $t0 == $t0; + // assume Identical($t12, select staking_contract::Store.staking_contracts(global($t8))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:302:9+64 + assume {:print "$at(141,12978,13042)"} true; + assume ($t12 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t8))); - // trace_local[start_timestamp_secs]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:418:5+1 - assume {:print "$track_local(57,7,1):", $t1} $t1 == $t1; + // trace_local[staker]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:346:5+1 + assume {:print "$at(140,16034,16035)"} true; + assume {:print "$track_local(58,27,0):", $t0} $t0 == $t0; - // trace_local[period_duration]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:418:5+1 - assume {:print "$track_local(57,7,2):", $t2} $t2 == $t2; + // trace_local[operator]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:346:5+1 + assume {:print "$track_local(58,27,1):", $t1} $t1 == $t1; - // $t3 := vector::length($t0) on_abort goto L10 with $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:423:17+25 - assume {:print "$at(2,20334,20359)"} true; - call $t3 := $1_vector_length'$1_fixed_point32_FixedPoint32'($t0); + // trace_local[new_voter]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:346:5+1 + assume {:print "$track_local(58,27,2):", $t2} $t2 == $t2; + + // $t13 := signer::address_of($t0) on_abort goto L2 with $t14 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:347:30+26 + assume {:print "$at(140,16166,16192)"} true; + call $t13 := $1_signer_address_of($t0); if ($abort_flag) { - assume {:print "$at(2,20334,20359)"} true; - $t4 := $abort_code; - assume {:print "$track_abort(57,7):", $t4} $t4 == $t4; - goto L10; + assume {:print "$at(140,16166,16192)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(58,27):", $t14} $t14 == $t14; + goto L2; } - // $t5 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:423:45+1 - $t5 := 0; - assume $IsValid'u64'($t5); - - // $t6 := >($t3, $t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:423:43+1 - call $t6 := $Gt($t3, $t5); - - // if ($t6) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:423:9+88 - if ($t6) { goto L1; } else { goto L0; } - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:423:9+88 -L1: - - // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:423:9+88 - assume {:print "$at(2,20326,20414)"} true; - goto L2; - - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:423:72+23 -L0: + // trace_local[staker_address]($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:347:13+14 + assume {:print "$track_local(58,27,5):", $t13} $t13 == $t13; - // $t7 := 2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:423:72+23 - assume {:print "$at(2,20389,20412)"} true; - $t7 := 2; - assume $IsValid'u64'($t7); + // assume Identical($t15, select staking_contract::Store.staking_contracts(global($t13))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:302:9+64 + assume {:print "$at(141,12978,13042)"} true; + assume ($t15 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t13))); - // $t8 := error::invalid_argument($t7) on_abort goto L10 with $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:423:48+48 - call $t8 := $1_error_invalid_argument($t7); + // staking_contract::assert_staking_contract_exists($t13, $t1) on_abort goto L2 with $t14 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:348:9+56 + assume {:print "$at(140,16202,16258)"} true; + call $1_staking_contract_assert_staking_contract_exists($t13, $t1); if ($abort_flag) { - assume {:print "$at(2,20365,20413)"} true; - $t4 := $abort_code; - assume {:print "$track_abort(57,7):", $t4} $t4 == $t4; - goto L10; + assume {:print "$at(140,16202,16258)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(58,27):", $t14} $t14 == $t14; + goto L2; } - // trace_abort($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:423:9+88 - assume {:print "$at(2,20326,20414)"} true; - assume {:print "$track_abort(57,7):", $t8} $t8 == $t8; + // $t16 := borrow_global($t13) on_abort goto L2 with $t14 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:350:21+17 + assume {:print "$at(140,16281,16298)"} true; + if (!$ResourceExists($1_staking_contract_Store_$memory, $t13)) { + call $ExecFailureAbort(); + } else { + $t16 := $Mutation($Global($t13), EmptyVec(), $ResourceValue($1_staking_contract_Store_$memory, $t13)); + } + if ($abort_flag) { + assume {:print "$at(140,16281,16298)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(58,27):", $t14} $t14 == $t14; + goto L2; + } - // $t4 := move($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:423:9+88 - $t4 := $t8; + // trace_local[store]($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:350:13+5 + $temp_0'$1_staking_contract_Store' := $Dereference($t16); + assume {:print "$track_local(58,27,7):", $temp_0'$1_staking_contract_Store'} $temp_0'$1_staking_contract_Store' == $temp_0'$1_staking_contract_Store'; - // goto L10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:423:9+88 - goto L10; + // $t17 := borrow_field.staking_contracts($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:351:55+28 + assume {:print "$at(140,16377,16405)"} true; + $t17 := $ChildMutation($t16, 0, $staking_contracts#$1_staking_contract_Store($Dereference($t16))); - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:424:17+15 - assume {:print "$at(2,20432,20447)"} true; -L2: + // $t18 := simple_map::borrow_mut($t17, $t1) on_abort goto L2 with $t14 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:351:32+63 + call $t18,$t17 := $1_simple_map_borrow_mut'address_$1_staking_contract_StakingContract'($t17, $t1); + if ($abort_flag) { + assume {:print "$at(140,16354,16417)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(58,27):", $t14} $t14 == $t14; + goto L2; + } - // $t9 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:424:35+1 - assume {:print "$at(2,20450,20451)"} true; - $t9 := 0; - assume $IsValid'u64'($t9); + // trace_local[staking_contract]($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:351:13+16 + $temp_0'$1_staking_contract_StakingContract' := $Dereference($t18); + assume {:print "$track_local(58,27,6):", $temp_0'$1_staking_contract_StakingContract'} $temp_0'$1_staking_contract_StakingContract' == $temp_0'$1_staking_contract_StakingContract'; - // $t10 := >($t2, $t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:424:33+1 - call $t10 := $Gt($t2, $t9); + // $t19 := get_field.pool_address($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:352:28+29 + assume {:print "$at(140,16446,16475)"} true; + $t19 := $pool_address#$1_staking_contract_StakingContract($Dereference($t18)); - // if ($t10) goto L4 else goto L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:424:9+84 - if ($t10) { goto L4; } else { goto L3; } + // trace_local[pool_address]($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:352:13+12 + assume {:print "$track_local(58,27,4):", $t19} $t19 == $t19; - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:424:9+84 -L4: + // $t20 := stake::get_delegated_voter($t19) on_abort goto L2 with $t14 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:353:25+40 + assume {:print "$at(140,16501,16541)"} true; + call $t20 := $1_stake_get_delegated_voter($t19); + if ($abort_flag) { + assume {:print "$at(140,16501,16541)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(58,27):", $t14} $t14 == $t14; + goto L2; + } - // goto L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:424:9+84 - assume {:print "$at(2,20424,20508)"} true; - goto L5; + // trace_local[old_voter]($t20) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:353:13+9 + assume {:print "$track_local(58,27,3):", $t20} $t20 == $t20; - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:424:62+29 -L3: + // $t21 := get_field.owner_cap($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:354:45+27 + assume {:print "$at(140,16587,16614)"} true; + $t21 := $owner_cap#$1_staking_contract_StakingContract($Dereference($t18)); - // $t11 := 3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:424:62+29 - assume {:print "$at(2,20477,20506)"} true; - $t11 := 3; - assume $IsValid'u64'($t11); + // assume Identical($t22, select stake::OwnerCapability.pool_address($t21)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:136:9+42 + assume {:print "$at(139,6139,6181)"} true; + assume ($t22 == $pool_address#$1_stake_OwnerCapability($t21)); - // $t12 := error::invalid_argument($t11) on_abort goto L10 with $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:424:38+54 - call $t12 := $1_error_invalid_argument($t11); + // stake::set_delegated_voter_with_cap($t21, $t2) on_abort goto L2 with $t14 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:354:9+75 + assume {:print "$at(140,16551,16626)"} true; + call $1_stake_set_delegated_voter_with_cap($t21, $t2); if ($abort_flag) { - assume {:print "$at(2,20453,20507)"} true; - $t4 := $abort_code; - assume {:print "$track_abort(57,7):", $t4} $t4 == $t4; - goto L10; + assume {:print "$at(140,16551,16626)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(58,27):", $t14} $t14 == $t14; + goto L2; } - // trace_abort($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:424:9+84 - assume {:print "$at(2,20424,20508)"} true; - assume {:print "$track_abort(57,7):", $t12} $t12 == $t12; - - // $t4 := move($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:424:9+84 - $t4 := $t12; + // $t23 := borrow_field.update_voter_events($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:357:13+30 + assume {:print "$at(140,16661,16691)"} true; + $t23 := $ChildMutation($t16, 2, $update_voter_events#$1_staking_contract_Store($Dereference($t16))); - // goto L10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:424:9+84 - goto L10; + // $t24 := pack staking_contract::UpdateVoterEvent($t1, $t19, $t20, $t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:358:13+65 + assume {:print "$at(140,16705,16770)"} true; + $t24 := $1_staking_contract_UpdateVoterEvent($t1, $t19, $t20, $t2); - // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:426:13+20 - assume {:print "$at(2,20539,20559)"} true; -L5: + // opaque begin: event::emit_event($t23, $t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:356:9+144 + assume {:print "$at(140,16637,16781)"} true; - // $t13 := timestamp::now_seconds() on_abort goto L10 with $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:426:37+24 - assume {:print "$at(2,20563,20587)"} true; - call $t13 := $1_timestamp_now_seconds(); - if ($abort_flag) { - assume {:print "$at(2,20563,20587)"} true; - $t4 := $abort_code; - assume {:print "$track_abort(57,7):", $t4} $t4 == $t4; - goto L10; - } + // opaque end: event::emit_event($t23, $t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:356:9+144 - // $t14 := >=($t1, $t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:426:34+2 - call $t14 := $Ge($t1, $t13); + // write_back[Reference($t16).update_voter_events (event::EventHandle)]($t23) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:356:9+144 + $t16 := $UpdateMutation($t16, $Update'$1_staking_contract_Store'_update_voter_events($Dereference($t16), $Dereference($t23))); - // if ($t14) goto L7 else goto L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:425:9+142 - assume {:print "$at(2,20518,20660)"} true; - if ($t14) { goto L7; } else { goto L6; } + // pack_ref_deep($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:356:9+144 - // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:425:9+142 -L7: + // write_back[staking_contract::Store@]($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:356:9+144 + $1_staking_contract_Store_$memory := $ResourceUpdate($1_staking_contract_Store_$memory, $GlobalLocationAddress($t16), + $Dereference($t16)); - // goto L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:425:9+142 - assume {:print "$at(2,20518,20660)"} true; - goto L8; + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:360:5+1 + assume {:print "$at(140,16787,16788)"} true; +L1: - // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:427:37+23 - assume {:print "$at(2,20625,20648)"} true; -L6: + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:360:5+1 + assume {:print "$at(140,16787,16788)"} true; + return; - // $t15 := 6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:427:37+23 - assume {:print "$at(2,20625,20648)"} true; - $t15 := 6; - assume $IsValid'u64'($t15); + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:360:5+1 +L2: - // $t16 := error::invalid_argument($t15) on_abort goto L10 with $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:427:13+48 - call $t16 := $1_error_invalid_argument($t15); - if ($abort_flag) { - assume {:print "$at(2,20601,20649)"} true; - $t4 := $abort_code; - assume {:print "$track_abort(57,7):", $t4} $t4 == $t4; - goto L10; - } + // abort($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:360:5+1 + assume {:print "$at(140,16787,16788)"} true; + $abort_code := $t14; + $abort_flag := true; + return; - // trace_abort($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:425:9+142 - assume {:print "$at(2,20518,20660)"} true; - assume {:print "$track_abort(57,7):", $t16} $t16 == $t16; +} - // $t4 := move($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:425:9+142 - $t4 := $t16; +// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:120:10+102 +function $1_vesting_spec_shareholder(vesting_contract_address: int, shareholder_or_beneficiary: int): int; +axiom (forall vesting_contract_address: int, shareholder_or_beneficiary: int :: +(var $$res := $1_vesting_spec_shareholder(vesting_contract_address, shareholder_or_beneficiary); +$IsValid'address'($$res))); - // goto L10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:425:9+142 - goto L10; +// struct vesting::DistributeEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:230:5+134 +type {:datatype} $1_vesting_DistributeEvent; +function {:constructor} $1_vesting_DistributeEvent($admin: int, $vesting_contract_address: int, $amount: int): $1_vesting_DistributeEvent; +function {:inline} $Update'$1_vesting_DistributeEvent'_admin(s: $1_vesting_DistributeEvent, x: int): $1_vesting_DistributeEvent { + $1_vesting_DistributeEvent(x, $vesting_contract_address#$1_vesting_DistributeEvent(s), $amount#$1_vesting_DistributeEvent(s)) +} +function {:inline} $Update'$1_vesting_DistributeEvent'_vesting_contract_address(s: $1_vesting_DistributeEvent, x: int): $1_vesting_DistributeEvent { + $1_vesting_DistributeEvent($admin#$1_vesting_DistributeEvent(s), x, $amount#$1_vesting_DistributeEvent(s)) +} +function {:inline} $Update'$1_vesting_DistributeEvent'_amount(s: $1_vesting_DistributeEvent, x: int): $1_vesting_DistributeEvent { + $1_vesting_DistributeEvent($admin#$1_vesting_DistributeEvent(s), $vesting_contract_address#$1_vesting_DistributeEvent(s), x) +} +function $IsValid'$1_vesting_DistributeEvent'(s: $1_vesting_DistributeEvent): bool { + $IsValid'address'($admin#$1_vesting_DistributeEvent(s)) + && $IsValid'address'($vesting_contract_address#$1_vesting_DistributeEvent(s)) + && $IsValid'u64'($amount#$1_vesting_DistributeEvent(s)) +} +function {:inline} $IsEqual'$1_vesting_DistributeEvent'(s1: $1_vesting_DistributeEvent, s2: $1_vesting_DistributeEvent): bool { + s1 == s2 +} - // label L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:431:13+8 - assume {:print "$at(2,20701,20709)"} true; -L8: +// struct vesting::ResetLockupEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:200:5+194 +type {:datatype} $1_vesting_ResetLockupEvent; +function {:constructor} $1_vesting_ResetLockupEvent($admin: int, $vesting_contract_address: int, $staking_pool_address: int, $new_lockup_expiration_secs: int): $1_vesting_ResetLockupEvent; +function {:inline} $Update'$1_vesting_ResetLockupEvent'_admin(s: $1_vesting_ResetLockupEvent, x: int): $1_vesting_ResetLockupEvent { + $1_vesting_ResetLockupEvent(x, $vesting_contract_address#$1_vesting_ResetLockupEvent(s), $staking_pool_address#$1_vesting_ResetLockupEvent(s), $new_lockup_expiration_secs#$1_vesting_ResetLockupEvent(s)) +} +function {:inline} $Update'$1_vesting_ResetLockupEvent'_vesting_contract_address(s: $1_vesting_ResetLockupEvent, x: int): $1_vesting_ResetLockupEvent { + $1_vesting_ResetLockupEvent($admin#$1_vesting_ResetLockupEvent(s), x, $staking_pool_address#$1_vesting_ResetLockupEvent(s), $new_lockup_expiration_secs#$1_vesting_ResetLockupEvent(s)) +} +function {:inline} $Update'$1_vesting_ResetLockupEvent'_staking_pool_address(s: $1_vesting_ResetLockupEvent, x: int): $1_vesting_ResetLockupEvent { + $1_vesting_ResetLockupEvent($admin#$1_vesting_ResetLockupEvent(s), $vesting_contract_address#$1_vesting_ResetLockupEvent(s), x, $new_lockup_expiration_secs#$1_vesting_ResetLockupEvent(s)) +} +function {:inline} $Update'$1_vesting_ResetLockupEvent'_new_lockup_expiration_secs(s: $1_vesting_ResetLockupEvent, x: int): $1_vesting_ResetLockupEvent { + $1_vesting_ResetLockupEvent($admin#$1_vesting_ResetLockupEvent(s), $vesting_contract_address#$1_vesting_ResetLockupEvent(s), $staking_pool_address#$1_vesting_ResetLockupEvent(s), x) +} +function $IsValid'$1_vesting_ResetLockupEvent'(s: $1_vesting_ResetLockupEvent): bool { + $IsValid'address'($admin#$1_vesting_ResetLockupEvent(s)) + && $IsValid'address'($vesting_contract_address#$1_vesting_ResetLockupEvent(s)) + && $IsValid'address'($staking_pool_address#$1_vesting_ResetLockupEvent(s)) + && $IsValid'u64'($new_lockup_expiration_secs#$1_vesting_ResetLockupEvent(s)) +} +function {:inline} $IsEqual'$1_vesting_ResetLockupEvent'(s1: $1_vesting_ResetLockupEvent, s2: $1_vesting_ResetLockupEvent): bool { + s1 == s2 +} - // $t17 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:434:33+1 - assume {:print "$at(2,20806,20807)"} true; - $t17 := 0; - assume $IsValid'u64'($t17); +// struct vesting::UpdateVoterEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:192:5+209 +type {:datatype} $1_vesting_UpdateVoterEvent; +function {:constructor} $1_vesting_UpdateVoterEvent($admin: int, $vesting_contract_address: int, $staking_pool_address: int, $old_voter: int, $new_voter: int): $1_vesting_UpdateVoterEvent; +function {:inline} $Update'$1_vesting_UpdateVoterEvent'_admin(s: $1_vesting_UpdateVoterEvent, x: int): $1_vesting_UpdateVoterEvent { + $1_vesting_UpdateVoterEvent(x, $vesting_contract_address#$1_vesting_UpdateVoterEvent(s), $staking_pool_address#$1_vesting_UpdateVoterEvent(s), $old_voter#$1_vesting_UpdateVoterEvent(s), $new_voter#$1_vesting_UpdateVoterEvent(s)) +} +function {:inline} $Update'$1_vesting_UpdateVoterEvent'_vesting_contract_address(s: $1_vesting_UpdateVoterEvent, x: int): $1_vesting_UpdateVoterEvent { + $1_vesting_UpdateVoterEvent($admin#$1_vesting_UpdateVoterEvent(s), x, $staking_pool_address#$1_vesting_UpdateVoterEvent(s), $old_voter#$1_vesting_UpdateVoterEvent(s), $new_voter#$1_vesting_UpdateVoterEvent(s)) +} +function {:inline} $Update'$1_vesting_UpdateVoterEvent'_staking_pool_address(s: $1_vesting_UpdateVoterEvent, x: int): $1_vesting_UpdateVoterEvent { + $1_vesting_UpdateVoterEvent($admin#$1_vesting_UpdateVoterEvent(s), $vesting_contract_address#$1_vesting_UpdateVoterEvent(s), x, $old_voter#$1_vesting_UpdateVoterEvent(s), $new_voter#$1_vesting_UpdateVoterEvent(s)) +} +function {:inline} $Update'$1_vesting_UpdateVoterEvent'_old_voter(s: $1_vesting_UpdateVoterEvent, x: int): $1_vesting_UpdateVoterEvent { + $1_vesting_UpdateVoterEvent($admin#$1_vesting_UpdateVoterEvent(s), $vesting_contract_address#$1_vesting_UpdateVoterEvent(s), $staking_pool_address#$1_vesting_UpdateVoterEvent(s), x, $new_voter#$1_vesting_UpdateVoterEvent(s)) +} +function {:inline} $Update'$1_vesting_UpdateVoterEvent'_new_voter(s: $1_vesting_UpdateVoterEvent, x: int): $1_vesting_UpdateVoterEvent { + $1_vesting_UpdateVoterEvent($admin#$1_vesting_UpdateVoterEvent(s), $vesting_contract_address#$1_vesting_UpdateVoterEvent(s), $staking_pool_address#$1_vesting_UpdateVoterEvent(s), $old_voter#$1_vesting_UpdateVoterEvent(s), x) +} +function $IsValid'$1_vesting_UpdateVoterEvent'(s: $1_vesting_UpdateVoterEvent): bool { + $IsValid'address'($admin#$1_vesting_UpdateVoterEvent(s)) + && $IsValid'address'($vesting_contract_address#$1_vesting_UpdateVoterEvent(s)) + && $IsValid'address'($staking_pool_address#$1_vesting_UpdateVoterEvent(s)) + && $IsValid'address'($old_voter#$1_vesting_UpdateVoterEvent(s)) + && $IsValid'address'($new_voter#$1_vesting_UpdateVoterEvent(s)) +} +function {:inline} $IsEqual'$1_vesting_UpdateVoterEvent'(s1: $1_vesting_UpdateVoterEvent, s2: $1_vesting_UpdateVoterEvent): bool { + s1 == s2 +} - // $t18 := pack vesting::VestingSchedule($t0, $t1, $t2, $t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:430:9+147 - assume {:print "$at(2,20671,20818)"} true; - $t18 := $1_vesting_VestingSchedule($t0, $t1, $t2, $t17); +// struct vesting::AdminStore at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:165:5+265 +type {:datatype} $1_vesting_AdminStore; +function {:constructor} $1_vesting_AdminStore($vesting_contracts: Vec (int), $nonce: int, $create_events: $1_event_EventHandle'$1_vesting_CreateVestingContractEvent'): $1_vesting_AdminStore; +function {:inline} $Update'$1_vesting_AdminStore'_vesting_contracts(s: $1_vesting_AdminStore, x: Vec (int)): $1_vesting_AdminStore { + $1_vesting_AdminStore(x, $nonce#$1_vesting_AdminStore(s), $create_events#$1_vesting_AdminStore(s)) +} +function {:inline} $Update'$1_vesting_AdminStore'_nonce(s: $1_vesting_AdminStore, x: int): $1_vesting_AdminStore { + $1_vesting_AdminStore($vesting_contracts#$1_vesting_AdminStore(s), x, $create_events#$1_vesting_AdminStore(s)) +} +function {:inline} $Update'$1_vesting_AdminStore'_create_events(s: $1_vesting_AdminStore, x: $1_event_EventHandle'$1_vesting_CreateVestingContractEvent'): $1_vesting_AdminStore { + $1_vesting_AdminStore($vesting_contracts#$1_vesting_AdminStore(s), $nonce#$1_vesting_AdminStore(s), x) +} +function $IsValid'$1_vesting_AdminStore'(s: $1_vesting_AdminStore): bool { + $IsValid'vec'address''($vesting_contracts#$1_vesting_AdminStore(s)) + && $IsValid'u64'($nonce#$1_vesting_AdminStore(s)) + && $IsValid'$1_event_EventHandle'$1_vesting_CreateVestingContractEvent''($create_events#$1_vesting_AdminStore(s)) +} +function {:inline} $IsEqual'$1_vesting_AdminStore'(s1: $1_vesting_AdminStore, s2: $1_vesting_AdminStore): bool { + $IsEqual'vec'address''($vesting_contracts#$1_vesting_AdminStore(s1), $vesting_contracts#$1_vesting_AdminStore(s2)) + && $IsEqual'u64'($nonce#$1_vesting_AdminStore(s1), $nonce#$1_vesting_AdminStore(s2)) + && $IsEqual'$1_event_EventHandle'$1_vesting_CreateVestingContractEvent''($create_events#$1_vesting_AdminStore(s1), $create_events#$1_vesting_AdminStore(s2))} +var $1_vesting_AdminStore_$memory: $Memory $1_vesting_AdminStore; - // trace_return[0]($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:430:9+147 - assume {:print "$track_return(57,7,0):", $t18} $t18 == $t18; +// struct vesting::AdminWithdrawEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:241:5+137 +type {:datatype} $1_vesting_AdminWithdrawEvent; +function {:constructor} $1_vesting_AdminWithdrawEvent($admin: int, $vesting_contract_address: int, $amount: int): $1_vesting_AdminWithdrawEvent; +function {:inline} $Update'$1_vesting_AdminWithdrawEvent'_admin(s: $1_vesting_AdminWithdrawEvent, x: int): $1_vesting_AdminWithdrawEvent { + $1_vesting_AdminWithdrawEvent(x, $vesting_contract_address#$1_vesting_AdminWithdrawEvent(s), $amount#$1_vesting_AdminWithdrawEvent(s)) +} +function {:inline} $Update'$1_vesting_AdminWithdrawEvent'_vesting_contract_address(s: $1_vesting_AdminWithdrawEvent, x: int): $1_vesting_AdminWithdrawEvent { + $1_vesting_AdminWithdrawEvent($admin#$1_vesting_AdminWithdrawEvent(s), x, $amount#$1_vesting_AdminWithdrawEvent(s)) +} +function {:inline} $Update'$1_vesting_AdminWithdrawEvent'_amount(s: $1_vesting_AdminWithdrawEvent, x: int): $1_vesting_AdminWithdrawEvent { + $1_vesting_AdminWithdrawEvent($admin#$1_vesting_AdminWithdrawEvent(s), $vesting_contract_address#$1_vesting_AdminWithdrawEvent(s), x) +} +function $IsValid'$1_vesting_AdminWithdrawEvent'(s: $1_vesting_AdminWithdrawEvent): bool { + $IsValid'address'($admin#$1_vesting_AdminWithdrawEvent(s)) + && $IsValid'address'($vesting_contract_address#$1_vesting_AdminWithdrawEvent(s)) + && $IsValid'u64'($amount#$1_vesting_AdminWithdrawEvent(s)) +} +function {:inline} $IsEqual'$1_vesting_AdminWithdrawEvent'(s1: $1_vesting_AdminWithdrawEvent, s2: $1_vesting_AdminWithdrawEvent): bool { + s1 == s2 +} - // label L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:436:5+1 - assume {:print "$at(2,20823,20824)"} true; -L9: +// struct vesting::CreateVestingContractEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:173:5+290 +type {:datatype} $1_vesting_CreateVestingContractEvent; +function {:constructor} $1_vesting_CreateVestingContractEvent($operator: int, $voter: int, $grant_amount: int, $withdrawal_address: int, $vesting_contract_address: int, $staking_pool_address: int, $commission_percentage: int): $1_vesting_CreateVestingContractEvent; +function {:inline} $Update'$1_vesting_CreateVestingContractEvent'_operator(s: $1_vesting_CreateVestingContractEvent, x: int): $1_vesting_CreateVestingContractEvent { + $1_vesting_CreateVestingContractEvent(x, $voter#$1_vesting_CreateVestingContractEvent(s), $grant_amount#$1_vesting_CreateVestingContractEvent(s), $withdrawal_address#$1_vesting_CreateVestingContractEvent(s), $vesting_contract_address#$1_vesting_CreateVestingContractEvent(s), $staking_pool_address#$1_vesting_CreateVestingContractEvent(s), $commission_percentage#$1_vesting_CreateVestingContractEvent(s)) +} +function {:inline} $Update'$1_vesting_CreateVestingContractEvent'_voter(s: $1_vesting_CreateVestingContractEvent, x: int): $1_vesting_CreateVestingContractEvent { + $1_vesting_CreateVestingContractEvent($operator#$1_vesting_CreateVestingContractEvent(s), x, $grant_amount#$1_vesting_CreateVestingContractEvent(s), $withdrawal_address#$1_vesting_CreateVestingContractEvent(s), $vesting_contract_address#$1_vesting_CreateVestingContractEvent(s), $staking_pool_address#$1_vesting_CreateVestingContractEvent(s), $commission_percentage#$1_vesting_CreateVestingContractEvent(s)) +} +function {:inline} $Update'$1_vesting_CreateVestingContractEvent'_grant_amount(s: $1_vesting_CreateVestingContractEvent, x: int): $1_vesting_CreateVestingContractEvent { + $1_vesting_CreateVestingContractEvent($operator#$1_vesting_CreateVestingContractEvent(s), $voter#$1_vesting_CreateVestingContractEvent(s), x, $withdrawal_address#$1_vesting_CreateVestingContractEvent(s), $vesting_contract_address#$1_vesting_CreateVestingContractEvent(s), $staking_pool_address#$1_vesting_CreateVestingContractEvent(s), $commission_percentage#$1_vesting_CreateVestingContractEvent(s)) +} +function {:inline} $Update'$1_vesting_CreateVestingContractEvent'_withdrawal_address(s: $1_vesting_CreateVestingContractEvent, x: int): $1_vesting_CreateVestingContractEvent { + $1_vesting_CreateVestingContractEvent($operator#$1_vesting_CreateVestingContractEvent(s), $voter#$1_vesting_CreateVestingContractEvent(s), $grant_amount#$1_vesting_CreateVestingContractEvent(s), x, $vesting_contract_address#$1_vesting_CreateVestingContractEvent(s), $staking_pool_address#$1_vesting_CreateVestingContractEvent(s), $commission_percentage#$1_vesting_CreateVestingContractEvent(s)) +} +function {:inline} $Update'$1_vesting_CreateVestingContractEvent'_vesting_contract_address(s: $1_vesting_CreateVestingContractEvent, x: int): $1_vesting_CreateVestingContractEvent { + $1_vesting_CreateVestingContractEvent($operator#$1_vesting_CreateVestingContractEvent(s), $voter#$1_vesting_CreateVestingContractEvent(s), $grant_amount#$1_vesting_CreateVestingContractEvent(s), $withdrawal_address#$1_vesting_CreateVestingContractEvent(s), x, $staking_pool_address#$1_vesting_CreateVestingContractEvent(s), $commission_percentage#$1_vesting_CreateVestingContractEvent(s)) +} +function {:inline} $Update'$1_vesting_CreateVestingContractEvent'_staking_pool_address(s: $1_vesting_CreateVestingContractEvent, x: int): $1_vesting_CreateVestingContractEvent { + $1_vesting_CreateVestingContractEvent($operator#$1_vesting_CreateVestingContractEvent(s), $voter#$1_vesting_CreateVestingContractEvent(s), $grant_amount#$1_vesting_CreateVestingContractEvent(s), $withdrawal_address#$1_vesting_CreateVestingContractEvent(s), $vesting_contract_address#$1_vesting_CreateVestingContractEvent(s), x, $commission_percentage#$1_vesting_CreateVestingContractEvent(s)) +} +function {:inline} $Update'$1_vesting_CreateVestingContractEvent'_commission_percentage(s: $1_vesting_CreateVestingContractEvent, x: int): $1_vesting_CreateVestingContractEvent { + $1_vesting_CreateVestingContractEvent($operator#$1_vesting_CreateVestingContractEvent(s), $voter#$1_vesting_CreateVestingContractEvent(s), $grant_amount#$1_vesting_CreateVestingContractEvent(s), $withdrawal_address#$1_vesting_CreateVestingContractEvent(s), $vesting_contract_address#$1_vesting_CreateVestingContractEvent(s), $staking_pool_address#$1_vesting_CreateVestingContractEvent(s), x) +} +function $IsValid'$1_vesting_CreateVestingContractEvent'(s: $1_vesting_CreateVestingContractEvent): bool { + $IsValid'address'($operator#$1_vesting_CreateVestingContractEvent(s)) + && $IsValid'address'($voter#$1_vesting_CreateVestingContractEvent(s)) + && $IsValid'u64'($grant_amount#$1_vesting_CreateVestingContractEvent(s)) + && $IsValid'address'($withdrawal_address#$1_vesting_CreateVestingContractEvent(s)) + && $IsValid'address'($vesting_contract_address#$1_vesting_CreateVestingContractEvent(s)) + && $IsValid'address'($staking_pool_address#$1_vesting_CreateVestingContractEvent(s)) + && $IsValid'u64'($commission_percentage#$1_vesting_CreateVestingContractEvent(s)) +} +function {:inline} $IsEqual'$1_vesting_CreateVestingContractEvent'(s1: $1_vesting_CreateVestingContractEvent, s2: $1_vesting_CreateVestingContractEvent): bool { + s1 == s2 +} - // assert Not(Not(Gt(Len($t0), 0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:129:9+31 - assume {:print "$at(3,6011,6042)"} true; - assert {:msg "assert_failed(3,6011,6042): function does not abort under this condition"} - !!(LenVec($t0) > 0); +// struct vesting::SetBeneficiaryEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:207:5+215 +type {:datatype} $1_vesting_SetBeneficiaryEvent; +function {:constructor} $1_vesting_SetBeneficiaryEvent($admin: int, $vesting_contract_address: int, $shareholder: int, $old_beneficiary: int, $new_beneficiary: int): $1_vesting_SetBeneficiaryEvent; +function {:inline} $Update'$1_vesting_SetBeneficiaryEvent'_admin(s: $1_vesting_SetBeneficiaryEvent, x: int): $1_vesting_SetBeneficiaryEvent { + $1_vesting_SetBeneficiaryEvent(x, $vesting_contract_address#$1_vesting_SetBeneficiaryEvent(s), $shareholder#$1_vesting_SetBeneficiaryEvent(s), $old_beneficiary#$1_vesting_SetBeneficiaryEvent(s), $new_beneficiary#$1_vesting_SetBeneficiaryEvent(s)) +} +function {:inline} $Update'$1_vesting_SetBeneficiaryEvent'_vesting_contract_address(s: $1_vesting_SetBeneficiaryEvent, x: int): $1_vesting_SetBeneficiaryEvent { + $1_vesting_SetBeneficiaryEvent($admin#$1_vesting_SetBeneficiaryEvent(s), x, $shareholder#$1_vesting_SetBeneficiaryEvent(s), $old_beneficiary#$1_vesting_SetBeneficiaryEvent(s), $new_beneficiary#$1_vesting_SetBeneficiaryEvent(s)) +} +function {:inline} $Update'$1_vesting_SetBeneficiaryEvent'_shareholder(s: $1_vesting_SetBeneficiaryEvent, x: int): $1_vesting_SetBeneficiaryEvent { + $1_vesting_SetBeneficiaryEvent($admin#$1_vesting_SetBeneficiaryEvent(s), $vesting_contract_address#$1_vesting_SetBeneficiaryEvent(s), x, $old_beneficiary#$1_vesting_SetBeneficiaryEvent(s), $new_beneficiary#$1_vesting_SetBeneficiaryEvent(s)) +} +function {:inline} $Update'$1_vesting_SetBeneficiaryEvent'_old_beneficiary(s: $1_vesting_SetBeneficiaryEvent, x: int): $1_vesting_SetBeneficiaryEvent { + $1_vesting_SetBeneficiaryEvent($admin#$1_vesting_SetBeneficiaryEvent(s), $vesting_contract_address#$1_vesting_SetBeneficiaryEvent(s), $shareholder#$1_vesting_SetBeneficiaryEvent(s), x, $new_beneficiary#$1_vesting_SetBeneficiaryEvent(s)) +} +function {:inline} $Update'$1_vesting_SetBeneficiaryEvent'_new_beneficiary(s: $1_vesting_SetBeneficiaryEvent, x: int): $1_vesting_SetBeneficiaryEvent { + $1_vesting_SetBeneficiaryEvent($admin#$1_vesting_SetBeneficiaryEvent(s), $vesting_contract_address#$1_vesting_SetBeneficiaryEvent(s), $shareholder#$1_vesting_SetBeneficiaryEvent(s), $old_beneficiary#$1_vesting_SetBeneficiaryEvent(s), x) +} +function $IsValid'$1_vesting_SetBeneficiaryEvent'(s: $1_vesting_SetBeneficiaryEvent): bool { + $IsValid'address'($admin#$1_vesting_SetBeneficiaryEvent(s)) + && $IsValid'address'($vesting_contract_address#$1_vesting_SetBeneficiaryEvent(s)) + && $IsValid'address'($shareholder#$1_vesting_SetBeneficiaryEvent(s)) + && $IsValid'address'($old_beneficiary#$1_vesting_SetBeneficiaryEvent(s)) + && $IsValid'address'($new_beneficiary#$1_vesting_SetBeneficiaryEvent(s)) +} +function {:inline} $IsEqual'$1_vesting_SetBeneficiaryEvent'(s1: $1_vesting_SetBeneficiaryEvent, s2: $1_vesting_SetBeneficiaryEvent): bool { + s1 == s2 +} - // assert Not(Not(Gt($t2, 0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:130:9+33 - assume {:print "$at(3,6051,6084)"} true; - assert {:msg "assert_failed(3,6051,6084): function does not abort under this condition"} - !!($t2 > 0); +// struct vesting::StakingInfo at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:123:5+384 +type {:datatype} $1_vesting_StakingInfo; +function {:constructor} $1_vesting_StakingInfo($pool_address: int, $operator: int, $voter: int, $commission_percentage: int): $1_vesting_StakingInfo; +function {:inline} $Update'$1_vesting_StakingInfo'_pool_address(s: $1_vesting_StakingInfo, x: int): $1_vesting_StakingInfo { + $1_vesting_StakingInfo(x, $operator#$1_vesting_StakingInfo(s), $voter#$1_vesting_StakingInfo(s), $commission_percentage#$1_vesting_StakingInfo(s)) +} +function {:inline} $Update'$1_vesting_StakingInfo'_operator(s: $1_vesting_StakingInfo, x: int): $1_vesting_StakingInfo { + $1_vesting_StakingInfo($pool_address#$1_vesting_StakingInfo(s), x, $voter#$1_vesting_StakingInfo(s), $commission_percentage#$1_vesting_StakingInfo(s)) +} +function {:inline} $Update'$1_vesting_StakingInfo'_voter(s: $1_vesting_StakingInfo, x: int): $1_vesting_StakingInfo { + $1_vesting_StakingInfo($pool_address#$1_vesting_StakingInfo(s), $operator#$1_vesting_StakingInfo(s), x, $commission_percentage#$1_vesting_StakingInfo(s)) +} +function {:inline} $Update'$1_vesting_StakingInfo'_commission_percentage(s: $1_vesting_StakingInfo, x: int): $1_vesting_StakingInfo { + $1_vesting_StakingInfo($pool_address#$1_vesting_StakingInfo(s), $operator#$1_vesting_StakingInfo(s), $voter#$1_vesting_StakingInfo(s), x) +} +function $IsValid'$1_vesting_StakingInfo'(s: $1_vesting_StakingInfo): bool { + $IsValid'address'($pool_address#$1_vesting_StakingInfo(s)) + && $IsValid'address'($operator#$1_vesting_StakingInfo(s)) + && $IsValid'address'($voter#$1_vesting_StakingInfo(s)) + && $IsValid'u64'($commission_percentage#$1_vesting_StakingInfo(s)) +} +function {:inline} $IsEqual'$1_vesting_StakingInfo'(s1: $1_vesting_StakingInfo, s2: $1_vesting_StakingInfo): bool { + s1 == s2 +} - // assert Not(Not(exists[@45](0x1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:131:9+72 - assume {:print "$at(3,6093,6165)"} true; - assert {:msg "assert_failed(3,6093,6165): function does not abort under this condition"} - !!$ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory#45, 1); +// struct vesting::TerminateEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:236:5+112 +type {:datatype} $1_vesting_TerminateEvent; +function {:constructor} $1_vesting_TerminateEvent($admin: int, $vesting_contract_address: int): $1_vesting_TerminateEvent; +function {:inline} $Update'$1_vesting_TerminateEvent'_admin(s: $1_vesting_TerminateEvent, x: int): $1_vesting_TerminateEvent { + $1_vesting_TerminateEvent(x, $vesting_contract_address#$1_vesting_TerminateEvent(s)) +} +function {:inline} $Update'$1_vesting_TerminateEvent'_vesting_contract_address(s: $1_vesting_TerminateEvent, x: int): $1_vesting_TerminateEvent { + $1_vesting_TerminateEvent($admin#$1_vesting_TerminateEvent(s), x) +} +function $IsValid'$1_vesting_TerminateEvent'(s: $1_vesting_TerminateEvent): bool { + $IsValid'address'($admin#$1_vesting_TerminateEvent(s)) + && $IsValid'address'($vesting_contract_address#$1_vesting_TerminateEvent(s)) +} +function {:inline} $IsEqual'$1_vesting_TerminateEvent'(s1: $1_vesting_TerminateEvent, s2: $1_vesting_TerminateEvent): bool { + s1 == s2 +} - // assert Not(Not(Ge($t1, timestamp::$now_seconds[@45]()))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:132:9+62 - assume {:print "$at(3,6174,6236)"} true; - assert {:msg "assert_failed(3,6174,6236): function does not abort under this condition"} - !!($t1 >= $1_timestamp_$now_seconds($1_timestamp_CurrentTimeMicroseconds_$memory#45)); +// struct vesting::UnlockRewardsEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:215:5+176 +type {:datatype} $1_vesting_UnlockRewardsEvent; +function {:constructor} $1_vesting_UnlockRewardsEvent($admin: int, $vesting_contract_address: int, $staking_pool_address: int, $amount: int): $1_vesting_UnlockRewardsEvent; +function {:inline} $Update'$1_vesting_UnlockRewardsEvent'_admin(s: $1_vesting_UnlockRewardsEvent, x: int): $1_vesting_UnlockRewardsEvent { + $1_vesting_UnlockRewardsEvent(x, $vesting_contract_address#$1_vesting_UnlockRewardsEvent(s), $staking_pool_address#$1_vesting_UnlockRewardsEvent(s), $amount#$1_vesting_UnlockRewardsEvent(s)) +} +function {:inline} $Update'$1_vesting_UnlockRewardsEvent'_vesting_contract_address(s: $1_vesting_UnlockRewardsEvent, x: int): $1_vesting_UnlockRewardsEvent { + $1_vesting_UnlockRewardsEvent($admin#$1_vesting_UnlockRewardsEvent(s), x, $staking_pool_address#$1_vesting_UnlockRewardsEvent(s), $amount#$1_vesting_UnlockRewardsEvent(s)) +} +function {:inline} $Update'$1_vesting_UnlockRewardsEvent'_staking_pool_address(s: $1_vesting_UnlockRewardsEvent, x: int): $1_vesting_UnlockRewardsEvent { + $1_vesting_UnlockRewardsEvent($admin#$1_vesting_UnlockRewardsEvent(s), $vesting_contract_address#$1_vesting_UnlockRewardsEvent(s), x, $amount#$1_vesting_UnlockRewardsEvent(s)) +} +function {:inline} $Update'$1_vesting_UnlockRewardsEvent'_amount(s: $1_vesting_UnlockRewardsEvent, x: int): $1_vesting_UnlockRewardsEvent { + $1_vesting_UnlockRewardsEvent($admin#$1_vesting_UnlockRewardsEvent(s), $vesting_contract_address#$1_vesting_UnlockRewardsEvent(s), $staking_pool_address#$1_vesting_UnlockRewardsEvent(s), x) +} +function $IsValid'$1_vesting_UnlockRewardsEvent'(s: $1_vesting_UnlockRewardsEvent): bool { + $IsValid'address'($admin#$1_vesting_UnlockRewardsEvent(s)) + && $IsValid'address'($vesting_contract_address#$1_vesting_UnlockRewardsEvent(s)) + && $IsValid'address'($staking_pool_address#$1_vesting_UnlockRewardsEvent(s)) + && $IsValid'u64'($amount#$1_vesting_UnlockRewardsEvent(s)) +} +function {:inline} $IsEqual'$1_vesting_UnlockRewardsEvent'(s1: $1_vesting_UnlockRewardsEvent, s2: $1_vesting_UnlockRewardsEvent): bool { + s1 == s2 +} - // return $t18 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:132:9+62 - $ret0 := $t18; - return; +// struct vesting::UpdateOperatorEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:183:5+254 +type {:datatype} $1_vesting_UpdateOperatorEvent; +function {:constructor} $1_vesting_UpdateOperatorEvent($admin: int, $vesting_contract_address: int, $staking_pool_address: int, $old_operator: int, $new_operator: int, $commission_percentage: int): $1_vesting_UpdateOperatorEvent; +function {:inline} $Update'$1_vesting_UpdateOperatorEvent'_admin(s: $1_vesting_UpdateOperatorEvent, x: int): $1_vesting_UpdateOperatorEvent { + $1_vesting_UpdateOperatorEvent(x, $vesting_contract_address#$1_vesting_UpdateOperatorEvent(s), $staking_pool_address#$1_vesting_UpdateOperatorEvent(s), $old_operator#$1_vesting_UpdateOperatorEvent(s), $new_operator#$1_vesting_UpdateOperatorEvent(s), $commission_percentage#$1_vesting_UpdateOperatorEvent(s)) +} +function {:inline} $Update'$1_vesting_UpdateOperatorEvent'_vesting_contract_address(s: $1_vesting_UpdateOperatorEvent, x: int): $1_vesting_UpdateOperatorEvent { + $1_vesting_UpdateOperatorEvent($admin#$1_vesting_UpdateOperatorEvent(s), x, $staking_pool_address#$1_vesting_UpdateOperatorEvent(s), $old_operator#$1_vesting_UpdateOperatorEvent(s), $new_operator#$1_vesting_UpdateOperatorEvent(s), $commission_percentage#$1_vesting_UpdateOperatorEvent(s)) +} +function {:inline} $Update'$1_vesting_UpdateOperatorEvent'_staking_pool_address(s: $1_vesting_UpdateOperatorEvent, x: int): $1_vesting_UpdateOperatorEvent { + $1_vesting_UpdateOperatorEvent($admin#$1_vesting_UpdateOperatorEvent(s), $vesting_contract_address#$1_vesting_UpdateOperatorEvent(s), x, $old_operator#$1_vesting_UpdateOperatorEvent(s), $new_operator#$1_vesting_UpdateOperatorEvent(s), $commission_percentage#$1_vesting_UpdateOperatorEvent(s)) +} +function {:inline} $Update'$1_vesting_UpdateOperatorEvent'_old_operator(s: $1_vesting_UpdateOperatorEvent, x: int): $1_vesting_UpdateOperatorEvent { + $1_vesting_UpdateOperatorEvent($admin#$1_vesting_UpdateOperatorEvent(s), $vesting_contract_address#$1_vesting_UpdateOperatorEvent(s), $staking_pool_address#$1_vesting_UpdateOperatorEvent(s), x, $new_operator#$1_vesting_UpdateOperatorEvent(s), $commission_percentage#$1_vesting_UpdateOperatorEvent(s)) +} +function {:inline} $Update'$1_vesting_UpdateOperatorEvent'_new_operator(s: $1_vesting_UpdateOperatorEvent, x: int): $1_vesting_UpdateOperatorEvent { + $1_vesting_UpdateOperatorEvent($admin#$1_vesting_UpdateOperatorEvent(s), $vesting_contract_address#$1_vesting_UpdateOperatorEvent(s), $staking_pool_address#$1_vesting_UpdateOperatorEvent(s), $old_operator#$1_vesting_UpdateOperatorEvent(s), x, $commission_percentage#$1_vesting_UpdateOperatorEvent(s)) +} +function {:inline} $Update'$1_vesting_UpdateOperatorEvent'_commission_percentage(s: $1_vesting_UpdateOperatorEvent, x: int): $1_vesting_UpdateOperatorEvent { + $1_vesting_UpdateOperatorEvent($admin#$1_vesting_UpdateOperatorEvent(s), $vesting_contract_address#$1_vesting_UpdateOperatorEvent(s), $staking_pool_address#$1_vesting_UpdateOperatorEvent(s), $old_operator#$1_vesting_UpdateOperatorEvent(s), $new_operator#$1_vesting_UpdateOperatorEvent(s), x) +} +function $IsValid'$1_vesting_UpdateOperatorEvent'(s: $1_vesting_UpdateOperatorEvent): bool { + $IsValid'address'($admin#$1_vesting_UpdateOperatorEvent(s)) + && $IsValid'address'($vesting_contract_address#$1_vesting_UpdateOperatorEvent(s)) + && $IsValid'address'($staking_pool_address#$1_vesting_UpdateOperatorEvent(s)) + && $IsValid'address'($old_operator#$1_vesting_UpdateOperatorEvent(s)) + && $IsValid'address'($new_operator#$1_vesting_UpdateOperatorEvent(s)) + && $IsValid'u64'($commission_percentage#$1_vesting_UpdateOperatorEvent(s)) +} +function {:inline} $IsEqual'$1_vesting_UpdateOperatorEvent'(s1: $1_vesting_UpdateOperatorEvent, s2: $1_vesting_UpdateOperatorEvent): bool { + s1 == s2 +} - // label L10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:436:5+1 - assume {:print "$at(2,20823,20824)"} true; -L10: +// struct vesting::VestEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:222:5+195 +type {:datatype} $1_vesting_VestEvent; +function {:constructor} $1_vesting_VestEvent($admin: int, $vesting_contract_address: int, $staking_pool_address: int, $period_vested: int, $amount: int): $1_vesting_VestEvent; +function {:inline} $Update'$1_vesting_VestEvent'_admin(s: $1_vesting_VestEvent, x: int): $1_vesting_VestEvent { + $1_vesting_VestEvent(x, $vesting_contract_address#$1_vesting_VestEvent(s), $staking_pool_address#$1_vesting_VestEvent(s), $period_vested#$1_vesting_VestEvent(s), $amount#$1_vesting_VestEvent(s)) +} +function {:inline} $Update'$1_vesting_VestEvent'_vesting_contract_address(s: $1_vesting_VestEvent, x: int): $1_vesting_VestEvent { + $1_vesting_VestEvent($admin#$1_vesting_VestEvent(s), x, $staking_pool_address#$1_vesting_VestEvent(s), $period_vested#$1_vesting_VestEvent(s), $amount#$1_vesting_VestEvent(s)) +} +function {:inline} $Update'$1_vesting_VestEvent'_staking_pool_address(s: $1_vesting_VestEvent, x: int): $1_vesting_VestEvent { + $1_vesting_VestEvent($admin#$1_vesting_VestEvent(s), $vesting_contract_address#$1_vesting_VestEvent(s), x, $period_vested#$1_vesting_VestEvent(s), $amount#$1_vesting_VestEvent(s)) +} +function {:inline} $Update'$1_vesting_VestEvent'_period_vested(s: $1_vesting_VestEvent, x: int): $1_vesting_VestEvent { + $1_vesting_VestEvent($admin#$1_vesting_VestEvent(s), $vesting_contract_address#$1_vesting_VestEvent(s), $staking_pool_address#$1_vesting_VestEvent(s), x, $amount#$1_vesting_VestEvent(s)) +} +function {:inline} $Update'$1_vesting_VestEvent'_amount(s: $1_vesting_VestEvent, x: int): $1_vesting_VestEvent { + $1_vesting_VestEvent($admin#$1_vesting_VestEvent(s), $vesting_contract_address#$1_vesting_VestEvent(s), $staking_pool_address#$1_vesting_VestEvent(s), $period_vested#$1_vesting_VestEvent(s), x) +} +function $IsValid'$1_vesting_VestEvent'(s: $1_vesting_VestEvent): bool { + $IsValid'address'($admin#$1_vesting_VestEvent(s)) + && $IsValid'address'($vesting_contract_address#$1_vesting_VestEvent(s)) + && $IsValid'address'($staking_pool_address#$1_vesting_VestEvent(s)) + && $IsValid'u64'($period_vested#$1_vesting_VestEvent(s)) + && $IsValid'u64'($amount#$1_vesting_VestEvent(s)) +} +function {:inline} $IsEqual'$1_vesting_VestEvent'(s1: $1_vesting_VestEvent, s2: $1_vesting_VestEvent): bool { + s1 == s2 +} - // assert Or(Or(Or(Not(Gt(Len($t0), 0)), Not(Gt($t2, 0))), Not(exists[@45](0x1))), Not(Ge($t1, timestamp::$now_seconds[@45]()))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:124:5+399 - assume {:print "$at(3,5843,6242)"} true; - assert {:msg "assert_failed(3,5843,6242): abort not covered by any of the `aborts_if` clauses"} - (((!(LenVec($t0) > 0) || !($t2 > 0)) || !$ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory#45, 1)) || !($t1 >= $1_timestamp_$now_seconds($1_timestamp_CurrentTimeMicroseconds_$memory#45))); +// struct vesting::VestingAccountManagement at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:161:5+90 +type {:datatype} $1_vesting_VestingAccountManagement; +function {:constructor} $1_vesting_VestingAccountManagement($roles: Table int (int)): $1_vesting_VestingAccountManagement; +function {:inline} $Update'$1_vesting_VestingAccountManagement'_roles(s: $1_vesting_VestingAccountManagement, x: Table int (int)): $1_vesting_VestingAccountManagement { + $1_vesting_VestingAccountManagement(x) +} +function $IsValid'$1_vesting_VestingAccountManagement'(s: $1_vesting_VestingAccountManagement): bool { + $IsValid'$1_simple_map_SimpleMap'$1_string_String_address''($roles#$1_vesting_VestingAccountManagement(s)) +} +function {:inline} $IsEqual'$1_vesting_VestingAccountManagement'(s1: $1_vesting_VestingAccountManagement, s2: $1_vesting_VestingAccountManagement): bool { + $IsEqual'$1_simple_map_SimpleMap'$1_string_String_address''($roles#$1_vesting_VestingAccountManagement(s1), $roles#$1_vesting_VestingAccountManagement(s2))} +var $1_vesting_VestingAccountManagement_$memory: $Memory $1_vesting_VestingAccountManagement; - // abort($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:124:5+399 - $abort_code := $t4; - $abort_flag := true; - return; +// struct vesting::VestingContract at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:134:5+1189 +type {:datatype} $1_vesting_VestingContract; +function {:constructor} $1_vesting_VestingContract($state: int, $admin: int, $grant_pool: $1_pool_u64_Pool, $beneficiaries: Table int (int), $vesting_schedule: $1_vesting_VestingSchedule, $withdrawal_address: int, $staking: $1_vesting_StakingInfo, $remaining_grant: int, $signer_cap: $1_account_SignerCapability, $update_operator_events: $1_event_EventHandle'$1_vesting_UpdateOperatorEvent', $update_voter_events: $1_event_EventHandle'$1_vesting_UpdateVoterEvent', $reset_lockup_events: $1_event_EventHandle'$1_vesting_ResetLockupEvent', $set_beneficiary_events: $1_event_EventHandle'$1_vesting_SetBeneficiaryEvent', $unlock_rewards_events: $1_event_EventHandle'$1_vesting_UnlockRewardsEvent', $vest_events: $1_event_EventHandle'$1_vesting_VestEvent', $distribute_events: $1_event_EventHandle'$1_vesting_DistributeEvent', $terminate_events: $1_event_EventHandle'$1_vesting_TerminateEvent', $admin_withdraw_events: $1_event_EventHandle'$1_vesting_AdminWithdrawEvent'): $1_vesting_VestingContract; +function {:inline} $Update'$1_vesting_VestingContract'_state(s: $1_vesting_VestingContract, x: int): $1_vesting_VestingContract { + $1_vesting_VestingContract(x, $admin#$1_vesting_VestingContract(s), $grant_pool#$1_vesting_VestingContract(s), $beneficiaries#$1_vesting_VestingContract(s), $vesting_schedule#$1_vesting_VestingContract(s), $withdrawal_address#$1_vesting_VestingContract(s), $staking#$1_vesting_VestingContract(s), $remaining_grant#$1_vesting_VestingContract(s), $signer_cap#$1_vesting_VestingContract(s), $update_operator_events#$1_vesting_VestingContract(s), $update_voter_events#$1_vesting_VestingContract(s), $reset_lockup_events#$1_vesting_VestingContract(s), $set_beneficiary_events#$1_vesting_VestingContract(s), $unlock_rewards_events#$1_vesting_VestingContract(s), $vest_events#$1_vesting_VestingContract(s), $distribute_events#$1_vesting_VestingContract(s), $terminate_events#$1_vesting_VestingContract(s), $admin_withdraw_events#$1_vesting_VestingContract(s)) +} +function {:inline} $Update'$1_vesting_VestingContract'_admin(s: $1_vesting_VestingContract, x: int): $1_vesting_VestingContract { + $1_vesting_VestingContract($state#$1_vesting_VestingContract(s), x, $grant_pool#$1_vesting_VestingContract(s), $beneficiaries#$1_vesting_VestingContract(s), $vesting_schedule#$1_vesting_VestingContract(s), $withdrawal_address#$1_vesting_VestingContract(s), $staking#$1_vesting_VestingContract(s), $remaining_grant#$1_vesting_VestingContract(s), $signer_cap#$1_vesting_VestingContract(s), $update_operator_events#$1_vesting_VestingContract(s), $update_voter_events#$1_vesting_VestingContract(s), $reset_lockup_events#$1_vesting_VestingContract(s), $set_beneficiary_events#$1_vesting_VestingContract(s), $unlock_rewards_events#$1_vesting_VestingContract(s), $vest_events#$1_vesting_VestingContract(s), $distribute_events#$1_vesting_VestingContract(s), $terminate_events#$1_vesting_VestingContract(s), $admin_withdraw_events#$1_vesting_VestingContract(s)) +} +function {:inline} $Update'$1_vesting_VestingContract'_grant_pool(s: $1_vesting_VestingContract, x: $1_pool_u64_Pool): $1_vesting_VestingContract { + $1_vesting_VestingContract($state#$1_vesting_VestingContract(s), $admin#$1_vesting_VestingContract(s), x, $beneficiaries#$1_vesting_VestingContract(s), $vesting_schedule#$1_vesting_VestingContract(s), $withdrawal_address#$1_vesting_VestingContract(s), $staking#$1_vesting_VestingContract(s), $remaining_grant#$1_vesting_VestingContract(s), $signer_cap#$1_vesting_VestingContract(s), $update_operator_events#$1_vesting_VestingContract(s), $update_voter_events#$1_vesting_VestingContract(s), $reset_lockup_events#$1_vesting_VestingContract(s), $set_beneficiary_events#$1_vesting_VestingContract(s), $unlock_rewards_events#$1_vesting_VestingContract(s), $vest_events#$1_vesting_VestingContract(s), $distribute_events#$1_vesting_VestingContract(s), $terminate_events#$1_vesting_VestingContract(s), $admin_withdraw_events#$1_vesting_VestingContract(s)) +} +function {:inline} $Update'$1_vesting_VestingContract'_beneficiaries(s: $1_vesting_VestingContract, x: Table int (int)): $1_vesting_VestingContract { + $1_vesting_VestingContract($state#$1_vesting_VestingContract(s), $admin#$1_vesting_VestingContract(s), $grant_pool#$1_vesting_VestingContract(s), x, $vesting_schedule#$1_vesting_VestingContract(s), $withdrawal_address#$1_vesting_VestingContract(s), $staking#$1_vesting_VestingContract(s), $remaining_grant#$1_vesting_VestingContract(s), $signer_cap#$1_vesting_VestingContract(s), $update_operator_events#$1_vesting_VestingContract(s), $update_voter_events#$1_vesting_VestingContract(s), $reset_lockup_events#$1_vesting_VestingContract(s), $set_beneficiary_events#$1_vesting_VestingContract(s), $unlock_rewards_events#$1_vesting_VestingContract(s), $vest_events#$1_vesting_VestingContract(s), $distribute_events#$1_vesting_VestingContract(s), $terminate_events#$1_vesting_VestingContract(s), $admin_withdraw_events#$1_vesting_VestingContract(s)) +} +function {:inline} $Update'$1_vesting_VestingContract'_vesting_schedule(s: $1_vesting_VestingContract, x: $1_vesting_VestingSchedule): $1_vesting_VestingContract { + $1_vesting_VestingContract($state#$1_vesting_VestingContract(s), $admin#$1_vesting_VestingContract(s), $grant_pool#$1_vesting_VestingContract(s), $beneficiaries#$1_vesting_VestingContract(s), x, $withdrawal_address#$1_vesting_VestingContract(s), $staking#$1_vesting_VestingContract(s), $remaining_grant#$1_vesting_VestingContract(s), $signer_cap#$1_vesting_VestingContract(s), $update_operator_events#$1_vesting_VestingContract(s), $update_voter_events#$1_vesting_VestingContract(s), $reset_lockup_events#$1_vesting_VestingContract(s), $set_beneficiary_events#$1_vesting_VestingContract(s), $unlock_rewards_events#$1_vesting_VestingContract(s), $vest_events#$1_vesting_VestingContract(s), $distribute_events#$1_vesting_VestingContract(s), $terminate_events#$1_vesting_VestingContract(s), $admin_withdraw_events#$1_vesting_VestingContract(s)) +} +function {:inline} $Update'$1_vesting_VestingContract'_withdrawal_address(s: $1_vesting_VestingContract, x: int): $1_vesting_VestingContract { + $1_vesting_VestingContract($state#$1_vesting_VestingContract(s), $admin#$1_vesting_VestingContract(s), $grant_pool#$1_vesting_VestingContract(s), $beneficiaries#$1_vesting_VestingContract(s), $vesting_schedule#$1_vesting_VestingContract(s), x, $staking#$1_vesting_VestingContract(s), $remaining_grant#$1_vesting_VestingContract(s), $signer_cap#$1_vesting_VestingContract(s), $update_operator_events#$1_vesting_VestingContract(s), $update_voter_events#$1_vesting_VestingContract(s), $reset_lockup_events#$1_vesting_VestingContract(s), $set_beneficiary_events#$1_vesting_VestingContract(s), $unlock_rewards_events#$1_vesting_VestingContract(s), $vest_events#$1_vesting_VestingContract(s), $distribute_events#$1_vesting_VestingContract(s), $terminate_events#$1_vesting_VestingContract(s), $admin_withdraw_events#$1_vesting_VestingContract(s)) +} +function {:inline} $Update'$1_vesting_VestingContract'_staking(s: $1_vesting_VestingContract, x: $1_vesting_StakingInfo): $1_vesting_VestingContract { + $1_vesting_VestingContract($state#$1_vesting_VestingContract(s), $admin#$1_vesting_VestingContract(s), $grant_pool#$1_vesting_VestingContract(s), $beneficiaries#$1_vesting_VestingContract(s), $vesting_schedule#$1_vesting_VestingContract(s), $withdrawal_address#$1_vesting_VestingContract(s), x, $remaining_grant#$1_vesting_VestingContract(s), $signer_cap#$1_vesting_VestingContract(s), $update_operator_events#$1_vesting_VestingContract(s), $update_voter_events#$1_vesting_VestingContract(s), $reset_lockup_events#$1_vesting_VestingContract(s), $set_beneficiary_events#$1_vesting_VestingContract(s), $unlock_rewards_events#$1_vesting_VestingContract(s), $vest_events#$1_vesting_VestingContract(s), $distribute_events#$1_vesting_VestingContract(s), $terminate_events#$1_vesting_VestingContract(s), $admin_withdraw_events#$1_vesting_VestingContract(s)) +} +function {:inline} $Update'$1_vesting_VestingContract'_remaining_grant(s: $1_vesting_VestingContract, x: int): $1_vesting_VestingContract { + $1_vesting_VestingContract($state#$1_vesting_VestingContract(s), $admin#$1_vesting_VestingContract(s), $grant_pool#$1_vesting_VestingContract(s), $beneficiaries#$1_vesting_VestingContract(s), $vesting_schedule#$1_vesting_VestingContract(s), $withdrawal_address#$1_vesting_VestingContract(s), $staking#$1_vesting_VestingContract(s), x, $signer_cap#$1_vesting_VestingContract(s), $update_operator_events#$1_vesting_VestingContract(s), $update_voter_events#$1_vesting_VestingContract(s), $reset_lockup_events#$1_vesting_VestingContract(s), $set_beneficiary_events#$1_vesting_VestingContract(s), $unlock_rewards_events#$1_vesting_VestingContract(s), $vest_events#$1_vesting_VestingContract(s), $distribute_events#$1_vesting_VestingContract(s), $terminate_events#$1_vesting_VestingContract(s), $admin_withdraw_events#$1_vesting_VestingContract(s)) +} +function {:inline} $Update'$1_vesting_VestingContract'_signer_cap(s: $1_vesting_VestingContract, x: $1_account_SignerCapability): $1_vesting_VestingContract { + $1_vesting_VestingContract($state#$1_vesting_VestingContract(s), $admin#$1_vesting_VestingContract(s), $grant_pool#$1_vesting_VestingContract(s), $beneficiaries#$1_vesting_VestingContract(s), $vesting_schedule#$1_vesting_VestingContract(s), $withdrawal_address#$1_vesting_VestingContract(s), $staking#$1_vesting_VestingContract(s), $remaining_grant#$1_vesting_VestingContract(s), x, $update_operator_events#$1_vesting_VestingContract(s), $update_voter_events#$1_vesting_VestingContract(s), $reset_lockup_events#$1_vesting_VestingContract(s), $set_beneficiary_events#$1_vesting_VestingContract(s), $unlock_rewards_events#$1_vesting_VestingContract(s), $vest_events#$1_vesting_VestingContract(s), $distribute_events#$1_vesting_VestingContract(s), $terminate_events#$1_vesting_VestingContract(s), $admin_withdraw_events#$1_vesting_VestingContract(s)) +} +function {:inline} $Update'$1_vesting_VestingContract'_update_operator_events(s: $1_vesting_VestingContract, x: $1_event_EventHandle'$1_vesting_UpdateOperatorEvent'): $1_vesting_VestingContract { + $1_vesting_VestingContract($state#$1_vesting_VestingContract(s), $admin#$1_vesting_VestingContract(s), $grant_pool#$1_vesting_VestingContract(s), $beneficiaries#$1_vesting_VestingContract(s), $vesting_schedule#$1_vesting_VestingContract(s), $withdrawal_address#$1_vesting_VestingContract(s), $staking#$1_vesting_VestingContract(s), $remaining_grant#$1_vesting_VestingContract(s), $signer_cap#$1_vesting_VestingContract(s), x, $update_voter_events#$1_vesting_VestingContract(s), $reset_lockup_events#$1_vesting_VestingContract(s), $set_beneficiary_events#$1_vesting_VestingContract(s), $unlock_rewards_events#$1_vesting_VestingContract(s), $vest_events#$1_vesting_VestingContract(s), $distribute_events#$1_vesting_VestingContract(s), $terminate_events#$1_vesting_VestingContract(s), $admin_withdraw_events#$1_vesting_VestingContract(s)) +} +function {:inline} $Update'$1_vesting_VestingContract'_update_voter_events(s: $1_vesting_VestingContract, x: $1_event_EventHandle'$1_vesting_UpdateVoterEvent'): $1_vesting_VestingContract { + $1_vesting_VestingContract($state#$1_vesting_VestingContract(s), $admin#$1_vesting_VestingContract(s), $grant_pool#$1_vesting_VestingContract(s), $beneficiaries#$1_vesting_VestingContract(s), $vesting_schedule#$1_vesting_VestingContract(s), $withdrawal_address#$1_vesting_VestingContract(s), $staking#$1_vesting_VestingContract(s), $remaining_grant#$1_vesting_VestingContract(s), $signer_cap#$1_vesting_VestingContract(s), $update_operator_events#$1_vesting_VestingContract(s), x, $reset_lockup_events#$1_vesting_VestingContract(s), $set_beneficiary_events#$1_vesting_VestingContract(s), $unlock_rewards_events#$1_vesting_VestingContract(s), $vest_events#$1_vesting_VestingContract(s), $distribute_events#$1_vesting_VestingContract(s), $terminate_events#$1_vesting_VestingContract(s), $admin_withdraw_events#$1_vesting_VestingContract(s)) +} +function {:inline} $Update'$1_vesting_VestingContract'_reset_lockup_events(s: $1_vesting_VestingContract, x: $1_event_EventHandle'$1_vesting_ResetLockupEvent'): $1_vesting_VestingContract { + $1_vesting_VestingContract($state#$1_vesting_VestingContract(s), $admin#$1_vesting_VestingContract(s), $grant_pool#$1_vesting_VestingContract(s), $beneficiaries#$1_vesting_VestingContract(s), $vesting_schedule#$1_vesting_VestingContract(s), $withdrawal_address#$1_vesting_VestingContract(s), $staking#$1_vesting_VestingContract(s), $remaining_grant#$1_vesting_VestingContract(s), $signer_cap#$1_vesting_VestingContract(s), $update_operator_events#$1_vesting_VestingContract(s), $update_voter_events#$1_vesting_VestingContract(s), x, $set_beneficiary_events#$1_vesting_VestingContract(s), $unlock_rewards_events#$1_vesting_VestingContract(s), $vest_events#$1_vesting_VestingContract(s), $distribute_events#$1_vesting_VestingContract(s), $terminate_events#$1_vesting_VestingContract(s), $admin_withdraw_events#$1_vesting_VestingContract(s)) +} +function {:inline} $Update'$1_vesting_VestingContract'_set_beneficiary_events(s: $1_vesting_VestingContract, x: $1_event_EventHandle'$1_vesting_SetBeneficiaryEvent'): $1_vesting_VestingContract { + $1_vesting_VestingContract($state#$1_vesting_VestingContract(s), $admin#$1_vesting_VestingContract(s), $grant_pool#$1_vesting_VestingContract(s), $beneficiaries#$1_vesting_VestingContract(s), $vesting_schedule#$1_vesting_VestingContract(s), $withdrawal_address#$1_vesting_VestingContract(s), $staking#$1_vesting_VestingContract(s), $remaining_grant#$1_vesting_VestingContract(s), $signer_cap#$1_vesting_VestingContract(s), $update_operator_events#$1_vesting_VestingContract(s), $update_voter_events#$1_vesting_VestingContract(s), $reset_lockup_events#$1_vesting_VestingContract(s), x, $unlock_rewards_events#$1_vesting_VestingContract(s), $vest_events#$1_vesting_VestingContract(s), $distribute_events#$1_vesting_VestingContract(s), $terminate_events#$1_vesting_VestingContract(s), $admin_withdraw_events#$1_vesting_VestingContract(s)) +} +function {:inline} $Update'$1_vesting_VestingContract'_unlock_rewards_events(s: $1_vesting_VestingContract, x: $1_event_EventHandle'$1_vesting_UnlockRewardsEvent'): $1_vesting_VestingContract { + $1_vesting_VestingContract($state#$1_vesting_VestingContract(s), $admin#$1_vesting_VestingContract(s), $grant_pool#$1_vesting_VestingContract(s), $beneficiaries#$1_vesting_VestingContract(s), $vesting_schedule#$1_vesting_VestingContract(s), $withdrawal_address#$1_vesting_VestingContract(s), $staking#$1_vesting_VestingContract(s), $remaining_grant#$1_vesting_VestingContract(s), $signer_cap#$1_vesting_VestingContract(s), $update_operator_events#$1_vesting_VestingContract(s), $update_voter_events#$1_vesting_VestingContract(s), $reset_lockup_events#$1_vesting_VestingContract(s), $set_beneficiary_events#$1_vesting_VestingContract(s), x, $vest_events#$1_vesting_VestingContract(s), $distribute_events#$1_vesting_VestingContract(s), $terminate_events#$1_vesting_VestingContract(s), $admin_withdraw_events#$1_vesting_VestingContract(s)) +} +function {:inline} $Update'$1_vesting_VestingContract'_vest_events(s: $1_vesting_VestingContract, x: $1_event_EventHandle'$1_vesting_VestEvent'): $1_vesting_VestingContract { + $1_vesting_VestingContract($state#$1_vesting_VestingContract(s), $admin#$1_vesting_VestingContract(s), $grant_pool#$1_vesting_VestingContract(s), $beneficiaries#$1_vesting_VestingContract(s), $vesting_schedule#$1_vesting_VestingContract(s), $withdrawal_address#$1_vesting_VestingContract(s), $staking#$1_vesting_VestingContract(s), $remaining_grant#$1_vesting_VestingContract(s), $signer_cap#$1_vesting_VestingContract(s), $update_operator_events#$1_vesting_VestingContract(s), $update_voter_events#$1_vesting_VestingContract(s), $reset_lockup_events#$1_vesting_VestingContract(s), $set_beneficiary_events#$1_vesting_VestingContract(s), $unlock_rewards_events#$1_vesting_VestingContract(s), x, $distribute_events#$1_vesting_VestingContract(s), $terminate_events#$1_vesting_VestingContract(s), $admin_withdraw_events#$1_vesting_VestingContract(s)) +} +function {:inline} $Update'$1_vesting_VestingContract'_distribute_events(s: $1_vesting_VestingContract, x: $1_event_EventHandle'$1_vesting_DistributeEvent'): $1_vesting_VestingContract { + $1_vesting_VestingContract($state#$1_vesting_VestingContract(s), $admin#$1_vesting_VestingContract(s), $grant_pool#$1_vesting_VestingContract(s), $beneficiaries#$1_vesting_VestingContract(s), $vesting_schedule#$1_vesting_VestingContract(s), $withdrawal_address#$1_vesting_VestingContract(s), $staking#$1_vesting_VestingContract(s), $remaining_grant#$1_vesting_VestingContract(s), $signer_cap#$1_vesting_VestingContract(s), $update_operator_events#$1_vesting_VestingContract(s), $update_voter_events#$1_vesting_VestingContract(s), $reset_lockup_events#$1_vesting_VestingContract(s), $set_beneficiary_events#$1_vesting_VestingContract(s), $unlock_rewards_events#$1_vesting_VestingContract(s), $vest_events#$1_vesting_VestingContract(s), x, $terminate_events#$1_vesting_VestingContract(s), $admin_withdraw_events#$1_vesting_VestingContract(s)) +} +function {:inline} $Update'$1_vesting_VestingContract'_terminate_events(s: $1_vesting_VestingContract, x: $1_event_EventHandle'$1_vesting_TerminateEvent'): $1_vesting_VestingContract { + $1_vesting_VestingContract($state#$1_vesting_VestingContract(s), $admin#$1_vesting_VestingContract(s), $grant_pool#$1_vesting_VestingContract(s), $beneficiaries#$1_vesting_VestingContract(s), $vesting_schedule#$1_vesting_VestingContract(s), $withdrawal_address#$1_vesting_VestingContract(s), $staking#$1_vesting_VestingContract(s), $remaining_grant#$1_vesting_VestingContract(s), $signer_cap#$1_vesting_VestingContract(s), $update_operator_events#$1_vesting_VestingContract(s), $update_voter_events#$1_vesting_VestingContract(s), $reset_lockup_events#$1_vesting_VestingContract(s), $set_beneficiary_events#$1_vesting_VestingContract(s), $unlock_rewards_events#$1_vesting_VestingContract(s), $vest_events#$1_vesting_VestingContract(s), $distribute_events#$1_vesting_VestingContract(s), x, $admin_withdraw_events#$1_vesting_VestingContract(s)) +} +function {:inline} $Update'$1_vesting_VestingContract'_admin_withdraw_events(s: $1_vesting_VestingContract, x: $1_event_EventHandle'$1_vesting_AdminWithdrawEvent'): $1_vesting_VestingContract { + $1_vesting_VestingContract($state#$1_vesting_VestingContract(s), $admin#$1_vesting_VestingContract(s), $grant_pool#$1_vesting_VestingContract(s), $beneficiaries#$1_vesting_VestingContract(s), $vesting_schedule#$1_vesting_VestingContract(s), $withdrawal_address#$1_vesting_VestingContract(s), $staking#$1_vesting_VestingContract(s), $remaining_grant#$1_vesting_VestingContract(s), $signer_cap#$1_vesting_VestingContract(s), $update_operator_events#$1_vesting_VestingContract(s), $update_voter_events#$1_vesting_VestingContract(s), $reset_lockup_events#$1_vesting_VestingContract(s), $set_beneficiary_events#$1_vesting_VestingContract(s), $unlock_rewards_events#$1_vesting_VestingContract(s), $vest_events#$1_vesting_VestingContract(s), $distribute_events#$1_vesting_VestingContract(s), $terminate_events#$1_vesting_VestingContract(s), x) +} +function $IsValid'$1_vesting_VestingContract'(s: $1_vesting_VestingContract): bool { + $IsValid'u64'($state#$1_vesting_VestingContract(s)) + && $IsValid'address'($admin#$1_vesting_VestingContract(s)) + && $IsValid'$1_pool_u64_Pool'($grant_pool#$1_vesting_VestingContract(s)) + && $IsValid'$1_simple_map_SimpleMap'address_address''($beneficiaries#$1_vesting_VestingContract(s)) + && $IsValid'$1_vesting_VestingSchedule'($vesting_schedule#$1_vesting_VestingContract(s)) + && $IsValid'address'($withdrawal_address#$1_vesting_VestingContract(s)) + && $IsValid'$1_vesting_StakingInfo'($staking#$1_vesting_VestingContract(s)) + && $IsValid'u64'($remaining_grant#$1_vesting_VestingContract(s)) + && $IsValid'$1_account_SignerCapability'($signer_cap#$1_vesting_VestingContract(s)) + && $IsValid'$1_event_EventHandle'$1_vesting_UpdateOperatorEvent''($update_operator_events#$1_vesting_VestingContract(s)) + && $IsValid'$1_event_EventHandle'$1_vesting_UpdateVoterEvent''($update_voter_events#$1_vesting_VestingContract(s)) + && $IsValid'$1_event_EventHandle'$1_vesting_ResetLockupEvent''($reset_lockup_events#$1_vesting_VestingContract(s)) + && $IsValid'$1_event_EventHandle'$1_vesting_SetBeneficiaryEvent''($set_beneficiary_events#$1_vesting_VestingContract(s)) + && $IsValid'$1_event_EventHandle'$1_vesting_UnlockRewardsEvent''($unlock_rewards_events#$1_vesting_VestingContract(s)) + && $IsValid'$1_event_EventHandle'$1_vesting_VestEvent''($vest_events#$1_vesting_VestingContract(s)) + && $IsValid'$1_event_EventHandle'$1_vesting_DistributeEvent''($distribute_events#$1_vesting_VestingContract(s)) + && $IsValid'$1_event_EventHandle'$1_vesting_TerminateEvent''($terminate_events#$1_vesting_VestingContract(s)) + && $IsValid'$1_event_EventHandle'$1_vesting_AdminWithdrawEvent''($admin_withdraw_events#$1_vesting_VestingContract(s)) +} +function {:inline} $IsEqual'$1_vesting_VestingContract'(s1: $1_vesting_VestingContract, s2: $1_vesting_VestingContract): bool { + $IsEqual'u64'($state#$1_vesting_VestingContract(s1), $state#$1_vesting_VestingContract(s2)) + && $IsEqual'address'($admin#$1_vesting_VestingContract(s1), $admin#$1_vesting_VestingContract(s2)) + && $IsEqual'$1_pool_u64_Pool'($grant_pool#$1_vesting_VestingContract(s1), $grant_pool#$1_vesting_VestingContract(s2)) + && $IsEqual'$1_simple_map_SimpleMap'address_address''($beneficiaries#$1_vesting_VestingContract(s1), $beneficiaries#$1_vesting_VestingContract(s2)) + && $IsEqual'$1_vesting_VestingSchedule'($vesting_schedule#$1_vesting_VestingContract(s1), $vesting_schedule#$1_vesting_VestingContract(s2)) + && $IsEqual'address'($withdrawal_address#$1_vesting_VestingContract(s1), $withdrawal_address#$1_vesting_VestingContract(s2)) + && $IsEqual'$1_vesting_StakingInfo'($staking#$1_vesting_VestingContract(s1), $staking#$1_vesting_VestingContract(s2)) + && $IsEqual'u64'($remaining_grant#$1_vesting_VestingContract(s1), $remaining_grant#$1_vesting_VestingContract(s2)) + && $IsEqual'$1_account_SignerCapability'($signer_cap#$1_vesting_VestingContract(s1), $signer_cap#$1_vesting_VestingContract(s2)) + && $IsEqual'$1_event_EventHandle'$1_vesting_UpdateOperatorEvent''($update_operator_events#$1_vesting_VestingContract(s1), $update_operator_events#$1_vesting_VestingContract(s2)) + && $IsEqual'$1_event_EventHandle'$1_vesting_UpdateVoterEvent''($update_voter_events#$1_vesting_VestingContract(s1), $update_voter_events#$1_vesting_VestingContract(s2)) + && $IsEqual'$1_event_EventHandle'$1_vesting_ResetLockupEvent''($reset_lockup_events#$1_vesting_VestingContract(s1), $reset_lockup_events#$1_vesting_VestingContract(s2)) + && $IsEqual'$1_event_EventHandle'$1_vesting_SetBeneficiaryEvent''($set_beneficiary_events#$1_vesting_VestingContract(s1), $set_beneficiary_events#$1_vesting_VestingContract(s2)) + && $IsEqual'$1_event_EventHandle'$1_vesting_UnlockRewardsEvent''($unlock_rewards_events#$1_vesting_VestingContract(s1), $unlock_rewards_events#$1_vesting_VestingContract(s2)) + && $IsEqual'$1_event_EventHandle'$1_vesting_VestEvent''($vest_events#$1_vesting_VestingContract(s1), $vest_events#$1_vesting_VestingContract(s2)) + && $IsEqual'$1_event_EventHandle'$1_vesting_DistributeEvent''($distribute_events#$1_vesting_VestingContract(s1), $distribute_events#$1_vesting_VestingContract(s2)) + && $IsEqual'$1_event_EventHandle'$1_vesting_TerminateEvent''($terminate_events#$1_vesting_VestingContract(s1), $terminate_events#$1_vesting_VestingContract(s2)) + && $IsEqual'$1_event_EventHandle'$1_vesting_AdminWithdrawEvent''($admin_withdraw_events#$1_vesting_VestingContract(s1), $admin_withdraw_events#$1_vesting_VestingContract(s2))} +var $1_vesting_VestingContract_$memory: $Memory $1_vesting_VestingContract; +// struct vesting::VestingSchedule at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:106:5+1037 +type {:datatype} $1_vesting_VestingSchedule; +function {:constructor} $1_vesting_VestingSchedule($schedule: Vec ($1_fixed_point32_FixedPoint32), $start_timestamp_secs: int, $period_duration: int, $last_vested_period: int): $1_vesting_VestingSchedule; +function {:inline} $Update'$1_vesting_VestingSchedule'_schedule(s: $1_vesting_VestingSchedule, x: Vec ($1_fixed_point32_FixedPoint32)): $1_vesting_VestingSchedule { + $1_vesting_VestingSchedule(x, $start_timestamp_secs#$1_vesting_VestingSchedule(s), $period_duration#$1_vesting_VestingSchedule(s), $last_vested_period#$1_vesting_VestingSchedule(s)) } +function {:inline} $Update'$1_vesting_VestingSchedule'_start_timestamp_secs(s: $1_vesting_VestingSchedule, x: int): $1_vesting_VestingSchedule { + $1_vesting_VestingSchedule($schedule#$1_vesting_VestingSchedule(s), x, $period_duration#$1_vesting_VestingSchedule(s), $last_vested_period#$1_vesting_VestingSchedule(s)) +} +function {:inline} $Update'$1_vesting_VestingSchedule'_period_duration(s: $1_vesting_VestingSchedule, x: int): $1_vesting_VestingSchedule { + $1_vesting_VestingSchedule($schedule#$1_vesting_VestingSchedule(s), $start_timestamp_secs#$1_vesting_VestingSchedule(s), x, $last_vested_period#$1_vesting_VestingSchedule(s)) +} +function {:inline} $Update'$1_vesting_VestingSchedule'_last_vested_period(s: $1_vesting_VestingSchedule, x: int): $1_vesting_VestingSchedule { + $1_vesting_VestingSchedule($schedule#$1_vesting_VestingSchedule(s), $start_timestamp_secs#$1_vesting_VestingSchedule(s), $period_duration#$1_vesting_VestingSchedule(s), x) +} +function $IsValid'$1_vesting_VestingSchedule'(s: $1_vesting_VestingSchedule): bool { + $IsValid'vec'$1_fixed_point32_FixedPoint32''($schedule#$1_vesting_VestingSchedule(s)) + && $IsValid'u64'($start_timestamp_secs#$1_vesting_VestingSchedule(s)) + && $IsValid'u64'($period_duration#$1_vesting_VestingSchedule(s)) + && $IsValid'u64'($last_vested_period#$1_vesting_VestingSchedule(s)) +} +function {:inline} $IsEqual'$1_vesting_VestingSchedule'(s1: $1_vesting_VestingSchedule, s2: $1_vesting_VestingSchedule): bool { + $IsEqual'vec'$1_fixed_point32_FixedPoint32''($schedule#$1_vesting_VestingSchedule(s1), $schedule#$1_vesting_VestingSchedule(s2)) + && $IsEqual'u64'($start_timestamp_secs#$1_vesting_VestingSchedule(s1), $start_timestamp_secs#$1_vesting_VestingSchedule(s2)) + && $IsEqual'u64'($period_duration#$1_vesting_VestingSchedule(s1), $period_duration#$1_vesting_VestingSchedule(s2)) + && $IsEqual'u64'($last_vested_period#$1_vesting_VestingSchedule(s1), $last_vested_period#$1_vesting_VestingSchedule(s2))} -// fun vesting::distribute_many [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:664:5+420 -procedure {:timeLimit 1000} $1_vesting_distribute_many$verify(_$t0: Vec (int)) returns () +// fun vesting::operator [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:321:5+244 +procedure {:timeLimit 900} $1_vesting_operator$verify(_$t0: int) returns ($ret0: int) { // declare local variables var $t1: int; - var $t2: int; - var $t3: Vec (int); + var $t2: $1_vesting_VestingContract; + var $t3: $1_vesting_StakingInfo; var $t4: int; - var $t5: int; - var $t6: int; - var $t7: bool; - var $t8: int; - var $t9: int; - var $t10: int; - var $t11: int; - var $t12: bool; - var $t13: int; - var $t14: int; - var $t15: int; - var $t16: $1_vesting_VestingContract; - var $t17: $1_vesting_VestingContract; - var $t18: int; - var $t19: $1_staking_contract_Store; - var $t20: $1_staking_contract_StakingContract; - var $t21: Table int ($1_staking_contract_StakingContract); - var $t22: int; - var $t23: $1_stake_StakePool; - var $t24: int; - var $t25: int; - var $t26: int; - var $t27: int; - var $t28: $1_stake_StakePool; - var $t29: $1_stake_ValidatorSet; - var $t30: bool; - var $t31: int; - var $t32: int; - var $t33: int; - var $t0: Vec (int); - var $temp_0'u64': int; - var $temp_0'vec'address'': Vec (int); + var $t0: int; + var $temp_0'address': int; + var $1_vesting_VestingContract_$memory#35: $Memory $1_vesting_VestingContract; $t0 := _$t0; // verification entrypoint assumptions call $InitVerification(); // bytecode translation starts here - // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:664:5+1 - assume {:print "$at(2,31507,31508)"} true; - assume $IsValid'vec'address''($t0); - - // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.rotation_capability_offer($rsc)))), 1), Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.signer_capability_offer($rsc)))), 1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:664:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_account_Account_$memory, $a_0)}(var $rsc := $ResourceValue($1_account_Account_$memory, $a_0); - (($IsValid'$1_account_Account'($rsc) && ((LenVec($vec#$1_option_Option'address'($for#$1_account_CapabilityOffer'$1_account_RotationCapability'($rotation_capability_offer#$1_account_Account($rsc)))) <= 1) && (LenVec($vec#$1_option_Option'address'($for#$1_account_CapabilityOffer'$1_account_SignerCapability'($signer_capability_offer#$1_account_Account($rsc)))) <= 1)))))); - - // assume forall $rsc: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: select option::Option.vec(select coin::CoinInfo.supply($rsc)): And(And(And(And(And(Iff(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($elem)), option::$is_none(select optional_aggregator::OptionalAggregator.integer($elem))), Iff(option::$is_some(select optional_aggregator::OptionalAggregator.integer($elem)), option::$is_none(select optional_aggregator::OptionalAggregator.aggregator($elem)))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.integer($elem)), Le(select optional_aggregator::Integer.value(option::$borrow(select optional_aggregator::OptionalAggregator.integer($elem))), select optional_aggregator::Integer.limit(option::$borrow(select optional_aggregator::OptionalAggregator.integer($elem)))))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($elem)), Le(aggregator::spec_aggregator_get_val(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($elem))), aggregator::spec_get_limit(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($elem)))))), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.aggregator($elem))), 1)), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.integer($elem))), 1)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:664:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $a_0); - (($IsValid'$1_coin_CoinInfo'$1_aptos_coin_AptosCoin''($rsc) && ((LenVec($vec#$1_option_Option'$1_optional_aggregator_OptionalAggregator'($supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($rsc))) <= 1) && (var $range_1 := $vec#$1_option_Option'$1_optional_aggregator_OptionalAggregator'($supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($rsc)); (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); - ((((((($1_option_$is_some'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)) <==> $1_option_$is_none'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)) ==> ($value#$1_optional_aggregator_Integer($1_option_$borrow'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) <= $limit#$1_optional_aggregator_Integer($1_option_$borrow'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)))))) && ($1_option_$is_some'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem))) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)))))) && (LenVec($vec#$1_option_Option'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem))) <= 1)) && (LenVec($vec#$1_option_Option'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) <= 1))))))))))); - - // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:664:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $a_0); - ($IsValid'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''($rsc)))); - - // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:664:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $a_0); - ($IsValid'$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin''($rsc)))); - - // assume exists>(0x0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:664:5+1 - assume $ResourceExists($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, 0); - - // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:664:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, $a_0); - ($IsValid'$1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin''($rsc)))); - - // assume exists>(0x0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:664:5+1 - assume $ResourceExists($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, 0); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:664:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_aptos_account_DirectTransferConfig_$memory, $a_0)}(var $rsc := $ResourceValue($1_aptos_account_DirectTransferConfig_$memory, $a_0); - ($IsValid'$1_aptos_account_DirectTransferConfig'($rsc)))); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:664:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_chain_status_GenesisEndMarker_$memory, $a_0)}(var $rsc := $ResourceValue($1_chain_status_GenesisEndMarker_$memory, $a_0); - ($IsValid'$1_chain_status_GenesisEndMarker'($rsc)))); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:664:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_timestamp_CurrentTimeMicroseconds_$memory, $a_0)}(var $rsc := $ResourceValue($1_timestamp_CurrentTimeMicroseconds_$memory, $a_0); - ($IsValid'$1_timestamp_CurrentTimeMicroseconds'($rsc)))); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:664:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_stake_StakePool_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_StakePool_$memory, $a_0); - ($IsValid'$1_stake_StakePool'($rsc)))); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:664:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorConfig_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorConfig_$memory, $a_0); - ($IsValid'$1_stake_ValidatorConfig'($rsc)))); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:664:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorPerformance_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorPerformance_$memory, $a_0); - ($IsValid'$1_stake_ValidatorPerformance'($rsc)))); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:664:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorSet_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorSet_$memory, $a_0); - ($IsValid'$1_stake_ValidatorSet'($rsc)))); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:664:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_reconfiguration_Configuration_$memory, $a_0)}(var $rsc := $ResourceValue($1_reconfiguration_Configuration_$memory, $a_0); - ($IsValid'$1_reconfiguration_Configuration'($rsc)))); - - // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), forall $key: select staking_contract::Store.staking_contracts($rsc): And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), i), Index(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:664:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_staking_contract_Store_$memory, $a_0)}(var $rsc := $ResourceValue($1_staking_contract_Store_$memory, $a_0); - (($IsValid'$1_staking_contract_Store'($rsc) && (var $range_1 := $staking_contracts#$1_staking_contract_Store($rsc); (forall $key: int :: ContainsTable($range_1, $EncodeKey'address'($key)) ==> (((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), addr)))) && (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))))); (var $range_3 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))))); (forall $i_4: int, $i_5: int :: $InRange($range_2, $i_4) ==> $InRange($range_3, $i_5) ==> (var i := $i_4; - (var j := $i_5; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), i), ReadVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), j)) ==> $IsEqual'num'(i, j)))))))))))))))); - - // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:664:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); - (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; - (var j := $i_4; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); - - // assume Implies(chain_status::$is_operating(), exists(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:664:5+420 - // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.spec.move:4:9+93 - assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory, 1)); - - // assume Implies(exists(0x1), stake::validator_set_is_valid()) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:664:5+420 - // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:8:9+92 - assume ($ResourceExists($1_stake_ValidatorSet_$memory, 1) ==> $1_stake_validator_set_is_valid($1_stake_StakePool_$memory, $1_stake_ValidatorConfig_$memory, $1_stake_ValidatorPerformance_$memory, $1_stake_ValidatorSet_$memory)); - - // assume Implies(chain_status::$is_operating(), exists(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:664:5+420 - // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:12:9+96 - assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_stake_ValidatorSet_$memory, 1)); - - // assume Implies(chain_status::$is_operating(), Ge(timestamp::spec_now_microseconds(), reconfiguration::$last_reconfiguration_time())) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:664:5+420 - // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/reconfiguration.spec.move:8:9+137 - assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> ($1_timestamp_spec_now_microseconds($1_timestamp_CurrentTimeMicroseconds_$memory) >= $1_reconfiguration_$last_reconfiguration_time($1_reconfiguration_Configuration_$memory))); - - // trace_local[contract_addresses]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:664:5+1 - assume {:print "$track_local(57,9,0):", $t0} $t0 == $t0; - - // $t4 := vector::length
($t0) on_abort goto L9 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:665:19+35 - assume {:print "$at(2,31622,31657)"} true; - call $t4 := $1_vector_length'address'($t0); - if ($abort_flag) { - assume {:print "$at(2,31622,31657)"} true; - $t5 := $abort_code; - assume {:print "$track_abort(57,9):", $t5} $t5 == $t5; - goto L9; - } - - // $t6 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:667:24+1 - assume {:print "$at(2,31683,31684)"} true; - $t6 := 0; - assume $IsValid'u64'($t6); - - // $t7 := !=($t4, $t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:667:21+2 - $t7 := !$IsEqual'u64'($t4, $t6); - - // if ($t7) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:667:9+72 - if ($t7) { goto L1; } else { goto L0; } - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:667:9+72 -L1: - - // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:667:9+72 - assume {:print "$at(2,31668,31740)"} true; - goto L2; - - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:667:51+28 -L0: - - // $t8 := 16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:667:51+28 - assume {:print "$at(2,31710,31738)"} true; - $t8 := 16; - assume $IsValid'u64'($t8); - - // $t9 := error::invalid_argument($t8) on_abort goto L9 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:667:27+53 - call $t9 := $1_error_invalid_argument($t8); - if ($abort_flag) { - assume {:print "$at(2,31686,31739)"} true; - $t5 := $abort_code; - assume {:print "$track_abort(57,9):", $t5} $t5 == $t5; - goto L9; - } - - // trace_abort($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:667:9+72 - assume {:print "$at(2,31668,31740)"} true; - assume {:print "$track_abort(57,9):", $t9} $t9 == $t9; - - // $t5 := move($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:667:9+72 - $t5 := $t9; - - // goto L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:667:9+72 - goto L9; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:669:30+19 - assume {:print "$at(2,31772,31791)"} true; -L2: + // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:321:5+1 + assume {:print "$at(2,14901,14902)"} true; + assume $IsValid'address'($t0); - // trace_local[v#245]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:669:9+169 - assume {:print "$at(2,31751,31920)"} true; - assume {:print "$track_local(57,9,3):", $t0} $t0 == $t0; + // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:321:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); + (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; + (var j := $i_4; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); - // $t10 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:261:17+1 - assume {:print "$at(18,9246,9247)"} true; - $t10 := 0; - assume $IsValid'u64'($t10); + // @35 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:321:5+1 + $1_vesting_VestingContract_$memory#35 := $1_vesting_VestingContract_$memory; - // trace_local[i#247]($t10) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:261:13+1 - assume {:print "$track_local(57,9,1):", $t10} $t10 == $t10; + // trace_local[vesting_contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:321:5+1 + assume {:print "$track_local(59,14,0):", $t0} $t0 == $t0; - // $t11 := vector::length
($t0) on_abort goto L9 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:262:19+9 - assume {:print "$at(18,9267,9276)"} true; - call $t11 := $1_vector_length'address'($t0); + // vesting::assert_vesting_contract_exists($t0) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:322:9+56 + assume {:print "$at(2,15000,15056)"} true; + call $1_vesting_assert_vesting_contract_exists($t0); if ($abort_flag) { - assume {:print "$at(18,9267,9276)"} true; - $t5 := $abort_code; - assume {:print "$track_abort(57,9):", $t5} $t5 == $t5; - goto L9; + assume {:print "$at(2,15000,15056)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(59,14):", $t1} $t1 == $t1; + goto L2; } - // trace_local[len#248]($t11) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:262:13+3 - assume {:print "$track_local(57,9,2):", $t11} $t11 == $t11; + // $t2 := get_global($t0) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:323:9+13 + assume {:print "$at(2,15066,15079)"} true; + if (!$ResourceExists($1_vesting_VestingContract_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t2 := $ResourceValue($1_vesting_VestingContract_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(2,15066,15079)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(59,14):", $t1} $t1 == $t1; + goto L2; + } - // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume {:print "$at(18,9293,9294)"} true; -L6: + // $t3 := get_field.staking($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:323:9+64 + $t3 := $staking#$1_vesting_VestingContract($t2); - // $t1 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume {:print "$at(18,9293,9294)"} true; - havoc $t1; + // $t4 := get_field.operator($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:323:9+73 + $t4 := $operator#$1_vesting_StakingInfo($t3); - // assume WellFormed($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume $IsValid'u64'($t1); + // trace_return[0]($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:323:9+73 + assume {:print "$track_return(59,14,0):", $t4} $t4 == $t4; - // $t12 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - havoc $t12; + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:324:5+1 + assume {:print "$at(2,15144,15145)"} true; +L1: - // assume WellFormed($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume $IsValid'bool'($t12); + // assert Not(Not(exists[@35]($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:36:9+61 + assume {:print "$at(3,1205,1266)"} true; + assert {:msg "assert_failed(3,1205,1266): function does not abort under this condition"} + !!$ResourceExists($1_vesting_VestingContract_$memory#35, $t0); - // $t13 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - havoc $t13; + // return $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:36:9+61 + $ret0 := $t4; + return; - // assume WellFormed($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume $IsValid'address'($t13); + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:324:5+1 + assume {:print "$at(2,15144,15145)"} true; +L2: - // $t14 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - havoc $t14; + // assert Not(exists[@35]($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:35:5+135 + assume {:print "$at(3,1137,1272)"} true; + assert {:msg "assert_failed(3,1137,1272): abort not covered by any of the `aborts_if` clauses"} + !$ResourceExists($1_vesting_VestingContract_$memory#35, $t0); - // assume WellFormed($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume $IsValid'u64'($t14); + // abort($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:35:5+135 + $abort_code := $t1; + $abort_flag := true; + return; - // $t15 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - havoc $t15; +} - // assume WellFormed($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume $IsValid'u64'($t15); +// fun vesting::voter [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:331:5+238 +procedure {:timeLimit 900} $1_vesting_voter$verify(_$t0: int) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: $1_vesting_VestingContract; + var $t3: $1_vesting_StakingInfo; + var $t4: int; + var $t0: int; + var $temp_0'address': int; + var $1_vesting_VestingContract_$memory#34: $Memory $1_vesting_VestingContract; + $t0 := _$t0; - // trace_local[i#247]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume {:print "$info(): enter loop, variable(s) i#247 havocked and reassigned"} true; - assume {:print "$track_local(57,9,1):", $t1} $t1 == $t1; + // verification entrypoint assumptions + call $InitVerification(); - // assume Not(AbortFlag()) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume !$abort_flag; + // bytecode translation starts here + // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:331:5+1 + assume {:print "$at(2,15393,15394)"} true; + assume $IsValid'address'($t0); - // $t12 := <($t1, $t11) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:18+1 - call $t12 := $Lt($t1, $t11); + // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:331:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); + (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; + (var j := $i_4; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); - // if ($t12) goto L4 else goto L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:9+78 - if ($t12) { goto L4; } else { goto L3; } + // @34 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:331:5+1 + $1_vesting_VestingContract_$memory#34 := $1_vesting_VestingContract_$memory; - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:9+78 -L4: + // trace_local[vesting_contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:331:5+1 + assume {:print "$track_local(59,40,0):", $t0} $t0 == $t0; - // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:264:22+1 - assume {:print "$at(18,9325,9326)"} true; -L5: + // vesting::assert_vesting_contract_exists($t0) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:332:9+56 + assume {:print "$at(2,15489,15545)"} true; + call $1_vesting_assert_vesting_contract_exists($t0); + if ($abort_flag) { + assume {:print "$at(2,15489,15545)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(59,40):", $t1} $t1 == $t1; + goto L2; + } - // $t13 := vector::borrow
($t0, $t1) on_abort goto L9 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:264:15+12 - assume {:print "$at(18,9318,9330)"} true; - call $t13 := $1_vector_borrow'address'($t0, $t1); + // $t2 := get_global($t0) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:333:9+13 + assume {:print "$at(2,15555,15568)"} true; + if (!$ResourceExists($1_vesting_VestingContract_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t2 := $ResourceValue($1_vesting_VestingContract_$memory, $t0); + } if ($abort_flag) { - assume {:print "$at(18,9318,9330)"} true; - $t5 := $abort_code; - assume {:print "$track_abort(57,9):", $t5} $t5 == $t5; - goto L9; + assume {:print "$at(2,15555,15568)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(59,40):", $t1} $t1 == $t1; + goto L2; } - // assume Identical($t16, global($t13)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:213:9+65 - assume {:print "$at(3,9717,9782)"} true; - assume ($t16 == $ResourceValue($1_vesting_VestingContract_$memory, $t13)); + // $t3 := get_field.staking($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:333:9+64 + $t3 := $staking#$1_vesting_VestingContract($t2); - // assume Identical($t17, global($t13)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:518:9+65 - assume {:print "$at(3,23036,23101)"} true; - assume ($t17 == $ResourceValue($1_vesting_VestingContract_$memory, $t13)); + // $t4 := get_field.voter($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:333:9+70 + $t4 := $voter#$1_vesting_StakingInfo($t3); - // assume Identical($t18, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t16))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:455:9+49 - assume {:print "$at(3,19684,19733)"} true; - assume ($t18 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t16))); + // trace_return[0]($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:333:9+70 + assume {:print "$track_return(59,40,0):", $t4} $t4 == $t4; - // assume Identical($t19, global($t13)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:459:9+62 - assume {:print "$at(3,19898,19960)"} true; - assume ($t19 == $ResourceValue($1_staking_contract_Store_$memory, $t13)); + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:334:5+1 + assume {:print "$at(2,15630,15631)"} true; +L1: - // assume Identical($t20, simple_map::spec_get(select staking_contract::Store.staking_contracts($t19), $t18)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:460:9+79 - assume {:print "$at(3,19969,20048)"} true; - assume ($t20 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($t19), $t18)); + // assert Not(Not(exists[@34]($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:40:9+61 + assume {:print "$at(3,1343,1404)"} true; + assert {:msg "assert_failed(3,1343,1404): function does not abort under this condition"} + !!$ResourceExists($1_vesting_VestingContract_$memory#34, $t0); - // assume Identical($t21, select staking_contract::Store.staking_contracts(global($t13))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 - assume {:print "$at(134,11481,11545)"} true; - assume ($t21 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t13))); + // return $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:40:9+61 + $ret0 := $t4; + return; - // assume Identical($t22, select staking_contract::StakingContract.pool_address($t20)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:470:9+49 - assume {:print "$at(3,20547,20596)"} true; - assume ($t22 == $pool_address#$1_staking_contract_StakingContract($t20)); + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:334:5+1 + assume {:print "$at(2,15630,15631)"} true; +L2: - // assume Identical($t23, global($t22)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:472:9+56 - assume {:print "$at(3,20664,20720)"} true; - assume ($t23 == $ResourceValue($1_stake_StakePool_$memory, $t22)); + // assert Not(exists[@34]($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:39:5+132 + assume {:print "$at(3,1278,1410)"} true; + assert {:msg "assert_failed(3,1278,1410): abort not covered by any of the `aborts_if` clauses"} + !$ResourceExists($1_vesting_VestingContract_$memory#34, $t0); - // assume Identical($t24, select coin::Coin.value(select stake::StakePool.inactive($t23))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:473:9+41 - assume {:print "$at(3,20729,20770)"} true; - assume ($t24 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t23))); + // abort($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:39:5+132 + $abort_code := $t1; + $abort_flag := true; + return; - // assume Identical($t25, select coin::Coin.value(select stake::StakePool.pending_inactive($t23))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:474:9+57 - assume {:print "$at(3,20779,20836)"} true; - assume ($t25 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t23))); +} - // assume Identical($t26, Add($t24, $t25)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:478:9+63 - assume {:print "$at(3,20948,21011)"} true; - assume ($t26 == ($t24 + $t25)); +// fun vesting::shareholder [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:396:5+811 +procedure {:timeLimit 900} $1_vesting_shareholder$verify(_$t0: int, _$t1: int) returns ($ret0: int) +{ + // declare local variables + var $t2: Vec (int); + var $t3: bool; + var $t4: int; + var $t5: int; + var $t6: bool; + var $t7: int; + var $t8: Vec (int); + var $t9: Vec (int); + var $t10: $1_vesting_VestingContract; + var $t11: $1_vesting_VestingContract; + var $t12: $1_vesting_VestingContract; + var $t13: int; + var $t14: $1_vesting_VestingContract; + var $t15: Vec (int); + var $t16: bool; + var $t17: int; + var $t18: $1_vesting_VestingContract; + var $t19: int; + var $t20: bool; + var $t21: int; + var $t22: int; + var $t23: bool; + var $t24: int; + var $t25: int; + var $t26: bool; + var $t27: bool; + var $t28: bool; + var $t29: int; + var $t30: int; + var $t0: int; + var $t1: int; + var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; + var $temp_0'address': int; + var $temp_0'bool': bool; + var $temp_0'u64': int; + var $temp_0'vec'address'': Vec (int); + var $1_vesting_VestingContract_$memory#78: $Memory $1_vesting_VestingContract; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:396:5+1 + assume {:print "$at(2,19217,19218)"} true; + assume $IsValid'address'($t0); - // assume Identical($t27, select stake::OwnerCapability.pool_address(select staking_contract::StakingContract.owner_cap($t20))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:479:9+61 - assume {:print "$at(3,21020,21081)"} true; - assume ($t27 == $pool_address#$1_stake_OwnerCapability($owner_cap#$1_staking_contract_StakingContract($t20))); + // assume WellFormed($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:396:5+1 + assume $IsValid'address'($t1); - // assume Identical($t28, global($t27)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:481:9+60 - assume {:print "$at(3,21151,21211)"} true; - assume ($t28 == $ResourceValue($1_stake_StakePool_$memory, $t27)); + // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:396:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); + (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; + (var j := $i_4; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); - // assume Identical($t29, global(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:483:9+66 - assume {:print "$at(3,21286,21352)"} true; - assume ($t29 == $ResourceValue($1_stake_ValidatorSet_$memory, 1)); + // assume Identical($t11, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:511:9+65 + assume {:print "$at(3,23068,23133)"} true; + assume ($t11 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); - // assume Identical($t30, And(And(Not(stake::spec_contains(select stake::ValidatorSet.pending_active($t29), $t27)), Not(stake::spec_contains(select stake::ValidatorSet.active_validators($t29), $t27))), Not(stake::spec_contains(select stake::ValidatorSet.pending_inactive($t29), $t27)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:484:9+260 - assume {:print "$at(3,21361,21621)"} true; - assume ($t30 == ((!$1_stake_spec_contains($pending_active#$1_stake_ValidatorSet($t29), $t27) && !$1_stake_spec_contains($active_validators#$1_stake_ValidatorSet($t29), $t27)) && !$1_stake_spec_contains($pending_inactive#$1_stake_ValidatorSet($t29), $t27))); + // @78 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:396:5+1 + assume {:print "$at(2,19217,19218)"} true; + $1_vesting_VestingContract_$memory#78 := $1_vesting_VestingContract_$memory; - // assume Identical($t31, select coin::Coin.value(select stake::StakePool.inactive($t28))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:487:9+45 - assume {:print "$at(3,21630,21675)"} true; - assume ($t31 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t28))); + // trace_local[vesting_contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:396:5+1 + assume {:print "$track_local(59,23,0):", $t0} $t0 == $t0; - // assume Identical($t32, select coin::Coin.value(select stake::StakePool.pending_inactive($t28))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:488:9+61 - assume {:print "$at(3,21684,21745)"} true; - assume ($t32 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t28))); + // trace_local[shareholder_or_beneficiary]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:396:5+1 + assume {:print "$track_local(59,23,1):", $t1} $t1 == $t1; - // assume Identical($t33, Add($t31, $t32)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:489:9+53 - assume {:print "$at(3,21754,21807)"} true; - assume ($t33 == ($t31 + $t32)); + // assume Identical($t12, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:511:9+65 + assume {:print "$at(3,23068,23133)"} true; + assume ($t12 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); - // vesting::distribute($t13) on_abort goto L9 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:671:13+28 - assume {:print "$at(2,31880,31908)"} true; - call $1_vesting_distribute($t13); + // vesting::assert_active_vesting_contract($t0) on_abort goto L13 with $t13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:397:9+56 + assume {:print "$at(2,19356,19412)"} true; + call $1_vesting_assert_active_vesting_contract($t0); if ($abort_flag) { - assume {:print "$at(2,31880,31908)"} true; - $t5 := $abort_code; - assume {:print "$track_abort(57,9):", $t5} $t5 == $t5; - goto L9; + assume {:print "$at(2,19356,19412)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(59,23):", $t13} $t13 == $t13; + goto L13; } - // $t14 := 1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:265:21+1 - assume {:print "$at(18,9353,9354)"} true; - $t14 := 1; - assume $IsValid'u64'($t14); + // assume Identical($t14, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:511:9+65 + assume {:print "$at(3,23068,23133)"} true; + assume ($t14 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); - // $t15 := +($t1, $t14) on_abort goto L9 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:265:19+1 - call $t15 := $AddU64($t1, $t14); + // $t15 := vesting::shareholders($t0) on_abort goto L13 with $t13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:399:29+38 + assume {:print "$at(2,19443,19481)"} true; + call $t15 := $1_vesting_shareholders($t0); if ($abort_flag) { - assume {:print "$at(18,9351,9352)"} true; - $t5 := $abort_code; - assume {:print "$track_abort(57,9):", $t5} $t5 == $t5; - goto L9; + assume {:print "$at(2,19443,19481)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(59,23):", $t13} $t13 == $t13; + goto L13; } - // trace_local[i#247]($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:265:13+1 - assume {:print "$track_local(57,9,1):", $t15} $t15 == $t15; + // trace_local[shareholders]($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:399:13+12 + assume {:print "$track_local(59,23,8):", $t15} $t15 == $t15; - // goto L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:265:13+9 - goto L7; + // $t16 := vector::contains
($t15, $t1) on_abort goto L13 with $t13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:400:13+59 + assume {:print "$at(2,19495,19554)"} true; + call $t16 := $1_vector_contains'address'($t15, $t1); + if ($abort_flag) { + assume {:print "$at(2,19495,19554)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(59,23):", $t13} $t13 == $t13; + goto L13; + } - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:672:11+1 - assume {:print "$at(2,31920,31921)"} true; -L3: + // if ($t16) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:400:9+122 + if ($t16) { goto L1; } else { goto L0; } - // goto L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:672:11+1 - assume {:print "$at(2,31920,31921)"} true; - goto L8; + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:401:13+33 + assume {:print "$at(2,19570,19603)"} true; +L1: - // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:672:11+1 - // Loop invariant checking block for the loop started with header: L6 -L7: + // trace_return[0]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:401:13+33 + assume {:print "$at(2,19570,19603)"} true; + assume {:print "$track_return(59,23,0):", $t1} $t1 == $t1; - // stop() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:672:11+1 - assume {:print "$at(2,31920,31921)"} true; - assume false; - return; + // $t17 := move($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:401:13+33 + $t17 := $t1; - // label L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:673:5+1 - assume {:print "$at(2,31926,31927)"} true; -L8: + // goto L12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:401:13+33 + goto L12; - // assert Not(Eq(Len
($t0), 0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:220:9+39 - assume {:print "$at(3,10004,10043)"} true; - assert {:msg "assert_failed(3,10004,10043): function does not abort under this condition"} - !$IsEqual'num'(LenVec($t0), 0); + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:403:63+24 + assume {:print "$at(2,19677,19701)"} true; +L0: - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:220:9+39 - return; + // $t18 := get_global($t0) on_abort goto L13 with $t13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:403:32+13 + assume {:print "$at(2,19646,19659)"} true; + if (!$ResourceExists($1_vesting_VestingContract_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t18 := $ResourceValue($1_vesting_VestingContract_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(2,19646,19659)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(59,23):", $t13} $t13 == $t13; + goto L13; + } - // label L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:673:5+1 - assume {:print "$at(2,31926,31927)"} true; -L9: + // trace_local[vesting_contract]($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:403:13+16 + assume {:print "$track_local(59,23,10):", $t18} $t18 == $t18; - // abort($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:673:5+1 - assume {:print "$at(2,31926,31927)"} true; - $abort_code := $t5; - $abort_flag := true; - return; + // $t19 := 0x0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:404:22+4 + assume {:print "$at(2,19725,19729)"} true; + $t19 := 0; + assume $IsValid'address'($t19); + + // trace_local[result]($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:404:13+6 + assume {:print "$track_local(59,23,5):", $t19} $t19 == $t19; -} + // trace_local[v#272]($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:405:9+266 + assume {:print "$at(2,19739,20005)"} true; + assume {:print "$track_local(59,23,9):", $t15} $t15 == $t15; -// fun vesting::get_beneficiary [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:965:5+287 -procedure {:inline 1} $1_vesting_get_beneficiary(_$t0: $1_vesting_VestingContract, _$t1: int) returns ($ret0: int) -{ - // declare local variables - var $t2: int; - var $t3: Table int (int); - var $t4: bool; - var $t5: int; - var $t6: Table int (int); - var $t0: $1_vesting_VestingContract; - var $t1: int; - var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; - var $temp_0'address': int; - $t0 := _$t0; - $t1 := _$t1; + // $t20 := false at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:554:22+5 + assume {:print "$at(18,19381,19386)"} true; + $t20 := false; + assume $IsValid'bool'($t20); - // bytecode translation starts here - // trace_local[contract]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:965:5+1 - assume {:print "$at(2,45284,45285)"} true; - assume {:print "$track_local(57,10,0):", $t0} $t0 == $t0; + // trace_local[result#274]($t20) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:554:13+6 + assume {:print "$track_local(59,23,6):", $t20} $t20 == $t20; - // trace_local[shareholder]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:965:5+1 - assume {:print "$track_local(57,10,1):", $t1} $t1 == $t1; + // $t21 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:555:17+1 + assume {:print "$at(18,19404,19405)"} true; + $t21 := 0; + assume $IsValid'u64'($t21); - // $t3 := get_field.beneficiaries($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:966:38+23 - assume {:print "$at(2,45402,45425)"} true; - $t3 := $beneficiaries#$1_vesting_VestingContract($t0); + // trace_local[i#275]($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:555:13+1 + assume {:print "$track_local(59,23,4):", $t21} $t21 == $t21; - // $t4 := simple_map::contains_key($t3, $t1) on_abort goto L4 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:966:13+63 - call $t4 := $1_simple_map_contains_key'address_address'($t3, $t1); - if ($abort_flag) { - assume {:print "$at(2,45377,45440)"} true; - $t5 := $abort_code; - assume {:print "$track_abort(57,10):", $t5} $t5 == $t5; - goto L4; - } + // label L10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:556:16+1 + assume {:print "$at(18,19422,19423)"} true; +L10: - // if ($t4) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:966:9+192 - if ($t4) { goto L1; } else { goto L0; } + // $t3 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:556:16+1 + assume {:print "$at(18,19422,19423)"} true; + havoc $t3; - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:967:34+8 - assume {:print "$at(2,45477,45485)"} true; -L1: + // assume WellFormed($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:556:16+1 + assume $IsValid'bool'($t3); - // $t6 := get_field.beneficiaries($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:967:33+23 - assume {:print "$at(2,45476,45499)"} true; - $t6 := $beneficiaries#$1_vesting_VestingContract($t0); + // $t4 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:556:16+1 + havoc $t4; - // $t2 := simple_map::borrow($t6, $t1) on_abort goto L4 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:967:14+57 - call $t2 := $1_simple_map_borrow'address_address'($t6, $t1); - if ($abort_flag) { - assume {:print "$at(2,45457,45514)"} true; - $t5 := $abort_code; - assume {:print "$track_abort(57,10):", $t5} $t5 == $t5; - goto L4; - } + // assume WellFormed($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:556:16+1 + assume $IsValid'u64'($t4); - // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:966:9+192 - assume {:print "$at(2,45373,45565)"} true; - goto L2; + // $t5 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:556:16+1 + havoc $t5; - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:966:9+192 -L0: + // assume WellFormed($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:556:16+1 + assume $IsValid'address'($t5); - // $t2 := $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:966:9+192 - assume {:print "$at(2,45373,45565)"} true; - $t2 := $t1; + // $t6 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:556:16+1 + havoc $t6; - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:966:9+192 -L2: + // assume WellFormed($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:556:16+1 + assume $IsValid'bool'($t6); - // trace_return[0]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:966:9+192 - assume {:print "$at(2,45373,45565)"} true; - assume {:print "$track_return(57,10,0):", $t2} $t2 == $t2; + // $t22 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:556:16+1 + havoc $t22; - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:971:5+1 - assume {:print "$at(2,45570,45571)"} true; -L3: + // assume WellFormed($t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:556:16+1 + assume $IsValid'u64'($t22); - // return $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:971:5+1 - assume {:print "$at(2,45570,45571)"} true; - $ret0 := $t2; - return; + // $t23 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:556:16+1 + havoc $t23; - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:971:5+1 -L4: + // assume WellFormed($t23) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:556:16+1 + assume $IsValid'bool'($t23); - // abort($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:971:5+1 - assume {:print "$at(2,45570,45571)"} true; - $abort_code := $t5; - $abort_flag := true; - return; + // $t24 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:556:16+1 + havoc $t24; -} + // assume WellFormed($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:556:16+1 + assume $IsValid'address'($t24); -// fun vesting::get_beneficiary [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:965:5+287 -procedure {:timeLimit 1000} $1_vesting_get_beneficiary$verify(_$t0: $1_vesting_VestingContract, _$t1: int) returns ($ret0: int) -{ - // declare local variables - var $t2: int; - var $t3: Table int (int); - var $t4: bool; - var $t5: int; - var $t6: Table int (int); - var $t0: $1_vesting_VestingContract; - var $t1: int; - var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; - var $temp_0'address': int; - $t0 := _$t0; - $t1 := _$t1; + // $t25 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:556:16+1 + havoc $t25; - // verification entrypoint assumptions - call $InitVerification(); + // assume WellFormed($t25) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:556:16+1 + assume $IsValid'address'($t25); - // bytecode translation starts here - // assume And(WellFormed($t0), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t0)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t0)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t0)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t0)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t0)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t0)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:965:5+1 - assume {:print "$at(2,45284,45285)"} true; - assume ($IsValid'$1_vesting_VestingContract'($t0) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t0)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t0)), addr)))) && (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t0)))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t0)))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; - (var j := $i_3; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t0)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t0)), j)) ==> $IsEqual'num'(i, j)))))))))); + // $t26 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:556:16+1 + havoc $t26; - // assume WellFormed($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:965:5+1 - assume $IsValid'address'($t1); + // assume WellFormed($t26) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:556:16+1 + assume $IsValid'bool'($t26); - // trace_local[contract]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:965:5+1 - assume {:print "$track_local(57,10,0):", $t0} $t0 == $t0; + // $t27 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:556:16+1 + havoc $t27; - // trace_local[shareholder]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:965:5+1 - assume {:print "$track_local(57,10,1):", $t1} $t1 == $t1; + // assume WellFormed($t27) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:556:16+1 + assume $IsValid'bool'($t27); - // $t3 := get_field.beneficiaries($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:966:38+23 - assume {:print "$at(2,45402,45425)"} true; - $t3 := $beneficiaries#$1_vesting_VestingContract($t0); + // $t28 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:556:16+1 + havoc $t28; - // $t4 := simple_map::contains_key($t3, $t1) on_abort goto L4 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:966:13+63 - call $t4 := $1_simple_map_contains_key'address_address'($t3, $t1); - if ($abort_flag) { - assume {:print "$at(2,45377,45440)"} true; - $t5 := $abort_code; - assume {:print "$track_abort(57,10):", $t5} $t5 == $t5; - goto L4; - } + // assume WellFormed($t28) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:556:16+1 + assume $IsValid'bool'($t28); - // if ($t4) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:966:9+192 - if ($t4) { goto L1; } else { goto L0; } + // $t29 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:556:16+1 + havoc $t29; - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:967:34+8 - assume {:print "$at(2,45477,45485)"} true; -L1: + // assume WellFormed($t29) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:556:16+1 + assume $IsValid'u64'($t29); - // $t6 := get_field.beneficiaries($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:967:33+23 - assume {:print "$at(2,45476,45499)"} true; - $t6 := $beneficiaries#$1_vesting_VestingContract($t0); + // $t30 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:556:16+1 + havoc $t30; - // $t2 := simple_map::borrow($t6, $t1) on_abort goto L4 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:967:14+57 - call $t2 := $1_simple_map_borrow'address_address'($t6, $t1); - if ($abort_flag) { - assume {:print "$at(2,45457,45514)"} true; - $t5 := $abort_code; - assume {:print "$track_abort(57,10):", $t5} $t5 == $t5; - goto L4; - } + // assume WellFormed($t30) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:556:16+1 + assume $IsValid'u64'($t30); - // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:966:9+192 - assume {:print "$at(2,45373,45565)"} true; - goto L2; + // trace_local[i#275]($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:556:16+1 + assume {:print "$info(): enter loop, variable(s) i#275, result, result#274 havocked and reassigned"} true; + assume {:print "$track_local(59,23,4):", $t4} $t4 == $t4; - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:966:9+192 -L0: + // trace_local[result]($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:556:16+1 + assume {:print "$track_local(59,23,5):", $t5} $t5 == $t5; - // $t2 := $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:966:9+192 - assume {:print "$at(2,45373,45565)"} true; - $t2 := $t1; + // trace_local[result#274]($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:556:16+1 + assume {:print "$track_local(59,23,6):", $t6} $t6 == $t6; - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:966:9+192 -L2: + // assume Not(AbortFlag()) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:556:16+1 + assume !$abort_flag; - // trace_return[0]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:966:9+192 - assume {:print "$at(2,45373,45565)"} true; - assume {:print "$track_return(57,10,0):", $t2} $t2 == $t2; + // $t22 := vector::length
($t15) on_abort goto L13 with $t13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:556:20+9 + call $t22 := $1_vector_length'address'($t15); + if ($abort_flag) { + assume {:print "$at(18,19426,19435)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(59,23):", $t13} $t13 == $t13; + goto L13; + } - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:971:5+1 - assume {:print "$at(2,45570,45571)"} true; -L3: + // $t23 := <($t4, $t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:556:18+1 + call $t23 := $Lt($t4, $t22); - // assert Not(false) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:495:9+16 - assume {:print "$at(3,22068,22084)"} true; - assert {:msg "assert_failed(3,22068,22084): function does not abort under this condition"} - !false; + // if ($t23) goto L3 else goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:556:9+156 + if ($t23) { goto L3; } else { goto L2; } - // return $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:495:9+16 - $ret0 := $t2; - return; + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:556:9+156 +L3: - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:971:5+1 - assume {:print "$at(2,45570,45571)"} true; + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:557:31+1 + assume {:print "$at(18,19469,19470)"} true; L4: - // assert false at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:494:5+112 - assume {:print "$at(3,21978,22090)"} true; - assert {:msg "assert_failed(3,21978,22090): abort not covered by any of the `aborts_if` clauses"} - false; + // $t24 := vector::borrow
($t15, $t4) on_abort goto L13 with $t13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:557:24+12 + assume {:print "$at(18,19462,19474)"} true; + call $t24 := $1_vector_borrow'address'($t15, $t4); + if ($abort_flag) { + assume {:print "$at(18,19462,19474)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(59,23):", $t13} $t13 == $t13; + goto L13; + } - // abort($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:494:5+112 - $abort_code := $t5; - $abort_flag := true; - return; + // trace_local[shareholder#276]($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:557:24+12 + assume {:print "$track_local(59,23,7):", $t24} $t24 == $t24; -} + // $t25 := vesting::get_beneficiary($t18, $t24) on_abort goto L13 with $t13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:406:47+47 + assume {:print "$at(2,19827,19874)"} true; + call $t25 := $1_vesting_get_beneficiary($t18, $t24); + if ($abort_flag) { + assume {:print "$at(2,19827,19874)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(59,23):", $t13} $t13 == $t13; + goto L13; + } -// fun vesting::get_role_holder [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:893:5+456 -procedure {:inline 1} $1_vesting_get_role_holder(_$t0: int, _$t1: $1_string_String) returns ($ret0: int) -{ - // declare local variables - var $t2: Table int (int); - var $t3: Table int (int); - var $t4: bool; - var $t5: int; - var $t6: int; - var $t7: int; - var $t8: $1_vesting_VestingAccountManagement; - var $t9: Table int (int); - var $t10: bool; - var $t11: int; - var $t12: int; - var $t13: int; - var $t0: int; - var $t1: $1_string_String; - var $temp_0'$1_simple_map_SimpleMap'$1_string_String_address'': Table int (int); - var $temp_0'$1_string_String': $1_string_String; - var $temp_0'address': int; - $t0 := _$t0; - $t1 := _$t1; + // $t26 := ==($t1, $t25) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:406:44+2 + $t26 := $IsEqual'address'($t1, $t25); - // bytecode translation starts here - // assume Identical($t3, select vesting::VestingAccountManagement.roles(global($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:365:9+69 - assume {:print "$at(3,15665,15734)"} true; - assume ($t3 == $roles#$1_vesting_VestingAccountManagement($ResourceValue($1_vesting_VestingAccountManagement_$memory, $t0))); + // if ($t26) goto L6 else goto L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:406:13+201 + if ($t26) { goto L6; } else { goto L5; } - // trace_local[contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:893:5+1 - assume {:print "$at(2,41215,41216)"} true; - assume {:print "$track_local(57,11,0):", $t0} $t0 == $t0; + // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:407:27+11 + assume {:print "$at(2,19904,19915)"} true; +L6: - // trace_local[role]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:893:5+1 - assume {:print "$track_local(57,11,1):", $t1} $t1 == $t1; + // $t5 := $t24 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:407:17+6 + assume {:print "$at(2,19894,19900)"} true; + $t5 := $t24; - // $t4 := exists($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:894:17+6 - assume {:print "$at(2,41344,41350)"} true; - $t4 := $ResourceExists($1_vesting_VestingAccountManagement_$memory, $t0); + // trace_local[result]($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:407:17+6 + assume {:print "$track_local(59,23,5):", $t24} $t24 == $t24; + + // $t27 := true at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:408:17+4 + assume {:print "$at(2,19933,19937)"} true; + $t27 := true; + assume $IsValid'bool'($t27); - // if ($t4) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:894:9+108 - if ($t4) { goto L1; } else { goto L0; } + // $t3 := $t27 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:406:13+201 + assume {:print "$at(2,19793,19994)"} true; + $t3 := $t27; - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:894:9+108 -L1: + // goto L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:406:13+201 + goto L7; - // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:894:9+108 - assume {:print "$at(2,41336,41444)"} true; - goto L2; + // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:406:13+201 +L5: - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:894:86+29 -L0: + // $t28 := false at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:410:17+5 + assume {:print "$at(2,19975,19980)"} true; + $t28 := false; + assume $IsValid'bool'($t28); - // $t5 := 13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:894:86+29 - assume {:print "$at(2,41413,41442)"} true; - $t5 := 13; - assume $IsValid'u64'($t5); + // $t3 := $t28 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:406:13+201 + assume {:print "$at(2,19793,19994)"} true; + $t3 := $t28; - // $t6 := error::not_found($t5) on_abort goto L7 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:894:69+47 - call $t6 := $1_error_not_found($t5); - if ($abort_flag) { - assume {:print "$at(2,41396,41443)"} true; - $t7 := $abort_code; - assume {:print "$track_abort(57,11):", $t7} $t7 == $t7; - goto L7; - } + // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:406:13+201 +L7: - // trace_abort($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:894:9+108 - assume {:print "$at(2,41336,41444)"} true; - assume {:print "$track_abort(57,11):", $t6} $t6 == $t6; + // $t6 := $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:557:13+6 + assume {:print "$at(18,19451,19457)"} true; + $t6 := $t3; - // $t7 := move($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:894:9+108 - $t7 := $t6; + // trace_local[result#274]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:557:13+6 + assume {:print "$track_local(59,23,6):", $t3} $t3 == $t3; - // goto L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:894:9+108 - goto L7; + // if ($t3) goto L9 else goto L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:558:13+49 + assume {:print "$at(18,19489,19538)"} true; + if ($t3) { goto L9; } else { goto L8; } - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:895:62+16 - assume {:print "$at(2,41507,41523)"} true; -L2: + // label L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:559:17+5 + assume {:print "$at(18,19519,19524)"} true; +L9: - // $t8 := get_global($t0) on_abort goto L7 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:895:22+13 - assume {:print "$at(2,41467,41480)"} true; - if (!$ResourceExists($1_vesting_VestingAccountManagement_$memory, $t0)) { - call $ExecFailureAbort(); - } else { - $t8 := $ResourceValue($1_vesting_VestingAccountManagement_$memory, $t0); - } - if ($abort_flag) { - assume {:print "$at(2,41467,41480)"} true; - $t7 := $abort_code; - assume {:print "$track_abort(57,11):", $t7} $t7 == $t7; - goto L7; - } + // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:559:17+5 + assume {:print "$at(18,19519,19524)"} true; + goto L2; - // $t9 := get_field.roles($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:895:21+64 - $t9 := $roles#$1_vesting_VestingAccountManagement($t8); + // label L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:561:17+1 + assume {:print "$at(18,19556,19557)"} true; +L8: - // trace_local[roles]($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:895:13+5 - assume {:print "$track_local(57,11,2):", $t9} $t9 == $t9; + // $t29 := 1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:561:21+1 + assume {:print "$at(18,19560,19561)"} true; + $t29 := 1; + assume $IsValid'u64'($t29); - // $t10 := simple_map::contains_key($t9, $t1) on_abort goto L7 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:896:17+38 - assume {:print "$at(2,41548,41586)"} true; - call $t10 := $1_simple_map_contains_key'$1_string_String_address'($t9, $t1); + // $t30 := +($t4, $t29) on_abort goto L13 with $t13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:561:19+1 + call $t30 := $AddU64($t4, $t29); if ($abort_flag) { - assume {:print "$at(2,41548,41586)"} true; - $t7 := $abort_code; - assume {:print "$track_abort(57,11):", $t7} $t7 == $t7; - goto L7; + assume {:print "$at(18,19558,19559)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(59,23):", $t13} $t13 == $t13; + goto L13; } - // if ($t10) goto L4 else goto L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:896:9+82 - if ($t10) { goto L4; } else { goto L3; } - - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:896:9+82 -L4: + // trace_local[i#275]($t30) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:561:13+1 + assume {:print "$track_local(59,23,4):", $t30} $t30 == $t30; - // goto L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:896:9+82 - assume {:print "$at(2,41540,41622)"} true; - goto L5; + // goto L11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:561:13+9 + goto L11; - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:896:9+82 -L3: + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:563:9+6 + assume {:print "$at(18,19581,19587)"} true; +L2: - // $t11 := 14 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:896:74+15 - assume {:print "$at(2,41605,41620)"} true; - $t11 := 14; - assume $IsValid'u64'($t11); + // destroy($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:563:9+6 + assume {:print "$at(18,19581,19587)"} true; - // $t12 := error::not_found($t11) on_abort goto L7 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:896:57+33 - call $t12 := $1_error_not_found($t11); - if ($abort_flag) { - assume {:print "$at(2,41588,41621)"} true; - $t7 := $abort_code; - assume {:print "$track_abort(57,11):", $t7} $t7 == $t7; - goto L7; - } + // trace_return[0]($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:414:9+6 + assume {:print "$at(2,20016,20022)"} true; + assume {:print "$track_return(59,23,0):", $t5} $t5 == $t5; - // trace_abort($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:896:9+82 - assume {:print "$at(2,41540,41622)"} true; - assume {:print "$track_abort(57,11):", $t12} $t12 == $t12; + // $t17 := move($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:414:9+6 + $t17 := $t5; - // $t7 := move($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:896:9+82 - $t7 := $t12; + // goto L12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:414:9+6 + goto L12; - // goto L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:896:9+82 - goto L7; + // label L11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:563:9+6 + // Loop invariant checking block for the loop started with header: L10 + assume {:print "$at(18,19581,19587)"} true; +L11: - // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:897:29+5 - assume {:print "$at(2,41652,41657)"} true; -L5: + // stop() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:563:9+6 + assume {:print "$at(18,19581,19587)"} true; + assume false; + return; - // $t13 := simple_map::borrow($t9, $t1) on_abort goto L7 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:897:10+32 - assume {:print "$at(2,41633,41665)"} true; - call $t13 := $1_simple_map_borrow'$1_string_String_address'($t9, $t1); - if ($abort_flag) { - assume {:print "$at(2,41633,41665)"} true; - $t7 := $abort_code; - assume {:print "$track_abort(57,11):", $t7} $t7 == $t7; - goto L7; - } + // label L12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:415:5+1 + assume {:print "$at(2,20027,20028)"} true; +L12: - // trace_return[0]($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:897:9+33 - assume {:print "$track_return(57,11,0):", $t13} $t13 == $t13; + // assert Not(Not(exists[@78]($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:510:9+53 + assume {:print "$at(3,23006,23059)"} true; + assert {:msg "assert_failed(3,23006,23059): function does not abort under this condition"} + !!$ResourceExists($1_vesting_VestingContract_$memory#78, $t0); - // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:898:5+1 - assume {:print "$at(2,41670,41671)"} true; -L6: + // assert Not(Neq(select vesting::VestingContract.state($t11), 1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:512:9+56 + assume {:print "$at(3,23142,23198)"} true; + assert {:msg "assert_failed(3,23142,23198): function does not abort under this condition"} + !!$IsEqual'u64'($state#$1_vesting_VestingContract($t11), 1); - // return $t13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:898:5+1 - assume {:print "$at(2,41670,41671)"} true; - $ret0 := $t13; + // return $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:512:9+56 + $ret0 := $t17; return; - // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:898:5+1 -L7: + // label L13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:415:5+1 + assume {:print "$at(2,20027,20028)"} true; +L13: - // abort($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:898:5+1 - assume {:print "$at(2,41670,41671)"} true; - $abort_code := $t7; + // assert Or(Not(exists[@78]($t0)), Neq(select vesting::VestingContract.state($t11), 1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:122:5+345 + assume {:print "$at(3,5774,6119)"} true; + assert {:msg "assert_failed(3,5774,6119): abort not covered by any of the `aborts_if` clauses"} + (!$ResourceExists($1_vesting_VestingContract_$memory#78, $t0) || !$IsEqual'u64'($state#$1_vesting_VestingContract($t11), 1)); + + // abort($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:122:5+345 + $abort_code := $t13; $abort_flag := true; return; } -// fun vesting::get_role_holder [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:893:5+456 -procedure {:timeLimit 1000} $1_vesting_get_role_holder$verify(_$t0: int, _$t1: $1_string_String) returns ($ret0: int) +// fun vesting::shareholders [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:383:5+325 +procedure {:inline 1} $1_vesting_shareholders(_$t0: int) returns ($ret0: Vec (int)) { // declare local variables - var $t2: Table int (int); - var $t3: Table int (int); - var $t4: bool; - var $t5: int; - var $t6: int; - var $t7: int; - var $t8: $1_vesting_VestingAccountManagement; - var $t9: Table int (int); - var $t10: bool; - var $t11: int; - var $t12: int; - var $t13: int; + var $t1: $1_vesting_VestingContract; + var $t2: $1_vesting_VestingContract; + var $t3: int; + var $t4: $1_vesting_VestingContract; + var $t5: $1_pool_u64_Pool; + var $t6: Vec (int); var $t0: int; - var $t1: $1_string_String; - var $temp_0'$1_simple_map_SimpleMap'$1_string_String_address'': Table int (int); - var $temp_0'$1_string_String': $1_string_String; var $temp_0'address': int; - var $1_vesting_VestingAccountManagement_$memory#87: $Memory $1_vesting_VestingAccountManagement; + var $temp_0'vec'address'': Vec (int); $t0 := _$t0; - $t1 := _$t1; - - // verification entrypoint assumptions - call $InitVerification(); // bytecode translation starts here - // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:893:5+1 - assume {:print "$at(2,41215,41216)"} true; - assume $IsValid'address'($t0); - - // assume WellFormed($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:893:5+1 - assume $IsValid'$1_string_String'($t1); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:893:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingAccountManagement_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingAccountManagement_$memory, $a_0); - ($IsValid'$1_vesting_VestingAccountManagement'($rsc)))); - - // assume Identical($t3, select vesting::VestingAccountManagement.roles(global($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:365:9+69 - assume {:print "$at(3,15665,15734)"} true; - assume ($t3 == $roles#$1_vesting_VestingAccountManagement($ResourceValue($1_vesting_VestingAccountManagement_$memory, $t0))); - - // @87 := save_mem(vesting::VestingAccountManagement) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:893:5+1 - assume {:print "$at(2,41215,41216)"} true; - $1_vesting_VestingAccountManagement_$memory#87 := $1_vesting_VestingAccountManagement_$memory; - - // trace_local[contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:893:5+1 - assume {:print "$track_local(57,11,0):", $t0} $t0 == $t0; - - // trace_local[role]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:893:5+1 - assume {:print "$track_local(57,11,1):", $t1} $t1 == $t1; - - // $t4 := exists($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:894:17+6 - assume {:print "$at(2,41344,41350)"} true; - $t4 := $ResourceExists($1_vesting_VestingAccountManagement_$memory, $t0); + // assume Identical($t1, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:511:9+65 + assume {:print "$at(3,23068,23133)"} true; + assume ($t1 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); - // if ($t4) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:894:9+108 - if ($t4) { goto L1; } else { goto L0; } + // trace_local[vesting_contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:383:5+1 + assume {:print "$at(2,18423,18424)"} true; + assume {:print "$track_local(59,24,0):", $t0} $t0 == $t0; - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:894:9+108 -L1: + // assume Identical($t2, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:511:9+65 + assume {:print "$at(3,23068,23133)"} true; + assume ($t2 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); - // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:894:9+108 - assume {:print "$at(2,41336,41444)"} true; - goto L2; + // vesting::assert_active_vesting_contract($t0) on_abort goto L2 with $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:384:9+56 + assume {:print "$at(2,18534,18590)"} true; + call $1_vesting_assert_active_vesting_contract($t0); + if ($abort_flag) { + assume {:print "$at(2,18534,18590)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(59,24):", $t3} $t3 == $t3; + goto L2; + } - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:894:86+29 -L0: + // $t4 := get_global($t0) on_abort goto L2 with $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:386:32+13 + assume {:print "$at(2,18624,18637)"} true; + if (!$ResourceExists($1_vesting_VestingContract_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t4 := $ResourceValue($1_vesting_VestingContract_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(2,18624,18637)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(59,24):", $t3} $t3 == $t3; + goto L2; + } - // $t5 := 13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:894:86+29 - assume {:print "$at(2,41413,41442)"} true; - $t5 := 13; - assume $IsValid'u64'($t5); + // $t5 := get_field.grant_pool($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:387:32+28 + assume {:print "$at(2,18713,18741)"} true; + $t5 := $grant_pool#$1_vesting_VestingContract($t4); - // $t6 := error::not_found($t5) on_abort goto L7 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:894:69+47 - call $t6 := $1_error_not_found($t5); + // $t6 := pool_u64::shareholders($t5) on_abort goto L2 with $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:387:9+52 + call $t6 := $1_pool_u64_shareholders($t5); if ($abort_flag) { - assume {:print "$at(2,41396,41443)"} true; - $t7 := $abort_code; - assume {:print "$track_abort(57,11):", $t7} $t7 == $t7; - goto L7; + assume {:print "$at(2,18690,18742)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(59,24):", $t3} $t3 == $t3; + goto L2; } - // trace_abort($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:894:9+108 - assume {:print "$at(2,41336,41444)"} true; - assume {:print "$track_abort(57,11):", $t6} $t6 == $t6; + // trace_return[0]($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:387:9+52 + assume {:print "$track_return(59,24,0):", $t6} $t6 == $t6; - // $t7 := move($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:894:9+108 - $t7 := $t6; + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:388:5+1 + assume {:print "$at(2,18747,18748)"} true; +L1: - // goto L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:894:9+108 - goto L7; + // return $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:388:5+1 + assume {:print "$at(2,18747,18748)"} true; + $ret0 := $t6; + return; - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:895:62+16 - assume {:print "$at(2,41507,41523)"} true; + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:388:5+1 L2: - // $t8 := get_global($t0) on_abort goto L7 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:895:22+13 - assume {:print "$at(2,41467,41480)"} true; - if (!$ResourceExists($1_vesting_VestingAccountManagement_$memory, $t0)) { - call $ExecFailureAbort(); - } else { - $t8 := $ResourceValue($1_vesting_VestingAccountManagement_$memory, $t0); - } - if ($abort_flag) { - assume {:print "$at(2,41467,41480)"} true; - $t7 := $abort_code; - assume {:print "$track_abort(57,11):", $t7} $t7 == $t7; - goto L7; - } + // abort($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:388:5+1 + assume {:print "$at(2,18747,18748)"} true; + $abort_code := $t3; + $abort_flag := true; + return; - // $t9 := get_field.roles($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:895:21+64 - $t9 := $roles#$1_vesting_VestingAccountManagement($t8); +} - // trace_local[roles]($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:895:13+5 - assume {:print "$track_local(57,11,2):", $t9} $t9 == $t9; +// fun vesting::shareholders [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:383:5+325 +procedure {:timeLimit 900} $1_vesting_shareholders$verify(_$t0: int) returns ($ret0: Vec (int)) +{ + // declare local variables + var $t1: $1_vesting_VestingContract; + var $t2: $1_vesting_VestingContract; + var $t3: int; + var $t4: $1_vesting_VestingContract; + var $t5: $1_pool_u64_Pool; + var $t6: Vec (int); + var $t0: int; + var $temp_0'address': int; + var $temp_0'vec'address'': Vec (int); + var $1_vesting_VestingContract_$memory#48: $Memory $1_vesting_VestingContract; + $t0 := _$t0; - // $t10 := simple_map::contains_key($t9, $t1) on_abort goto L7 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:896:17+38 - assume {:print "$at(2,41548,41586)"} true; - call $t10 := $1_simple_map_contains_key'$1_string_String_address'($t9, $t1); - if ($abort_flag) { - assume {:print "$at(2,41548,41586)"} true; - $t7 := $abort_code; - assume {:print "$track_abort(57,11):", $t7} $t7 == $t7; - goto L7; - } + // verification entrypoint assumptions + call $InitVerification(); - // if ($t10) goto L4 else goto L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:896:9+82 - if ($t10) { goto L4; } else { goto L3; } + // bytecode translation starts here + // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:383:5+1 + assume {:print "$at(2,18423,18424)"} true; + assume $IsValid'address'($t0); - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:896:9+82 -L4: + // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:383:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); + (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; + (var j := $i_4; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); - // goto L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:896:9+82 - assume {:print "$at(2,41540,41622)"} true; - goto L5; + // assume Identical($t1, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:511:9+65 + assume {:print "$at(3,23068,23133)"} true; + assume ($t1 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:896:9+82 -L3: + // @48 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:383:5+1 + assume {:print "$at(2,18423,18424)"} true; + $1_vesting_VestingContract_$memory#48 := $1_vesting_VestingContract_$memory; - // $t11 := 14 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:896:74+15 - assume {:print "$at(2,41605,41620)"} true; - $t11 := 14; - assume $IsValid'u64'($t11); + // trace_local[vesting_contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:383:5+1 + assume {:print "$track_local(59,24,0):", $t0} $t0 == $t0; - // $t12 := error::not_found($t11) on_abort goto L7 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:896:57+33 - call $t12 := $1_error_not_found($t11); + // assume Identical($t2, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:511:9+65 + assume {:print "$at(3,23068,23133)"} true; + assume ($t2 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); + + // vesting::assert_active_vesting_contract($t0) on_abort goto L2 with $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:384:9+56 + assume {:print "$at(2,18534,18590)"} true; + call $1_vesting_assert_active_vesting_contract($t0); if ($abort_flag) { - assume {:print "$at(2,41588,41621)"} true; - $t7 := $abort_code; - assume {:print "$track_abort(57,11):", $t7} $t7 == $t7; - goto L7; + assume {:print "$at(2,18534,18590)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(59,24):", $t3} $t3 == $t3; + goto L2; } - // trace_abort($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:896:9+82 - assume {:print "$at(2,41540,41622)"} true; - assume {:print "$track_abort(57,11):", $t12} $t12 == $t12; - - // $t7 := move($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:896:9+82 - $t7 := $t12; - - // goto L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:896:9+82 - goto L7; + // $t4 := get_global($t0) on_abort goto L2 with $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:386:32+13 + assume {:print "$at(2,18624,18637)"} true; + if (!$ResourceExists($1_vesting_VestingContract_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t4 := $ResourceValue($1_vesting_VestingContract_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(2,18624,18637)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(59,24):", $t3} $t3 == $t3; + goto L2; + } - // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:897:29+5 - assume {:print "$at(2,41652,41657)"} true; -L5: + // $t5 := get_field.grant_pool($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:387:32+28 + assume {:print "$at(2,18713,18741)"} true; + $t5 := $grant_pool#$1_vesting_VestingContract($t4); - // $t13 := simple_map::borrow($t9, $t1) on_abort goto L7 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:897:10+32 - assume {:print "$at(2,41633,41665)"} true; - call $t13 := $1_simple_map_borrow'$1_string_String_address'($t9, $t1); + // $t6 := pool_u64::shareholders($t5) on_abort goto L2 with $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:387:9+52 + call $t6 := $1_pool_u64_shareholders($t5); if ($abort_flag) { - assume {:print "$at(2,41633,41665)"} true; - $t7 := $abort_code; - assume {:print "$track_abort(57,11):", $t7} $t7 == $t7; - goto L7; + assume {:print "$at(2,18690,18742)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(59,24):", $t3} $t3 == $t3; + goto L2; } - // trace_return[0]($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:897:9+33 - assume {:print "$track_return(57,11,0):", $t13} $t13 == $t13; + // trace_return[0]($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:387:9+52 + assume {:print "$track_return(59,24,0):", $t6} $t6 == $t6; - // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:898:5+1 - assume {:print "$at(2,41670,41671)"} true; -L6: + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:388:5+1 + assume {:print "$at(2,18747,18748)"} true; +L1: - // assert Not(Not(exists[@87]($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:364:9+62 - assume {:print "$at(3,15594,15656)"} true; - assert {:msg "assert_failed(3,15594,15656): function does not abort under this condition"} - !!$ResourceExists($1_vesting_VestingAccountManagement_$memory#87, $t0); + // assert Not(Not(exists[@48]($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:510:9+53 + assume {:print "$at(3,23006,23059)"} true; + assert {:msg "assert_failed(3,23006,23059): function does not abort under this condition"} + !!$ResourceExists($1_vesting_VestingContract_$memory#48, $t0); - // assert Not(Not(simple_map::spec_contains_key[]($t3, $t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:366:9+53 - assume {:print "$at(3,15743,15796)"} true; - assert {:msg "assert_failed(3,15743,15796): function does not abort under this condition"} - !!$1_simple_map_spec_contains_key'$1_string_String_address'($t3, $t1); + // assert Not(Neq(select vesting::VestingContract.state($t1), 1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:512:9+56 + assume {:print "$at(3,23142,23198)"} true; + assert {:msg "assert_failed(3,23142,23198): function does not abort under this condition"} + !!$IsEqual'u64'($state#$1_vesting_VestingContract($t1), 1); - // return $t13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:366:9+53 - $ret0 := $t13; + // return $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:512:9+56 + $ret0 := $t6; return; - // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:898:5+1 - assume {:print "$at(2,41670,41671)"} true; -L7: + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:388:5+1 + assume {:print "$at(2,18747,18748)"} true; +L2: - // assert Or(Not(exists[@87]($t0)), Not(simple_map::spec_contains_key[]($t3, $t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:363:5+289 - assume {:print "$at(3,15513,15802)"} true; - assert {:msg "assert_failed(3,15513,15802): abort not covered by any of the `aborts_if` clauses"} - (!$ResourceExists($1_vesting_VestingAccountManagement_$memory#87, $t0) || !$1_simple_map_spec_contains_key'$1_string_String_address'($t3, $t1)); + // assert Or(Not(exists[@48]($t0)), Neq(select vesting::VestingContract.state($t1), 1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:116:5+185 + assume {:print "$at(3,5470,5655)"} true; + assert {:msg "assert_failed(3,5470,5655): abort not covered by any of the `aborts_if` clauses"} + (!$ResourceExists($1_vesting_VestingContract_$memory#48, $t0) || !$IsEqual'u64'($state#$1_vesting_VestingContract($t1), 1)); - // abort($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:363:5+289 - $abort_code := $t7; + // abort($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:116:5+185 + $abort_code := $t3; $abort_flag := true; return; } -// fun vesting::get_vesting_account_signer [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:903:5+315 -procedure {:timeLimit 1000} $1_vesting_get_vesting_account_signer$verify(_$t0: $signer, _$t1: int) returns ($ret0: $signer) +// fun vesting::reset_lockup [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+862 +procedure {:timeLimit 900} $1_vesting_reset_lockup$verify(_$t0: $signer, _$t1: int) returns () { // declare local variables - var $t2: $Mutation ($1_vesting_VestingContract); - var $t3: $1_vesting_VestingContract; - var $t4: $Mutation ($1_vesting_VestingContract); + var $t2: $signer; + var $t3: $Mutation ($1_vesting_VestingContract); + var $t4: $1_vesting_VestingContract; var $t5: int; - var $t6: $1_vesting_VestingContract; - var $t7: $1_vesting_VestingContract; - var $t8: $signer; + var $t6: int; + var $t7: $1_staking_contract_Store; + var $t8: $1_staking_contract_StakingContract; + var $t9: int; + var $t10: Table int ($1_staking_contract_StakingContract); + var $t11: $1_staking_contract_Store; + var $t12: $1_staking_contract_StakingContract; + var $t13: int; + var $t14: $1_staking_config_StakingConfig; + var $t15: $1_stake_StakePool; + var $t16: int; + var $t17: int; + var $t18: int; + var $t19: $Mutation ($1_vesting_VestingContract); + var $t20: int; + var $t21: $1_vesting_VestingContract; + var $t22: $1_vesting_VestingContract; + var $t23: $signer; + var $t24: $1_vesting_StakingInfo; + var $t25: int; + var $t26: int; + var $t27: Table int ($1_staking_contract_StakingContract); + var $t28: $1_staking_contract_Store; + var $t29: $1_staking_contract_StakingContract; + var $t30: int; + var $t31: $1_staking_config_StakingConfig; + var $t32: $1_stake_StakePool; + var $t33: int; + var $t34: int; + var $t35: int; + var $t36: $Mutation ($1_event_EventHandle'$1_vesting_ResetLockupEvent'); + var $t37: int; + var $t38: $1_vesting_StakingInfo; + var $t39: int; + var $t40: $1_vesting_StakingInfo; + var $t41: int; + var $t42: int; + var $t43: $1_vesting_ResetLockupEvent; var $t0: $signer; var $t1: int; var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; var $temp_0'address': int; var $temp_0'signer': $signer; - var $1_vesting_VestingContract_$memory#74: $Memory $1_vesting_VestingContract; + var $1_vesting_VestingContract_$memory#90: $Memory $1_vesting_VestingContract; + var $1_staking_contract_Store_$memory#91: $Memory $1_staking_contract_Store; + var $1_stake_StakePool_$memory#92: $Memory $1_stake_StakePool; + var $1_staking_config_StakingConfig_$memory#93: $Memory $1_staking_config_StakingConfig; + var $1_timestamp_CurrentTimeMicroseconds_$memory#94: $Memory $1_timestamp_CurrentTimeMicroseconds; $t0 := _$t0; $t1 := _$t1; @@ -33105,588 +17522,532 @@ procedure {:timeLimit 1000} $1_vesting_get_vesting_account_signer$verify(_$t0: $ call $InitVerification(); // bytecode translation starts here - // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:903:5+1 - assume {:print "$at(2,41923,41924)"} true; + // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+1 + assume {:print "$at(2,36776,36777)"} true; assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($addr#$signer($t0)); - // assume WellFormed($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:903:5+1 + // assume WellFormed($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+1 assume $IsValid'address'($t1); - // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:903:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); - (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; - (var j := $i_4; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); - - // assume Identical($t3, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:511:9+65 - assume {:print "$at(3,22722,22787)"} true; - assume ($t3 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); - - // @74 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:903:5+1 - assume {:print "$at(2,41923,41924)"} true; - $1_vesting_VestingContract_$memory#74 := $1_vesting_VestingContract_$memory; - - // trace_local[admin]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:903:5+1 - assume {:print "$track_local(57,12,0):", $t0} $t0 == $t0; - - // trace_local[contract_address]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:903:5+1 - assume {:print "$track_local(57,12,1):", $t1} $t1 == $t1; + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_chain_status_GenesisEndMarker_$memory, $a_0)}(var $rsc := $ResourceValue($1_chain_status_GenesisEndMarker_$memory, $a_0); + ($IsValid'$1_chain_status_GenesisEndMarker'($rsc)))); - // $t4 := borrow_global($t1) on_abort goto L2 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:904:32+17 - assume {:print "$at(2,42070,42087)"} true; - if (!$ResourceExists($1_vesting_VestingContract_$memory, $t1)) { - call $ExecFailureAbort(); - } else { - $t4 := $Mutation($Global($t1), EmptyVec(), $ResourceValue($1_vesting_VestingContract_$memory, $t1)); - } - if ($abort_flag) { - assume {:print "$at(2,42070,42087)"} true; - $t5 := $abort_code; - assume {:print "$track_abort(57,12):", $t5} $t5 == $t5; - goto L2; - } + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_timestamp_CurrentTimeMicroseconds_$memory, $a_0)}(var $rsc := $ResourceValue($1_timestamp_CurrentTimeMicroseconds_$memory, $a_0); + ($IsValid'$1_timestamp_CurrentTimeMicroseconds'($rsc)))); - // trace_local[vesting_contract]($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:904:13+16 - $temp_0'$1_vesting_VestingContract' := $Dereference($t4); - assume {:print "$track_local(57,12,2):", $temp_0'$1_vesting_VestingContract'} $temp_0'$1_vesting_VestingContract' == $temp_0'$1_vesting_VestingContract'; + // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(And(Le(select staking_config::StakingConfig.rewards_rate($rsc), 1000000), Gt(select staking_config::StakingConfig.rewards_rate_denominator($rsc), 0)), Le(select staking_config::StakingConfig.rewards_rate($rsc), select staking_config::StakingConfig.rewards_rate_denominator($rsc)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_staking_config_StakingConfig_$memory, $a_0)}(var $rsc := $ResourceValue($1_staking_config_StakingConfig_$memory, $a_0); + (($IsValid'$1_staking_config_StakingConfig'($rsc) && ((($rewards_rate#$1_staking_config_StakingConfig($rsc) <= 1000000) && ($rewards_rate_denominator#$1_staking_config_StakingConfig($rsc) > 0)) && ($rewards_rate#$1_staking_config_StakingConfig($rsc) <= $rewards_rate_denominator#$1_staking_config_StakingConfig($rsc))))))); - // $t6 := read_ref($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:905:21+25 - assume {:print "$at(2,42144,42169)"} true; - $t6 := $Dereference($t4); + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_stake_StakePool_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_StakePool_$memory, $a_0); + ($IsValid'$1_stake_StakePool'($rsc)))); - // vesting::verify_admin($t0, $t6) on_abort goto L2 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:905:9+37 - call $1_vesting_verify_admin($t0, $t6); - if ($abort_flag) { - assume {:print "$at(2,42132,42169)"} true; - $t5 := $abort_code; - assume {:print "$track_abort(57,12):", $t5} $t5 == $t5; - goto L2; - } + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorConfig_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorConfig_$memory, $a_0); + ($IsValid'$1_stake_ValidatorConfig'($rsc)))); - // $t7 := read_ref($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:906:45+16 - assume {:print "$at(2,42215,42231)"} true; - $t7 := $Dereference($t4); + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorPerformance_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorPerformance_$memory, $a_0); + ($IsValid'$1_stake_ValidatorPerformance'($rsc)))); - // assert forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t4)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t4)), addr)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 - // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 - assume {:print "$at(59,538,673)"} true; - assert {:msg "assert_failed(59,538,673): data invariant does not hold"} - (forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t4))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t4))), addr)))); + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorSet_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorSet_$memory, $a_0); + ($IsValid'$1_stake_ValidatorSet'($rsc)))); - // assert forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t4)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t4)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t4)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t4)), j)), Eq(i, j)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 - // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 - assume {:print "$at(59,738,867)"} true; - assert {:msg "assert_failed(59,738,867): data invariant does not hold"} - (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t4))))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t4))))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; - (var j := $i_3; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t4))), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t4))), j)) ==> $IsEqual'num'(i, j)))))))); + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_reconfiguration_Configuration_$memory, $a_0)}(var $rsc := $ResourceValue($1_reconfiguration_Configuration_$memory, $a_0); + ($IsValid'$1_reconfiguration_Configuration'($rsc)))); - // $t8 := vesting::get_vesting_account_signer_internal($t7) on_abort goto L2 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:906:9+53 - assume {:print "$at(2,42179,42232)"} true; - call $t8 := $1_vesting_get_vesting_account_signer_internal($t7); - if ($abort_flag) { - assume {:print "$at(2,42179,42232)"} true; - $t5 := $abort_code; - assume {:print "$track_abort(57,12):", $t5} $t5 == $t5; - goto L2; - } + // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), forall $key: select staking_contract::Store.staking_contracts($rsc): And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), i), Index(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_staking_contract_Store_$memory, $a_0)}(var $rsc := $ResourceValue($1_staking_contract_Store_$memory, $a_0); + (($IsValid'$1_staking_contract_Store'($rsc) && (var $range_1 := $staking_contracts#$1_staking_contract_Store($rsc); (forall $key: int :: ContainsTable($range_1, $EncodeKey'address'($key)) ==> (((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), addr)))) && (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))))); (var $range_3 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))))); (forall $i_4: int, $i_5: int :: $InRange($range_2, $i_4) ==> $InRange($range_3, $i_5) ==> (var i := $i_4; + (var j := $i_5; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), i), ReadVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), j)) ==> $IsEqual'num'(i, j)))))))))))))))); - // trace_return[0]($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:906:9+53 - assume {:print "$track_return(57,12,0):", $t8} $t8 == $t8; + // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); + (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; + (var j := $i_4; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:907:5+1 - assume {:print "$at(2,42237,42238)"} true; -L1: + // assume Implies(chain_status::$is_operating(), exists(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+862 + // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.spec.move:4:9+93 + assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory, 1)); - // assert Not(Not(exists[@74]($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:510:9+53 - assume {:print "$at(3,22660,22713)"} true; - assert {:msg "assert_failed(3,22660,22713): function does not abort under this condition"} - !!$ResourceExists($1_vesting_VestingContract_$memory#74, $t1); + // assume Implies(chain_status::$is_operating(), exists(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+862 + // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/configs/staking_config.spec.move:4:9+83 + assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_staking_config_StakingConfig_$memory, 1)); - // assert Not(Neq
(signer::$address_of[]($t0), select vesting::VestingContract.admin($t3))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:512:9+62 - assume {:print "$at(3,22796,22858)"} true; - assert {:msg "assert_failed(3,22796,22858): function does not abort under this condition"} - !!$IsEqual'address'($1_signer_$address_of($t0), $admin#$1_vesting_VestingContract($t3)); + // assume Implies(exists(0x1), stake::validator_set_is_valid()) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+862 + // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:8:9+92 + assume ($ResourceExists($1_stake_ValidatorSet_$memory, 1) ==> $1_stake_validator_set_is_valid($1_stake_StakePool_$memory, $1_stake_ValidatorConfig_$memory, $1_stake_ValidatorPerformance_$memory, $1_stake_ValidatorSet_$memory)); - // return $t8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:512:9+62 - $ret0 := $t8; - return; + // assume Implies(chain_status::$is_operating(), Ge(timestamp::spec_now_microseconds(), reconfiguration::$last_reconfiguration_time())) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+862 + // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/reconfiguration.spec.move:8:9+137 + assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> ($1_timestamp_spec_now_microseconds($1_timestamp_CurrentTimeMicroseconds_$memory) >= $1_reconfiguration_$last_reconfiguration_time($1_reconfiguration_Configuration_$memory))); - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:907:5+1 - assume {:print "$at(2,42237,42238)"} true; -L2: + // assume Identical($t4, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:290:9+65 + assume {:print "$at(3,12723,12788)"} true; + assume ($t4 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); - // assert Or(Not(exists[@74]($t1)), Neq
(signer::$address_of[]($t0), select vesting::VestingContract.admin($t3))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:369:5+127 - assume {:print "$at(3,15808,15935)"} true; - assert {:msg "assert_failed(3,15808,15935): abort not covered by any of the `aborts_if` clauses"} - (!$ResourceExists($1_vesting_VestingContract_$memory#74, $t1) || !$IsEqual'address'($1_signer_$address_of($t0), $admin#$1_vesting_VestingContract($t3))); + // assume Identical($t5, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t4))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:293:9+49 + assume {:print "$at(3,12869,12918)"} true; + assume ($t5 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t4))); - // abort($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:369:5+127 - $abort_code := $t5; - $abort_flag := true; - return; + // assume Identical($t6, select account::SignerCapability.account(select vesting::VestingContract.signer_cap($t4))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:294:9+49 + assume {:print "$at(3,12927,12976)"} true; + assume ($t6 == $account#$1_account_SignerCapability($signer_cap#$1_vesting_VestingContract($t4))); -} + // assume Identical($t7, global($t6)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:299:9+52 + assume {:print "$at(3,13148,13200)"} true; + assume ($t7 == $ResourceValue($1_staking_contract_Store_$memory, $t6)); -// fun vesting::get_vesting_account_signer_internal [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:909:5+168 -procedure {:inline 1} $1_vesting_get_vesting_account_signer_internal(_$t0: $1_vesting_VestingContract) returns ($ret0: $signer) -{ - // declare local variables - var $t1: $1_account_SignerCapability; - var $t2: int; - var $t3: $signer; - var $t4: int; - var $t0: $1_vesting_VestingContract; - var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; - var $temp_0'signer': $signer; - $t0 := _$t0; + // assume Identical($t8, simple_map::spec_get(select staking_contract::Store.staking_contracts($t7), $t5)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:300:9+79 + assume {:print "$at(3,13209,13288)"} true; + assume ($t8 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($t7), $t5)); - // bytecode translation starts here - // trace_local[vesting_contract]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:909:5+1 - assume {:print "$at(2,42244,42245)"} true; - assume {:print "$track_local(57,13,0):", $t0} $t0 == $t0; + // assume Identical($t9, select stake::OwnerCapability.pool_address(select staking_contract::StakingContract.owner_cap($t8))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:301:9+59 + assume {:print "$at(3,13297,13356)"} true; + assume ($t9 == $pool_address#$1_stake_OwnerCapability($owner_cap#$1_staking_contract_StakingContract($t8))); - // $t1 := get_field.signer_cap($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:910:48+28 - assume {:print "$at(2,42377,42405)"} true; - $t1 := $signer_cap#$1_vesting_VestingContract($t0); + // assume Identical($t10, select staking_contract::Store.staking_contracts(global($t6))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:302:9+64 + assume {:print "$at(141,12978,13042)"} true; + assume ($t10 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t6))); - // assume Identical($t2, select account::SignerCapability.account($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:458:9+30 - assume {:print "$at(73,22226,22256)"} true; - assume ($t2 == $account#$1_account_SignerCapability($t1)); + // assume Identical($t11, global($t6)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:352:9+34 + assume {:print "$at(141,15082,15116)"} true; + assume ($t11 == $ResourceValue($1_staking_contract_Store_$memory, $t6)); - // $t3 := account::create_signer_with_capability($t1) on_abort goto L2 with $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:910:9+68 - assume {:print "$at(2,42338,42406)"} true; - call $t3 := $1_account_create_signer_with_capability($t1); - if ($abort_flag) { - assume {:print "$at(2,42338,42406)"} true; - $t4 := $abort_code; - assume {:print "$track_abort(57,13):", $t4} $t4 == $t4; - goto L2; - } + // assume Identical($t12, simple_map::spec_get(select staking_contract::Store.staking_contracts($t11), $t5)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:353:9+79 + assume {:print "$at(141,15125,15204)"} true; + assume ($t12 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($t11), $t5)); - // trace_return[0]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:910:9+68 - assume {:print "$track_return(57,13,0):", $t3} $t3 == $t3; + // assume Identical($t13, select stake::OwnerCapability.pool_address(select staking_contract::StakingContract.owner_cap($t12))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:354:9+59 + assume {:print "$at(141,15213,15272)"} true; + assume ($t13 == $pool_address#$1_stake_OwnerCapability($owner_cap#$1_staking_contract_StakingContract($t12))); - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:911:5+1 - assume {:print "$at(2,42411,42412)"} true; -L1: + // assume Identical($t14, global(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:359:9+69 + assume {:print "$at(141,15418,15487)"} true; + assume ($t14 == $ResourceValue($1_staking_config_StakingConfig_$memory, 1)); - // return $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:911:5+1 - assume {:print "$at(2,42411,42412)"} true; - $ret0 := $t3; - return; + // assume Identical($t15, global($t13)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:360:9+56 + assume {:print "$at(141,15496,15552)"} true; + assume ($t15 == $ResourceValue($1_stake_StakePool_$memory, $t13)); - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:911:5+1 -L2: + // assume Identical($t16, select stake::StakePool.locked_until_secs($t15)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:361:9+57 + assume {:print "$at(141,15561,15618)"} true; + assume ($t16 == $locked_until_secs#$1_stake_StakePool($t15)); - // abort($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:911:5+1 - assume {:print "$at(2,42411,42412)"} true; - $abort_code := $t4; - $abort_flag := true; - return; + // assume Identical($t17, Div(select timestamp::CurrentTimeMicroseconds.microseconds(global(0x1)), 1000000)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:362:9+126 + assume {:print "$at(141,15627,15753)"} true; + assume ($t17 == ($microseconds#$1_timestamp_CurrentTimeMicroseconds($ResourceValue($1_timestamp_CurrentTimeMicroseconds_$memory, 1)) div 1000000)); -} + // assume Identical($t18, Add($t17, select staking_config::StakingConfig.recurring_lockup_duration_secs($t14))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:363:9+77 + assume {:print "$at(141,15762,15839)"} true; + assume ($t18 == ($t17 + $recurring_lockup_duration_secs#$1_staking_config_StakingConfig($t14))); -// fun vesting::get_vesting_account_signer_internal [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:909:5+168 -procedure {:timeLimit 1000} $1_vesting_get_vesting_account_signer_internal$verify(_$t0: $1_vesting_VestingContract) returns ($ret0: $signer) -{ - // declare local variables - var $t1: $1_account_SignerCapability; - var $t2: int; - var $t3: $signer; - var $t4: int; - var $t0: $1_vesting_VestingContract; - var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; - var $temp_0'signer': $signer; - $t0 := _$t0; + // @94 := save_mem(timestamp::CurrentTimeMicroseconds) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+1 + assume {:print "$at(2,36776,36777)"} true; + $1_timestamp_CurrentTimeMicroseconds_$memory#94 := $1_timestamp_CurrentTimeMicroseconds_$memory; - // verification entrypoint assumptions - call $InitVerification(); + // @93 := save_mem(staking_config::StakingConfig) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+1 + $1_staking_config_StakingConfig_$memory#93 := $1_staking_config_StakingConfig_$memory; - // bytecode translation starts here - // assume And(WellFormed($t0), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t0)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t0)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t0)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t0)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t0)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t0)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:909:5+1 - assume {:print "$at(2,42244,42245)"} true; - assume ($IsValid'$1_vesting_VestingContract'($t0) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t0)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t0)), addr)))) && (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t0)))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t0)))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; - (var j := $i_3; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t0)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t0)), j)) ==> $IsEqual'num'(i, j)))))))))); + // @92 := save_mem(stake::StakePool) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+1 + $1_stake_StakePool_$memory#92 := $1_stake_StakePool_$memory; - // trace_local[vesting_contract]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:909:5+1 - assume {:print "$track_local(57,13,0):", $t0} $t0 == $t0; + // @91 := save_mem(staking_contract::Store) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+1 + $1_staking_contract_Store_$memory#91 := $1_staking_contract_Store_$memory; - // $t1 := get_field.signer_cap($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:910:48+28 - assume {:print "$at(2,42377,42405)"} true; - $t1 := $signer_cap#$1_vesting_VestingContract($t0); + // @90 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+1 + $1_vesting_VestingContract_$memory#90 := $1_vesting_VestingContract_$memory; - // assume Identical($t2, select account::SignerCapability.account($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:458:9+30 - assume {:print "$at(73,22226,22256)"} true; - assume ($t2 == $account#$1_account_SignerCapability($t1)); + // trace_local[admin]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+1 + assume {:print "$track_local(59,19,0):", $t0} $t0 == $t0; - // $t3 := account::create_signer_with_capability($t1) on_abort goto L2 with $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:910:9+68 - assume {:print "$at(2,42338,42406)"} true; - call $t3 := $1_account_create_signer_with_capability($t1); + // trace_local[contract_address]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+1 + assume {:print "$track_local(59,19,1):", $t1} $t1 == $t1; + + // $t19 := borrow_global($t1) on_abort goto L2 with $t20 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:791:32+17 + assume {:print "$at(2,36930,36947)"} true; + if (!$ResourceExists($1_vesting_VestingContract_$memory, $t1)) { + call $ExecFailureAbort(); + } else { + $t19 := $Mutation($Global($t1), EmptyVec(), $ResourceValue($1_vesting_VestingContract_$memory, $t1)); + } if ($abort_flag) { - assume {:print "$at(2,42338,42406)"} true; - $t4 := $abort_code; - assume {:print "$track_abort(57,13):", $t4} $t4 == $t4; + assume {:print "$at(2,36930,36947)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(59,19):", $t20} $t20 == $t20; goto L2; } - // trace_return[0]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:910:9+68 - assume {:print "$track_return(57,13,0):", $t3} $t3 == $t3; - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:911:5+1 - assume {:print "$at(2,42411,42412)"} true; -L1: + // trace_local[vesting_contract]($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:791:13+16 + $temp_0'$1_vesting_VestingContract' := $Dereference($t19); + assume {:print "$track_local(59,19,3):", $temp_0'$1_vesting_VestingContract'} $temp_0'$1_vesting_VestingContract' == $temp_0'$1_vesting_VestingContract'; - // assert Not(false) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:374:9+16 - assume {:print "$at(3,16036,16052)"} true; - assert {:msg "assert_failed(3,16036,16052): function does not abort under this condition"} - !false; + // $t21 := read_ref($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:792:21+25 + assume {:print "$at(2,37004,37029)"} true; + $t21 := $Dereference($t19); - // return $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:374:9+16 - $ret0 := $t3; - return; + // vesting::verify_admin($t0, $t21) on_abort goto L2 with $t20 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:792:9+37 + call $1_vesting_verify_admin($t0, $t21); + if ($abort_flag) { + assume {:print "$at(2,36992,37029)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(59,19):", $t20} $t20 == $t20; + goto L2; + } - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:911:5+1 - assume {:print "$at(2,42411,42412)"} true; -L2: + // $t22 := read_ref($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:793:68+16 + assume {:print "$at(2,37098,37114)"} true; + $t22 := $Dereference($t19); - // assert false at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:373:5+117 - assume {:print "$at(3,15941,16058)"} true; - assert {:msg "assert_failed(3,15941,16058): abort not covered by any of the `aborts_if` clauses"} - false; + // $t23 := vesting::get_vesting_account_signer_internal($t22) on_abort goto L2 with $t20 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:793:32+53 + call $t23 := $1_vesting_get_vesting_account_signer_internal($t22); + if ($abort_flag) { + assume {:print "$at(2,37062,37115)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(59,19):", $t20} $t20 == $t20; + goto L2; + } - // abort($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:373:5+117 - $abort_code := $t4; - $abort_flag := true; - return; + // $t24 := get_field.staking($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:794:57+24 + assume {:print "$at(2,37173,37197)"} true; + $t24 := $staking#$1_vesting_VestingContract($Dereference($t19)); -} + // $t25 := get_field.operator($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:794:57+33 + $t25 := $operator#$1_vesting_StakingInfo($t24); -// fun vesting::operator_commission_percentage [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:302:5+275 -procedure {:timeLimit 1000} $1_vesting_operator_commission_percentage$verify(_$t0: int) returns ($ret0: int) -{ - // declare local variables - var $t1: int; - var $t2: $1_vesting_VestingContract; - var $t3: $1_vesting_StakingInfo; - var $t4: int; - var $t0: int; - var $temp_0'address': int; - var $temp_0'u64': int; - var $1_vesting_VestingContract_$memory#53: $Memory $1_vesting_VestingContract; - $t0 := _$t0; + // assume Identical($t26, signer::$address_of($t23)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:124:9+48 + assume {:print "$at(141,5165,5213)"} true; + assume ($t26 == $1_signer_$address_of($t23)); - // verification entrypoint assumptions - call $InitVerification(); + // assume Identical($t27, select staking_contract::Store.staking_contracts(global($t26))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:302:9+64 + assume {:print "$at(141,12978,13042)"} true; + assume ($t27 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t26))); - // bytecode translation starts here - // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:302:5+1 - assume {:print "$at(2,14085,14086)"} true; - assume $IsValid'address'($t0); + // assume Identical($t28, global($t26)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:352:9+34 + assume {:print "$at(141,15082,15116)"} true; + assume ($t28 == $ResourceValue($1_staking_contract_Store_$memory, $t26)); - // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:302:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); - (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; - (var j := $i_4; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); + // assume Identical($t29, simple_map::spec_get(select staking_contract::Store.staking_contracts($t28), $t25)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:353:9+79 + assume {:print "$at(141,15125,15204)"} true; + assume ($t29 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($t28), $t25)); - // @53 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:302:5+1 - $1_vesting_VestingContract_$memory#53 := $1_vesting_VestingContract_$memory; + // assume Identical($t30, select stake::OwnerCapability.pool_address(select staking_contract::StakingContract.owner_cap($t29))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:354:9+59 + assume {:print "$at(141,15213,15272)"} true; + assume ($t30 == $pool_address#$1_stake_OwnerCapability($owner_cap#$1_staking_contract_StakingContract($t29))); - // trace_local[vesting_contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:302:5+1 - assume {:print "$track_local(57,15,0):", $t0} $t0 == $t0; + // assume Identical($t31, global(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:359:9+69 + assume {:print "$at(141,15418,15487)"} true; + assume ($t31 == $ResourceValue($1_staking_config_StakingConfig_$memory, 1)); - // vesting::assert_vesting_contract_exists($t0) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:303:9+56 - assume {:print "$at(2,14202,14258)"} true; - call $1_vesting_assert_vesting_contract_exists($t0); - if ($abort_flag) { - assume {:print "$at(2,14202,14258)"} true; - $t1 := $abort_code; - assume {:print "$track_abort(57,15):", $t1} $t1 == $t1; - goto L2; - } + // assume Identical($t32, global($t30)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:360:9+56 + assume {:print "$at(141,15496,15552)"} true; + assume ($t32 == $ResourceValue($1_stake_StakePool_$memory, $t30)); - // $t2 := get_global($t0) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:304:9+13 - assume {:print "$at(2,14268,14281)"} true; - if (!$ResourceExists($1_vesting_VestingContract_$memory, $t0)) { - call $ExecFailureAbort(); - } else { - $t2 := $ResourceValue($1_vesting_VestingContract_$memory, $t0); - } + // assume Identical($t33, select stake::StakePool.locked_until_secs($t32)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:361:9+57 + assume {:print "$at(141,15561,15618)"} true; + assume ($t33 == $locked_until_secs#$1_stake_StakePool($t32)); + + // assume Identical($t34, Div(select timestamp::CurrentTimeMicroseconds.microseconds(global(0x1)), 1000000)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:362:9+126 + assume {:print "$at(141,15627,15753)"} true; + assume ($t34 == ($microseconds#$1_timestamp_CurrentTimeMicroseconds($ResourceValue($1_timestamp_CurrentTimeMicroseconds_$memory, 1)) div 1000000)); + + // assume Identical($t35, Add($t34, select staking_config::StakingConfig.recurring_lockup_duration_secs($t31))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:363:9+77 + assume {:print "$at(141,15762,15839)"} true; + assume ($t35 == ($t34 + $recurring_lockup_duration_secs#$1_staking_config_StakingConfig($t31))); + + // staking_contract::reset_lockup($t23, $t25) on_abort goto L2 with $t20 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:794:9+82 + assume {:print "$at(2,37125,37207)"} true; + call $1_staking_contract_reset_lockup($t23, $t25); if ($abort_flag) { - assume {:print "$at(2,14268,14281)"} true; - $t1 := $abort_code; - assume {:print "$track_abort(57,15):", $t1} $t1 == $t1; + assume {:print "$at(2,37125,37207)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(59,19):", $t20} $t20 == $t20; goto L2; } - // $t3 := get_field.staking($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:304:9+64 - $t3 := $staking#$1_vesting_VestingContract($t2); + // $t36 := borrow_field.reset_lockup_events($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:797:13+41 + assume {:print "$at(2,37242,37283)"} true; + $t36 := $ChildMutation($t19, 11, $reset_lockup_events#$1_vesting_VestingContract($Dereference($t19))); - // $t4 := get_field.commission_percentage($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:304:9+86 - $t4 := $commission_percentage#$1_vesting_StakingInfo($t3); + // $t37 := get_field.admin($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:799:24+22 + assume {:print "$at(2,37339,37361)"} true; + $t37 := $admin#$1_vesting_VestingContract($Dereference($t19)); - // trace_return[0]($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:304:9+86 - assume {:print "$track_return(57,15,0):", $t4} $t4 == $t4; + // $t38 := get_field.staking($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:801:39+24 + assume {:print "$at(2,37461,37485)"} true; + $t38 := $staking#$1_vesting_VestingContract($Dereference($t19)); - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:305:5+1 - assume {:print "$at(2,14359,14360)"} true; -L1: + // $t39 := get_field.pool_address($t38) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:801:39+37 + $t39 := $pool_address#$1_vesting_StakingInfo($t38); - // assert Not(Not(exists[@53]($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:28:9+61 - assume {:print "$at(3,970,1031)"} true; - assert {:msg "assert_failed(3,970,1031): function does not abort under this condition"} - !!$ResourceExists($1_vesting_VestingContract_$memory#53, $t0); + // $t40 := get_field.staking($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:802:68+24 + assume {:print "$at(2,37567,37591)"} true; + $t40 := $staking#$1_vesting_VestingContract($Dereference($t19)); - // return $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:28:9+61 - $ret0 := $t4; - return; + // $t41 := get_field.pool_address($t40) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:802:68+37 + $t41 := $pool_address#$1_vesting_StakingInfo($t40); - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:305:5+1 - assume {:print "$at(2,14359,14360)"} true; -L2: + // $t42 := stake::get_lockup_secs($t41) on_abort goto L2 with $t20 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:802:45+61 + call $t42 := $1_stake_get_lockup_secs($t41); + if ($abort_flag) { + assume {:print "$at(2,37544,37605)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(59,19):", $t20} $t20 == $t20; + goto L2; + } - // assert Not(exists[@53]($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:27:5+153 - assume {:print "$at(3,884,1037)"} true; - assert {:msg "assert_failed(3,884,1037): abort not covered by any of the `aborts_if` clauses"} - !$ResourceExists($1_vesting_VestingContract_$memory#53, $t0); + // $t43 := pack vesting::ResetLockupEvent($t37, $t1, $t39, $t42) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:798:13+323 + assume {:print "$at(2,37297,37620)"} true; + $t43 := $1_vesting_ResetLockupEvent($t37, $t1, $t39, $t42); - // abort($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:27:5+153 - $abort_code := $t1; - $abort_flag := true; - return; + // opaque begin: event::emit_event($t36, $t43) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:796:9+413 + assume {:print "$at(2,37218,37631)"} true; -} + // opaque end: event::emit_event($t36, $t43) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:796:9+413 -// fun vesting::period_duration_secs [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:271:5+268 -procedure {:timeLimit 1000} $1_vesting_period_duration_secs$verify(_$t0: int) returns ($ret0: int) -{ - // declare local variables - var $t1: int; - var $t2: $1_vesting_VestingContract; - var $t3: $1_vesting_VestingSchedule; - var $t4: int; - var $t0: int; - var $temp_0'address': int; - var $temp_0'u64': int; - var $1_vesting_VestingContract_$memory#56: $Memory $1_vesting_VestingContract; - $t0 := _$t0; + // write_back[Reference($t19).reset_lockup_events (event::EventHandle)]($t36) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:796:9+413 + $t19 := $UpdateMutation($t19, $Update'$1_vesting_VestingContract'_reset_lockup_events($Dereference($t19), $Dereference($t36))); - // verification entrypoint assumptions - call $InitVerification(); + // assert forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t19)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t19)), addr)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 + // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 + assume {:print "$at(66,538,673)"} true; + assert {:msg "assert_failed(66,538,673): data invariant does not hold"} + (forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t19))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t19))), addr)))); - // bytecode translation starts here - // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:271:5+1 - assume {:print "$at(2,12272,12273)"} true; - assume $IsValid'address'($t0); + // assert forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t19)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t19)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t19)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t19)), j)), Eq(i, j)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 + // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 + assume {:print "$at(66,738,867)"} true; + assert {:msg "assert_failed(66,738,867): data invariant does not hold"} + (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t19))))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t19))))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; + (var j := $i_3; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t19))), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t19))), j)) ==> $IsEqual'num'(i, j)))))))); - // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:271:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); - (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; - (var j := $i_4; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); + // write_back[vesting::VestingContract@]($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:796:9+413 + assume {:print "$at(2,37218,37631)"} true; + $1_vesting_VestingContract_$memory := $ResourceUpdate($1_vesting_VestingContract_$memory, $GlobalLocationAddress($t19), + $Dereference($t19)); - // @56 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:271:5+1 - $1_vesting_VestingContract_$memory#56 := $1_vesting_VestingContract_$memory; + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:805:5+1 + assume {:print "$at(2,37637,37638)"} true; +L1: - // trace_local[vesting_contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:271:5+1 - assume {:print "$track_local(57,16,0):", $t0} $t0 == $t0; + // assert Not(Not(exists[@90]($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:289:9+53 + assume {:print "$at(3,12661,12714)"} true; + assert {:msg "assert_failed(3,12661,12714): function does not abort under this condition"} + !!$ResourceExists($1_vesting_VestingContract_$memory#90, $t1); - // vesting::assert_vesting_contract_exists($t0) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:272:9+56 - assume {:print "$at(2,12379,12435)"} true; - call $1_vesting_assert_vesting_contract_exists($t0); - if ($abort_flag) { - assume {:print "$at(2,12379,12435)"} true; - $t1 := $abort_code; - assume {:print "$track_abort(57,16):", $t1} $t1 == $t1; - goto L2; - } + // assert Not(Neq
(signer::$address_of[]($t0), select vesting::VestingContract.admin($t4))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:291:9+62 + assume {:print "$at(3,12797,12859)"} true; + assert {:msg "assert_failed(3,12797,12859): function does not abort under this condition"} + !!$IsEqual'address'($1_signer_$address_of($t0), $admin#$1_vesting_VestingContract($t4)); - // $t2 := get_global($t0) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:273:9+13 - assume {:print "$at(2,12445,12458)"} true; - if (!$ResourceExists($1_vesting_VestingContract_$memory, $t0)) { - call $ExecFailureAbort(); - } else { - $t2 := $ResourceValue($1_vesting_VestingContract_$memory, $t0); - } - if ($abort_flag) { - assume {:print "$at(2,12445,12458)"} true; - $t1 := $abort_code; - assume {:print "$track_abort(57,16):", $t1} $t1 == $t1; - goto L2; - } + // assert Not(Not(exists[@91]($t6))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:301:9+33 + assume {:print "$at(141,12936,12969)"} true; + assert {:msg "assert_failed(141,12936,12969): function does not abort under this condition"} + !!$ResourceExists($1_staking_contract_Store_$memory#91, $t6); - // $t3 := get_field.vesting_schedule($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:273:9+73 - $t3 := $vesting_schedule#$1_vesting_VestingContract($t2); + // assert Not(Not(simple_map::spec_contains_key[]($t10, $t5))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:303:9+70 + assume {:print "$at(141,13051,13121)"} true; + assert {:msg "assert_failed(141,13051,13121): function does not abort under this condition"} + !!$1_simple_map_spec_contains_key'address_$1_staking_contract_StakingContract'($t10, $t5); - // $t4 := get_field.period_duration($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:273:9+89 - $t4 := $period_duration#$1_vesting_VestingSchedule($t3); + // assert Not(Not(stake::$stake_pool_exists[@92]($t13))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:356:9+50 + assume {:print "$at(141,15282,15332)"} true; + assert {:msg "assert_failed(141,15282,15332): function does not abort under this condition"} + !!$1_stake_$stake_pool_exists($1_stake_StakePool_$memory#92, $t13); - // trace_return[0]($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:273:9+89 - assume {:print "$track_return(57,16,0):", $t4} $t4 == $t4; + // assert Not(Not(exists[@93](0x1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:357:9+67 + assume {:print "$at(141,15341,15408)"} true; + assert {:msg "assert_failed(141,15341,15408): function does not abort under this condition"} + !!$ResourceExists($1_staking_config_StakingConfig_$memory#93, 1); - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:274:5+1 - assume {:print "$at(2,12539,12540)"} true; -L1: + // assert Not(Gt(Add($t17, select staking_config::StakingConfig.recurring_lockup_duration_secs($t14)), 18446744073709551615)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:364:9+68 + assume {:print "$at(141,15848,15916)"} true; + assert {:msg "assert_failed(141,15848,15916): function does not abort under this condition"} + !(($t17 + $recurring_lockup_duration_secs#$1_staking_config_StakingConfig($t14)) > 18446744073709551615); - // assert Not(Not(exists[@56]($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:16:9+61 - assume {:print "$at(3,501,562)"} true; - assert {:msg "assert_failed(3,501,562): function does not abort under this condition"} - !!$ResourceExists($1_vesting_VestingContract_$memory#56, $t0); + // assert Not(Or(Gt($t16, $t18), Eq($t16, $t18))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:365:9+106 + assume {:print "$at(141,15925,16031)"} true; + assert {:msg "assert_failed(141,15925,16031): function does not abort under this condition"} + !(($t16 > $t18) || $IsEqual'u64'($t16, $t18)); - // return $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:16:9+61 - $ret0 := $t4; + // assert Not(Not(exists[@94](0x1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:366:9+72 + assume {:print "$at(141,16040,16112)"} true; + assert {:msg "assert_failed(141,16040,16112): function does not abort under this condition"} + !!$ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory#94, 1); + + // assert Not(Not(exists[@92](select vesting::StakingInfo.pool_address(select vesting::VestingContract.staking($t4))))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:302:9+75 + assume {:print "$at(3,13365,13440)"} true; + assert {:msg "assert_failed(3,13365,13440): function does not abort under this condition"} + !!$ResourceExists($1_stake_StakePool_$memory#92, $pool_address#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t4))); + + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:302:9+75 return; - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:274:5+1 - assume {:print "$at(2,12539,12540)"} true; + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:805:5+1 + assume {:print "$at(2,37637,37638)"} true; L2: - // assert Not(exists[@56]($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:15:5+143 - assume {:print "$at(3,425,568)"} true; - assert {:msg "assert_failed(3,425,568): abort not covered by any of the `aborts_if` clauses"} - !$ResourceExists($1_vesting_VestingContract_$memory#56, $t0); + // assert Or(Or(Or(Or(Or(Or(Or(Or(Or(Not(exists[@90]($t1)), Neq
(signer::$address_of[]($t0), select vesting::VestingContract.admin($t4))), Not(exists[@91]($t6))), Not(simple_map::spec_contains_key[]($t10, $t5))), Not(stake::$stake_pool_exists[@92]($t13))), Not(exists[@93](0x1))), Gt(Add($t17, select staking_config::StakingConfig.recurring_lockup_duration_secs($t14)), 18446744073709551615)), Or(Gt($t16, $t18), Eq($t16, $t18))), Not(exists[@94](0x1))), Not(exists[@92](select vesting::StakingInfo.pool_address(select vesting::VestingContract.staking($t4))))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:285:5+879 + assume {:print "$at(3,12567,13446)"} true; + assert {:msg "assert_failed(3,12567,13446): abort not covered by any of the `aborts_if` clauses"} + (((((((((!$ResourceExists($1_vesting_VestingContract_$memory#90, $t1) || !$IsEqual'address'($1_signer_$address_of($t0), $admin#$1_vesting_VestingContract($t4))) || !$ResourceExists($1_staking_contract_Store_$memory#91, $t6)) || !$1_simple_map_spec_contains_key'address_$1_staking_contract_StakingContract'($t10, $t5)) || !$1_stake_$stake_pool_exists($1_stake_StakePool_$memory#92, $t13)) || !$ResourceExists($1_staking_config_StakingConfig_$memory#93, 1)) || (($t17 + $recurring_lockup_duration_secs#$1_staking_config_StakingConfig($t14)) > 18446744073709551615)) || (($t16 > $t18) || $IsEqual'u64'($t16, $t18))) || !$ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory#94, 1)) || !$ResourceExists($1_stake_StakePool_$memory#92, $pool_address#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t4)))); - // abort($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:15:5+143 - $abort_code := $t1; + // abort($t20) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:285:5+879 + $abort_code := $t20; $abort_flag := true; return; } -// fun vesting::remaining_grant [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:283:5+246 -procedure {:timeLimit 1000} $1_vesting_remaining_grant$verify(_$t0: int) returns ($ret0: int) +// fun vesting::stake_pool_address [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:251:5+258 +procedure {:timeLimit 900} $1_vesting_stake_pool_address$verify(_$t0: int) returns ($ret0: int) { // declare local variables var $t1: int; var $t2: $1_vesting_VestingContract; - var $t3: int; + var $t3: $1_vesting_StakingInfo; + var $t4: int; var $t0: int; var $temp_0'address': int; - var $temp_0'u64': int; - var $1_vesting_VestingContract_$memory#55: $Memory $1_vesting_VestingContract; + var $1_vesting_VestingContract_$memory#33: $Memory $1_vesting_VestingContract; $t0 := _$t0; // verification entrypoint assumptions call $InitVerification(); // bytecode translation starts here - // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:283:5+1 - assume {:print "$at(2,13028,13029)"} true; + // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:251:5+1 + assume {:print "$at(2,11140,11141)"} true; assume $IsValid'address'($t0); - // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:283:5+1 + // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:251:5+1 assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; (var j := $i_4; (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); - // @55 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:283:5+1 - $1_vesting_VestingContract_$memory#55 := $1_vesting_VestingContract_$memory; + // @33 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:251:5+1 + $1_vesting_VestingContract_$memory#33 := $1_vesting_VestingContract_$memory; - // trace_local[vesting_contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:283:5+1 - assume {:print "$track_local(57,17,0):", $t0} $t0 == $t0; + // trace_local[vesting_contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:251:5+1 + assume {:print "$track_local(59,25,0):", $t0} $t0 == $t0; - // vesting::assert_vesting_contract_exists($t0) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:284:9+56 - assume {:print "$at(2,13130,13186)"} true; + // vesting::assert_vesting_contract_exists($t0) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:252:9+56 + assume {:print "$at(2,11249,11305)"} true; call $1_vesting_assert_vesting_contract_exists($t0); if ($abort_flag) { - assume {:print "$at(2,13130,13186)"} true; + assume {:print "$at(2,11249,11305)"} true; $t1 := $abort_code; - assume {:print "$track_abort(57,17):", $t1} $t1 == $t1; + assume {:print "$track_abort(59,25):", $t1} $t1 == $t1; goto L2; } - // $t2 := get_global($t0) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:285:9+13 - assume {:print "$at(2,13196,13209)"} true; + // $t2 := get_global($t0) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:253:9+13 + assume {:print "$at(2,11315,11328)"} true; if (!$ResourceExists($1_vesting_VestingContract_$memory, $t0)) { call $ExecFailureAbort(); } else { $t2 := $ResourceValue($1_vesting_VestingContract_$memory, $t0); } if ($abort_flag) { - assume {:print "$at(2,13196,13209)"} true; + assume {:print "$at(2,11315,11328)"} true; $t1 := $abort_code; - assume {:print "$track_abort(57,17):", $t1} $t1 == $t1; + assume {:print "$track_abort(59,25):", $t1} $t1 == $t1; goto L2; } - // $t3 := get_field.remaining_grant($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:285:9+72 - $t3 := $remaining_grant#$1_vesting_VestingContract($t2); + // $t3 := get_field.staking($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:253:9+64 + $t3 := $staking#$1_vesting_VestingContract($t2); - // trace_return[0]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:285:9+72 - assume {:print "$track_return(57,17,0):", $t3} $t3 == $t3; + // $t4 := get_field.pool_address($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:253:9+77 + $t4 := $pool_address#$1_vesting_StakingInfo($t3); - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:286:5+1 - assume {:print "$at(2,13273,13274)"} true; + // trace_return[0]($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:253:9+77 + assume {:print "$track_return(59,25,0):", $t4} $t4 == $t4; + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:254:5+1 + assume {:print "$at(2,11397,11398)"} true; L1: - // assert Not(Not(exists[@55]($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:20:9+61 - assume {:print "$at(3,645,706)"} true; - assert {:msg "assert_failed(3,645,706): function does not abort under this condition"} - !!$ResourceExists($1_vesting_VestingContract_$memory#55, $t0); + // assert Not(Not(exists[@33]($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:8:9+61 + assume {:print "$at(3,205,266)"} true; + assert {:msg "assert_failed(3,205,266): function does not abort under this condition"} + !!$ResourceExists($1_vesting_VestingContract_$memory#33, $t0); - // return $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:20:9+61 - $ret0 := $t3; + // return $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:8:9+61 + $ret0 := $t4; return; - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:286:5+1 - assume {:print "$at(2,13273,13274)"} true; + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:254:5+1 + assume {:print "$at(2,11397,11398)"} true; L2: - // assert Not(exists[@55]($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:19:5+138 - assume {:print "$at(3,574,712)"} true; - assert {:msg "assert_failed(3,574,712): abort not covered by any of the `aborts_if` clauses"} - !$ResourceExists($1_vesting_VestingContract_$memory#55, $t0); + // assert Not(exists[@33]($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:7:5+145 + assume {:print "$at(3,127,272)"} true; + assert {:msg "assert_failed(3,127,272): abort not covered by any of the `aborts_if` clauses"} + !$ResourceExists($1_vesting_VestingContract_$memory#33, $t0); - // abort($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:19:5+138 + // abort($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:7:5+145 $abort_code := $t1; $abort_flag := true; return; } -// fun vesting::reset_beneficiary [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:843:5+755 -procedure {:timeLimit 1000} $1_vesting_reset_beneficiary$verify(_$t0: $signer, _$t1: int, _$t2: int) returns () +// fun vesting::update_voter [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:763:5+956 +procedure {:timeLimit 900} $1_vesting_update_voter$verify(_$t0: $signer, _$t1: int, _$t2: int) returns () { // declare local variables - var $t3: bool; - var $t4: int; + var $t3: $signer; + var $t4: $signer; var $t5: int; - var $t6: $Mutation (Table int (int)); - var $t7: $Mutation ($1_vesting_VestingContract); + var $t6: $Mutation ($1_vesting_VestingContract); + var $t7: $1_vesting_VestingContract; var $t8: int; - var $t9: $1_vesting_VestingContract; - var $t10: Table int (int); - var $t11: $1_string_String; - var $t12: $Mutation ($1_vesting_VestingContract); + var $t9: int; + var $t10: $1_vesting_VestingContract; + var $t11: $1_staking_contract_Store; + var $t12: $1_staking_contract_StakingContract; var $t13: int; - var $t14: int; - var $t15: int; - var $t16: bool; - var $t17: bool; - var $t18: Vec (int); - var $t19: $1_string_String; - var $t20: Table int (int); + var $t14: Table int ($1_staking_contract_StakingContract); + var $t15: $Mutation ($1_vesting_VestingContract); + var $t16: int; + var $t17: $1_vesting_VestingContract; + var $t18: $1_vesting_VestingContract; + var $t19: $signer; + var $t20: $1_vesting_StakingInfo; var $t21: int; - var $t22: int; + var $t22: $1_vesting_StakingInfo; var $t23: int; - var $t24: $Mutation (Table int (int)); - var $t25: Table int (int); - var $t26: bool; + var $t24: int; + var $t25: $1_staking_contract_Store; + var $t26: $1_staking_contract_StakingContract; var $t27: int; - var $t28: int; - var $t29: $1_vesting_VestingContract; + var $t28: Table int ($1_staking_contract_StakingContract); + var $t29: $Mutation ($1_vesting_StakingInfo); + var $t30: $Mutation (int); + var $t31: $Mutation ($1_event_EventHandle'$1_vesting_UpdateVoterEvent'); + var $t32: int; + var $t33: $1_vesting_StakingInfo; + var $t34: int; + var $t35: $1_vesting_UpdateVoterEvent; var $t0: $signer; var $t1: int; var $t2: int; - var $temp_0'$1_simple_map_SimpleMap'address_address'': Table int (int); var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; var $temp_0'address': int; var $temp_0'signer': $signer; - var $1_vesting_VestingContract_$memory#102: $Memory $1_vesting_VestingContract; - var $1_vesting_VestingAccountManagement_$memory#103: $Memory $1_vesting_VestingAccountManagement; + var $1_vesting_VestingContract_$memory#87: $Memory $1_vesting_VestingContract; + var $1_stake_StakePool_$memory#88: $Memory $1_stake_StakePool; + var $1_staking_contract_Store_$memory#89: $Memory $1_staking_contract_Store; $t0 := _$t0; $t1 := _$t1; $t2 := _$t2; @@ -33695,6386 +18056,5472 @@ procedure {:timeLimit 1000} $1_vesting_reset_beneficiary$verify(_$t0: $signer, _ call $InitVerification(); // bytecode translation starts here - // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:843:5+1 - assume {:print "$at(2,39177,39178)"} true; + // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:763:5+1 + assume {:print "$at(2,35814,35815)"} true; assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($addr#$signer($t0)); - // assume WellFormed($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:843:5+1 + // assume WellFormed($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:763:5+1 assume $IsValid'address'($t1); - // assume WellFormed($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:843:5+1 + // assume WellFormed($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:763:5+1 assume $IsValid'address'($t2); - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:843:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingAccountManagement_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingAccountManagement_$memory, $a_0); - ($IsValid'$1_vesting_VestingAccountManagement'($rsc)))); + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:763:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_stake_StakePool_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_StakePool_$memory, $a_0); + ($IsValid'$1_stake_StakePool'($rsc)))); - // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:843:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); - (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; - (var j := $i_4; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:763:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorConfig_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorConfig_$memory, $a_0); + ($IsValid'$1_stake_ValidatorConfig'($rsc)))); - // assume Identical($t8, signer::$address_of($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:330:9+39 - assume {:print "$at(3,14093,14132)"} true; - assume ($t8 == $1_signer_$address_of($t0)); + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:763:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorPerformance_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorPerformance_$memory, $a_0); + ($IsValid'$1_stake_ValidatorPerformance'($rsc)))); - // assume Identical($t9, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:331:9+65 - assume {:print "$at(3,14141,14206)"} true; - assume ($t9 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:763:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorSet_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorSet_$memory, $a_0); + ($IsValid'$1_stake_ValidatorSet'($rsc)))); - // assume Identical($t10, select vesting::VestingAccountManagement.roles(global($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:334:9+69 - assume {:print "$at(3,14439,14508)"} true; - assume ($t10 == $roles#$1_vesting_VestingAccountManagement($ResourceValue($1_vesting_VestingAccountManagement_$memory, $t1))); + // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), forall $key: select staking_contract::Store.staking_contracts($rsc): And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), i), Index(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:763:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_staking_contract_Store_$memory, $a_0)}(var $rsc := $ResourceValue($1_staking_contract_Store_$memory, $a_0); + (($IsValid'$1_staking_contract_Store'($rsc) && (var $range_1 := $staking_contracts#$1_staking_contract_Store($rsc); (forall $key: int :: ContainsTable($range_1, $EncodeKey'address'($key)) ==> (((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), addr)))) && (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))))); (var $range_3 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))))); (forall $i_4: int, $i_5: int :: $InRange($range_2, $i_4) ==> $InRange($range_3, $i_5) ==> (var i := $i_4; + (var j := $i_5; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), i), ReadVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), j)) ==> $IsEqual'num'(i, j)))))))))))))))); - // assume Identical($t11, string::spec_utf8([82, 79, 76, 69, 95, 66, 69, 78, 69, 70, 73, 67, 73, 65, 82, 89, 95, 82, 69, 83, 69, 84, 84, 69, 82])) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:335:9+61 - assume {:print "$at(3,14517,14578)"} true; - assume ($t11 == $1_string_spec_utf8(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(82, 79, 76, 69), MakeVec4(95, 66, 69, 78)), MakeVec4(69, 70, 73, 67)), MakeVec4(73, 65, 82, 89)), MakeVec4(95, 82, 69, 83)), MakeVec4(69, 84, 84, 69)), MakeVec1(82)))); + // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:763:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); + (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; + (var j := $i_4; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); - // @103 := save_mem(vesting::VestingAccountManagement) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:843:5+1 - assume {:print "$at(2,39177,39178)"} true; - $1_vesting_VestingAccountManagement_$memory#103 := $1_vesting_VestingAccountManagement_$memory; + // assume Implies(exists(0x1), stake::validator_set_is_valid()) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:763:5+956 + // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:8:9+92 + assume ($ResourceExists($1_stake_ValidatorSet_$memory, 1) ==> $1_stake_validator_set_is_valid($1_stake_StakePool_$memory, $1_stake_ValidatorConfig_$memory, $1_stake_ValidatorPerformance_$memory, $1_stake_ValidatorSet_$memory)); - // @102 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:843:5+1 - $1_vesting_VestingContract_$memory#102 := $1_vesting_VestingContract_$memory; + // assume Identical($t7, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:278:9+65 + assume {:print "$at(3,12320,12385)"} true; + assume ($t7 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); - // trace_local[account]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:843:5+1 - assume {:print "$track_local(57,18,0):", $t0} $t0 == $t0; + // assume Identical($t8, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t7))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:279:9+49 + assume {:print "$at(3,12394,12443)"} true; + assume ($t8 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t7))); - // trace_local[contract_address]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:843:5+1 - assume {:print "$track_local(57,18,1):", $t1} $t1 == $t1; + // assume Identical($t9, select account::SignerCapability.account(select vesting::VestingContract.signer_cap($t7))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:280:9+49 + assume {:print "$at(3,12452,12501)"} true; + assume ($t9 == $account#$1_account_SignerCapability($signer_cap#$1_vesting_VestingContract($t7))); - // trace_local[shareholder]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:843:5+1 - assume {:print "$track_local(57,18,2):", $t2} $t2 == $t2; + // assume Identical($t10, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:504:9+65 + assume {:print "$at(3,22754,22819)"} true; + assume ($t10 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); - // $t12 := borrow_global($t1) on_abort goto L10 with $t13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:848:32+17 - assume {:print "$at(2,39394,39411)"} true; - if (!$ResourceExists($1_vesting_VestingContract_$memory, $t1)) { - call $ExecFailureAbort(); - } else { - $t12 := $Mutation($Global($t1), EmptyVec(), $ResourceValue($1_vesting_VestingContract_$memory, $t1)); - } - if ($abort_flag) { - assume {:print "$at(2,39394,39411)"} true; - $t13 := $abort_code; - assume {:print "$track_abort(57,18):", $t13} $t13 == $t13; - goto L10; - } + // assume Identical($t11, global($t9)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:310:9+34 + assume {:print "$at(141,13226,13260)"} true; + assume ($t11 == $ResourceValue($1_staking_contract_Store_$memory, $t9)); - // trace_local[vesting_contract]($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:848:13+16 - $temp_0'$1_vesting_VestingContract' := $Dereference($t12); - assume {:print "$track_local(57,18,7):", $temp_0'$1_vesting_VestingContract'} $temp_0'$1_vesting_VestingContract' == $temp_0'$1_vesting_VestingContract'; + // assume Identical($t12, simple_map::spec_get(select staking_contract::Store.staking_contracts($t11), $t8)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:311:9+79 + assume {:print "$at(141,13269,13348)"} true; + assume ($t12 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($t11), $t8)); - // $t14 := signer::address_of($t0) on_abort goto L10 with $t13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:849:20+27 - assume {:print "$at(2,39467,39494)"} true; - call $t14 := $1_signer_address_of($t0); - if ($abort_flag) { - assume {:print "$at(2,39467,39494)"} true; - $t13 := $abort_code; - assume {:print "$track_abort(57,18):", $t13} $t13 == $t13; - goto L10; - } + // assume Identical($t13, select staking_contract::StakingContract.pool_address($t12)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:312:9+49 + assume {:print "$at(141,13357,13406)"} true; + assume ($t13 == $pool_address#$1_staking_contract_StakingContract($t12)); - // trace_local[addr]($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:849:13+4 - assume {:print "$track_local(57,18,5):", $t14} $t14 == $t14; + // assume Identical($t14, select staking_contract::Store.staking_contracts(global($t9))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:302:9+64 + assume {:print "$at(141,12978,13042)"} true; + assume ($t14 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t9))); - // $t15 := get_field.admin($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:851:21+22 - assume {:print "$at(2,39533,39555)"} true; - $t15 := $admin#$1_vesting_VestingContract($Dereference($t12)); + // @88 := save_mem(stake::StakePool) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:763:5+1 + assume {:print "$at(2,35814,35815)"} true; + $1_stake_StakePool_$memory#88 := $1_stake_StakePool_$memory; - // $t16 := ==($t14, $t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:851:18+2 - $t16 := $IsEqual'address'($t14, $t15); + // @89 := save_mem(staking_contract::Store) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:763:5+1 + $1_staking_contract_Store_$memory#89 := $1_staking_contract_Store_$memory; - // if ($t16) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:851:13+124 - if ($t16) { goto L1; } else { goto L0; } + // @87 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:763:5+1 + $1_vesting_VestingContract_$memory#87 := $1_vesting_VestingContract_$memory; - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:851:13+124 -L1: + // trace_local[admin]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:763:5+1 + assume {:print "$track_local(59,33,0):", $t0} $t0 == $t0; - // $t17 := true at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:851:13+124 - assume {:print "$at(2,39525,39649)"} true; - $t17 := true; - assume $IsValid'bool'($t17); + // trace_local[contract_address]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:763:5+1 + assume {:print "$track_local(59,33,1):", $t1} $t1 == $t1; - // $t3 := $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:851:13+124 - $t3 := $t17; + // trace_local[new_voter]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:763:5+1 + assume {:print "$track_local(59,33,2):", $t2} $t2 == $t2; - // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:851:13+124 - goto L2; + // $t15 := borrow_global($t1) on_abort goto L2 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:768:32+17 + assume {:print "$at(2,35996,36013)"} true; + if (!$ResourceExists($1_vesting_VestingContract_$memory, $t1)) { + call $ExecFailureAbort(); + } else { + $t15 := $Mutation($Global($t1), EmptyVec(), $ResourceValue($1_vesting_VestingContract_$memory, $t1)); + } + if ($abort_flag) { + assume {:print "$at(2,35996,36013)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(59,33):", $t16} $t16 == $t16; + goto L2; + } - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:852:17+4 - assume {:print "$at(2,39575,39579)"} true; -L0: + // trace_local[vesting_contract]($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:768:13+16 + $temp_0'$1_vesting_VestingContract' := $Dereference($t15); + assume {:print "$track_local(59,33,6):", $temp_0'$1_vesting_VestingContract'} $temp_0'$1_vesting_VestingContract' == $temp_0'$1_vesting_VestingContract'; - // $t18 := [82, 79, 76, 69, 95, 66, 69, 78, 69, 70, 73, 67, 73, 65, 82, 89, 95, 82, 69, 83, 69, 84, 84, 69, 82] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:852:64+25 - assume {:print "$at(2,39622,39647)"} true; - $t18 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(82, 79, 76, 69), MakeVec4(95, 66, 69, 78)), MakeVec4(69, 70, 73, 67)), MakeVec4(73, 65, 82, 89)), MakeVec4(95, 82, 69, 83)), MakeVec4(69, 84, 84, 69)), MakeVec1(82)); - assume $IsValid'vec'u8''($t18); + // $t17 := read_ref($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:769:21+25 + assume {:print "$at(2,36070,36095)"} true; + $t17 := $Dereference($t15); - // $t19 := string::utf8($t18) on_abort goto L10 with $t13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:852:59+31 - call $t19 := $1_string_utf8($t18); + // vesting::verify_admin($t0, $t17) on_abort goto L2 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:769:9+37 + call $1_vesting_verify_admin($t0, $t17); if ($abort_flag) { - assume {:print "$at(2,39617,39648)"} true; - $t13 := $abort_code; - assume {:print "$track_abort(57,18):", $t13} $t13 == $t13; - goto L10; + assume {:print "$at(2,36058,36095)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(59,33):", $t16} $t16 == $t16; + goto L2; } - // assume Identical($t20, select vesting::VestingAccountManagement.roles(global($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:365:9+69 - assume {:print "$at(3,15665,15734)"} true; - assume ($t20 == $roles#$1_vesting_VestingAccountManagement($ResourceValue($1_vesting_VestingAccountManagement_$memory, $t1))); + // $t18 := read_ref($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:770:68+16 + assume {:print "$at(2,36164,36180)"} true; + $t18 := $Dereference($t15); - // $t21 := vesting::get_role_holder($t1, $t19) on_abort goto L10 with $t13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:852:25+66 - assume {:print "$at(2,39583,39649)"} true; - call $t21 := $1_vesting_get_role_holder($t1, $t19); + // $t19 := vesting::get_vesting_account_signer_internal($t18) on_abort goto L2 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:770:32+53 + call $t19 := $1_vesting_get_vesting_account_signer_internal($t18); if ($abort_flag) { - assume {:print "$at(2,39583,39649)"} true; - $t13 := $abort_code; - assume {:print "$track_abort(57,18):", $t13} $t13 == $t13; - goto L10; + assume {:print "$at(2,36128,36181)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(59,33):", $t16} $t16 == $t16; + goto L2; } - // $t3 := ==($t14, $t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:852:22+2 - $t3 := $IsEqual'address'($t14, $t21); + // trace_local[contract_signer]($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:770:13+15 + assume {:print "$track_local(59,33,4):", $t19} $t19 == $t19; - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:851:13+124 - assume {:print "$at(2,39525,39649)"} true; -L2: + // $t20 := get_field.staking($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:771:25+24 + assume {:print "$at(2,36207,36231)"} true; + $t20 := $staking#$1_vesting_VestingContract($Dereference($t15)); - // if ($t3) goto L4 else goto L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:850:9+214 - assume {:print "$at(2,39504,39718)"} true; - if ($t3) { goto L4; } else { goto L3; } + // $t21 := get_field.voter($t20) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:771:25+30 + $t21 := $voter#$1_vesting_StakingInfo($t20); - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:850:9+214 -L4: + // trace_local[old_voter]($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:771:13+9 + assume {:print "$track_local(59,33,5):", $t21} $t21 == $t21; - // goto L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:850:9+214 - assume {:print "$at(2,39504,39718)"} true; - goto L5; + // $t22 := get_field.staking($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:772:57+24 + assume {:print "$at(2,36295,36319)"} true; + $t22 := $staking#$1_vesting_VestingContract($Dereference($t15)); - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:850:9+214 -L3: + // $t23 := get_field.operator($t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:772:57+33 + $t23 := $operator#$1_vesting_StakingInfo($t22); - // assert forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t12)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t12)), addr)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 - // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 - assume {:print "$at(59,538,673)"} true; - assert {:msg "assert_failed(59,538,673): data invariant does not hold"} - (forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))), addr)))); + // assume Identical($t24, signer::$address_of($t19)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:117:9+48 + assume {:print "$at(141,4862,4910)"} true; + assume ($t24 == $1_signer_$address_of($t19)); - // assert forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t12)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t12)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t12)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t12)), j)), Eq(i, j)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 - // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 - assume {:print "$at(59,738,867)"} true; - assert {:msg "assert_failed(59,738,867): data invariant does not hold"} - (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; - (var j := $i_3; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))), j)) ==> $IsEqual'num'(i, j)))))))); + // assume Identical($t25, global($t24)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:310:9+34 + assume {:print "$at(141,13226,13260)"} true; + assume ($t25 == $ResourceValue($1_staking_contract_Store_$memory, $t24)); - // destroy($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:850:9+214 - assume {:print "$at(2,39504,39718)"} true; + // assume Identical($t26, simple_map::spec_get(select staking_contract::Store.staking_contracts($t25), $t23)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:311:9+79 + assume {:print "$at(141,13269,13348)"} true; + assume ($t26 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($t25), $t23)); - // $t22 := 15 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:853:38+18 - assume {:print "$at(2,39688,39706)"} true; - $t22 := 15; - assume $IsValid'u64'($t22); + // assume Identical($t27, select staking_contract::StakingContract.pool_address($t26)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:312:9+49 + assume {:print "$at(141,13357,13406)"} true; + assume ($t27 == $pool_address#$1_staking_contract_StakingContract($t26)); - // $t23 := error::permission_denied($t22) on_abort goto L10 with $t13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:853:13+44 - call $t23 := $1_error_permission_denied($t22); + // assume Identical($t28, select staking_contract::Store.staking_contracts(global($t24))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:302:9+64 + assume {:print "$at(141,12978,13042)"} true; + assume ($t28 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t24))); + + // staking_contract::update_voter($t19, $t23, $t2) on_abort goto L2 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:772:9+93 + assume {:print "$at(2,36247,36340)"} true; + call $1_staking_contract_update_voter($t19, $t23, $t2); if ($abort_flag) { - assume {:print "$at(2,39663,39707)"} true; - $t13 := $abort_code; - assume {:print "$track_abort(57,18):", $t13} $t13 == $t13; - goto L10; + assume {:print "$at(2,36247,36340)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(59,33):", $t16} $t16 == $t16; + goto L2; } - // trace_abort($t23) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:850:9+214 - assume {:print "$at(2,39504,39718)"} true; - assume {:print "$track_abort(57,18):", $t23} $t23 == $t23; - - // $t13 := move($t23) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:850:9+214 - $t13 := $t23; - - // goto L10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:850:9+214 - goto L10; - - // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:856:34+16 - assume {:print "$at(2,39754,39770)"} true; -L5: - - // $t24 := borrow_field.beneficiaries($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:856:29+35 - assume {:print "$at(2,39749,39784)"} true; - $t24 := $ChildMutation($t12, 3, $beneficiaries#$1_vesting_VestingContract($Dereference($t12))); - - // trace_local[beneficiaries]($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:856:13+13 - $temp_0'$1_simple_map_SimpleMap'address_address'' := $Dereference($t24); - assume {:print "$track_local(57,18,6):", $temp_0'$1_simple_map_SimpleMap'address_address''} $temp_0'$1_simple_map_SimpleMap'address_address'' == $temp_0'$1_simple_map_SimpleMap'address_address''; - - // $t25 := read_ref($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:857:37+29 - assume {:print "$at(2,39822,39851)"} true; - $t25 := $Dereference($t24); + // $t29 := borrow_field.staking($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:773:9+24 + assume {:print "$at(2,36350,36374)"} true; + $t29 := $ChildMutation($t15, 6, $staking#$1_vesting_VestingContract($Dereference($t15))); - // $t26 := simple_map::contains_key($t25, $t2) on_abort goto L10 with $t13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:857:13+53 - call $t26 := $1_simple_map_contains_key'address_address'($t25, $t2); - if ($abort_flag) { - assume {:print "$at(2,39798,39851)"} true; - $t13 := $abort_code; - assume {:print "$track_abort(57,18):", $t13} $t13 == $t13; - goto L10; - } + // $t30 := borrow_field.voter($t29) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:773:9+30 + $t30 := $ChildMutation($t29, 2, $voter#$1_vesting_StakingInfo($Dereference($t29))); - // if ($t26) goto L7 else goto L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:857:9+131 - if ($t26) { goto L7; } else { goto L6; } + // write_ref($t30, $t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:773:9+42 + $t30 := $UpdateMutation($t30, $t2); - // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:858:32+13 - assume {:print "$at(2,39886,39899)"} true; -L7: + // write_back[Reference($t29).voter (address)]($t30) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:773:9+42 + $t29 := $UpdateMutation($t29, $Update'$1_vesting_StakingInfo'_voter($Dereference($t29), $Dereference($t30))); - // ($t27, $t28) := simple_map::remove($t24, $t2) on_abort goto L10 with $t13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:858:13+47 - assume {:print "$at(2,39867,39914)"} true; - call $t27,$t28,$t24 := $1_simple_map_remove'address_address'($t24, $t2); - if ($abort_flag) { - assume {:print "$at(2,39867,39914)"} true; - $t13 := $abort_code; - assume {:print "$track_abort(57,18):", $t13} $t13 == $t13; - goto L10; - } + // write_back[Reference($t15).staking (vesting::StakingInfo)]($t29) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:773:9+42 + $t15 := $UpdateMutation($t15, $Update'$1_vesting_VestingContract'_staking($Dereference($t15), $Dereference($t29))); - // write_back[Reference($t12).beneficiaries (simple_map::SimpleMap)]($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:858:13+47 - $t12 := $UpdateMutation($t12, $Update'$1_vesting_VestingContract'_beneficiaries($Dereference($t12), $Dereference($t24))); + // $t31 := borrow_field.update_voter_events($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:776:13+41 + assume {:print "$at(2,36427,36468)"} true; + $t31 := $ChildMutation($t15, 10, $update_voter_events#$1_vesting_VestingContract($Dereference($t15))); - // assert forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t12)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t12)), addr)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 - // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 - assume {:print "$at(59,538,673)"} true; - assert {:msg "assert_failed(59,538,673): data invariant does not hold"} - (forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))), addr)))); + // $t32 := get_field.admin($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:778:24+22 + assume {:print "$at(2,36524,36546)"} true; + $t32 := $admin#$1_vesting_VestingContract($Dereference($t15)); - // assert forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t12)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t12)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t12)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t12)), j)), Eq(i, j)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 - // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 - assume {:print "$at(59,738,867)"} true; - assert {:msg "assert_failed(59,738,867): data invariant does not hold"} - (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; - (var j := $i_3; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))), j)) ==> $IsEqual'num'(i, j)))))))); + // $t33 := get_field.staking($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:780:39+24 + assume {:print "$at(2,36646,36670)"} true; + $t33 := $staking#$1_vesting_VestingContract($Dereference($t15)); - // write_back[vesting::VestingContract@]($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:858:13+47 - assume {:print "$at(2,39867,39914)"} true; - $1_vesting_VestingContract_$memory := $ResourceUpdate($1_vesting_VestingContract_$memory, $GlobalLocationAddress($t12), - $Dereference($t12)); + // $t34 := get_field.pool_address($t33) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:780:39+37 + $t34 := $pool_address#$1_vesting_StakingInfo($t33); - // destroy($t28) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:858:13+47 + // $t35 := pack vesting::UpdateVoterEvent($t32, $t1, $t34, $t21, $t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:777:13+270 + assume {:print "$at(2,36482,36752)"} true; + $t35 := $1_vesting_UpdateVoterEvent($t32, $t1, $t34, $t21, $t2); - // destroy($t27) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:858:13+47 + // opaque begin: event::emit_event($t31, $t35) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:775:9+360 + assume {:print "$at(2,36403,36763)"} true; - // goto L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:858:60+1 - goto L8; + // opaque end: event::emit_event($t31, $t35) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:775:9+360 - // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:857:9+131 - assume {:print "$at(2,39794,39925)"} true; -L6: + // write_back[Reference($t15).update_voter_events (event::EventHandle)]($t31) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:775:9+360 + $t15 := $UpdateMutation($t15, $Update'$1_vesting_VestingContract'_update_voter_events($Dereference($t15), $Dereference($t31))); - // assert forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t12)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t12)), addr)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 + // assert forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t15)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t15)), addr)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 - assume {:print "$at(59,538,673)"} true; - assert {:msg "assert_failed(59,538,673): data invariant does not hold"} - (forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))), addr)))); + assume {:print "$at(66,538,673)"} true; + assert {:msg "assert_failed(66,538,673): data invariant does not hold"} + (forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t15))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t15))), addr)))); - // assert forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t12)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t12)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t12)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t12)), j)), Eq(i, j)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 + // assert forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t15)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t15)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t15)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t15)), j)), Eq(i, j)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 - assume {:print "$at(59,738,867)"} true; - assert {:msg "assert_failed(59,738,867): data invariant does not hold"} - (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; + assume {:print "$at(66,738,867)"} true; + assert {:msg "assert_failed(66,738,867): data invariant does not hold"} + (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t15))))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t15))))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; (var j := $i_3; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))), j)) ==> $IsEqual'num'(i, j)))))))); - - // destroy($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:857:9+131 - assume {:print "$at(2,39794,39925)"} true; - - // label L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:859:10+1 - assume {:print "$at(2,39925,39926)"} true; -L8: + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t15))), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t15))), j)) ==> $IsEqual'num'(i, j)))))))); - // label L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:860:5+1 - assume {:print "$at(2,39931,39932)"} true; -L9: + // write_back[vesting::VestingContract@]($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:775:9+360 + assume {:print "$at(2,36403,36763)"} true; + $1_vesting_VestingContract_$memory := $ResourceUpdate($1_vesting_VestingContract_$memory, $GlobalLocationAddress($t15), + $Dereference($t15)); - // assume Identical($t29, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:339:9+75 - assume {:print "$at(3,14780,14855)"} true; - assume ($t29 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:785:5+1 + assume {:print "$at(2,36769,36770)"} true; +L1: - // assert Not(Not(exists[@102]($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:328:9+53 - assume {:print "$at(3,14030,14083)"} true; - assert {:msg "assert_failed(3,14030,14083): function does not abort under this condition"} - !!$ResourceExists($1_vesting_VestingContract_$memory#102, $t1); + // assert Not(Not(exists[@87]($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:503:9+53 + assume {:print "$at(3,22692,22745)"} true; + assert {:msg "assert_failed(3,22692,22745): function does not abort under this condition"} + !!$ResourceExists($1_vesting_VestingContract_$memory#87, $t1); - // assert Not(And(Neq
($t8, select vesting::VestingContract.admin($t9)), Not(string::spec_internal_check_utf8[]([82, 79, 76, 69, 95, 66, 69, 78, 69, 70, 73, 67, 73, 65, 82, 89, 95, 82, 69, 83, 69, 84, 84, 69, 82])))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:332:9+110 - assume {:print "$at(3,14215,14325)"} true; - assert {:msg "assert_failed(3,14215,14325): function does not abort under this condition"} - !(!$IsEqual'address'($t8, $admin#$1_vesting_VestingContract($t9)) && !$1_string_spec_internal_check_utf8(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(82, 79, 76, 69), MakeVec4(95, 66, 69, 78)), MakeVec4(69, 70, 73, 67)), MakeVec4(73, 65, 82, 89)), MakeVec4(95, 82, 69, 83)), MakeVec4(69, 84, 84, 69)), MakeVec1(82)))); + // assert Not(Neq
(signer::$address_of[]($t0), select vesting::VestingContract.admin($t10))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:505:9+62 + assume {:print "$at(3,22828,22890)"} true; + assert {:msg "assert_failed(3,22828,22890): function does not abort under this condition"} + !!$IsEqual'address'($1_signer_$address_of($t0), $admin#$1_vesting_VestingContract($t10)); - // assert Not(And(Neq
($t8, select vesting::VestingContract.admin($t9)), Not(exists[@103]($t1)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:333:9+96 - assume {:print "$at(3,14334,14430)"} true; - assert {:msg "assert_failed(3,14334,14430): function does not abort under this condition"} - !(!$IsEqual'address'($t8, $admin#$1_vesting_VestingContract($t9)) && !$ResourceExists($1_vesting_VestingAccountManagement_$memory#103, $t1)); + // assert Not(Not(exists[@88]($t13))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:313:9+50 + assume {:print "$at(141,13415,13465)"} true; + assert {:msg "assert_failed(141,13415,13465): function does not abort under this condition"} + !!$ResourceExists($1_stake_StakePool_$memory#88, $t13); - // assert Not(And(Neq
($t8, select vesting::VestingContract.admin($t9)), Not(simple_map::spec_contains_key[]($t10, $t11)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:336:9+88 - assume {:print "$at(3,14587,14675)"} true; - assert {:msg "assert_failed(3,14587,14675): function does not abort under this condition"} - !(!$IsEqual'address'($t8, $admin#$1_vesting_VestingContract($t9)) && !$1_simple_map_spec_contains_key'$1_string_String_address'($t10, $t11)); + // assert Not(Not(exists[@88](select stake::OwnerCapability.pool_address(select staking_contract::StakingContract.owner_cap($t12))))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:314:9+77 + assume {:print "$at(141,13474,13551)"} true; + assert {:msg "assert_failed(141,13474,13551): function does not abort under this condition"} + !!$ResourceExists($1_stake_StakePool_$memory#88, $pool_address#$1_stake_OwnerCapability($owner_cap#$1_staking_contract_StakingContract($t12))); - // assert Not(And(Neq
($t8, select vesting::VestingContract.admin($t9)), Neq
($t8, simple_map::spec_get[]($t10, $t11)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:337:9+86 - assume {:print "$at(3,14684,14770)"} true; - assert {:msg "assert_failed(3,14684,14770): function does not abort under this condition"} - !(!$IsEqual'address'($t8, $admin#$1_vesting_VestingContract($t9)) && !$IsEqual'address'($t8, $1_simple_map_spec_get'$1_string_String_address'($t10, $t11))); + // assert Not(Not(exists[@89]($t9))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:301:9+33 + assume {:print "$at(141,12936,12969)"} true; + assert {:msg "assert_failed(141,12936,12969): function does not abort under this condition"} + !!$ResourceExists($1_staking_contract_Store_$memory#89, $t9); - // assert Not(simple_map::spec_contains_key(select vesting::VestingContract.beneficiaries($t29), $t2)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:340:9+88 - assume {:print "$at(3,14864,14952)"} true; - assert {:msg "assert_failed(3,14864,14952): post-condition does not hold"} - !$1_simple_map_spec_contains_key'address_address'($beneficiaries#$1_vesting_VestingContract($t29), $t2); + // assert Not(Not(simple_map::spec_contains_key[]($t14, $t8))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:303:9+70 + assume {:print "$at(141,13051,13121)"} true; + assert {:msg "assert_failed(141,13051,13121): function does not abort under this condition"} + !!$1_simple_map_spec_contains_key'address_$1_staking_contract_StakingContract'($t14, $t8); - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:340:9+88 + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:303:9+70 return; - // label L10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:860:5+1 - assume {:print "$at(2,39931,39932)"} true; -L10: + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:785:5+1 + assume {:print "$at(2,36769,36770)"} true; +L2: - // assert Or(Or(Or(Or(Not(exists[@102]($t1)), And(Neq
($t8, select vesting::VestingContract.admin($t9)), Not(string::spec_internal_check_utf8[]([82, 79, 76, 69, 95, 66, 69, 78, 69, 70, 73, 67, 73, 65, 82, 89, 95, 82, 69, 83, 69, 84, 84, 69, 82])))), And(Neq
($t8, select vesting::VestingContract.admin($t9)), Not(exists[@103]($t1)))), And(Neq
($t8, select vesting::VestingContract.admin($t9)), Not(simple_map::spec_contains_key[]($t10, $t11)))), And(Neq
($t8, select vesting::VestingContract.admin($t9)), Neq
($t8, simple_map::spec_get[]($t10, $t11)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:323:5+1060 - assume {:print "$at(3,13898,14958)"} true; - assert {:msg "assert_failed(3,13898,14958): abort not covered by any of the `aborts_if` clauses"} - ((((!$ResourceExists($1_vesting_VestingContract_$memory#102, $t1) || (!$IsEqual'address'($t8, $admin#$1_vesting_VestingContract($t9)) && !$1_string_spec_internal_check_utf8(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(82, 79, 76, 69), MakeVec4(95, 66, 69, 78)), MakeVec4(69, 70, 73, 67)), MakeVec4(73, 65, 82, 89)), MakeVec4(95, 82, 69, 83)), MakeVec4(69, 84, 84, 69)), MakeVec1(82))))) || (!$IsEqual'address'($t8, $admin#$1_vesting_VestingContract($t9)) && !$ResourceExists($1_vesting_VestingAccountManagement_$memory#103, $t1))) || (!$IsEqual'address'($t8, $admin#$1_vesting_VestingContract($t9)) && !$1_simple_map_spec_contains_key'$1_string_String_address'($t10, $t11))) || (!$IsEqual'address'($t8, $admin#$1_vesting_VestingContract($t9)) && !$IsEqual'address'($t8, $1_simple_map_spec_get'$1_string_String_address'($t10, $t11)))); + // assert Or(Or(Or(Or(Or(Not(exists[@87]($t1)), Neq
(signer::$address_of[]($t0), select vesting::VestingContract.admin($t10))), Not(exists[@88]($t13))), Not(exists[@88](select stake::OwnerCapability.pool_address(select staking_contract::StakingContract.owner_cap($t12))))), Not(exists[@89]($t9))), Not(simple_map::spec_contains_key[]($t14, $t8))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:271:5+401 + assume {:print "$at(3,12160,12561)"} true; + assert {:msg "assert_failed(3,12160,12561): abort not covered by any of the `aborts_if` clauses"} + (((((!$ResourceExists($1_vesting_VestingContract_$memory#87, $t1) || !$IsEqual'address'($1_signer_$address_of($t0), $admin#$1_vesting_VestingContract($t10))) || !$ResourceExists($1_stake_StakePool_$memory#88, $t13)) || !$ResourceExists($1_stake_StakePool_$memory#88, $pool_address#$1_stake_OwnerCapability($owner_cap#$1_staking_contract_StakingContract($t12)))) || !$ResourceExists($1_staking_contract_Store_$memory#89, $t9)) || !$1_simple_map_spec_contains_key'address_$1_staking_contract_StakingContract'($t14, $t8)); - // abort($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:323:5+1060 - $abort_code := $t13; + // abort($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:271:5+401 + $abort_code := $t16; $abort_flag := true; return; } -// fun vesting::set_beneficiary [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:807:5+1396 -procedure {:timeLimit 1000} $1_vesting_set_beneficiary$verify(_$t0: $signer, _$t1: int, _$t2: int, _$t3: int) returns () +// fun vesting::assert_active_vesting_contract [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:945:5+349 +procedure {:inline 1} $1_vesting_assert_active_vesting_contract(_$t0: int) returns () { // declare local variables + var $t1: $1_vesting_VestingContract; + var $t2: int; + var $t3: $1_vesting_VestingContract; var $t4: int; var $t5: int; - var $t6: $Mutation (Table int (int)); - var $t7: $Mutation (int); + var $t6: bool; + var $t7: int; var $t8: int; - var $t9: $Mutation ($1_vesting_VestingContract); - var $t10: $1_vesting_VestingContract; - var $t11: int; - var $t12: $Mutation ($1_vesting_VestingContract); - var $t13: $1_vesting_VestingContract; - var $t14: $1_vesting_VestingContract; - var $t15: int; - var $t16: $Mutation (Table int (int)); - var $t17: Table int (int); - var $t18: bool; - var $t19: $Mutation (int); - var $t20: $Mutation ($1_event_EventHandle'$1_vesting_SetBeneficiaryEvent'); - var $t21: int; - var $t22: $1_vesting_SetBeneficiaryEvent; - var $t23: $1_vesting_VestingContract; - var $t0: $signer; - var $t1: int; - var $t2: int; - var $t3: int; - var $temp_0'$1_simple_map_SimpleMap'address_address'': Table int (int); - var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; + var $t0: int; var $temp_0'address': int; - var $temp_0'signer': $signer; - var $1_account_Account_$memory#106: $Memory $1_account_Account; - var $1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory#107: $Memory $1_coin_CoinStore'$1_aptos_coin_AptosCoin'; - var $1_vesting_VestingContract_$memory#108: $Memory $1_vesting_VestingContract; $t0 := _$t0; - $t1 := _$t1; - $t2 := _$t2; - $t3 := _$t3; - - // verification entrypoint assumptions - call $InitVerification(); // bytecode translation starts here - // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:807:5+1 - assume {:print "$at(2,37644,37645)"} true; - assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($addr#$signer($t0)); + // assume Identical($t1, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:511:9+65 + assume {:print "$at(3,23068,23133)"} true; + assume ($t1 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); - // assume WellFormed($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:807:5+1 - assume $IsValid'address'($t1); + // trace_local[contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:945:5+1 + assume {:print "$at(2,44071,44072)"} true; + assume {:print "$track_local(59,2,0):", $t0} $t0 == $t0; - // assume WellFormed($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:807:5+1 - assume $IsValid'address'($t2); + // vesting::assert_vesting_contract_exists($t0) on_abort goto L4 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:946:9+48 + assume {:print "$at(2,44168,44216)"} true; + call $1_vesting_assert_vesting_contract_exists($t0); + if ($abort_flag) { + assume {:print "$at(2,44168,44216)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(59,2):", $t2} $t2 == $t2; + goto L4; + } - // assume WellFormed($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:807:5+1 - assume $IsValid'address'($t3); + // $t3 := get_global($t0) on_abort goto L4 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:947:32+13 + assume {:print "$at(2,44249,44262)"} true; + if (!$ResourceExists($1_vesting_VestingContract_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t3 := $ResourceValue($1_vesting_VestingContract_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(2,44249,44262)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(59,2):", $t2} $t2 == $t2; + goto L4; + } - // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.rotation_capability_offer($rsc)))), 1), Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.signer_capability_offer($rsc)))), 1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:807:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_account_Account_$memory, $a_0)}(var $rsc := $ResourceValue($1_account_Account_$memory, $a_0); - (($IsValid'$1_account_Account'($rsc) && ((LenVec($vec#$1_option_Option'address'($for#$1_account_CapabilityOffer'$1_account_RotationCapability'($rotation_capability_offer#$1_account_Account($rsc)))) <= 1) && (LenVec($vec#$1_option_Option'address'($for#$1_account_CapabilityOffer'$1_account_SignerCapability'($signer_capability_offer#$1_account_Account($rsc)))) <= 1)))))); + // $t4 := get_field.state($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:17+22 + assume {:print "$at(2,44315,44337)"} true; + $t4 := $state#$1_vesting_VestingContract($t3); - // assume forall $rsc: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: select option::Option.vec(select coin::CoinInfo.supply($rsc)): And(And(And(And(And(Iff(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($elem)), option::$is_none(select optional_aggregator::OptionalAggregator.integer($elem))), Iff(option::$is_some(select optional_aggregator::OptionalAggregator.integer($elem)), option::$is_none(select optional_aggregator::OptionalAggregator.aggregator($elem)))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.integer($elem)), Le(select optional_aggregator::Integer.value(option::$borrow(select optional_aggregator::OptionalAggregator.integer($elem))), select optional_aggregator::Integer.limit(option::$borrow(select optional_aggregator::OptionalAggregator.integer($elem)))))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($elem)), Le(aggregator::spec_aggregator_get_val(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($elem))), aggregator::spec_get_limit(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($elem)))))), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.aggregator($elem))), 1)), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.integer($elem))), 1)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:807:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $a_0); - (($IsValid'$1_coin_CoinInfo'$1_aptos_coin_AptosCoin''($rsc) && ((LenVec($vec#$1_option_Option'$1_optional_aggregator_OptionalAggregator'($supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($rsc))) <= 1) && (var $range_1 := $vec#$1_option_Option'$1_optional_aggregator_OptionalAggregator'($supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($rsc)); (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); - ((((((($1_option_$is_some'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)) <==> $1_option_$is_none'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)) ==> ($value#$1_optional_aggregator_Integer($1_option_$borrow'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) <= $limit#$1_optional_aggregator_Integer($1_option_$borrow'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)))))) && ($1_option_$is_some'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem))) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)))))) && (LenVec($vec#$1_option_Option'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem))) <= 1)) && (LenVec($vec#$1_option_Option'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) <= 1))))))))))); + // $t5 := 1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:43+19 + $t5 := 1; + assume $IsValid'u64'($t5); - // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:807:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $a_0); - ($IsValid'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''($rsc)))); + // $t6 := ==($t4, $t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:40+2 + $t6 := $IsEqual'u64'($t4, $t5); - // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:807:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $a_0); - ($IsValid'$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin''($rsc)))); + // if ($t6) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:9+106 + if ($t6) { goto L1; } else { goto L0; } - // assume exists>(0x0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:807:5+1 - assume $ResourceExists($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, 0); + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:9+106 +L1: + + // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:9+106 + assume {:print "$at(2,44307,44413)"} true; + goto L2; + + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:85+28 +L0: + + // $t7 := 8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:85+28 + assume {:print "$at(2,44383,44411)"} true; + $t7 := 8; + assume $IsValid'u64'($t7); + + // $t8 := error::invalid_state($t7) on_abort goto L4 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:64+50 + call $t8 := $1_error_invalid_state($t7); + if ($abort_flag) { + assume {:print "$at(2,44362,44412)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(59,2):", $t2} $t2 == $t2; + goto L4; + } + + // trace_abort($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:9+106 + assume {:print "$at(2,44307,44413)"} true; + assume {:print "$track_abort(59,2):", $t8} $t8 == $t8; + + // $t2 := move($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:9+106 + $t2 := $t8; + + // goto L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:9+106 + goto L4; + + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:115+1 +L2: + + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:949:5+1 + assume {:print "$at(2,44419,44420)"} true; +L3: + + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:949:5+1 + assume {:print "$at(2,44419,44420)"} true; + return; + + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:949:5+1 +L4: + + // abort($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:949:5+1 + assume {:print "$at(2,44419,44420)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun vesting::assert_active_vesting_contract [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:945:5+349 +procedure {:timeLimit 900} $1_vesting_assert_active_vesting_contract$verify(_$t0: int) returns () +{ + // declare local variables + var $t1: $1_vesting_VestingContract; + var $t2: int; + var $t3: $1_vesting_VestingContract; + var $t4: int; + var $t5: int; + var $t6: bool; + var $t7: int; + var $t8: int; + var $t0: int; + var $temp_0'address': int; + var $1_vesting_VestingContract_$memory#36: $Memory $1_vesting_VestingContract; + $t0 := _$t0; - // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:807:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, $a_0); - ($IsValid'$1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin''($rsc)))); + // verification entrypoint assumptions + call $InitVerification(); - // assume exists>(0x0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:807:5+1 - assume $ResourceExists($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, 0); + // bytecode translation starts here + // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:945:5+1 + assume {:print "$at(2,44071,44072)"} true; + assume $IsValid'address'($t0); - // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:807:5+1 + // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:945:5+1 assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; (var j := $i_4; (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); - // assume Identical($t10, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:511:9+65 - assume {:print "$at(3,22722,22787)"} true; - assume ($t10 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); - - // @106 := save_mem(account::Account) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:807:5+1 - assume {:print "$at(2,37644,37645)"} true; - $1_account_Account_$memory#106 := $1_account_Account_$memory; - - // @107 := save_mem(coin::CoinStore) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:807:5+1 - $1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory#107 := $1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory; - - // @108 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:807:5+1 - $1_vesting_VestingContract_$memory#108 := $1_vesting_VestingContract_$memory; - - // trace_local[admin]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:807:5+1 - assume {:print "$track_local(57,20,0):", $t0} $t0 == $t0; - - // trace_local[contract_address]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:807:5+1 - assume {:print "$track_local(57,20,1):", $t1} $t1 == $t1; + // assume Identical($t1, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:511:9+65 + assume {:print "$at(3,23068,23133)"} true; + assume ($t1 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); - // trace_local[shareholder]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:807:5+1 - assume {:print "$track_local(57,20,2):", $t2} $t2 == $t2; + // @36 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:945:5+1 + assume {:print "$at(2,44071,44072)"} true; + $1_vesting_VestingContract_$memory#36 := $1_vesting_VestingContract_$memory; - // trace_local[new_beneficiary]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:807:5+1 - assume {:print "$track_local(57,20,3):", $t3} $t3 == $t3; + // trace_local[contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:945:5+1 + assume {:print "$track_local(59,2,0):", $t0} $t0 == $t0; - // aptos_account::assert_account_is_registered_for_apt($t3) on_abort goto L4 with $t11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:815:9+53 - assume {:print "$at(2,38064,38117)"} true; - call $1_aptos_account_assert_account_is_registered_for_apt($t3); + // vesting::assert_vesting_contract_exists($t0) on_abort goto L4 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:946:9+48 + assume {:print "$at(2,44168,44216)"} true; + call $1_vesting_assert_vesting_contract_exists($t0); if ($abort_flag) { - assume {:print "$at(2,38064,38117)"} true; - $t11 := $abort_code; - assume {:print "$track_abort(57,20):", $t11} $t11 == $t11; + assume {:print "$at(2,44168,44216)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(59,2):", $t2} $t2 == $t2; goto L4; } - // $t12 := borrow_global($t1) on_abort goto L4 with $t11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:817:32+17 - assume {:print "$at(2,38151,38168)"} true; - if (!$ResourceExists($1_vesting_VestingContract_$memory, $t1)) { + // $t3 := get_global($t0) on_abort goto L4 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:947:32+13 + assume {:print "$at(2,44249,44262)"} true; + if (!$ResourceExists($1_vesting_VestingContract_$memory, $t0)) { call $ExecFailureAbort(); } else { - $t12 := $Mutation($Global($t1), EmptyVec(), $ResourceValue($1_vesting_VestingContract_$memory, $t1)); + $t3 := $ResourceValue($1_vesting_VestingContract_$memory, $t0); } if ($abort_flag) { - assume {:print "$at(2,38151,38168)"} true; - $t11 := $abort_code; - assume {:print "$track_abort(57,20):", $t11} $t11 == $t11; + assume {:print "$at(2,44249,44262)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(59,2):", $t2} $t2 == $t2; goto L4; } - // trace_local[vesting_contract]($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:817:13+16 - $temp_0'$1_vesting_VestingContract' := $Dereference($t12); - assume {:print "$track_local(57,20,9):", $temp_0'$1_vesting_VestingContract'} $temp_0'$1_vesting_VestingContract' == $temp_0'$1_vesting_VestingContract'; - - // $t13 := read_ref($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:818:21+25 - assume {:print "$at(2,38225,38250)"} true; - $t13 := $Dereference($t12); + // $t4 := get_field.state($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:17+22 + assume {:print "$at(2,44315,44337)"} true; + $t4 := $state#$1_vesting_VestingContract($t3); - // vesting::verify_admin($t0, $t13) on_abort goto L4 with $t11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:818:9+37 - call $1_vesting_verify_admin($t0, $t13); - if ($abort_flag) { - assume {:print "$at(2,38213,38250)"} true; - $t11 := $abort_code; - assume {:print "$track_abort(57,20):", $t11} $t11 == $t11; - goto L4; - } + // $t5 := 1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:43+19 + $t5 := 1; + assume $IsValid'u64'($t5); - // $t14 := read_ref($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:820:46+31 - assume {:print "$at(2,38298,38329)"} true; - $t14 := $Dereference($t12); + // $t6 := ==($t4, $t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:40+2 + $t6 := $IsEqual'u64'($t4, $t5); - // $t15 := vesting::get_beneficiary($t14, $t2) on_abort goto L4 with $t11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:820:31+46 - call $t15 := $1_vesting_get_beneficiary($t14, $t2); - if ($abort_flag) { - assume {:print "$at(2,38283,38329)"} true; - $t11 := $abort_code; - assume {:print "$track_abort(57,20):", $t11} $t11 == $t11; - goto L4; - } + // if ($t6) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:9+106 + if ($t6) { goto L1; } else { goto L0; } - // trace_local[old_beneficiary]($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:820:13+15 - assume {:print "$track_local(57,20,8):", $t15} $t15 == $t15; + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:9+106 +L1: - // $t16 := borrow_field.beneficiaries($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:821:29+35 - assume {:print "$at(2,38359,38394)"} true; - $t16 := $ChildMutation($t12, 3, $beneficiaries#$1_vesting_VestingContract($Dereference($t12))); + // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:9+106 + assume {:print "$at(2,44307,44413)"} true; + goto L2; - // trace_local[beneficiaries]($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:821:13+13 - $temp_0'$1_simple_map_SimpleMap'address_address'' := $Dereference($t16); - assume {:print "$track_local(57,20,6):", $temp_0'$1_simple_map_SimpleMap'address_address''} $temp_0'$1_simple_map_SimpleMap'address_address'' == $temp_0'$1_simple_map_SimpleMap'address_address''; + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:85+28 +L0: - // $t17 := read_ref($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:822:37+29 - assume {:print "$at(2,38432,38461)"} true; - $t17 := $Dereference($t16); + // $t7 := 8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:85+28 + assume {:print "$at(2,44383,44411)"} true; + $t7 := 8; + assume $IsValid'u64'($t7); - // $t18 := simple_map::contains_key($t17, $t2) on_abort goto L4 with $t11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:822:13+53 - call $t18 := $1_simple_map_contains_key'address_address'($t17, $t2); + // $t8 := error::invalid_state($t7) on_abort goto L4 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:64+50 + call $t8 := $1_error_invalid_state($t7); if ($abort_flag) { - assume {:print "$at(2,38408,38461)"} true; - $t11 := $abort_code; - assume {:print "$track_abort(57,20):", $t11} $t11 == $t11; + assume {:print "$at(2,44362,44412)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(59,2):", $t2} $t2 == $t2; goto L4; } - // if ($t18) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:822:9+288 - if ($t18) { goto L1; } else { goto L0; } - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:823:54+13 - assume {:print "$at(2,38518,38531)"} true; -L1: - - // $t19 := simple_map::borrow_mut($t16, $t2) on_abort goto L4 with $t11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:823:31+51 - assume {:print "$at(2,38495,38546)"} true; - call $t19,$t16 := $1_simple_map_borrow_mut'address_address'($t16, $t2); - if ($abort_flag) { - assume {:print "$at(2,38495,38546)"} true; - $t11 := $abort_code; - assume {:print "$track_abort(57,20):", $t11} $t11 == $t11; - goto L4; - } + // trace_abort($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:9+106 + assume {:print "$at(2,44307,44413)"} true; + assume {:print "$track_abort(59,2):", $t8} $t8 == $t8; - // trace_local[beneficiary]($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:823:17+11 - $temp_0'address' := $Dereference($t19); - assume {:print "$track_local(57,20,7):", $temp_0'address'} $temp_0'address' == $temp_0'address'; + // $t2 := move($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:9+106 + $t2 := $t8; - // write_ref($t19, $t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:824:13+30 - assume {:print "$at(2,38560,38590)"} true; - $t19 := $UpdateMutation($t19, $t3); + // goto L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:9+106 + goto L4; - // write_back[Reference($t16)[]]($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:824:13+30 - $t16 := $UpdateMutation($t16, UpdateTable($Dereference($t16), ReadVec(p#$Mutation($t19), LenVec(p#$Mutation($t16))), $Dereference($t19))); + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:115+1 +L2: - // write_back[Reference($t12).beneficiaries (simple_map::SimpleMap)]($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:824:13+30 - $t12 := $UpdateMutation($t12, $Update'$1_vesting_VestingContract'_beneficiaries($Dereference($t12), $Dereference($t16))); + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:949:5+1 + assume {:print "$at(2,44419,44420)"} true; +L3: - // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:824:43+1 - goto L2; + // assert Not(Not(exists[@36]($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:510:9+53 + assume {:print "$at(3,23006,23059)"} true; + assert {:msg "assert_failed(3,23006,23059): function does not abort under this condition"} + !!$ResourceExists($1_vesting_VestingContract_$memory#36, $t0); - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:826:29+13 - assume {:print "$at(2,38637,38650)"} true; -L0: + // assert Not(Neq(select vesting::VestingContract.state($t1), 1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:512:9+56 + assume {:print "$at(3,23142,23198)"} true; + assert {:msg "assert_failed(3,23142,23198): function does not abort under this condition"} + !!$IsEqual'u64'($state#$1_vesting_VestingContract($t1), 1); - // simple_map::add($t16, $t2, $t3) on_abort goto L4 with $t11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:826:13+60 - assume {:print "$at(2,38621,38681)"} true; - call $t16 := $1_simple_map_add'address_address'($t16, $t2, $t3); - if ($abort_flag) { - assume {:print "$at(2,38621,38681)"} true; - $t11 := $abort_code; - assume {:print "$track_abort(57,20):", $t11} $t11 == $t11; - goto L4; - } + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:512:9+56 + return; - // write_back[Reference($t12).beneficiaries (simple_map::SimpleMap)]($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:826:13+60 - $t12 := $UpdateMutation($t12, $Update'$1_vesting_VestingContract'_beneficiaries($Dereference($t12), $Dereference($t16))); + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:949:5+1 + assume {:print "$at(2,44419,44420)"} true; +L4: - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:830:18+16 - assume {:print "$at(2,38732,38748)"} true; -L2: + // assert Or(Not(exists[@36]($t0)), Neq(select vesting::VestingContract.state($t1), 1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:413:5+134 + assume {:print "$at(3,18238,18372)"} true; + assert {:msg "assert_failed(3,18238,18372): abort not covered by any of the `aborts_if` clauses"} + (!$ResourceExists($1_vesting_VestingContract_$memory#36, $t0) || !$IsEqual'u64'($state#$1_vesting_VestingContract($t1), 1)); - // $t20 := borrow_field.set_beneficiary_events($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:830:13+44 - assume {:print "$at(2,38727,38771)"} true; - $t20 := $ChildMutation($t12, 12, $set_beneficiary_events#$1_vesting_VestingContract($Dereference($t12))); + // abort($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:413:5+134 + $abort_code := $t2; + $abort_flag := true; + return; - // $t21 := get_field.admin($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:832:24+22 - assume {:print "$at(2,38830,38852)"} true; - $t21 := $admin#$1_vesting_VestingContract($Dereference($t12)); +} - // $t22 := pack vesting::SetBeneficiaryEvent($t21, $t1, $t2, $t15, $t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:831:13+237 - assume {:print "$at(2,38785,39022)"} true; - $t22 := $1_vesting_SetBeneficiaryEvent($t21, $t1, $t2, $t15, $t3); +// fun vesting::assert_vesting_contract_exists [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:941:5+176 +procedure {:inline 1} $1_vesting_assert_vesting_contract_exists(_$t0: int) returns () +{ + // declare local variables + var $t1: bool; + var $t2: int; + var $t3: int; + var $t4: int; + var $t0: int; + var $temp_0'address': int; + $t0 := _$t0; - // opaque begin: event::emit_event($t20, $t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:829:9+330 - assume {:print "$at(2,38703,39033)"} true; + // bytecode translation starts here + // trace_local[contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:941:5+1 + assume {:print "$at(2,43889,43890)"} true; + assume {:print "$track_local(59,3,0):", $t0} $t0 == $t0; - // opaque end: event::emit_event($t20, $t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:829:9+330 + // $t1 := exists($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:17+6 + assume {:print "$at(2,43969,43975)"} true; + $t1 := $ResourceExists($1_vesting_VestingContract_$memory, $t0); - // write_back[Reference($t12).set_beneficiary_events (event::EventHandle)]($t20) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:829:9+330 - $t12 := $UpdateMutation($t12, $Update'$1_vesting_VestingContract'_set_beneficiary_events($Dereference($t12), $Dereference($t20))); + // if ($t1) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:9+97 + if ($t1) { goto L1; } else { goto L0; } - // assert forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t12)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t12)), addr)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 - // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 - assume {:print "$at(59,538,673)"} true; - assert {:msg "assert_failed(59,538,673): data invariant does not hold"} - (forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))), addr)))); + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:9+97 +L1: - // assert forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t12)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t12)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t12)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t12)), j)), Eq(i, j)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 - // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 - assume {:print "$at(59,738,867)"} true; - assert {:msg "assert_failed(59,738,867): data invariant does not hold"} - (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; - (var j := $i_3; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))), j)) ==> $IsEqual'num'(i, j)))))))); + // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:9+97 + assume {:print "$at(2,43961,44058)"} true; + goto L2; - // write_back[vesting::VestingContract@]($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:829:9+330 - assume {:print "$at(2,38703,39033)"} true; - $1_vesting_VestingContract_$memory := $ResourceUpdate($1_vesting_VestingContract_$memory, $GlobalLocationAddress($t12), - $Dereference($t12)); + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:77+27 +L0: - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:839:5+1 - assume {:print "$at(2,39039,39040)"} true; -L3: + // $t2 := 10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:77+27 + assume {:print "$at(2,44029,44056)"} true; + $t2 := 10; + assume $IsValid'u64'($t2); - // assume Identical($t23, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:319:9+70 - assume {:print "$at(3,13725,13795)"} true; - assume ($t23 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); + // $t3 := error::not_found($t2) on_abort goto L4 with $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:60+45 + call $t3 := $1_error_not_found($t2); + if ($abort_flag) { + assume {:print "$at(2,44012,44057)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(59,3):", $t4} $t4 == $t4; + goto L4; + } - // assert Not(Not(account::$exists_at[@106]($t3))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:316:9+47 - assume {:print "$at(3,13556,13603)"} true; - assert {:msg "assert_failed(3,13556,13603): function does not abort under this condition"} - !!$1_account_$exists_at($1_account_Account_$memory#106, $t3); + // trace_abort($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:9+97 + assume {:print "$at(2,43961,44058)"} true; + assume {:print "$track_abort(59,3):", $t3} $t3 == $t3; - // assert Not(Not(coin::$is_account_registered[@107]($t3))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:317:9+67 - assume {:print "$at(3,13612,13679)"} true; - assert {:msg "assert_failed(3,13612,13679): function does not abort under this condition"} - !!$1_coin_$is_account_registered'$1_aptos_coin_AptosCoin'($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory#107, $t3); + // $t4 := move($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:9+97 + $t4 := $t3; - // assert Not(Not(exists[@108]($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:510:9+53 - assume {:print "$at(3,22660,22713)"} true; - assert {:msg "assert_failed(3,22660,22713): function does not abort under this condition"} - !!$ResourceExists($1_vesting_VestingContract_$memory#108, $t1); + // goto L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:9+97 + goto L4; - // assert Not(Neq
(signer::$address_of[]($t0), select vesting::VestingContract.admin($t10))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:512:9+62 - assume {:print "$at(3,22796,22858)"} true; - assert {:msg "assert_failed(3,22796,22858): function does not abort under this condition"} - !!$IsEqual'address'($1_signer_$address_of($t0), $admin#$1_vesting_VestingContract($t10)); + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:106+1 +L2: - // assert simple_map::spec_contains_key(select vesting::VestingContract.beneficiaries($t23), $t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:320:9+82 - assume {:print "$at(3,13804,13886)"} true; - assert {:msg "assert_failed(3,13804,13886): post-condition does not hold"} - $1_simple_map_spec_contains_key'address_address'($beneficiaries#$1_vesting_VestingContract($t23), $t2); + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:943:5+1 + assume {:print "$at(2,44064,44065)"} true; +L3: - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:320:9+82 + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:943:5+1 + assume {:print "$at(2,44064,44065)"} true; return; - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:839:5+1 - assume {:print "$at(2,39039,39040)"} true; + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:943:5+1 L4: - // assert Or(Or(Or(Not(account::$exists_at[@106]($t3)), Not(coin::$is_account_registered[@107]($t3))), Not(exists[@108]($t1))), Neq
(signer::$address_of[]($t0), select vesting::VestingContract.admin($t10))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:310:5+497 - assume {:print "$at(3,13395,13892)"} true; - assert {:msg "assert_failed(3,13395,13892): abort not covered by any of the `aborts_if` clauses"} - (((!$1_account_$exists_at($1_account_Account_$memory#106, $t3) || !$1_coin_$is_account_registered'$1_aptos_coin_AptosCoin'($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory#107, $t3)) || !$ResourceExists($1_vesting_VestingContract_$memory#108, $t1)) || !$IsEqual'address'($1_signer_$address_of($t0), $admin#$1_vesting_VestingContract($t10))); - - // abort($t11) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:310:5+497 - $abort_code := $t11; + // abort($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:943:5+1 + assume {:print "$at(2,44064,44065)"} true; + $abort_code := $t4; $abort_flag := true; return; } -// fun vesting::set_beneficiary_resetter [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:885:5+314 -procedure {:timeLimit 1000} $1_vesting_set_beneficiary_resetter$verify(_$t0: $signer, _$t1: int, _$t2: int) returns () +// fun vesting::assert_vesting_contract_exists [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:941:5+176 +procedure {:timeLimit 900} $1_vesting_assert_vesting_contract_exists$verify(_$t0: int) returns () { // declare local variables - var $t3: $1_vesting_VestingContract; - var $t4: Vec (int); - var $t5: $1_string_String; - var $t6: int; - var $t7: $1_vesting_VestingContract; - var $t0: $signer; - var $t1: int; + var $t1: bool; var $t2: int; + var $t3: int; + var $t4: int; + var $t0: int; var $temp_0'address': int; - var $temp_0'signer': $signer; - var $1_vesting_VestingContract_$memory#101: $Memory $1_vesting_VestingContract; + var $1_vesting_VestingContract_$memory#23: $Memory $1_vesting_VestingContract; $t0 := _$t0; - $t1 := _$t1; - $t2 := _$t2; // verification entrypoint assumptions call $InitVerification(); // bytecode translation starts here - // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:885:5+1 - assume {:print "$at(2,40895,40896)"} true; - assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($addr#$signer($t0)); - - // assume WellFormed($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:885:5+1 - assume $IsValid'address'($t1); - - // assume WellFormed($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:885:5+1 - assume $IsValid'address'($t2); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:885:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingAccountManagement_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingAccountManagement_$memory, $a_0); - ($IsValid'$1_vesting_VestingAccountManagement'($rsc)))); + // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:941:5+1 + assume {:print "$at(2,43889,43890)"} true; + assume $IsValid'address'($t0); - // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:885:5+1 + // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:941:5+1 assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; (var j := $i_4; (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); - // assume Identical($t3, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:502:9+65 - assume {:print "$at(3,22264,22329)"} true; - assume ($t3 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); + // @23 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:941:5+1 + $1_vesting_VestingContract_$memory#23 := $1_vesting_VestingContract_$memory; - // @101 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:885:5+1 - assume {:print "$at(2,40895,40896)"} true; - $1_vesting_VestingContract_$memory#101 := $1_vesting_VestingContract_$memory; + // trace_local[contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:941:5+1 + assume {:print "$track_local(59,3,0):", $t0} $t0 == $t0; - // trace_local[admin]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:885:5+1 - assume {:print "$track_local(57,21,0):", $t0} $t0 == $t0; + // $t1 := exists($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:17+6 + assume {:print "$at(2,43969,43975)"} true; + $t1 := $ResourceExists($1_vesting_VestingContract_$memory, $t0); - // trace_local[contract_address]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:885:5+1 - assume {:print "$track_local(57,21,1):", $t1} $t1 == $t1; + // if ($t1) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:9+97 + if ($t1) { goto L1; } else { goto L0; } - // trace_local[beneficiary_resetter]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:885:5+1 - assume {:print "$track_local(57,21,2):", $t2} $t2 == $t2; + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:9+97 +L1: - // $t4 := [82, 79, 76, 69, 95, 66, 69, 78, 69, 70, 73, 67, 73, 65, 82, 89, 95, 82, 69, 83, 69, 84, 84, 69, 82] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:890:59+25 - assume {:print "$at(2,41153,41178)"} true; - $t4 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(82, 79, 76, 69), MakeVec4(95, 66, 69, 78)), MakeVec4(69, 70, 73, 67)), MakeVec4(73, 65, 82, 89)), MakeVec4(95, 82, 69, 83)), MakeVec4(69, 84, 84, 69)), MakeVec1(82)); - assume $IsValid'vec'u8''($t4); + // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:9+97 + assume {:print "$at(2,43961,44058)"} true; + goto L2; - // $t5 := string::utf8($t4) on_abort goto L2 with $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:890:54+31 - call $t5 := $1_string_utf8($t4); - if ($abort_flag) { - assume {:print "$at(2,41148,41179)"} true; - $t6 := $abort_code; - assume {:print "$track_abort(57,21):", $t6} $t6 == $t6; - goto L2; - } + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:77+27 +L0: - // assume Identical($t7, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:502:9+65 - assume {:print "$at(3,22264,22329)"} true; - assume ($t7 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); + // $t2 := 10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:77+27 + assume {:print "$at(2,44029,44056)"} true; + $t2 := 10; + assume $IsValid'u64'($t2); - // vesting::set_management_role($t0, $t1, $t5, $t2) on_abort goto L2 with $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:890:9+99 - assume {:print "$at(2,41103,41202)"} true; - call $1_vesting_set_management_role($t0, $t1, $t5, $t2); + // $t3 := error::not_found($t2) on_abort goto L4 with $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:60+45 + call $t3 := $1_error_not_found($t2); if ($abort_flag) { - assume {:print "$at(2,41103,41202)"} true; - $t6 := $abort_code; - assume {:print "$track_abort(57,21):", $t6} $t6 == $t6; - goto L2; + assume {:print "$at(2,44012,44057)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(59,3):", $t4} $t4 == $t4; + goto L4; } - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:891:5+1 - assume {:print "$at(2,41208,41209)"} true; -L1: + // trace_abort($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:9+97 + assume {:print "$at(2,43961,44058)"} true; + assume {:print "$track_abort(59,3):", $t3} $t3 == $t3; - // assert Not(Not(string::spec_internal_check_utf8[]([82, 79, 76, 69, 95, 66, 69, 78, 69, 70, 73, 67, 73, 65, 82, 89, 95, 82, 69, 83, 69, 84, 84, 69, 82]))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:359:9+76 - assume {:print "$at(3,15382,15458)"} true; - assert {:msg "assert_failed(3,15382,15458): function does not abort under this condition"} - !!$1_string_spec_internal_check_utf8(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(82, 79, 76, 69), MakeVec4(95, 66, 69, 78)), MakeVec4(69, 70, 73, 67)), MakeVec4(73, 65, 82, 89)), MakeVec4(95, 82, 69, 83)), MakeVec4(69, 84, 84, 69)), MakeVec1(82))); + // $t4 := move($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:9+97 + $t4 := $t3; + + // goto L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:9+97 + goto L4; - // assert Not(Not(exists[@101]($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:501:9+53 - assume {:print "$at(3,22202,22255)"} true; - assert {:msg "assert_failed(3,22202,22255): function does not abort under this condition"} - !!$ResourceExists($1_vesting_VestingContract_$memory#101, $t1); + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:106+1 +L2: - // assert Not(Neq
(signer::$address_of[]($t0), select vesting::VestingContract.admin($t3))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:504:9+62 - assume {:print "$at(3,22486,22548)"} true; - assert {:msg "assert_failed(3,22486,22548): function does not abort under this condition"} - !!$IsEqual'address'($1_signer_$address_of($t0), $admin#$1_vesting_VestingContract($t3)); + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:943:5+1 + assume {:print "$at(2,44064,44065)"} true; +L3: - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:504:9+62 + // assert Not(Not(exists[@23]($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:410:9+53 + assume {:print "$at(3,18173,18226)"} true; + assert {:msg "assert_failed(3,18173,18226): function does not abort under this condition"} + !!$ResourceExists($1_vesting_VestingContract_$memory#23, $t0); + + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:410:9+53 return; - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:891:5+1 - assume {:print "$at(2,41208,41209)"} true; -L2: + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:943:5+1 + assume {:print "$at(2,44064,44065)"} true; +L4: - // abort($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:891:5+1 - assume {:print "$at(2,41208,41209)"} true; - $abort_code := $t6; + // assert Not(exists[@23]($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:409:5+132 + assume {:print "$at(3,18100,18232)"} true; + assert {:msg "assert_failed(3,18100,18232): abort not covered by any of the `aborts_if` clauses"} + !$ResourceExists($1_vesting_VestingContract_$memory#23, $t0); + + // abort($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:409:5+132 + $abort_code := $t4; $abort_flag := true; return; } -// fun vesting::set_management_role [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:862:5+951 -procedure {:inline 1} $1_vesting_set_management_role(_$t0: $signer, _$t1: int, _$t2: $1_string_String, _$t3: int) returns () +// fun vesting::beneficiary [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:293:5+282 +procedure {:timeLimit 900} $1_vesting_beneficiary$verify(_$t0: int, _$t1: int) returns ($ret0: int) { // declare local variables - var $t4: $signer; - var $t5: $1_string_String; - var $t6: $Mutation (Table int (int)); - var $t7: $Mutation ($1_vesting_VestingContract); - var $t8: $1_vesting_VestingContract; - var $t9: $Mutation ($1_vesting_VestingContract); - var $t10: int; - var $t11: $1_vesting_VestingContract; - var $t12: bool; - var $t13: bool; - var $t14: $1_vesting_VestingContract; - var $t15: $signer; - var $t16: Table int (int); - var $t17: $1_vesting_VestingAccountManagement; - var $t18: $Mutation ($1_vesting_VestingAccountManagement); - var $t19: $Mutation (Table int (int)); - var $t20: Table int (int); - var $t21: bool; - var $t22: $Mutation (int); - var $t0: $signer; + var $t2: int; + var $t3: $1_vesting_VestingContract; + var $t4: int; + var $t0: int; var $t1: int; - var $t2: $1_string_String; - var $t3: int; - var $temp_0'$1_simple_map_SimpleMap'$1_string_String_address'': Table int (int); - var $temp_0'$1_string_String': $1_string_String; - var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; var $temp_0'address': int; - var $temp_0'signer': $signer; + var $1_vesting_VestingContract_$memory#77: $Memory $1_vesting_VestingContract; $t0 := _$t0; $t1 := _$t1; - $t2 := _$t2; - $t3 := _$t3; - - // bytecode translation starts here - // assume Identical($t8, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:502:9+65 - assume {:print "$at(3,22264,22329)"} true; - assume ($t8 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); - - // trace_local[admin]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:862:5+1 - assume {:print "$at(2,39938,39939)"} true; - assume {:print "$track_local(57,22,0):", $t0} $t0 == $t0; - - // trace_local[contract_address]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:862:5+1 - assume {:print "$track_local(57,22,1):", $t1} $t1 == $t1; - - // trace_local[role]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:862:5+1 - assume {:print "$track_local(57,22,2):", $t2} $t2 == $t2; - - // trace_local[role_holder]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:862:5+1 - assume {:print "$track_local(57,22,3):", $t3} $t3 == $t3; - - // $t9 := borrow_global($t1) on_abort goto L7 with $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:868:32+17 - assume {:print "$at(2,40177,40194)"} true; - if (!$ResourceExists($1_vesting_VestingContract_$memory, $t1)) { - call $ExecFailureAbort(); - } else { - $t9 := $Mutation($Global($t1), EmptyVec(), $ResourceValue($1_vesting_VestingContract_$memory, $t1)); - } - if ($abort_flag) { - assume {:print "$at(2,40177,40194)"} true; - $t10 := $abort_code; - assume {:print "$track_abort(57,22):", $t10} $t10 == $t10; - goto L7; - } - - // trace_local[vesting_contract]($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:868:13+16 - $temp_0'$1_vesting_VestingContract' := $Dereference($t9); - assume {:print "$track_local(57,22,7):", $temp_0'$1_vesting_VestingContract'} $temp_0'$1_vesting_VestingContract' == $temp_0'$1_vesting_VestingContract'; - - // $t11 := read_ref($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:869:21+25 - assume {:print "$at(2,40251,40276)"} true; - $t11 := $Dereference($t9); - - // vesting::verify_admin($t0, $t11) on_abort goto L7 with $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:869:9+37 - call $1_vesting_verify_admin($t0, $t11); - if ($abort_flag) { - assume {:print "$at(2,40239,40276)"} true; - $t10 := $abort_code; - assume {:print "$track_abort(57,22):", $t10} $t10 == $t10; - goto L7; - } - - // $t12 := exists($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:871:14+6 - assume {:print "$at(2,40292,40298)"} true; - $t12 := $ResourceExists($1_vesting_VestingAccountManagement_$memory, $t1); - - // $t13 := !($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:871:13+1 - call $t13 := $Not($t12); - - // if ($t13) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:871:9+299 - if ($t13) { goto L1; } else { goto L0; } - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:872:72+16 - assume {:print "$at(2,40417,40433)"} true; -L1: - - // $t14 := read_ref($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:872:72+16 - assume {:print "$at(2,40417,40433)"} true; - $t14 := $Dereference($t9); - - // pack_ref_deep($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:872:72+16 - - // $t15 := vesting::get_vesting_account_signer_internal($t14) on_abort goto L7 with $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:872:36+53 - call $t15 := $1_vesting_get_vesting_account_signer_internal($t14); - if ($abort_flag) { - assume {:print "$at(2,40381,40434)"} true; - $t10 := $abort_code; - assume {:print "$track_abort(57,22):", $t10} $t10 == $t10; - goto L7; - } - // $t16 := simple_map::create() on_abort goto L7 with $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:874:24+37 - assume {:print "$at(2,40523,40560)"} true; - call $t16 := $1_simple_map_create'$1_string_String_address'(); - if ($abort_flag) { - assume {:print "$at(2,40523,40560)"} true; - $t10 := $abort_code; - assume {:print "$track_abort(57,22):", $t10} $t10 == $t10; - goto L7; - } + // verification entrypoint assumptions + call $InitVerification(); - // $t17 := pack vesting::VestingAccountManagement($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:873:38+102 - assume {:print "$at(2,40473,40575)"} true; - $t17 := $1_vesting_VestingAccountManagement($t16); + // bytecode translation starts here + // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:293:5+1 + assume {:print "$at(2,13591,13592)"} true; + assume $IsValid'address'($t0); - // move_to($t17, $t15) on_abort goto L7 with $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:873:13+7 - if ($ResourceExists($1_vesting_VestingAccountManagement_$memory, $addr#$signer($t15))) { - call $ExecFailureAbort(); - } else { - $1_vesting_VestingAccountManagement_$memory := $ResourceUpdate($1_vesting_VestingAccountManagement_$memory, $addr#$signer($t15), $t17); - } - if ($abort_flag) { - assume {:print "$at(2,40448,40455)"} true; - $t10 := $abort_code; - assume {:print "$track_abort(57,22):", $t10} $t10 == $t10; - goto L7; - } + // assume WellFormed($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:293:5+1 + assume $IsValid'address'($t1); - // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:873:13+128 - goto L2; + // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:293:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); + (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; + (var j := $i_4; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:871:9+299 - assume {:print "$at(2,40287,40586)"} true; -L0: + // @77 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:293:5+1 + $1_vesting_VestingContract_$memory#77 := $1_vesting_VestingContract_$memory; - // pack_ref_deep($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:871:9+299 - assume {:print "$at(2,40287,40586)"} true; + // trace_local[vesting_contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:293:5+1 + assume {:print "$track_local(59,4,0):", $t0} $t0 == $t0; - // destroy($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:871:9+299 + // trace_local[shareholder]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:293:5+1 + assume {:print "$track_local(59,4,1):", $t1} $t1 == $t1; - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:877:70+16 - assume {:print "$at(2,40657,40673)"} true; -L2: + // vesting::assert_vesting_contract_exists($t0) on_abort goto L2 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:294:9+56 + assume {:print "$at(2,13715,13771)"} true; + call $1_vesting_assert_vesting_contract_exists($t0); + if ($abort_flag) { + assume {:print "$at(2,13715,13771)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(59,4):", $t2} $t2 == $t2; + goto L2; + } - // $t18 := borrow_global($t1) on_abort goto L7 with $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:877:26+17 - assume {:print "$at(2,40613,40630)"} true; - if (!$ResourceExists($1_vesting_VestingAccountManagement_$memory, $t1)) { + // $t3 := get_global($t0) on_abort goto L2 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:295:25+13 + assume {:print "$at(2,13797,13810)"} true; + if (!$ResourceExists($1_vesting_VestingContract_$memory, $t0)) { call $ExecFailureAbort(); } else { - $t18 := $Mutation($Global($t1), EmptyVec(), $ResourceValue($1_vesting_VestingAccountManagement_$memory, $t1)); + $t3 := $ResourceValue($1_vesting_VestingContract_$memory, $t0); } if ($abort_flag) { - assume {:print "$at(2,40613,40630)"} true; - $t10 := $abort_code; - assume {:print "$track_abort(57,22):", $t10} $t10 == $t10; - goto L7; + assume {:print "$at(2,13797,13810)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(59,4):", $t2} $t2 == $t2; + goto L2; } - // $t19 := borrow_field.roles($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:877:21+72 - $t19 := $ChildMutation($t18, 0, $roles#$1_vesting_VestingAccountManagement($Dereference($t18))); + // $t4 := vesting::get_beneficiary($t3, $t1) on_abort goto L2 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:295:9+86 + call $t4 := $1_vesting_get_beneficiary($t3, $t1); + if ($abort_flag) { + assume {:print "$at(2,13781,13867)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(59,4):", $t2} $t2 == $t2; + goto L2; + } - // trace_local[roles]($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:877:13+5 - $temp_0'$1_simple_map_SimpleMap'$1_string_String_address'' := $Dereference($t19); - assume {:print "$track_local(57,22,6):", $temp_0'$1_simple_map_SimpleMap'$1_string_String_address''} $temp_0'$1_simple_map_SimpleMap'$1_string_String_address'' == $temp_0'$1_simple_map_SimpleMap'$1_string_String_address''; + // trace_return[0]($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:295:9+86 + assume {:print "$track_return(59,4,0):", $t4} $t4 == $t4; - // $t20 := read_ref($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:878:37+14 - assume {:print "$at(2,40718,40732)"} true; - $t20 := $Dereference($t19); + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:296:5+1 + assume {:print "$at(2,13872,13873)"} true; +L1: - // $t21 := simple_map::contains_key($t20, $t2) on_abort goto L7 with $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:878:13+38 - call $t21 := $1_simple_map_contains_key'$1_string_String_address'($t20, $t2); - if ($abort_flag) { - assume {:print "$at(2,40694,40732)"} true; - $t10 := $abort_code; - assume {:print "$track_abort(57,22):", $t10} $t10 == $t10; - goto L7; - } + // assert Not(Not(exists[@77]($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:24:9+61 + assume {:print "$at(3,811,872)"} true; + assert {:msg "assert_failed(3,811,872): function does not abort under this condition"} + !!$ResourceExists($1_vesting_VestingContract_$memory#77, $t0); - // if ($t21) goto L4 else goto L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:878:9+192 - if ($t21) { goto L4; } else { goto L3; } + // return $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:24:9+61 + $ret0 := $t4; + return; - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:879:53+11 - assume {:print "$at(2,40788,40799)"} true; -L4: + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:296:5+1 + assume {:print "$at(2,13872,13873)"} true; +L2: - // $t22 := simple_map::borrow_mut($t19, $t2) on_abort goto L7 with $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:879:14+36 - assume {:print "$at(2,40749,40785)"} true; - call $t22,$t19 := $1_simple_map_borrow_mut'$1_string_String_address'($t19, $t2); - if ($abort_flag) { - assume {:print "$at(2,40749,40785)"} true; - $t10 := $abort_code; - assume {:print "$track_abort(57,22):", $t10} $t10 == $t10; - goto L7; - } + // assert Not(exists[@77]($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:23:5+160 + assume {:print "$at(3,718,878)"} true; + assert {:msg "assert_failed(3,718,878): abort not covered by any of the `aborts_if` clauses"} + !$ResourceExists($1_vesting_VestingContract_$memory#77, $t0); - // write_ref($t22, $t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:879:13+51 - $t22 := $UpdateMutation($t22, $t3); + // abort($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:23:5+160 + $abort_code := $t2; + $abort_flag := true; + return; - // write_back[Reference($t19)[]]($t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:879:13+51 - $t19 := $UpdateMutation($t19, UpdateTable($Dereference($t19), ReadVec(p#$Mutation($t22), LenVec(p#$Mutation($t19))), $Dereference($t22))); +} - // write_back[Reference($t18).roles (simple_map::SimpleMap)]($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:879:13+51 - $t18 := $UpdateMutation($t18, $Update'$1_vesting_VestingAccountManagement'_roles($Dereference($t18), $Dereference($t19))); +// fun vesting::vesting_schedule [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:346:5+260 +procedure {:timeLimit 900} $1_vesting_vesting_schedule$verify(_$t0: int) returns ($ret0: $1_vesting_VestingSchedule) +{ + // declare local variables + var $t1: int; + var $t2: $1_vesting_VestingContract; + var $t3: $1_vesting_VestingSchedule; + var $t0: int; + var $temp_0'$1_vesting_VestingSchedule': $1_vesting_VestingSchedule; + var $temp_0'address': int; + var $1_vesting_VestingContract_$memory#32: $Memory $1_vesting_VestingContract; + $t0 := _$t0; - // write_back[vesting::VestingAccountManagement@]($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:879:13+51 - $1_vesting_VestingAccountManagement_$memory := $ResourceUpdate($1_vesting_VestingAccountManagement_$memory, $GlobalLocationAddress($t18), - $Dereference($t18)); + // verification entrypoint assumptions + call $InitVerification(); - // goto L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:879:64+1 - goto L5; + // bytecode translation starts here + // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:346:5+1 + assume {:print "$at(2,16253,16254)"} true; + assume $IsValid'address'($t0); - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:881:29+5 - assume {:print "$at(2,40846,40851)"} true; -L3: + // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:346:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); + (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; + (var j := $i_4; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); - // simple_map::add($t19, $t2, $t3) on_abort goto L7 with $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:881:13+41 - assume {:print "$at(2,40830,40871)"} true; - call $t19 := $1_simple_map_add'$1_string_String_address'($t19, $t2, $t3); + // @32 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:346:5+1 + $1_vesting_VestingContract_$memory#32 := $1_vesting_VestingContract_$memory; + + // trace_local[vesting_contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:346:5+1 + assume {:print "$track_local(59,38,0):", $t0} $t0 == $t0; + + // vesting::assert_vesting_contract_exists($t0) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:347:9+56 + assume {:print "$at(2,16368,16424)"} true; + call $1_vesting_assert_vesting_contract_exists($t0); if ($abort_flag) { - assume {:print "$at(2,40830,40871)"} true; - $t10 := $abort_code; - assume {:print "$track_abort(57,22):", $t10} $t10 == $t10; - goto L7; + assume {:print "$at(2,16368,16424)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(59,38):", $t1} $t1 == $t1; + goto L2; } - // write_back[Reference($t18).roles (simple_map::SimpleMap)]($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:881:13+41 - $t18 := $UpdateMutation($t18, $Update'$1_vesting_VestingAccountManagement'_roles($Dereference($t18), $Dereference($t19))); + // $t2 := get_global($t0) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:348:9+13 + assume {:print "$at(2,16434,16447)"} true; + if (!$ResourceExists($1_vesting_VestingContract_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t2 := $ResourceValue($1_vesting_VestingContract_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(2,16434,16447)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(59,38):", $t1} $t1 == $t1; + goto L2; + } - // write_back[vesting::VestingAccountManagement@]($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:881:13+41 - $1_vesting_VestingAccountManagement_$memory := $ResourceUpdate($1_vesting_VestingAccountManagement_$memory, $GlobalLocationAddress($t18), - $Dereference($t18)); + // $t3 := get_field.vesting_schedule($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:348:9+73 + $t3 := $vesting_schedule#$1_vesting_VestingContract($t2); - // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:882:10+1 - assume {:print "$at(2,40882,40883)"} true; -L5: + // trace_return[0]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:348:9+73 + assume {:print "$track_return(59,38,0):", $t3} $t3 == $t3; - // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:883:5+1 - assume {:print "$at(2,40888,40889)"} true; -L6: + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:349:5+1 + assume {:print "$at(2,16512,16513)"} true; +L1: - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:883:5+1 - assume {:print "$at(2,40888,40889)"} true; + // assert Not(Not(exists[@32]($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:44:9+61 + assume {:print "$at(3,1500,1561)"} true; + assert {:msg "assert_failed(3,1500,1561): function does not abort under this condition"} + !!$ResourceExists($1_vesting_VestingContract_$memory#32, $t0); + + // return $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:44:9+61 + $ret0 := $t3; return; - // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:883:5+1 -L7: + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:349:5+1 + assume {:print "$at(2,16512,16513)"} true; +L2: - // abort($t10) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:883:5+1 - assume {:print "$at(2,40888,40889)"} true; - $abort_code := $t10; + // assert Not(exists[@32]($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:43:5+151 + assume {:print "$at(3,1416,1567)"} true; + assert {:msg "assert_failed(3,1416,1567): abort not covered by any of the `aborts_if` clauses"} + !$ResourceExists($1_vesting_VestingContract_$memory#32, $t0); + + // abort($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:43:5+151 + $abort_code := $t1; $abort_flag := true; return; } -// fun vesting::set_management_role [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:862:5+951 -procedure {:timeLimit 1000} $1_vesting_set_management_role$verify(_$t0: $signer, _$t1: int, _$t2: $1_string_String, _$t3: int) returns () +// fun vesting::create_vesting_contract_account [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:915:5+1075 +procedure {:timeLimit 900} $1_vesting_create_vesting_contract_account$verify(_$t0: $signer, _$t1: Vec (int)) returns ($ret0: $signer, $ret1: $1_account_SignerCapability) { // declare local variables - var $t4: $signer; - var $t5: $1_string_String; - var $t6: $Mutation (Table int (int)); - var $t7: $Mutation ($1_vesting_VestingContract); - var $t8: $1_vesting_VestingContract; - var $t9: $Mutation ($1_vesting_VestingContract); - var $t10: int; - var $t11: $1_vesting_VestingContract; - var $t12: bool; - var $t13: bool; - var $t14: $1_vesting_VestingContract; - var $t15: $signer; - var $t16: Table int (int); - var $t17: $1_vesting_VestingAccountManagement; - var $t18: $Mutation ($1_vesting_VestingAccountManagement); - var $t19: $Mutation (Table int (int)); - var $t20: Table int (int); - var $t21: bool; - var $t22: $Mutation (int); - var $t0: $signer; - var $t1: int; - var $t2: $1_string_String; - var $t3: int; - var $temp_0'$1_simple_map_SimpleMap'$1_string_String_address'': Table int (int); - var $temp_0'$1_string_String': $1_string_String; - var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; - var $temp_0'address': int; + var $t2: int; + var $t3: $signer; + var $t4: $Mutation ($1_vesting_AdminStore); + var $t5: Vec (int); + var $t6: $1_account_SignerCapability; + var $t7: int; + var $t8: $1_vesting_AdminStore; + var $t9: Vec (int); + var $t10: Vec (int); + var $t11: Vec (int); + var $t12: Vec (int); + var $t13: Vec (int); + var $t14: int; + var $t15: bool; + var $t16: $1_account_Account; + var $t17: $1_account_Account; + var $t18: Vec (int); + var $t19: int; + var $t20: int; + var $t21: $Mutation ($1_vesting_AdminStore); + var $t22: int; + var $t23: $Mutation (Vec (int)); + var $t24: int; + var $t25: Vec (int); + var $t26: int; + var $t27: int; + var $t28: int; + var $t29: $Mutation (int); + var $t30: $Mutation (Vec (int)); + var $t31: Vec (int); + var $t32: $Mutation (Vec (int)); + var $t33: Vec (int); + var $t34: int; + var $t35: int; + var $t36: $1_account_Account; + var $t37: Vec (int); + var $t38: $signer; + var $t39: $1_account_SignerCapability; + var $t40: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t41: int; + var $t42: $1_account_Account; + var $t43: $1_account_Account; + var $t0: $signer; + var $t1: Vec (int); + var $temp_0'$1_account_SignerCapability': $1_account_SignerCapability; + var $temp_0'$1_vesting_AdminStore': $1_vesting_AdminStore; var $temp_0'signer': $signer; - var $1_vesting_VestingContract_$memory#85: $Memory $1_vesting_VestingContract; + var $temp_0'vec'u8'': Vec (int); + var $1_vesting_AdminStore_$memory#70: $Memory $1_vesting_AdminStore; + var $1_account_Account_$memory#71: $Memory $1_account_Account; + var $1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory#72: $Memory $1_coin_CoinStore'$1_aptos_coin_AptosCoin'; $t0 := _$t0; $t1 := _$t1; - $t2 := _$t2; - $t3 := _$t3; // verification entrypoint assumptions call $InitVerification(); // bytecode translation starts here - // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:862:5+1 - assume {:print "$at(2,39938,39939)"} true; + // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:915:5+1 + assume {:print "$at(2,42620,42621)"} true; assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($addr#$signer($t0)); - // assume WellFormed($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:862:5+1 - assume $IsValid'address'($t1); + // assume WellFormed($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:915:5+1 + assume $IsValid'vec'u8''($t1); - // assume WellFormed($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:862:5+1 - assume $IsValid'$1_string_String'($t2); + // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.rotation_capability_offer($rsc)))), 1), Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.signer_capability_offer($rsc)))), 1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:915:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_account_Account_$memory, $a_0)}(var $rsc := $ResourceValue($1_account_Account_$memory, $a_0); + (($IsValid'$1_account_Account'($rsc) && ((LenVec($vec#$1_option_Option'address'($for#$1_account_CapabilityOffer'$1_account_RotationCapability'($rotation_capability_offer#$1_account_Account($rsc)))) <= 1) && (LenVec($vec#$1_option_Option'address'($for#$1_account_CapabilityOffer'$1_account_SignerCapability'($signer_capability_offer#$1_account_Account($rsc)))) <= 1)))))); - // assume WellFormed($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:862:5+1 - assume $IsValid'address'($t3); + // assume forall $rsc: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: select option::Option.vec(select coin::CoinInfo.supply($rsc)): And(And(And(And(And(Iff(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($elem)), option::$is_none(select optional_aggregator::OptionalAggregator.integer($elem))), Iff(option::$is_some(select optional_aggregator::OptionalAggregator.integer($elem)), option::$is_none(select optional_aggregator::OptionalAggregator.aggregator($elem)))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.integer($elem)), Le(select optional_aggregator::Integer.value(option::$borrow(select optional_aggregator::OptionalAggregator.integer($elem))), select optional_aggregator::Integer.limit(option::$borrow(select optional_aggregator::OptionalAggregator.integer($elem)))))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($elem)), Le(aggregator::spec_aggregator_get_val(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($elem))), aggregator::spec_get_limit(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($elem)))))), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.aggregator($elem))), 1)), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.integer($elem))), 1)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:915:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'$1_aptos_coin_AptosCoin''($rsc) && ((LenVec($vec#$1_option_Option'$1_optional_aggregator_OptionalAggregator'($supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($rsc))) <= 1) && (var $range_1 := $vec#$1_option_Option'$1_optional_aggregator_OptionalAggregator'($supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($rsc)); (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)) <==> $1_option_$is_none'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)) ==> ($value#$1_optional_aggregator_Integer($1_option_$borrow'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) <= $limit#$1_optional_aggregator_Integer($1_option_$borrow'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)))))) && ($1_option_$is_some'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem))) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)))))) && (LenVec($vec#$1_option_Option'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem))) <= 1)) && (LenVec($vec#$1_option_Option'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) <= 1))))))))))); - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:862:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingAccountManagement_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingAccountManagement_$memory, $a_0); - ($IsValid'$1_vesting_VestingAccountManagement'($rsc)))); + // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:915:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $a_0); + ($IsValid'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''($rsc)))); - // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:862:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); - (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; - (var j := $i_4; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); + // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:915:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin''($rsc)))); - // assume Identical($t8, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:502:9+65 - assume {:print "$at(3,22264,22329)"} true; - assume ($t8 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); + // assume exists>(0x0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:915:5+1 + assume $ResourceExists($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, 0); - // @85 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:862:5+1 - assume {:print "$at(2,39938,39939)"} true; - $1_vesting_VestingContract_$memory#85 := $1_vesting_VestingContract_$memory; + // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:915:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin''($rsc)))); - // trace_local[admin]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:862:5+1 - assume {:print "$track_local(57,22,0):", $t0} $t0 == $t0; + // assume exists>(0x0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:915:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, 0); - // trace_local[contract_address]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:862:5+1 - assume {:print "$track_local(57,22,1):", $t1} $t1 == $t1; + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:915:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_vesting_AdminStore_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_AdminStore_$memory, $a_0); + ($IsValid'$1_vesting_AdminStore'($rsc)))); - // trace_local[role]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:862:5+1 - assume {:print "$track_local(57,22,2):", $t2} $t2 == $t2; + // assume Identical($t7, signer::$address_of($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:378:9+43 + assume {:print "$at(3,16360,16403)"} true; + assume ($t7 == $1_signer_$address_of($t0)); - // trace_local[role_holder]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:862:5+1 - assume {:print "$track_local(57,22,3):", $t3} $t3 == $t3; + // assume Identical($t8, global($t7)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:379:9+49 + assume {:print "$at(3,16412,16461)"} true; + assume ($t8 == $ResourceValue($1_vesting_AdminStore_$memory, $t7)); - // $t9 := borrow_global($t1) on_abort goto L7 with $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:868:32+17 - assume {:print "$at(2,40177,40194)"} true; - if (!$ResourceExists($1_vesting_VestingContract_$memory, $t1)) { + // assume Identical($t9, bcs::$to_bytes
($t7)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:380:9+37 + assume {:print "$at(3,16470,16507)"} true; + assume ($t9 == $1_bcs_$to_bytes'address'($t7)); + + // assume Identical($t10, bcs::$to_bytes(select vesting::AdminStore.nonce($t8))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:381:9+45 + assume {:print "$at(3,16516,16561)"} true; + assume ($t10 == $1_bcs_$to_bytes'u64'($nonce#$1_vesting_AdminStore($t8))); + + // assume Identical($t11, ConcatVec($t9, $t10)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:383:9+32 + assume {:print "$at(3,16571,16603)"} true; + assume ($t11 == ConcatVec($t9, $t10)); + + // assume Identical($t12, ConcatVec($t11, [97, 112, 116, 111, 115, 95, 102, 114, 97, 109, 101, 119, 111, 114, 107, 58, 58, 118, 101, 115, 116, 105, 110, 103])) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:384:9+46 + assume {:print "$at(3,16612,16658)"} true; + assume ($t12 == ConcatVec($t11, ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(97, 112, 116, 111), MakeVec4(115, 95, 102, 114)), MakeVec4(97, 109, 101, 119)), MakeVec4(111, 114, 107, 58)), MakeVec4(58, 118, 101, 115)), MakeVec4(116, 105, 110, 103)))); + + // assume Identical($t13, ConcatVec($t12, $t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:385:9+49 + assume {:print "$at(3,16667,16716)"} true; + assume ($t13 == ConcatVec($t12, $t1)); + + // assume Identical($t14, account::spec_create_resource_address($t7, $t13)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:387:9+75 + assume {:print "$at(3,16726,16801)"} true; + assume ($t14 == $1_account_spec_create_resource_address($t7, $t13)); + + // assume Identical($t15, account::$exists_at($t14)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:391:9+43 + assume {:print "$at(3,16965,17008)"} true; + assume ($t15 == $1_account_$exists_at($1_account_Account_$memory, $t14)); + + // assume Identical($t16, global($t14)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:394:9+50 + assume {:print "$at(3,17140,17190)"} true; + assume ($t16 == $ResourceValue($1_account_Account_$memory, $t14)); + + // assume Identical($t17, global($t14)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:481:9+45 + assume {:print "$at(80,23051,23096)"} true; + assume ($t17 == $ResourceValue($1_account_Account_$memory, $t14)); + + // assume Identical($t18, bcs::$to_bytes
($t14)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:40:9+45 + assume {:print "$at(80,1640,1685)"} true; + assume ($t18 == $1_bcs_$to_bytes'address'($t14)); + + // @71 := save_mem(account::Account) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:915:5+1 + assume {:print "$at(2,42620,42621)"} true; + $1_account_Account_$memory#71 := $1_account_Account_$memory; + + // @72 := save_mem(coin::CoinStore) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:915:5+1 + $1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory#72 := $1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory; + + // @70 := save_mem(vesting::AdminStore) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:915:5+1 + $1_vesting_AdminStore_$memory#70 := $1_vesting_AdminStore_$memory; + + // trace_local[admin]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:915:5+1 + assume {:print "$track_local(59,6,0):", $t0} $t0 == $t0; + + // trace_local[contract_creation_seed]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:915:5+1 + assume {:print "$track_local(59,6,1):", $t1} $t1 == $t1; + + // $t19 := signer::address_of($t0) on_abort goto L2 with $t20 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:919:57+25 + assume {:print "$at(2,42837,42862)"} true; + call $t19 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(2,42837,42862)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(59,6):", $t20} $t20 == $t20; + goto L2; + } + + // $t21 := borrow_global($t19) on_abort goto L2 with $t20 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:919:27+17 + if (!$ResourceExists($1_vesting_AdminStore_$memory, $t19)) { call $ExecFailureAbort(); } else { - $t9 := $Mutation($Global($t1), EmptyVec(), $ResourceValue($1_vesting_VestingContract_$memory, $t1)); + $t21 := $Mutation($Global($t19), EmptyVec(), $ResourceValue($1_vesting_AdminStore_$memory, $t19)); } if ($abort_flag) { - assume {:print "$at(2,40177,40194)"} true; - $t10 := $abort_code; - assume {:print "$track_abort(57,22):", $t10} $t10 == $t10; - goto L7; + assume {:print "$at(2,42807,42824)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(59,6):", $t20} $t20 == $t20; + goto L2; } - // trace_local[vesting_contract]($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:868:13+16 - $temp_0'$1_vesting_VestingContract' := $Dereference($t9); - assume {:print "$track_local(57,22,7):", $temp_0'$1_vesting_VestingContract'} $temp_0'$1_vesting_VestingContract' == $temp_0'$1_vesting_VestingContract'; + // trace_local[admin_store]($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:919:13+11 + $temp_0'$1_vesting_AdminStore' := $Dereference($t21); + assume {:print "$track_local(59,6,4):", $temp_0'$1_vesting_AdminStore'} $temp_0'$1_vesting_AdminStore' == $temp_0'$1_vesting_AdminStore'; - // $t11 := read_ref($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:869:21+25 - assume {:print "$at(2,40251,40276)"} true; - $t11 := $Dereference($t9); + // $t22 := signer::address_of($t0) on_abort goto L2 with $t20 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:920:35+25 + assume {:print "$at(2,42899,42924)"} true; + call $t22 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(2,42899,42924)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(59,6):", $t20} $t20 == $t20; + goto L2; + } - // vesting::verify_admin($t0, $t11) on_abort goto L7 with $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:869:9+37 - call $1_vesting_verify_admin($t0, $t11); + // $t5 := bcs::to_bytes
($t22) on_abort goto L2 with $t20 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:920:20+41 + call $t5 := $1_bcs_to_bytes'address'($t22); if ($abort_flag) { - assume {:print "$at(2,40239,40276)"} true; - $t10 := $abort_code; - assume {:print "$track_abort(57,22):", $t10} $t10 == $t10; - goto L7; + assume {:print "$at(2,42884,42925)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(59,6):", $t20} $t20 == $t20; + goto L2; } - // $t12 := exists($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:871:14+6 - assume {:print "$at(2,40292,40298)"} true; - $t12 := $ResourceExists($1_vesting_VestingAccountManagement_$memory, $t1); + // trace_local[seed]($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:920:13+4 + assume {:print "$track_local(59,6,5):", $t5} $t5 == $t5; - // $t13 := !($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:871:13+1 - call $t13 := $Not($t12); + // $t23 := borrow_local($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:921:24+9 + assume {:print "$at(2,42950,42959)"} true; + $t23 := $Mutation($Local(5), EmptyVec(), $t5); - // if ($t13) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:871:9+299 - if ($t13) { goto L1; } else { goto L0; } + // $t24 := get_field.nonce($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:921:49+18 + $t24 := $nonce#$1_vesting_AdminStore($Dereference($t21)); - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:872:72+16 - assume {:print "$at(2,40417,40433)"} true; -L1: + // $t25 := bcs::to_bytes($t24) on_abort goto L2 with $t20 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:921:35+33 + call $t25 := $1_bcs_to_bytes'u64'($t24); + if ($abort_flag) { + assume {:print "$at(2,42961,42994)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(59,6):", $t20} $t20 == $t20; + goto L2; + } - // $t14 := read_ref($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:872:72+16 - assume {:print "$at(2,40417,40433)"} true; - $t14 := $Dereference($t9); + // vector::append($t23, $t25) on_abort goto L2 with $t20 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:921:9+60 + call $t23 := $1_vector_append'u8'($t23, $t25); + if ($abort_flag) { + assume {:print "$at(2,42935,42995)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(59,6):", $t20} $t20 == $t20; + goto L2; + } - // assert forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t9)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t9)), addr)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 - // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 - assume {:print "$at(59,538,673)"} true; - assert {:msg "assert_failed(59,538,673): data invariant does not hold"} - (forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t9))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t9))), addr)))); + // write_back[LocalRoot($t5)@]($t23) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:921:9+60 + $t5 := $Dereference($t23); - // assert forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t9)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t9)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t9)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t9)), j)), Eq(i, j)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 - // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 - assume {:print "$at(59,738,867)"} true; - assert {:msg "assert_failed(59,738,867): data invariant does not hold"} - (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t9))))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t9))))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; - (var j := $i_3; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t9))), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t9))), j)) ==> $IsEqual'num'(i, j)))))))); + // trace_local[seed]($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:921:9+60 + assume {:print "$track_local(59,6,5):", $t5} $t5 == $t5; - // $t15 := vesting::get_vesting_account_signer_internal($t14) on_abort goto L7 with $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:872:36+53 - assume {:print "$at(2,40381,40434)"} true; - call $t15 := $1_vesting_get_vesting_account_signer_internal($t14); + // $t26 := get_field.nonce($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:922:29+17 + assume {:print "$at(2,43025,43042)"} true; + $t26 := $nonce#$1_vesting_AdminStore($Dereference($t21)); + + // $t27 := 1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:922:49+1 + $t27 := 1; + assume $IsValid'u64'($t27); + + // $t28 := +($t26, $t27) on_abort goto L2 with $t20 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:922:47+1 + call $t28 := $AddU64($t26, $t27); if ($abort_flag) { - assume {:print "$at(2,40381,40434)"} true; - $t10 := $abort_code; - assume {:print "$track_abort(57,22):", $t10} $t10 == $t10; - goto L7; + assume {:print "$at(2,43043,43044)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(59,6):", $t20} $t20 == $t20; + goto L2; } - // $t16 := simple_map::create() on_abort goto L7 with $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:874:24+37 - assume {:print "$at(2,40523,40560)"} true; - call $t16 := $1_simple_map_create'$1_string_String_address'(); + // $t29 := borrow_field.nonce($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:922:9+17 + $t29 := $ChildMutation($t21, 1, $nonce#$1_vesting_AdminStore($Dereference($t21))); + + // write_ref($t29, $t28) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:922:9+41 + $t29 := $UpdateMutation($t29, $t28); + + // write_back[Reference($t21).nonce (u64)]($t29) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:922:9+41 + $t21 := $UpdateMutation($t21, $Update'$1_vesting_AdminStore'_nonce($Dereference($t21), $Dereference($t29))); + + // write_back[vesting::AdminStore@]($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:922:9+41 + $1_vesting_AdminStore_$memory := $ResourceUpdate($1_vesting_AdminStore_$memory, $GlobalLocationAddress($t21), + $Dereference($t21)); + + // $t30 := borrow_local($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:926:24+9 + assume {:print "$at(2,43254,43263)"} true; + $t30 := $Mutation($Local(5), EmptyVec(), $t5); + + // $t31 := [97, 112, 116, 111, 115, 95, 102, 114, 97, 109, 101, 119, 111, 114, 107, 58, 58, 118, 101, 115, 116, 105, 110, 103] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:926:35+17 + $t31 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(97, 112, 116, 111), MakeVec4(115, 95, 102, 114)), MakeVec4(97, 109, 101, 119)), MakeVec4(111, 114, 107, 58)), MakeVec4(58, 118, 101, 115)), MakeVec4(116, 105, 110, 103)); + assume $IsValid'vec'u8''($t31); + + // vector::append($t30, $t31) on_abort goto L2 with $t20 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:926:9+44 + call $t30 := $1_vector_append'u8'($t30, $t31); if ($abort_flag) { - assume {:print "$at(2,40523,40560)"} true; - $t10 := $abort_code; - assume {:print "$track_abort(57,22):", $t10} $t10 == $t10; - goto L7; + assume {:print "$at(2,43239,43283)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(59,6):", $t20} $t20 == $t20; + goto L2; } - // $t17 := pack vesting::VestingAccountManagement($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:873:38+102 - assume {:print "$at(2,40473,40575)"} true; - $t17 := $1_vesting_VestingAccountManagement($t16); + // write_back[LocalRoot($t5)@]($t30) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:926:9+44 + $t5 := $Dereference($t30); - // move_to($t17, $t15) on_abort goto L7 with $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:873:13+7 - if ($ResourceExists($1_vesting_VestingAccountManagement_$memory, $addr#$signer($t15))) { - call $ExecFailureAbort(); - } else { - $1_vesting_VestingAccountManagement_$memory := $ResourceUpdate($1_vesting_VestingAccountManagement_$memory, $addr#$signer($t15), $t17); - } + // trace_local[seed]($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:926:9+44 + assume {:print "$track_local(59,6,5):", $t5} $t5 == $t5; + + // $t32 := borrow_local($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:927:24+9 + assume {:print "$at(2,43308,43317)"} true; + $t32 := $Mutation($Local(5), EmptyVec(), $t5); + + // vector::append($t32, $t1) on_abort goto L2 with $t20 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:927:9+49 + call $t32 := $1_vector_append'u8'($t32, $t1); if ($abort_flag) { - assume {:print "$at(2,40448,40455)"} true; - $t10 := $abort_code; - assume {:print "$track_abort(57,22):", $t10} $t10 == $t10; - goto L7; + assume {:print "$at(2,43293,43342)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(59,6):", $t20} $t20 == $t20; + goto L2; } - // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:873:13+128 - goto L2; + // write_back[LocalRoot($t5)@]($t32) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:927:9+49 + $t5 := $Dereference($t32); + + // trace_local[seed]($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:927:9+49 + assume {:print "$track_local(59,6,5):", $t5} $t5 == $t5; - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:871:9+299 - assume {:print "$at(2,40287,40586)"} true; -L0: + // $t33 := move($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:929:84+4 + assume {:print "$at(2,43428,43432)"} true; + $t33 := $t5; - // assert forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t9)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t9)), addr)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 - // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 - assume {:print "$at(59,538,673)"} true; - assert {:msg "assert_failed(59,538,673): data invariant does not hold"} - (forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t9))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t9))), addr)))); + // assume Identical($t34, signer::$address_of($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:412:9+45 + assume {:print "$at(80,20304,20349)"} true; + assume ($t34 == $1_signer_$address_of($t0)); - // assert forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t9)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t9)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t9)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t9)), j)), Eq(i, j)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 - // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 - assume {:print "$at(59,738,867)"} true; - assert {:msg "assert_failed(59,738,867): data invariant does not hold"} - (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t9))))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t9))))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; - (var j := $i_3; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t9))), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t9))), j)) ==> $IsEqual'num'(i, j)))))))); + // assume Identical($t35, account::spec_create_resource_address($t34, $t33)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:413:9+68 + assume {:print "$at(80,20358,20426)"} true; + assume ($t35 == $1_account_spec_create_resource_address($t34, $t33)); - // destroy($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:871:9+299 - assume {:print "$at(2,40287,40586)"} true; + // assume Identical($t36, global($t35)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:481:9+45 + assume {:print "$at(80,23051,23096)"} true; + assume ($t36 == $ResourceValue($1_account_Account_$memory, $t35)); - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:877:70+16 - assume {:print "$at(2,40657,40673)"} true; -L2: + // assume Identical($t37, bcs::$to_bytes
($t35)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:40:9+45 + assume {:print "$at(80,1640,1685)"} true; + assume ($t37 == $1_bcs_$to_bytes'address'($t35)); - // $t18 := borrow_global($t1) on_abort goto L7 with $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:877:26+17 - assume {:print "$at(2,40613,40630)"} true; - if (!$ResourceExists($1_vesting_VestingAccountManagement_$memory, $t1)) { - call $ExecFailureAbort(); - } else { - $t18 := $Mutation($Global($t1), EmptyVec(), $ResourceValue($1_vesting_VestingAccountManagement_$memory, $t1)); - } + // ($t38, $t39) := account::create_resource_account($t0, $t33) on_abort goto L2 with $t20 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:929:44+45 + assume {:print "$at(2,43388,43433)"} true; + call $t38,$t39 := $1_account_create_resource_account($t0, $t33); if ($abort_flag) { - assume {:print "$at(2,40613,40630)"} true; - $t10 := $abort_code; - assume {:print "$track_abort(57,22):", $t10} $t10 == $t10; - goto L7; + assume {:print "$at(2,43388,43433)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(59,6):", $t20} $t20 == $t20; + goto L2; } - // $t19 := borrow_field.roles($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:877:21+72 - $t19 := $ChildMutation($t18, 0, $roles#$1_vesting_VestingAccountManagement($Dereference($t18))); - - // trace_local[roles]($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:877:13+5 - $temp_0'$1_simple_map_SimpleMap'$1_string_String_address'' := $Dereference($t19); - assume {:print "$track_local(57,22,6):", $temp_0'$1_simple_map_SimpleMap'$1_string_String_address''} $temp_0'$1_simple_map_SimpleMap'$1_string_String_address'' == $temp_0'$1_simple_map_SimpleMap'$1_string_String_address''; + // trace_local[signer_cap]($t39) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:929:30+10 + assume {:print "$track_local(59,6,6):", $t39} $t39 == $t39; - // $t20 := read_ref($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:878:37+14 - assume {:print "$at(2,40718,40732)"} true; - $t20 := $Dereference($t19); + // trace_local[account_signer]($t38) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:929:14+14 + assume {:print "$track_local(59,6,3):", $t38} $t38 == $t38; - // $t21 := simple_map::contains_key($t20, $t2) on_abort goto L7 with $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:878:13+38 - call $t21 := $1_simple_map_contains_key'$1_string_String_address'($t20, $t2); - if ($abort_flag) { - assume {:print "$at(2,40694,40732)"} true; - $t10 := $abort_code; - assume {:print "$track_abort(57,22):", $t10} $t10 == $t10; - goto L7; - } + // assume Identical($t40, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 + assume {:print "$at(102,1664,1763)"} true; + assume ($t40 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); - // if ($t21) goto L4 else goto L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:878:9+192 - if ($t21) { goto L4; } else { goto L3; } + // assume Identical($t41, signer::$address_of($t38)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:347:9+47 + assume {:print "$at(102,14682,14729)"} true; + assume ($t41 == $1_signer_$address_of($t38)); - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:879:53+11 - assume {:print "$at(2,40788,40799)"} true; -L4: + // assume Identical($t42, global($t41)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:348:9+49 + assume {:print "$at(102,14738,14787)"} true; + assume ($t42 == $ResourceValue($1_account_Account_$memory, $t41)); - // $t22 := simple_map::borrow_mut($t19, $t2) on_abort goto L7 with $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:879:14+36 - assume {:print "$at(2,40749,40785)"} true; - call $t22,$t19 := $1_simple_map_borrow_mut'$1_string_String_address'($t19, $t2); + // coin::register($t38) on_abort goto L2 with $t20 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:932:9+42 + assume {:print "$at(2,43608,43650)"} true; + call $1_coin_register'$1_aptos_coin_AptosCoin'($t38); if ($abort_flag) { - assume {:print "$at(2,40749,40785)"} true; - $t10 := $abort_code; - assume {:print "$track_abort(57,22):", $t10} $t10 == $t10; - goto L7; + assume {:print "$at(2,43608,43650)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(59,6):", $t20} $t20 == $t20; + goto L2; } - // write_ref($t22, $t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:879:13+51 - $t22 := $UpdateMutation($t22, $t3); + // trace_return[0]($t38) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:934:9+28 + assume {:print "$at(2,43661,43689)"} true; + assume {:print "$track_return(59,6,0):", $t38} $t38 == $t38; - // write_back[Reference($t19)[]]($t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:879:13+51 - $t19 := $UpdateMutation($t19, UpdateTable($Dereference($t19), ReadVec(p#$Mutation($t22), LenVec(p#$Mutation($t19))), $Dereference($t22))); + // trace_return[1]($t39) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:934:9+28 + assume {:print "$track_return(59,6,1):", $t39} $t39 == $t39; - // write_back[Reference($t18).roles (simple_map::SimpleMap)]($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:879:13+51 - $t18 := $UpdateMutation($t18, $Update'$1_vesting_VestingAccountManagement'_roles($Dereference($t18), $Dereference($t19))); + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:935:5+1 + assume {:print "$at(2,43694,43695)"} true; +L1: - // write_back[vesting::VestingAccountManagement@]($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:879:13+51 - $1_vesting_VestingAccountManagement_$memory := $ResourceUpdate($1_vesting_VestingAccountManagement_$memory, $GlobalLocationAddress($t18), - $Dereference($t18)); + // assume Identical($t43, global($t14)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:395:9+60 + assume {:print "$at(3,17199,17259)"} true; + assume ($t43 == $ResourceValue($1_account_Account_$memory, $t14)); - // goto L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:879:64+1 - goto L5; + // assert Not(Not(exists[@70]($t7))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:388:9+42 + assume {:print "$at(3,16810,16852)"} true; + assert {:msg "assert_failed(3,16810,16852): function does not abort under this condition"} + !!$ResourceExists($1_vesting_AdminStore_$memory#70, $t7); - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:881:29+5 - assume {:print "$at(2,40846,40851)"} true; -L3: + // assert Not(Neq(Len([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), 32)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:389:9+44 + assume {:print "$at(3,16861,16905)"} true; + assert {:msg "assert_failed(3,16861,16905): function does not abort under this condition"} + !!$IsEqual'num'(LenVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(0, 0, 0, 0), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0))), 32); - // simple_map::add($t19, $t2, $t3) on_abort goto L7 with $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:881:13+41 - assume {:print "$at(2,40830,40871)"} true; - call $t19 := $1_simple_map_add'$1_string_String_address'($t19, $t2, $t3); - if ($abort_flag) { - assume {:print "$at(2,40830,40871)"} true; - $t10 := $abort_code; - assume {:print "$track_abort(57,22):", $t10} $t10 == $t10; - goto L7; - } + // assert Not(Gt(Add(select vesting::AdminStore.nonce($t8), 1), 18446744073709551615)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:390:9+42 + assume {:print "$at(3,16914,16956)"} true; + assert {:msg "assert_failed(3,16914,16956): function does not abort under this condition"} + !(($nonce#$1_vesting_AdminStore($t8) + 1) > 18446744073709551615); - // write_back[Reference($t18).roles (simple_map::SimpleMap)]($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:881:13+41 - $t18 := $UpdateMutation($t18, $Update'$1_vesting_VestingAccountManagement'_roles($Dereference($t18), $Dereference($t19))); + // assert Not(And($t15, Neq(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.signer_capability_offer($t17)))), 0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:482:9+60 + assume {:print "$at(80,23105,23165)"} true; + assert {:msg "assert_failed(80,23105,23165): function does not abort under this condition"} + !($t15 && !$IsEqual'num'(LenVec($vec#$1_option_Option'address'($for#$1_account_CapabilityOffer'$1_account_SignerCapability'($signer_capability_offer#$1_account_Account($t17)))), 0)); - // write_back[vesting::VestingAccountManagement@]($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:881:13+41 - $1_vesting_VestingAccountManagement_$memory := $ResourceUpdate($1_vesting_VestingAccountManagement_$memory, $GlobalLocationAddress($t18), - $Dereference($t18)); + // assert Not(And($t15, Neq(select account::Account.sequence_number($t17), 0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:483:9+39 + assume {:print "$at(80,23174,23213)"} true; + assert {:msg "assert_failed(80,23174,23213): function does not abort under this condition"} + !($t15 && !$IsEqual'u64'($sequence_number#$1_account_Account($t17), 0)); - // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:882:10+1 - assume {:print "$at(2,40882,40883)"} true; -L5: + // assert Not(And(Not($t15), Neq(Len($t18), 32))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:41:9+40 + assume {:print "$at(80,1694,1734)"} true; + assert {:msg "assert_failed(80,1694,1734): function does not abort under this condition"} + !(!$t15 && !$IsEqual'num'(LenVec($t18), 32)); - // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:883:5+1 - assume {:print "$at(2,40888,40889)"} true; -L6: + // assert Not(And(Not($t15), exists[@71]($t14))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:42:9+32 + assume {:print "$at(80,1743,1775)"} true; + assert {:msg "assert_failed(80,1743,1775): function does not abort under this condition"} + !(!$t15 && $ResourceExists($1_account_Account_$memory#71, $t14)); + + // assert Not(And(Not(exists[@72]>($t14)), Not(type_info::spec_is_struct[]()))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:396:9+115 + assume {:print "$at(3,17268,17383)"} true; + assert {:msg "assert_failed(3,17268,17383): function does not abort under this condition"} + !(!$ResourceExists($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory#72, $t14) && !true); + + // assert Not(And(And(Not(exists[@72]>($t14)), $t15), Gt(Add(select account::Account.guid_creation_num($t16), 2), 18446744073709551615))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:397:9+106 + assume {:print "$at(3,17392,17498)"} true; + assert {:msg "assert_failed(3,17392,17498): function does not abort under this condition"} + !((!$ResourceExists($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory#72, $t14) && $t15) && (($guid_creation_num#$1_account_Account($t16) + 2) > 18446744073709551615)); + + // assert Not(And(And(Not(exists[@72]>($t14)), $t15), Ge(Add(select account::Account.guid_creation_num($t16), 2), 1125899906842624))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:398:9+130 + assume {:print "$at(3,17507,17637)"} true; + assert {:msg "assert_failed(3,17507,17637): function does not abort under this condition"} + !((!$ResourceExists($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory#72, $t14) && $t15) && (($guid_creation_num#$1_account_Account($t16) + 2) >= 1125899906842624)); + + // assert And(And(exists($t14), Eq>(select account::Account.authentication_key($t43), [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])), exists>($t14)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:399:9+174 + assume {:print "$at(3,17646,17820)"} true; + assert {:msg "assert_failed(3,17646,17820): post-condition does not hold"} + (($ResourceExists($1_account_Account_$memory, $t14) && $IsEqual'vec'u8''($authentication_key#$1_account_Account($t43), ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(0, 0, 0, 0), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)))) && $ResourceExists($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $t14)); - // assert Not(Not(exists[@85]($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:501:9+53 - assume {:print "$at(3,22202,22255)"} true; - assert {:msg "assert_failed(3,22202,22255): function does not abort under this condition"} - !!$ResourceExists($1_vesting_VestingContract_$memory#85, $t1); + // assert Eq
(signer::$address_of($t38), $t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:401:9+54 + assume {:print "$at(3,17829,17883)"} true; + assert {:msg "assert_failed(3,17829,17883): post-condition does not hold"} + $IsEqual'address'($1_signer_$address_of($t38), $t14); - // assert Not(Neq
(signer::$address_of[]($t0), select vesting::VestingContract.admin($t8))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:504:9+62 - assume {:print "$at(3,22486,22548)"} true; - assert {:msg "assert_failed(3,22486,22548): function does not abort under this condition"} - !!$IsEqual'address'($1_signer_$address_of($t0), $admin#$1_vesting_VestingContract($t8)); + // assert Eq
(select account::SignerCapability.account($t39), $t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:402:9+42 + assume {:print "$at(3,17892,17934)"} true; + assert {:msg "assert_failed(3,17892,17934): post-condition does not hold"} + $IsEqual'address'($account#$1_account_SignerCapability($t39), $t14); - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:504:9+62 + // return ($t38, $t39) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:402:9+42 + $ret0 := $t38; + $ret1 := $t39; return; - // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:883:5+1 - assume {:print "$at(2,40888,40889)"} true; -L7: + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:935:5+1 + assume {:print "$at(2,43694,43695)"} true; +L2: - // abort($t10) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:883:5+1 - assume {:print "$at(2,40888,40889)"} true; - $abort_code := $t10; + // assert Or(Or(Or(Or(Or(Or(Or(Or(Or(Not(exists[@70]($t7)), Neq(Len([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), 32)), Gt(Add(select vesting::AdminStore.nonce($t8), 1), 18446744073709551615)), And($t15, Neq(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.signer_capability_offer($t17)))), 0))), And($t15, Neq(select account::Account.sequence_number($t17), 0))), And(Not($t15), Neq(Len($t18), 32))), And(Not($t15), exists[@71]($t14))), And(Not(exists[@72]>($t14)), Not(type_info::spec_is_struct[]()))), And(And(Not(exists[@72]>($t14)), $t15), Gt(Add(select account::Account.guid_creation_num($t16), 2), 18446744073709551615))), And(And(Not(exists[@72]>($t14)), $t15), Ge(Add(select account::Account.guid_creation_num($t16), 2), 1125899906842624))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:374:5+1730 + assume {:print "$at(3,16210,17940)"} true; + assert {:msg "assert_failed(3,16210,17940): abort not covered by any of the `aborts_if` clauses"} + (((((((((!$ResourceExists($1_vesting_AdminStore_$memory#70, $t7) || !$IsEqual'num'(LenVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(0, 0, 0, 0), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0))), 32)) || (($nonce#$1_vesting_AdminStore($t8) + 1) > 18446744073709551615)) || ($t15 && !$IsEqual'num'(LenVec($vec#$1_option_Option'address'($for#$1_account_CapabilityOffer'$1_account_SignerCapability'($signer_capability_offer#$1_account_Account($t17)))), 0))) || ($t15 && !$IsEqual'u64'($sequence_number#$1_account_Account($t17), 0))) || (!$t15 && !$IsEqual'num'(LenVec($t18), 32))) || (!$t15 && $ResourceExists($1_account_Account_$memory#71, $t14))) || (!$ResourceExists($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory#72, $t14) && !true)) || ((!$ResourceExists($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory#72, $t14) && $t15) && (($guid_creation_num#$1_account_Account($t16) + 2) > 18446744073709551615))) || ((!$ResourceExists($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory#72, $t14) && $t15) && (($guid_creation_num#$1_account_Account($t16) + 2) >= 1125899906842624))); + + // abort($t20) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:374:5+1730 + $abort_code := $t20; $abort_flag := true; return; } -// fun vesting::terminate_vesting_contract [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:676:5+1102 -procedure {:timeLimit 1000} $1_vesting_terminate_vesting_contract$verify(_$t0: $signer, _$t1: int) returns () +// fun vesting::create_vesting_schedule [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:418:5+672 +procedure {:timeLimit 900} $1_vesting_create_vesting_schedule$verify(_$t0: Vec ($1_fixed_point32_FixedPoint32), _$t1: int, _$t2: int) returns ($ret0: $1_vesting_VestingSchedule) { // declare local variables - var $t2: int; var $t3: int; var $t4: int; - var $t5: $Mutation ($1_vesting_VestingContract); - var $t6: $1_vesting_VestingContract; - var $t7: $1_vesting_VestingContract; + var $t5: int; + var $t6: bool; + var $t7: int; var $t8: int; - var $t9: $1_staking_contract_Store; - var $t10: $1_staking_contract_StakingContract; - var $t11: Table int ($1_staking_contract_StakingContract); + var $t9: int; + var $t10: bool; + var $t11: int; var $t12: int; - var $t13: $1_stake_StakePool; - var $t14: int; + var $t13: int; + var $t14: bool; var $t15: int; var $t16: int; var $t17: int; - var $t18: $1_stake_StakePool; - var $t19: $1_stake_ValidatorSet; - var $t20: bool; - var $t21: int; - var $t22: int; - var $t23: int; - var $t24: $1_vesting_VestingContract; - var $t25: int; - var $t26: $1_vesting_VestingContract; - var $t27: $1_vesting_VestingContract; - var $t28: int; - var $t29: $1_staking_contract_Store; - var $t30: $1_staking_contract_StakingContract; - var $t31: Table int ($1_staking_contract_StakingContract); - var $t32: int; - var $t33: $1_stake_StakePool; - var $t34: int; - var $t35: int; - var $t36: int; - var $t37: int; - var $t38: $1_stake_StakePool; - var $t39: $1_stake_ValidatorSet; - var $t40: bool; - var $t41: int; - var $t42: int; - var $t43: int; - var $t44: $Mutation ($1_vesting_VestingContract); - var $t45: $1_vesting_VestingContract; - var $t46: $1_vesting_StakingInfo; - var $t47: int; - var $t48: int; - var $t49: int; - var $t50: int; - var $t51: int; - var $t52: int; - var $t53: bool; - var $t54: int; - var $t55: int; - var $t56: int; - var $t57: $Mutation (int); - var $t58: int; - var $t59: $Mutation (int); - var $t60: $1_vesting_VestingContract; - var $t61: int; - var $t62: int; - var $t63: $1_staking_contract_Store; - var $t64: $1_staking_contract_StakingContract; - var $t65: Table int ($1_staking_contract_StakingContract); - var $t66: int; - var $t67: $1_stake_StakePool; - var $t68: int; - var $t69: int; - var $t70: int; - var $t71: int; - var $t72: $1_stake_StakePool; - var $t73: $1_stake_ValidatorSet; - var $t74: bool; - var $t75: int; - var $t76: int; - var $t77: int; - var $t78: $Mutation ($1_event_EventHandle'$1_vesting_TerminateEvent'); - var $t79: int; - var $t80: $1_vesting_TerminateEvent; - var $t0: $signer; + var $t18: $1_vesting_VestingSchedule; + var $t0: Vec ($1_fixed_point32_FixedPoint32); var $t1: int; - var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; - var $temp_0'address': int; - var $temp_0'signer': $signer; + var $t2: int; + var $temp_0'$1_vesting_VestingSchedule': $1_vesting_VestingSchedule; var $temp_0'u64': int; - var $1_vesting_VestingContract_$memory#174: $Memory $1_vesting_VestingContract; - var $1_staking_contract_Store_$memory#175: $Memory $1_staking_contract_Store; - var $1_stake_StakePool_$memory#176: $Memory $1_stake_StakePool; - var $1_stake_ValidatorSet_$memory#177: $Memory $1_stake_ValidatorSet; - var $1_timestamp_CurrentTimeMicroseconds_$memory#178: $Memory $1_timestamp_CurrentTimeMicroseconds; + var $temp_0'vec'$1_fixed_point32_FixedPoint32'': Vec ($1_fixed_point32_FixedPoint32); + var $1_timestamp_CurrentTimeMicroseconds_$memory#26: $Memory $1_timestamp_CurrentTimeMicroseconds; $t0 := _$t0; $t1 := _$t1; + $t2 := _$t2; // verification entrypoint assumptions call $InitVerification(); // bytecode translation starts here - // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:676:5+1 - assume {:print "$at(2,32023,32024)"} true; - assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($addr#$signer($t0)); - - // assume WellFormed($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:676:5+1 - assume $IsValid'address'($t1); - - // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.rotation_capability_offer($rsc)))), 1), Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.signer_capability_offer($rsc)))), 1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:676:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_account_Account_$memory, $a_0)}(var $rsc := $ResourceValue($1_account_Account_$memory, $a_0); - (($IsValid'$1_account_Account'($rsc) && ((LenVec($vec#$1_option_Option'address'($for#$1_account_CapabilityOffer'$1_account_RotationCapability'($rotation_capability_offer#$1_account_Account($rsc)))) <= 1) && (LenVec($vec#$1_option_Option'address'($for#$1_account_CapabilityOffer'$1_account_SignerCapability'($signer_capability_offer#$1_account_Account($rsc)))) <= 1)))))); - - // assume forall $rsc: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: select option::Option.vec(select coin::CoinInfo.supply($rsc)): And(And(And(And(And(Iff(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($elem)), option::$is_none(select optional_aggregator::OptionalAggregator.integer($elem))), Iff(option::$is_some(select optional_aggregator::OptionalAggregator.integer($elem)), option::$is_none(select optional_aggregator::OptionalAggregator.aggregator($elem)))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.integer($elem)), Le(select optional_aggregator::Integer.value(option::$borrow(select optional_aggregator::OptionalAggregator.integer($elem))), select optional_aggregator::Integer.limit(option::$borrow(select optional_aggregator::OptionalAggregator.integer($elem)))))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($elem)), Le(aggregator::spec_aggregator_get_val(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($elem))), aggregator::spec_get_limit(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($elem)))))), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.aggregator($elem))), 1)), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.integer($elem))), 1)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:676:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $a_0); - (($IsValid'$1_coin_CoinInfo'$1_aptos_coin_AptosCoin''($rsc) && ((LenVec($vec#$1_option_Option'$1_optional_aggregator_OptionalAggregator'($supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($rsc))) <= 1) && (var $range_1 := $vec#$1_option_Option'$1_optional_aggregator_OptionalAggregator'($supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($rsc)); (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); - ((((((($1_option_$is_some'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)) <==> $1_option_$is_none'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)) ==> ($value#$1_optional_aggregator_Integer($1_option_$borrow'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) <= $limit#$1_optional_aggregator_Integer($1_option_$borrow'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)))))) && ($1_option_$is_some'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem))) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)))))) && (LenVec($vec#$1_option_Option'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem))) <= 1)) && (LenVec($vec#$1_option_Option'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) <= 1))))))))))); - - // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:676:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $a_0); - ($IsValid'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''($rsc)))); - - // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:676:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $a_0); - ($IsValid'$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin''($rsc)))); - - // assume exists>(0x0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:676:5+1 - assume $ResourceExists($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, 0); - - // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:676:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, $a_0); - ($IsValid'$1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin''($rsc)))); - - // assume exists>(0x0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:676:5+1 - assume $ResourceExists($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, 0); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:676:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_aptos_account_DirectTransferConfig_$memory, $a_0)}(var $rsc := $ResourceValue($1_aptos_account_DirectTransferConfig_$memory, $a_0); - ($IsValid'$1_aptos_account_DirectTransferConfig'($rsc)))); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:676:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_chain_status_GenesisEndMarker_$memory, $a_0)}(var $rsc := $ResourceValue($1_chain_status_GenesisEndMarker_$memory, $a_0); - ($IsValid'$1_chain_status_GenesisEndMarker'($rsc)))); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:676:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_timestamp_CurrentTimeMicroseconds_$memory, $a_0)}(var $rsc := $ResourceValue($1_timestamp_CurrentTimeMicroseconds_$memory, $a_0); - ($IsValid'$1_timestamp_CurrentTimeMicroseconds'($rsc)))); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:676:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_stake_StakePool_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_StakePool_$memory, $a_0); - ($IsValid'$1_stake_StakePool'($rsc)))); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:676:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorConfig_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorConfig_$memory, $a_0); - ($IsValid'$1_stake_ValidatorConfig'($rsc)))); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:676:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorPerformance_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorPerformance_$memory, $a_0); - ($IsValid'$1_stake_ValidatorPerformance'($rsc)))); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:676:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorSet_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorSet_$memory, $a_0); - ($IsValid'$1_stake_ValidatorSet'($rsc)))); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:676:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_reconfiguration_Configuration_$memory, $a_0)}(var $rsc := $ResourceValue($1_reconfiguration_Configuration_$memory, $a_0); - ($IsValid'$1_reconfiguration_Configuration'($rsc)))); - - // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), forall $key: select staking_contract::Store.staking_contracts($rsc): And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), i), Index(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:676:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_staking_contract_Store_$memory, $a_0)}(var $rsc := $ResourceValue($1_staking_contract_Store_$memory, $a_0); - (($IsValid'$1_staking_contract_Store'($rsc) && (var $range_1 := $staking_contracts#$1_staking_contract_Store($rsc); (forall $key: int :: ContainsTable($range_1, $EncodeKey'address'($key)) ==> (((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), addr)))) && (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))))); (var $range_3 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))))); (forall $i_4: int, $i_5: int :: $InRange($range_2, $i_4) ==> $InRange($range_3, $i_5) ==> (var i := $i_4; - (var j := $i_5; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), i), ReadVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), j)) ==> $IsEqual'num'(i, j)))))))))))))))); - - // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:676:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); - (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; - (var j := $i_4; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); - - // assume Implies(chain_status::$is_operating(), exists(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:676:5+1102 - // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.spec.move:4:9+93 - assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory, 1)); - - // assume Implies(exists(0x1), stake::validator_set_is_valid()) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:676:5+1102 - // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:8:9+92 - assume ($ResourceExists($1_stake_ValidatorSet_$memory, 1) ==> $1_stake_validator_set_is_valid($1_stake_StakePool_$memory, $1_stake_ValidatorConfig_$memory, $1_stake_ValidatorPerformance_$memory, $1_stake_ValidatorSet_$memory)); - - // assume Implies(chain_status::$is_operating(), exists(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:676:5+1102 - // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:12:9+96 - assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_stake_ValidatorSet_$memory, 1)); - - // assume Implies(chain_status::$is_operating(), Ge(timestamp::spec_now_microseconds(), reconfiguration::$last_reconfiguration_time())) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:676:5+1102 - // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/reconfiguration.spec.move:8:9+137 - assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> ($1_timestamp_spec_now_microseconds($1_timestamp_CurrentTimeMicroseconds_$memory) >= $1_reconfiguration_$last_reconfiguration_time($1_reconfiguration_Configuration_$memory))); - - // assume Identical($t6, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:229:9+65 - assume {:print "$at(3,10320,10385)"} true; - assume ($t6 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); - - // assume Identical($t7, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:518:9+65 - assume {:print "$at(3,23036,23101)"} true; - assume ($t7 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); - - // assume Identical($t8, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t6))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:455:9+49 - assume {:print "$at(3,19684,19733)"} true; - assume ($t8 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t6))); - - // assume Identical($t9, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:459:9+62 - assume {:print "$at(3,19898,19960)"} true; - assume ($t9 == $ResourceValue($1_staking_contract_Store_$memory, $t1)); - - // assume Identical($t10, simple_map::spec_get(select staking_contract::Store.staking_contracts($t9), $t8)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:460:9+79 - assume {:print "$at(3,19969,20048)"} true; - assume ($t10 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($t9), $t8)); - - // assume Identical($t11, select staking_contract::Store.staking_contracts(global($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 - assume {:print "$at(134,11481,11545)"} true; - assume ($t11 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t1))); - - // assume Identical($t12, select staking_contract::StakingContract.pool_address($t10)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:470:9+49 - assume {:print "$at(3,20547,20596)"} true; - assume ($t12 == $pool_address#$1_staking_contract_StakingContract($t10)); + // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:418:5+1 + assume {:print "$at(2,20152,20153)"} true; + assume $IsValid'vec'$1_fixed_point32_FixedPoint32''($t0); - // assume Identical($t13, global($t12)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:472:9+56 - assume {:print "$at(3,20664,20720)"} true; - assume ($t13 == $ResourceValue($1_stake_StakePool_$memory, $t12)); + // assume WellFormed($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:418:5+1 + assume $IsValid'u64'($t1); - // assume Identical($t14, select coin::Coin.value(select stake::StakePool.inactive($t13))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:473:9+41 - assume {:print "$at(3,20729,20770)"} true; - assume ($t14 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t13))); + // assume WellFormed($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:418:5+1 + assume $IsValid'u64'($t2); - // assume Identical($t15, select coin::Coin.value(select stake::StakePool.pending_inactive($t13))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:474:9+57 - assume {:print "$at(3,20779,20836)"} true; - assume ($t15 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t13))); + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:418:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_chain_status_GenesisEndMarker_$memory, $a_0)}(var $rsc := $ResourceValue($1_chain_status_GenesisEndMarker_$memory, $a_0); + ($IsValid'$1_chain_status_GenesisEndMarker'($rsc)))); - // assume Identical($t16, Add($t14, $t15)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:478:9+63 - assume {:print "$at(3,20948,21011)"} true; - assume ($t16 == ($t14 + $t15)); + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:418:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_timestamp_CurrentTimeMicroseconds_$memory, $a_0)}(var $rsc := $ResourceValue($1_timestamp_CurrentTimeMicroseconds_$memory, $a_0); + ($IsValid'$1_timestamp_CurrentTimeMicroseconds'($rsc)))); - // assume Identical($t17, select stake::OwnerCapability.pool_address(select staking_contract::StakingContract.owner_cap($t10))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:479:9+61 - assume {:print "$at(3,21020,21081)"} true; - assume ($t17 == $pool_address#$1_stake_OwnerCapability($owner_cap#$1_staking_contract_StakingContract($t10))); + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:418:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_reconfiguration_Configuration_$memory, $a_0)}(var $rsc := $ResourceValue($1_reconfiguration_Configuration_$memory, $a_0); + ($IsValid'$1_reconfiguration_Configuration'($rsc)))); - // assume Identical($t18, global($t17)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:481:9+60 - assume {:print "$at(3,21151,21211)"} true; - assume ($t18 == $ResourceValue($1_stake_StakePool_$memory, $t17)); + // assume Implies(chain_status::$is_operating(), exists(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:418:5+672 + // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.spec.move:4:9+93 + assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory, 1)); - // assume Identical($t19, global(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:483:9+66 - assume {:print "$at(3,21286,21352)"} true; - assume ($t19 == $ResourceValue($1_stake_ValidatorSet_$memory, 1)); + // assume Implies(chain_status::$is_operating(), Ge(timestamp::spec_now_microseconds(), reconfiguration::$last_reconfiguration_time())) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:418:5+672 + // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/reconfiguration.spec.move:8:9+137 + assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> ($1_timestamp_spec_now_microseconds($1_timestamp_CurrentTimeMicroseconds_$memory) >= $1_reconfiguration_$last_reconfiguration_time($1_reconfiguration_Configuration_$memory))); - // assume Identical($t20, And(And(Not(stake::spec_contains(select stake::ValidatorSet.pending_active($t19), $t17)), Not(stake::spec_contains(select stake::ValidatorSet.active_validators($t19), $t17))), Not(stake::spec_contains(select stake::ValidatorSet.pending_inactive($t19), $t17)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:484:9+260 - assume {:print "$at(3,21361,21621)"} true; - assume ($t20 == ((!$1_stake_spec_contains($pending_active#$1_stake_ValidatorSet($t19), $t17) && !$1_stake_spec_contains($active_validators#$1_stake_ValidatorSet($t19), $t17)) && !$1_stake_spec_contains($pending_inactive#$1_stake_ValidatorSet($t19), $t17))); + // @26 := save_mem(timestamp::CurrentTimeMicroseconds) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:418:5+1 + $1_timestamp_CurrentTimeMicroseconds_$memory#26 := $1_timestamp_CurrentTimeMicroseconds_$memory; - // assume Identical($t21, select coin::Coin.value(select stake::StakePool.inactive($t18))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:487:9+45 - assume {:print "$at(3,21630,21675)"} true; - assume ($t21 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t18))); + // trace_local[schedule]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:418:5+1 + assume {:print "$track_local(59,7,0):", $t0} $t0 == $t0; - // assume Identical($t22, select coin::Coin.value(select stake::StakePool.pending_inactive($t18))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:488:9+61 - assume {:print "$at(3,21684,21745)"} true; - assume ($t22 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t18))); + // trace_local[start_timestamp_secs]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:418:5+1 + assume {:print "$track_local(59,7,1):", $t1} $t1 == $t1; - // assume Identical($t23, Add($t21, $t22)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:489:9+53 - assume {:print "$at(3,21754,21807)"} true; - assume ($t23 == ($t21 + $t22)); + // trace_local[period_duration]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:418:5+1 + assume {:print "$track_local(59,7,2):", $t2} $t2 == $t2; - // @178 := save_mem(timestamp::CurrentTimeMicroseconds) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:676:5+1 - assume {:print "$at(2,32023,32024)"} true; - $1_timestamp_CurrentTimeMicroseconds_$memory#178 := $1_timestamp_CurrentTimeMicroseconds_$memory; + // $t3 := vector::length($t0) on_abort goto L10 with $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:423:17+25 + assume {:print "$at(2,20334,20359)"} true; + call $t3 := $1_vector_length'$1_fixed_point32_FixedPoint32'($t0); + if ($abort_flag) { + assume {:print "$at(2,20334,20359)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(59,7):", $t4} $t4 == $t4; + goto L10; + } - // @176 := save_mem(stake::StakePool) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:676:5+1 - $1_stake_StakePool_$memory#176 := $1_stake_StakePool_$memory; + // $t5 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:423:45+1 + $t5 := 0; + assume $IsValid'u64'($t5); - // @177 := save_mem(stake::ValidatorSet) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:676:5+1 - $1_stake_ValidatorSet_$memory#177 := $1_stake_ValidatorSet_$memory; + // $t6 := >($t3, $t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:423:43+1 + call $t6 := $Gt($t3, $t5); - // @175 := save_mem(staking_contract::Store) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:676:5+1 - $1_staking_contract_Store_$memory#175 := $1_staking_contract_Store_$memory; + // if ($t6) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:423:9+88 + if ($t6) { goto L1; } else { goto L0; } - // @174 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:676:5+1 - $1_vesting_VestingContract_$memory#174 := $1_vesting_VestingContract_$memory; + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:423:9+88 +L1: - // trace_local[admin]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:676:5+1 - assume {:print "$track_local(57,26,0):", $t0} $t0 == $t0; + // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:423:9+88 + assume {:print "$at(2,20326,20414)"} true; + goto L2; - // trace_local[contract_address]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:676:5+1 - assume {:print "$track_local(57,26,1):", $t1} $t1 == $t1; + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:423:72+23 +L0: - // assume Identical($t24, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:518:9+65 - assume {:print "$at(3,23036,23101)"} true; - assume ($t24 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); + // $t7 := 2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:423:72+23 + assume {:print "$at(2,20389,20412)"} true; + $t7 := 2; + assume $IsValid'u64'($t7); - // vesting::assert_active_vesting_contract($t1) on_abort goto L4 with $t25 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:677:9+48 - assume {:print "$at(2,32145,32193)"} true; - call $1_vesting_assert_active_vesting_contract($t1); + // $t8 := error::invalid_argument($t7) on_abort goto L10 with $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:423:48+48 + call $t8 := $1_error_invalid_argument($t7); if ($abort_flag) { - assume {:print "$at(2,32145,32193)"} true; - $t25 := $abort_code; - assume {:print "$track_abort(57,26):", $t25} $t25 == $t25; - goto L4; + assume {:print "$at(2,20365,20413)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(59,7):", $t4} $t4 == $t4; + goto L10; } - // assume Identical($t26, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:213:9+65 - assume {:print "$at(3,9717,9782)"} true; - assume ($t26 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); - - // assume Identical($t27, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:518:9+65 - assume {:print "$at(3,23036,23101)"} true; - assume ($t27 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); - - // assume Identical($t28, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t26))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:455:9+49 - assume {:print "$at(3,19684,19733)"} true; - assume ($t28 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t26))); + // trace_abort($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:423:9+88 + assume {:print "$at(2,20326,20414)"} true; + assume {:print "$track_abort(59,7):", $t8} $t8 == $t8; - // assume Identical($t29, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:459:9+62 - assume {:print "$at(3,19898,19960)"} true; - assume ($t29 == $ResourceValue($1_staking_contract_Store_$memory, $t1)); + // $t4 := move($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:423:9+88 + $t4 := $t8; - // assume Identical($t30, simple_map::spec_get(select staking_contract::Store.staking_contracts($t29), $t28)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:460:9+79 - assume {:print "$at(3,19969,20048)"} true; - assume ($t30 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($t29), $t28)); + // goto L10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:423:9+88 + goto L10; - // assume Identical($t31, select staking_contract::Store.staking_contracts(global($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 - assume {:print "$at(134,11481,11545)"} true; - assume ($t31 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t1))); + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:424:17+15 + assume {:print "$at(2,20432,20447)"} true; +L2: - // assume Identical($t32, select staking_contract::StakingContract.pool_address($t30)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:470:9+49 - assume {:print "$at(3,20547,20596)"} true; - assume ($t32 == $pool_address#$1_staking_contract_StakingContract($t30)); + // $t9 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:424:35+1 + assume {:print "$at(2,20450,20451)"} true; + $t9 := 0; + assume $IsValid'u64'($t9); - // assume Identical($t33, global($t32)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:472:9+56 - assume {:print "$at(3,20664,20720)"} true; - assume ($t33 == $ResourceValue($1_stake_StakePool_$memory, $t32)); + // $t10 := >($t2, $t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:424:33+1 + call $t10 := $Gt($t2, $t9); - // assume Identical($t34, select coin::Coin.value(select stake::StakePool.inactive($t33))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:473:9+41 - assume {:print "$at(3,20729,20770)"} true; - assume ($t34 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t33))); + // if ($t10) goto L4 else goto L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:424:9+84 + if ($t10) { goto L4; } else { goto L3; } - // assume Identical($t35, select coin::Coin.value(select stake::StakePool.pending_inactive($t33))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:474:9+57 - assume {:print "$at(3,20779,20836)"} true; - assume ($t35 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t33))); + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:424:9+84 +L4: - // assume Identical($t36, Add($t34, $t35)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:478:9+63 - assume {:print "$at(3,20948,21011)"} true; - assume ($t36 == ($t34 + $t35)); + // goto L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:424:9+84 + assume {:print "$at(2,20424,20508)"} true; + goto L5; - // assume Identical($t37, select stake::OwnerCapability.pool_address(select staking_contract::StakingContract.owner_cap($t30))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:479:9+61 - assume {:print "$at(3,21020,21081)"} true; - assume ($t37 == $pool_address#$1_stake_OwnerCapability($owner_cap#$1_staking_contract_StakingContract($t30))); + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:424:62+29 +L3: - // assume Identical($t38, global($t37)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:481:9+60 - assume {:print "$at(3,21151,21211)"} true; - assume ($t38 == $ResourceValue($1_stake_StakePool_$memory, $t37)); + // $t11 := 3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:424:62+29 + assume {:print "$at(2,20477,20506)"} true; + $t11 := 3; + assume $IsValid'u64'($t11); - // assume Identical($t39, global(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:483:9+66 - assume {:print "$at(3,21286,21352)"} true; - assume ($t39 == $ResourceValue($1_stake_ValidatorSet_$memory, 1)); + // $t12 := error::invalid_argument($t11) on_abort goto L10 with $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:424:38+54 + call $t12 := $1_error_invalid_argument($t11); + if ($abort_flag) { + assume {:print "$at(2,20453,20507)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(59,7):", $t4} $t4 == $t4; + goto L10; + } - // assume Identical($t40, And(And(Not(stake::spec_contains(select stake::ValidatorSet.pending_active($t39), $t37)), Not(stake::spec_contains(select stake::ValidatorSet.active_validators($t39), $t37))), Not(stake::spec_contains(select stake::ValidatorSet.pending_inactive($t39), $t37)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:484:9+260 - assume {:print "$at(3,21361,21621)"} true; - assume ($t40 == ((!$1_stake_spec_contains($pending_active#$1_stake_ValidatorSet($t39), $t37) && !$1_stake_spec_contains($active_validators#$1_stake_ValidatorSet($t39), $t37)) && !$1_stake_spec_contains($pending_inactive#$1_stake_ValidatorSet($t39), $t37))); + // trace_abort($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:424:9+84 + assume {:print "$at(2,20424,20508)"} true; + assume {:print "$track_abort(59,7):", $t12} $t12 == $t12; - // assume Identical($t41, select coin::Coin.value(select stake::StakePool.inactive($t38))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:487:9+45 - assume {:print "$at(3,21630,21675)"} true; - assume ($t41 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t38))); + // $t4 := move($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:424:9+84 + $t4 := $t12; - // assume Identical($t42, select coin::Coin.value(select stake::StakePool.pending_inactive($t38))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:488:9+61 - assume {:print "$at(3,21684,21745)"} true; - assume ($t42 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t38))); + // goto L10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:424:9+84 + goto L10; - // assume Identical($t43, Add($t41, $t42)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:489:9+53 - assume {:print "$at(3,21754,21807)"} true; - assume ($t43 == ($t41 + $t42)); + // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:426:13+20 + assume {:print "$at(2,20539,20559)"} true; +L5: - // vesting::distribute($t1) on_abort goto L4 with $t25 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:680:9+28 - assume {:print "$at(2,32315,32343)"} true; - call $1_vesting_distribute($t1); + // $t13 := timestamp::now_seconds() on_abort goto L10 with $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:426:37+24 + assume {:print "$at(2,20563,20587)"} true; + call $t13 := $1_timestamp_now_seconds(); if ($abort_flag) { - assume {:print "$at(2,32315,32343)"} true; - $t25 := $abort_code; - assume {:print "$track_abort(57,26):", $t25} $t25 == $t25; - goto L4; + assume {:print "$at(2,20563,20587)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(59,7):", $t4} $t4 == $t4; + goto L10; } - // $t44 := borrow_global($t1) on_abort goto L4 with $t25 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:682:32+17 - assume {:print "$at(2,32377,32394)"} true; - if (!$ResourceExists($1_vesting_VestingContract_$memory, $t1)) { - call $ExecFailureAbort(); - } else { - $t44 := $Mutation($Global($t1), EmptyVec(), $ResourceValue($1_vesting_VestingContract_$memory, $t1)); - } - if ($abort_flag) { - assume {:print "$at(2,32377,32394)"} true; - $t25 := $abort_code; - assume {:print "$track_abort(57,26):", $t25} $t25 == $t25; - goto L4; - } + // $t14 := >=($t1, $t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:426:34+2 + call $t14 := $Ge($t1, $t13); - // trace_local[vesting_contract]($t44) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:682:13+16 - $temp_0'$1_vesting_VestingContract' := $Dereference($t44); - assume {:print "$track_local(57,26,5):", $temp_0'$1_vesting_VestingContract'} $temp_0'$1_vesting_VestingContract' == $temp_0'$1_vesting_VestingContract'; + // if ($t14) goto L7 else goto L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:425:9+142 + assume {:print "$at(2,20518,20660)"} true; + if ($t14) { goto L7; } else { goto L6; } - // $t45 := read_ref($t44) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:683:21+25 - assume {:print "$at(2,32451,32476)"} true; - $t45 := $Dereference($t44); + // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:425:9+142 +L7: - // vesting::verify_admin($t0, $t45) on_abort goto L4 with $t25 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:683:9+37 - call $1_vesting_verify_admin($t0, $t45); - if ($abort_flag) { - assume {:print "$at(2,32439,32476)"} true; - $t25 := $abort_code; - assume {:print "$track_abort(57,26):", $t25} $t25 == $t25; - goto L4; - } + // goto L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:425:9+142 + assume {:print "$at(2,20518,20660)"} true; + goto L8; - // $t46 := get_field.staking($t44) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:684:75+24 - assume {:print "$at(2,32552,32576)"} true; - $t46 := $staking#$1_vesting_VestingContract($Dereference($t44)); + // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:427:37+23 + assume {:print "$at(2,20625,20648)"} true; +L6: - // $t47 := get_field.pool_address($t46) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:684:75+37 - $t47 := $pool_address#$1_vesting_StakingInfo($t46); + // $t15 := 6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:427:37+23 + assume {:print "$at(2,20625,20648)"} true; + $t15 := 6; + assume $IsValid'u64'($t15); - // ($t48, $t49, $t50, $t51) := stake::get_stake($t47) on_abort goto L4 with $t25 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:684:58+55 - call $t48,$t49,$t50,$t51 := $1_stake_get_stake($t47); + // $t16 := error::invalid_argument($t15) on_abort goto L10 with $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:427:13+48 + call $t16 := $1_error_invalid_argument($t15); if ($abort_flag) { - assume {:print "$at(2,32535,32590)"} true; - $t25 := $abort_code; - assume {:print "$track_abort(57,26):", $t25} $t25 == $t25; - goto L4; + assume {:print "$at(2,20601,20649)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(59,7):", $t4} $t4 == $t4; + goto L10; } - // destroy($t51) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:684:53+1 - - // trace_local[pending_active_stake]($t50) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:684:31+20 - assume {:print "$track_local(57,26,4):", $t50} $t50 == $t50; - - // destroy($t49) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:684:28+1 + // trace_abort($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:425:9+142 + assume {:print "$at(2,20518,20660)"} true; + assume {:print "$track_abort(59,7):", $t16} $t16 == $t16; - // trace_local[active_stake]($t48) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:684:14+12 - assume {:print "$track_local(57,26,3):", $t48} $t48 == $t48; + // $t4 := move($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:425:9+142 + $t4 := $t16; - // $t52 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:685:41+1 - assume {:print "$at(2,32632,32633)"} true; - $t52 := 0; - assume $IsValid'u64'($t52); + // goto L10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:425:9+142 + goto L10; - // $t53 := ==($t50, $t52) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:685:38+2 - $t53 := $IsEqual'u64'($t50, $t52); + // label L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:431:13+8 + assume {:print "$at(2,20701,20709)"} true; +L8: - // if ($t53) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:685:9+78 - if ($t53) { goto L1; } else { goto L0; } + // $t17 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:434:33+1 + assume {:print "$at(2,20806,20807)"} true; + $t17 := 0; + assume $IsValid'u64'($t17); - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:685:9+78 -L1: + // $t18 := pack vesting::VestingSchedule($t0, $t1, $t2, $t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:430:9+147 + assume {:print "$at(2,20671,20818)"} true; + $t18 := $1_vesting_VestingSchedule($t0, $t1, $t2, $t17); - // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:685:9+78 - assume {:print "$at(2,32600,32678)"} true; - goto L2; + // trace_return[0]($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:430:9+147 + assume {:print "$track_return(59,7,0):", $t18} $t18 == $t18; - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:685:9+78 -L0: + // label L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:436:5+1 + assume {:print "$at(2,20823,20824)"} true; +L9: - // assert forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t44)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t44)), addr)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 - // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 - assume {:print "$at(59,538,673)"} true; - assert {:msg "assert_failed(59,538,673): data invariant does not hold"} - (forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t44))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t44))), addr)))); + // assert Not(Not(Gt(Len($t0), 0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:133:9+31 + assume {:print "$at(3,6293,6324)"} true; + assert {:msg "assert_failed(3,6293,6324): function does not abort under this condition"} + !!(LenVec($t0) > 0); - // assert forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t44)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t44)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t44)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t44)), j)), Eq(i, j)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 - // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 - assume {:print "$at(59,738,867)"} true; - assert {:msg "assert_failed(59,738,867): data invariant does not hold"} - (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t44))))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t44))))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; - (var j := $i_3; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t44))), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t44))), j)) ==> $IsEqual'num'(i, j)))))))); + // assert Not(Not(Gt($t2, 0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:134:9+33 + assume {:print "$at(3,6333,6366)"} true; + assert {:msg "assert_failed(3,6333,6366): function does not abort under this condition"} + !!($t2 > 0); - // destroy($t44) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:685:9+78 - assume {:print "$at(2,32600,32678)"} true; + // assert Not(Not(exists[@26](0x1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:135:9+72 + assume {:print "$at(3,6375,6447)"} true; + assert {:msg "assert_failed(3,6375,6447): function does not abort under this condition"} + !!$ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory#26, 1); - // $t54 := 11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:685:65+20 - $t54 := 11; - assume $IsValid'u64'($t54); + // assert Not(Not(Ge($t1, timestamp::$now_seconds[@26]()))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:136:9+62 + assume {:print "$at(3,6456,6518)"} true; + assert {:msg "assert_failed(3,6456,6518): function does not abort under this condition"} + !!($t1 >= $1_timestamp_$now_seconds($1_timestamp_CurrentTimeMicroseconds_$memory#26)); - // $t55 := error::invalid_state($t54) on_abort goto L4 with $t25 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:685:44+42 - call $t55 := $1_error_invalid_state($t54); - if ($abort_flag) { - assume {:print "$at(2,32635,32677)"} true; - $t25 := $abort_code; - assume {:print "$track_abort(57,26):", $t25} $t25 == $t25; - goto L4; - } + // return $t18 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:136:9+62 + $ret0 := $t18; + return; - // trace_abort($t55) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:685:9+78 - assume {:print "$at(2,32600,32678)"} true; - assume {:print "$track_abort(57,26):", $t55} $t55 == $t55; + // label L10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:436:5+1 + assume {:print "$at(2,20823,20824)"} true; +L10: - // $t25 := move($t55) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:685:9+78 - $t25 := $t55; + // assert Or(Or(Or(Not(Gt(Len($t0), 0)), Not(Gt($t2, 0))), Not(exists[@26](0x1))), Not(Ge($t1, timestamp::$now_seconds[@26]()))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:128:5+399 + assume {:print "$at(3,6125,6524)"} true; + assert {:msg "assert_failed(3,6125,6524): abort not covered by any of the `aborts_if` clauses"} + (((!(LenVec($t0) > 0) || !($t2 > 0)) || !$ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory#26, 1)) || !($t1 >= $1_timestamp_$now_seconds($1_timestamp_CurrentTimeMicroseconds_$memory#26))); - // goto L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:685:9+78 - goto L4; + // abort($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:128:5+399 + $abort_code := $t4; + $abort_flag := true; + return; - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:688:34+23 - assume {:print "$at(2,32760,32783)"} true; -L2: +} - // $t56 := 2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:688:34+23 - assume {:print "$at(2,32760,32783)"} true; - $t56 := 2; - assume $IsValid'u64'($t56); +// fun vesting::get_beneficiary [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:965:5+287 +procedure {:inline 1} $1_vesting_get_beneficiary(_$t0: $1_vesting_VestingContract, _$t1: int) returns ($ret0: int) +{ + // declare local variables + var $t2: int; + var $t3: Table int (int); + var $t4: bool; + var $t5: int; + var $t6: Table int (int); + var $t0: $1_vesting_VestingContract; + var $t1: int; + var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; + var $temp_0'address': int; + $t0 := _$t0; + $t1 := _$t1; - // $t57 := borrow_field.state($t44) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:688:9+22 - $t57 := $ChildMutation($t44, 0, $state#$1_vesting_VestingContract($Dereference($t44))); + // bytecode translation starts here + // trace_local[contract]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:965:5+1 + assume {:print "$at(2,45284,45285)"} true; + assume {:print "$track_local(59,10,0):", $t0} $t0 == $t0; - // write_ref($t57, $t56) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:688:9+48 - $t57 := $UpdateMutation($t57, $t56); + // trace_local[shareholder]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:965:5+1 + assume {:print "$track_local(59,10,1):", $t1} $t1 == $t1; - // write_back[Reference($t44).state (u64)]($t57) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:688:9+48 - $t44 := $UpdateMutation($t44, $Update'$1_vesting_VestingContract'_state($Dereference($t44), $Dereference($t57))); + // $t3 := get_field.beneficiaries($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:966:38+23 + assume {:print "$at(2,45402,45425)"} true; + $t3 := $beneficiaries#$1_vesting_VestingContract($t0); - // $t58 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:689:44+1 - assume {:print "$at(2,32828,32829)"} true; - $t58 := 0; - assume $IsValid'u64'($t58); + // $t4 := simple_map::contains_key($t3, $t1) on_abort goto L4 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:966:13+63 + call $t4 := $1_simple_map_contains_key'address_address'($t3, $t1); + if ($abort_flag) { + assume {:print "$at(2,45377,45440)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(59,10):", $t5} $t5 == $t5; + goto L4; + } - // $t59 := borrow_field.remaining_grant($t44) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:689:9+32 - $t59 := $ChildMutation($t44, 7, $remaining_grant#$1_vesting_VestingContract($Dereference($t44))); + // if ($t4) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:966:9+192 + if ($t4) { goto L1; } else { goto L0; } - // write_ref($t59, $t58) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:689:9+36 - $t59 := $UpdateMutation($t59, $t58); + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:967:34+8 + assume {:print "$at(2,45477,45485)"} true; +L1: - // write_back[Reference($t44).remaining_grant (u64)]($t59) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:689:9+36 - $t44 := $UpdateMutation($t44, $Update'$1_vesting_VestingContract'_remaining_grant($Dereference($t44), $Dereference($t59))); + // $t6 := get_field.beneficiaries($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:967:33+23 + assume {:print "$at(2,45476,45499)"} true; + $t6 := $beneficiaries#$1_vesting_VestingContract($t0); - // $t60 := read_ref($t44) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:690:21+32 - assume {:print "$at(2,32851,32883)"} true; - $t60 := $Dereference($t44); + // $t2 := simple_map::borrow($t6, $t1) on_abort goto L4 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:967:14+57 + call $t2 := $1_simple_map_borrow'address_address'($t6, $t1); + if ($abort_flag) { + assume {:print "$at(2,45457,45514)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(59,10):", $t5} $t5 == $t5; + goto L4; + } - // assume Identical($t61, select account::SignerCapability.account(select vesting::VestingContract.signer_cap($t60))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:434:9+46 - assume {:print "$at(3,18724,18770)"} true; - assume ($t61 == $account#$1_account_SignerCapability($signer_cap#$1_vesting_VestingContract($t60))); + // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:966:9+192 + assume {:print "$at(2,45373,45565)"} true; + goto L2; - // assume Identical($t62, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t60))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:435:9+49 - assume {:print "$at(3,18779,18828)"} true; - assume ($t62 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t60))); + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:966:9+192 +L0: - // assume Identical($t63, global($t61)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:439:9+49 - assume {:print "$at(3,18996,19045)"} true; - assume ($t63 == $ResourceValue($1_staking_contract_Store_$memory, $t61)); + // $t2 := $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:966:9+192 + assume {:print "$at(2,45373,45565)"} true; + $t2 := $t1; - // assume Identical($t64, simple_map::spec_get(select staking_contract::Store.staking_contracts($t63), $t62)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:440:9+79 - assume {:print "$at(3,19054,19133)"} true; - assume ($t64 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($t63), $t62)); + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:966:9+192 +L2: - // assume Identical($t65, select staking_contract::Store.staking_contracts(global($t61))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 - assume {:print "$at(134,11481,11545)"} true; - assume ($t65 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t61))); + // trace_return[0]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:966:9+192 + assume {:print "$at(2,45373,45565)"} true; + assume {:print "$track_return(59,10,0):", $t2} $t2 == $t2; - // assume Identical($t66, select staking_contract::StakingContract.pool_address($t64)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:470:9+49 - assume {:print "$at(3,20547,20596)"} true; - assume ($t66 == $pool_address#$1_staking_contract_StakingContract($t64)); + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:971:5+1 + assume {:print "$at(2,45570,45571)"} true; +L3: - // assume Identical($t67, global($t66)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:472:9+56 - assume {:print "$at(3,20664,20720)"} true; - assume ($t67 == $ResourceValue($1_stake_StakePool_$memory, $t66)); + // return $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:971:5+1 + assume {:print "$at(2,45570,45571)"} true; + $ret0 := $t2; + return; - // assume Identical($t68, select coin::Coin.value(select stake::StakePool.inactive($t67))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:473:9+41 - assume {:print "$at(3,20729,20770)"} true; - assume ($t68 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t67))); + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:971:5+1 +L4: - // assume Identical($t69, select coin::Coin.value(select stake::StakePool.pending_inactive($t67))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:474:9+57 - assume {:print "$at(3,20779,20836)"} true; - assume ($t69 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t67))); + // abort($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:971:5+1 + assume {:print "$at(2,45570,45571)"} true; + $abort_code := $t5; + $abort_flag := true; + return; - // assume Identical($t70, Add($t68, $t69)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:478:9+63 - assume {:print "$at(3,20948,21011)"} true; - assume ($t70 == ($t68 + $t69)); +} - // assume Identical($t71, select stake::OwnerCapability.pool_address(select staking_contract::StakingContract.owner_cap($t64))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:479:9+61 - assume {:print "$at(3,21020,21081)"} true; - assume ($t71 == $pool_address#$1_stake_OwnerCapability($owner_cap#$1_staking_contract_StakingContract($t64))); +// fun vesting::get_beneficiary [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:965:5+287 +procedure {:timeLimit 900} $1_vesting_get_beneficiary$verify(_$t0: $1_vesting_VestingContract, _$t1: int) returns ($ret0: int) +{ + // declare local variables + var $t2: int; + var $t3: Table int (int); + var $t4: bool; + var $t5: int; + var $t6: Table int (int); + var $t0: $1_vesting_VestingContract; + var $t1: int; + var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; + var $temp_0'address': int; + $t0 := _$t0; + $t1 := _$t1; - // assume Identical($t72, global($t71)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:481:9+60 - assume {:print "$at(3,21151,21211)"} true; - assume ($t72 == $ResourceValue($1_stake_StakePool_$memory, $t71)); + // verification entrypoint assumptions + call $InitVerification(); - // assume Identical($t73, global(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:483:9+66 - assume {:print "$at(3,21286,21352)"} true; - assume ($t73 == $ResourceValue($1_stake_ValidatorSet_$memory, 1)); + // bytecode translation starts here + // assume And(WellFormed($t0), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t0)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t0)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t0)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t0)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t0)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t0)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:965:5+1 + assume {:print "$at(2,45284,45285)"} true; + assume ($IsValid'$1_vesting_VestingContract'($t0) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t0)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t0)), addr)))) && (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t0)))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t0)))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; + (var j := $i_3; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t0)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t0)), j)) ==> $IsEqual'num'(i, j)))))))))); - // assume Identical($t74, And(And(Not(stake::spec_contains(select stake::ValidatorSet.pending_active($t73), $t71)), Not(stake::spec_contains(select stake::ValidatorSet.active_validators($t73), $t71))), Not(stake::spec_contains(select stake::ValidatorSet.pending_inactive($t73), $t71)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:484:9+260 - assume {:print "$at(3,21361,21621)"} true; - assume ($t74 == ((!$1_stake_spec_contains($pending_active#$1_stake_ValidatorSet($t73), $t71) && !$1_stake_spec_contains($active_validators#$1_stake_ValidatorSet($t73), $t71)) && !$1_stake_spec_contains($pending_inactive#$1_stake_ValidatorSet($t73), $t71))); + // assume WellFormed($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:965:5+1 + assume $IsValid'address'($t1); - // assume Identical($t75, select coin::Coin.value(select stake::StakePool.inactive($t72))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:487:9+45 - assume {:print "$at(3,21630,21675)"} true; - assume ($t75 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t72))); + // trace_local[contract]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:965:5+1 + assume {:print "$track_local(59,10,0):", $t0} $t0 == $t0; - // assume Identical($t76, select coin::Coin.value(select stake::StakePool.pending_inactive($t72))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:488:9+61 - assume {:print "$at(3,21684,21745)"} true; - assume ($t76 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t72))); + // trace_local[shareholder]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:965:5+1 + assume {:print "$track_local(59,10,1):", $t1} $t1 == $t1; - // assume Identical($t77, Add($t75, $t76)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:489:9+53 - assume {:print "$at(3,21754,21807)"} true; - assume ($t77 == ($t75 + $t76)); + // $t3 := get_field.beneficiaries($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:966:38+23 + assume {:print "$at(2,45402,45425)"} true; + $t3 := $beneficiaries#$1_vesting_VestingContract($t0); - // vesting::unlock_stake($t60, $t48) on_abort goto L4 with $t25 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:690:9+44 - assume {:print "$at(2,32839,32883)"} true; - call $1_vesting_unlock_stake($t60, $t48); + // $t4 := simple_map::contains_key($t3, $t1) on_abort goto L4 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:966:13+63 + call $t4 := $1_simple_map_contains_key'address_address'($t3, $t1); if ($abort_flag) { - assume {:print "$at(2,32839,32883)"} true; - $t25 := $abort_code; - assume {:print "$track_abort(57,26):", $t25} $t25 == $t25; + assume {:print "$at(2,45377,45440)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(59,10):", $t5} $t5 == $t5; goto L4; } - // $t78 := borrow_field.terminate_events($t44) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:693:13+38 - assume {:print "$at(2,32918,32956)"} true; - $t78 := $ChildMutation($t44, 16, $terminate_events#$1_vesting_VestingContract($Dereference($t44))); + // if ($t4) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:966:9+192 + if ($t4) { goto L1; } else { goto L0; } - // $t79 := get_field.admin($t44) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:695:24+22 - assume {:print "$at(2,33010,33032)"} true; - $t79 := $admin#$1_vesting_VestingContract($Dereference($t44)); + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:967:34+8 + assume {:print "$at(2,45477,45485)"} true; +L1: - // $t80 := pack vesting::TerminateEvent($t79, $t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:694:13+137 - assume {:print "$at(2,32970,33107)"} true; - $t80 := $1_vesting_TerminateEvent($t79, $t1); + // $t6 := get_field.beneficiaries($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:967:33+23 + assume {:print "$at(2,45476,45499)"} true; + $t6 := $beneficiaries#$1_vesting_VestingContract($t0); - // opaque begin: event::emit_event($t78, $t80) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:692:9+224 - assume {:print "$at(2,32894,33118)"} true; + // $t2 := simple_map::borrow($t6, $t1) on_abort goto L4 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:967:14+57 + call $t2 := $1_simple_map_borrow'address_address'($t6, $t1); + if ($abort_flag) { + assume {:print "$at(2,45457,45514)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(59,10):", $t5} $t5 == $t5; + goto L4; + } - // opaque end: event::emit_event($t78, $t80) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:692:9+224 + // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:966:9+192 + assume {:print "$at(2,45373,45565)"} true; + goto L2; - // write_back[Reference($t44).terminate_events (event::EventHandle)]($t78) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:692:9+224 - $t44 := $UpdateMutation($t44, $Update'$1_vesting_VestingContract'_terminate_events($Dereference($t44), $Dereference($t78))); + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:966:9+192 +L0: - // assert forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t44)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t44)), addr)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 - // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 - assume {:print "$at(59,538,673)"} true; - assert {:msg "assert_failed(59,538,673): data invariant does not hold"} - (forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t44))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t44))), addr)))); + // $t2 := $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:966:9+192 + assume {:print "$at(2,45373,45565)"} true; + $t2 := $t1; - // assert forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t44)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t44)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t44)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t44)), j)), Eq(i, j)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 - // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 - assume {:print "$at(59,738,867)"} true; - assert {:msg "assert_failed(59,738,867): data invariant does not hold"} - (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t44))))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t44))))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; - (var j := $i_3; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t44))), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t44))), j)) ==> $IsEqual'num'(i, j)))))))); + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:966:9+192 +L2: - // write_back[vesting::VestingContract@]($t44) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:692:9+224 - assume {:print "$at(2,32894,33118)"} true; - $1_vesting_VestingContract_$memory := $ResourceUpdate($1_vesting_VestingContract_$memory, $GlobalLocationAddress($t44), - $Dereference($t44)); + // trace_return[0]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:966:9+192 + assume {:print "$at(2,45373,45565)"} true; + assume {:print "$track_return(59,10,0):", $t2} $t2 == $t2; - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:699:5+1 - assume {:print "$at(2,33124,33125)"} true; + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:971:5+1 + assume {:print "$at(2,45570,45571)"} true; L3: - // assert Not(Not(exists[@174]($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:517:9+53 - assume {:print "$at(3,22974,23027)"} true; - assert {:msg "assert_failed(3,22974,23027): function does not abort under this condition"} - !!$ResourceExists($1_vesting_VestingContract_$memory#174, $t1); - - // assert Not(Neq(select vesting::VestingContract.state($t7), 1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:519:9+56 - assume {:print "$at(3,23110,23166)"} true; - assert {:msg "assert_failed(3,23110,23166): function does not abort under this condition"} - !!$IsEqual'u64'($state#$1_vesting_VestingContract($t7), 1); - - // assert Not(Not(exists[@175]($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:267:9+33 - assume {:print "$at(134,11439,11472)"} true; - assert {:msg "assert_failed(134,11439,11472): function does not abort under this condition"} - !!$ResourceExists($1_staking_contract_Store_$memory#175, $t1); - - // assert Not(Not(simple_map::spec_contains_key[]($t11, $t8))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:269:9+70 - assume {:print "$at(134,11554,11624)"} true; - assert {:msg "assert_failed(134,11554,11624): function does not abort under this condition"} - !!$1_simple_map_spec_contains_key'address_$1_staking_contract_StakingContract'($t11, $t8); - - // assert Not(Not(exists[@176]($t12))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:471:9+50 - assume {:print "$at(3,20605,20655)"} true; - assert {:msg "assert_failed(3,20605,20655): function does not abort under this condition"} - !!$ResourceExists($1_stake_StakePool_$memory#176, $t12); - - // assert Not(Gt(Add($t14, $t15), 18446744073709551615)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:475:9+48 - assume {:print "$at(3,20845,20893)"} true; - assert {:msg "assert_failed(3,20845,20893): function does not abort under this condition"} - !(($t14 + $t15) > 18446744073709551615); - - // assert Not(Not(exists[@176]($t17))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:480:9+52 - assume {:print "$at(3,21090,21142)"} true; - assert {:msg "assert_failed(3,21090,21142): function does not abort under this condition"} - !!$ResourceExists($1_stake_StakePool_$memory#176, $t17); - - // assert Not(Not(exists[@177](0x1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:482:9+57 - assume {:print "$at(3,21220,21277)"} true; - assert {:msg "assert_failed(3,21220,21277): function does not abort under this condition"} - !!$ResourceExists($1_stake_ValidatorSet_$memory#177, 1); - - // assert Not(And(And($t20, Ge(timestamp::spec_now_seconds[@178](), select stake::StakePool.locked_until_secs($t18))), Gt(Add($t21, $t22), 18446744073709551615))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:490:9+150 - assume {:print "$at(3,21816,21966)"} true; - assert {:msg "assert_failed(3,21816,21966): function does not abort under this condition"} - !(($t20 && ($1_timestamp_spec_now_seconds($1_timestamp_CurrentTimeMicroseconds_$memory#178) >= $locked_until_secs#$1_stake_StakePool($t18))) && (($t21 + $t22) > 18446744073709551615)); - - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:490:9+150 + // assert Not(false) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:488:9+16 + assume {:print "$at(3,22100,22116)"} true; + assert {:msg "assert_failed(3,22100,22116): function does not abort under this condition"} + !false; + + // return $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:488:9+16 + $ret0 := $t2; return; - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:699:5+1 - assume {:print "$at(2,33124,33125)"} true; + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:971:5+1 + assume {:print "$at(2,45570,45571)"} true; L4: - // abort($t25) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:699:5+1 - assume {:print "$at(2,33124,33125)"} true; - $abort_code := $t25; + // assert false at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:487:5+112 + assume {:print "$at(3,22010,22122)"} true; + assert {:msg "assert_failed(3,22010,22122): abort not covered by any of the `aborts_if` clauses"} + false; + + // abort($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:487:5+112 + $abort_code := $t5; $abort_flag := true; return; } -// fun vesting::total_accumulated_rewards [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:356:5+521 -procedure {:inline 1} $1_vesting_total_accumulated_rewards(_$t0: int) returns ($ret0: int) +// fun vesting::get_role_holder [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:893:5+456 +procedure {:inline 1} $1_vesting_get_role_holder(_$t0: int, _$t1: $1_string_String) returns ($ret0: int) { // declare local variables - var $t1: int; - var $t2: $1_vesting_VestingContract; - var $t3: $1_vesting_VestingContract; - var $t4: int; + var $t2: Table int (int); + var $t3: Table int (int); + var $t4: bool; var $t5: int; - var $t6: Table int ($1_staking_contract_StakingContract); - var $t7: $1_staking_contract_StakingContract; - var $t8: int; - var $t9: $1_stake_StakePool; - var $t10: int; + var $t6: int; + var $t7: int; + var $t8: $1_vesting_VestingAccountManagement; + var $t9: Table int (int); + var $t10: bool; var $t11: int; var $t12: int; var $t13: int; - var $t14: int; - var $t15: $1_vesting_VestingContract; - var $t16: $1_vesting_VestingContract; - var $t17: int; - var $t18: $1_vesting_VestingContract; - var $t19: $1_vesting_StakingInfo; - var $t20: int; - var $t21: Table int ($1_staking_contract_StakingContract); - var $t22: $1_staking_contract_StakingContract; - var $t23: Table int ($1_staking_contract_StakingContract); - var $t24: int; - var $t25: $1_stake_StakePool; - var $t26: int; - var $t27: int; - var $t28: int; - var $t29: int; - var $t30: int; - var $t31: int; - var $t32: int; - var $t33: int; - var $t34: int; - var $t35: int; var $t0: int; - var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; + var $t1: $1_string_String; + var $temp_0'$1_simple_map_SimpleMap'$1_string_String_address'': Table int (int); + var $temp_0'$1_string_String': $1_string_String; var $temp_0'address': int; - var $temp_0'u64': int; $t0 := _$t0; + $t1 := _$t1; // bytecode translation starts here - // assume Identical($t3, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:59:9+73 - assume {:print "$at(3,2072,2145)"} true; - assume ($t3 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); - - // assume Identical($t4, $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:61:9+38 - assume {:print "$at(3,2155,2193)"} true; - assume ($t4 == $t0); - - // assume Identical($t5, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t3))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:62:9+49 - assume {:print "$at(3,2202,2251)"} true; - assume ($t5 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t3))); - - // assume Identical($t6, select staking_contract::Store.staking_contracts(global($t4))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:63:9+82 - assume {:print "$at(3,2260,2342)"} true; - assume ($t6 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t4))); + // assume Identical($t3, select vesting::VestingAccountManagement.roles(global($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:360:9+69 + assume {:print "$at(3,15721,15790)"} true; + assume ($t3 == $roles#$1_vesting_VestingAccountManagement($ResourceValue($1_vesting_VestingAccountManagement_$memory, $t0))); - // assume Identical($t7, simple_map::spec_get($t6, $t5)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:64:9+73 - assume {:print "$at(3,2351,2424)"} true; - assume ($t7 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($t6, $t5)); + // trace_local[contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:893:5+1 + assume {:print "$at(2,41215,41216)"} true; + assume {:print "$track_local(59,11,0):", $t0} $t0 == $t0; - // assume Identical($t8, select staking_contract::StakingContract.pool_address($t7)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:69:9+49 - assume {:print "$at(3,2574,2623)"} true; - assume ($t8 == $pool_address#$1_staking_contract_StakingContract($t7)); + // trace_local[role]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:893:5+1 + assume {:print "$track_local(59,11,1):", $t1} $t1 == $t1; - // assume Identical($t9, global($t8)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:70:9+56 - assume {:print "$at(3,2632,2688)"} true; - assume ($t9 == $ResourceValue($1_stake_StakePool_$memory, $t8)); + // $t4 := exists($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:894:17+6 + assume {:print "$at(2,41344,41350)"} true; + $t4 := $ResourceExists($1_vesting_VestingAccountManagement_$memory, $t0); - // assume Identical($t10, coin::$value(select stake::StakePool.active($t9))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:71:9+44 - assume {:print "$at(3,2697,2741)"} true; - assume ($t10 == $1_coin_$value'$1_aptos_coin_AptosCoin'($active#$1_stake_StakePool($t9))); + // if ($t4) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:894:9+108 + if ($t4) { goto L1; } else { goto L0; } - // assume Identical($t11, coin::$value(select stake::StakePool.pending_active($t9))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:72:9+60 - assume {:print "$at(3,2750,2810)"} true; - assume ($t11 == $1_coin_$value'$1_aptos_coin_AptosCoin'($pending_active#$1_stake_StakePool($t9))); + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:894:9+108 +L1: - // assume Identical($t12, Add($t10, $t11)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:73:9+49 - assume {:print "$at(3,2819,2868)"} true; - assume ($t12 == ($t10 + $t11)); + // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:894:9+108 + assume {:print "$at(2,41336,41444)"} true; + goto L2; - // assume Identical($t13, Sub($t12, select staking_contract::StakingContract.principal($t7))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:74:9+74 - assume {:print "$at(3,2877,2951)"} true; - assume ($t13 == ($t12 - $principal#$1_staking_contract_StakingContract($t7))); + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:894:86+29 +L0: - // assume Identical($t14, Div(Mul($t13, select staking_contract::StakingContract.commission_percentage($t7)), 100)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:75:9+91 - assume {:print "$at(3,2960,3051)"} true; - assume ($t14 == (($t13 * $commission_percentage#$1_staking_contract_StakingContract($t7)) div 100)); + // $t5 := 13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:894:86+29 + assume {:print "$at(2,41413,41442)"} true; + $t5 := 13; + assume $IsValid'u64'($t5); - // assume Identical($t15, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:518:9+65 - assume {:print "$at(3,23036,23101)"} true; - assume ($t15 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); + // $t6 := error::not_found($t5) on_abort goto L7 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:894:69+47 + call $t6 := $1_error_not_found($t5); + if ($abort_flag) { + assume {:print "$at(2,41396,41443)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(59,11):", $t7} $t7 == $t7; + goto L7; + } - // assume And(Ge(select staking_contract::StakingContract.commission_percentage($t7), 0), Le(select staking_contract::StakingContract.commission_percentage($t7), 100)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:56:9+102 - assume {:print "$at(3,1852,1954)"} true; - assume (($commission_percentage#$1_staking_contract_StakingContract($t7) >= 0) && ($commission_percentage#$1_staking_contract_StakingContract($t7) <= 100)); + // trace_abort($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:894:9+108 + assume {:print "$at(2,41336,41444)"} true; + assume {:print "$track_abort(59,11):", $t6} $t6 == $t6; - // trace_local[vesting_contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:356:5+1 - assume {:print "$at(2,16826,16827)"} true; - assume {:print "$track_local(57,27,0):", $t0} $t0 == $t0; + // $t7 := move($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:894:9+108 + $t7 := $t6; - // assume Identical($t16, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:518:9+65 - assume {:print "$at(3,23036,23101)"} true; - assume ($t16 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); + // goto L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:894:9+108 + goto L7; - // vesting::assert_active_vesting_contract($t0) on_abort goto L2 with $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:357:9+56 - assume {:print "$at(2,16938,16994)"} true; - call $1_vesting_assert_active_vesting_contract($t0); - if ($abort_flag) { - assume {:print "$at(2,16938,16994)"} true; - $t17 := $abort_code; - assume {:print "$track_abort(57,27):", $t17} $t17 == $t17; - goto L2; - } + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:895:62+16 + assume {:print "$at(2,41507,41523)"} true; +L2: - // $t18 := get_global($t0) on_abort goto L2 with $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:359:32+13 - assume {:print "$at(2,17028,17041)"} true; - if (!$ResourceExists($1_vesting_VestingContract_$memory, $t0)) { + // $t8 := get_global($t0) on_abort goto L7 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:895:22+13 + assume {:print "$at(2,41467,41480)"} true; + if (!$ResourceExists($1_vesting_VestingAccountManagement_$memory, $t0)) { call $ExecFailureAbort(); } else { - $t18 := $ResourceValue($1_vesting_VestingContract_$memory, $t0); + $t8 := $ResourceValue($1_vesting_VestingAccountManagement_$memory, $t0); } if ($abort_flag) { - assume {:print "$at(2,17028,17041)"} true; - $t17 := $abort_code; - assume {:print "$track_abort(57,27):", $t17} $t17 == $t17; - goto L2; + assume {:print "$at(2,41467,41480)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(59,11):", $t7} $t7 == $t7; + goto L7; } - // trace_local[vesting_contract]($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:359:13+16 - assume {:print "$track_local(57,27,2):", $t18} $t18 == $t18; - - // $t19 := get_field.staking($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:361:82+24 - assume {:print "$at(2,17224,17248)"} true; - $t19 := $staking#$1_vesting_VestingContract($t18); - - // $t20 := get_field.operator($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:361:82+33 - $t20 := $operator#$1_vesting_StakingInfo($t19); - - // assume Identical($t21, select staking_contract::Store.staking_contracts(global($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:25:9+64 - assume {:print "$at(134,958,1022)"} true; - assume ($t21 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t0))); - - // assume Identical($t22, simple_map::spec_get($t21, $t20)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:26:9+73 - assume {:print "$at(134,1031,1104)"} true; - assume ($t22 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($t21, $t20)); + // $t9 := get_field.roles($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:895:21+64 + $t9 := $roles#$1_vesting_VestingAccountManagement($t8); - // assume Identical($t23, select staking_contract::Store.staking_contracts(global($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:259:9+64 - assume {:print "$at(134,11186,11250)"} true; - assume ($t23 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t0))); + // trace_local[roles]($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:895:13+5 + assume {:print "$track_local(59,11,2):", $t9} $t9 == $t9; - // assume Identical($t24, select staking_contract::StakingContract.pool_address($t22)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:299:9+49 - assume {:print "$at(134,12621,12670)"} true; - assume ($t24 == $pool_address#$1_staking_contract_StakingContract($t22)); + // $t10 := simple_map::contains_key($t9, $t1) on_abort goto L7 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:896:17+38 + assume {:print "$at(2,41548,41586)"} true; + call $t10 := $1_simple_map_contains_key'$1_string_String_address'($t9, $t1); + if ($abort_flag) { + assume {:print "$at(2,41548,41586)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(59,11):", $t7} $t7 == $t7; + goto L7; + } - // assume Identical($t25, global($t24)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:300:9+56 - assume {:print "$at(134,12679,12735)"} true; - assume ($t25 == $ResourceValue($1_stake_StakePool_$memory, $t24)); + // if ($t10) goto L4 else goto L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:896:9+82 + if ($t10) { goto L4; } else { goto L3; } - // assume Identical($t26, coin::$value(select stake::StakePool.active($t25))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:301:9+44 - assume {:print "$at(134,12744,12788)"} true; - assume ($t26 == $1_coin_$value'$1_aptos_coin_AptosCoin'($active#$1_stake_StakePool($t25))); + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:896:9+82 +L4: - // assume Identical($t27, coin::$value(select stake::StakePool.pending_active($t25))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:302:9+60 - assume {:print "$at(134,12797,12857)"} true; - assume ($t27 == $1_coin_$value'$1_aptos_coin_AptosCoin'($pending_active#$1_stake_StakePool($t25))); + // goto L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:896:9+82 + assume {:print "$at(2,41540,41622)"} true; + goto L5; - // assume Identical($t28, Add($t26, $t27)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:303:9+49 - assume {:print "$at(134,12866,12915)"} true; - assume ($t28 == ($t26 + $t27)); + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:896:9+82 +L3: - // assume Identical($t29, Sub($t28, select staking_contract::StakingContract.principal($t22))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:304:9+74 - assume {:print "$at(134,12924,12998)"} true; - assume ($t29 == ($t28 - $principal#$1_staking_contract_StakingContract($t22))); + // $t11 := 14 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:896:74+15 + assume {:print "$at(2,41605,41620)"} true; + $t11 := 14; + assume $IsValid'u64'($t11); - // ($t30, $t31, $t32) := staking_contract::staking_contract_amounts($t0, $t20) on_abort goto L2 with $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:361:13+103 - assume {:print "$at(2,17155,17258)"} true; - call $t30,$t31,$t32 := $1_staking_contract_staking_contract_amounts($t0, $t20); + // $t12 := error::not_found($t11) on_abort goto L7 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:896:57+33 + call $t12 := $1_error_not_found($t11); if ($abort_flag) { - assume {:print "$at(2,17155,17258)"} true; - $t17 := $abort_code; - assume {:print "$track_abort(57,27):", $t17} $t17 == $t17; - goto L2; + assume {:print "$at(2,41588,41621)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(59,11):", $t7} $t7 == $t7; + goto L7; } - // trace_local[commission_amount]($t32) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:360:37+17 - assume {:print "$at(2,17122,17139)"} true; - assume {:print "$track_local(57,27,1):", $t32} $t32 == $t32; + // trace_abort($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:896:9+82 + assume {:print "$at(2,41540,41622)"} true; + assume {:print "$track_abort(59,11):", $t12} $t12 == $t12; - // destroy($t31) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:360:34+1 + // $t7 := move($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:896:9+82 + $t7 := $t12; - // $t33 := get_field.remaining_grant($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:362:30+32 - assume {:print "$at(2,17289,17321)"} true; - $t33 := $remaining_grant#$1_vesting_VestingContract($t18); + // goto L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:896:9+82 + goto L7; - // $t34 := -($t30, $t33) on_abort goto L2 with $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:362:28+1 - call $t34 := $Sub($t30, $t33); - if ($abort_flag) { - assume {:print "$at(2,17287,17288)"} true; - $t17 := $abort_code; - assume {:print "$track_abort(57,27):", $t17} $t17 == $t17; - goto L2; - } + // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:897:29+5 + assume {:print "$at(2,41652,41657)"} true; +L5: - // $t35 := -($t34, $t32) on_abort goto L2 with $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:362:63+1 - call $t35 := $Sub($t34, $t32); + // $t13 := simple_map::borrow($t9, $t1) on_abort goto L7 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:897:10+32 + assume {:print "$at(2,41633,41665)"} true; + call $t13 := $1_simple_map_borrow'$1_string_String_address'($t9, $t1); if ($abort_flag) { - assume {:print "$at(2,17322,17323)"} true; - $t17 := $abort_code; - assume {:print "$track_abort(57,27):", $t17} $t17 == $t17; - goto L2; + assume {:print "$at(2,41633,41665)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(59,11):", $t7} $t7 == $t7; + goto L7; } - // trace_return[0]($t35) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:362:9+73 - assume {:print "$track_return(57,27,0):", $t35} $t35 == $t35; + // trace_return[0]($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:897:9+33 + assume {:print "$track_return(59,11,0):", $t13} $t13 == $t13; - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:363:5+1 - assume {:print "$at(2,17346,17347)"} true; -L1: + // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:898:5+1 + assume {:print "$at(2,41670,41671)"} true; +L6: - // return $t35 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:363:5+1 - assume {:print "$at(2,17346,17347)"} true; - $ret0 := $t35; + // return $t13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:898:5+1 + assume {:print "$at(2,41670,41671)"} true; + $ret0 := $t13; return; - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:363:5+1 -L2: + // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:898:5+1 +L7: - // abort($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:363:5+1 - assume {:print "$at(2,17346,17347)"} true; - $abort_code := $t17; + // abort($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:898:5+1 + assume {:print "$at(2,41670,41671)"} true; + $abort_code := $t7; $abort_flag := true; return; } -// fun vesting::total_accumulated_rewards [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:356:5+521 -procedure {:timeLimit 120} $1_vesting_total_accumulated_rewards$verify(_$t0: int) returns ($ret0: int) +// fun vesting::get_role_holder [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:893:5+456 +procedure {:timeLimit 900} $1_vesting_get_role_holder$verify(_$t0: int, _$t1: $1_string_String) returns ($ret0: int) { // declare local variables - var $t1: int; - var $t2: $1_vesting_VestingContract; - var $t3: $1_vesting_VestingContract; - var $t4: int; + var $t2: Table int (int); + var $t3: Table int (int); + var $t4: bool; var $t5: int; - var $t6: Table int ($1_staking_contract_StakingContract); - var $t7: $1_staking_contract_StakingContract; - var $t8: int; - var $t9: $1_stake_StakePool; - var $t10: int; + var $t6: int; + var $t7: int; + var $t8: $1_vesting_VestingAccountManagement; + var $t9: Table int (int); + var $t10: bool; var $t11: int; var $t12: int; var $t13: int; - var $t14: int; - var $t15: $1_vesting_VestingContract; - var $t16: $1_vesting_VestingContract; - var $t17: int; - var $t18: $1_vesting_VestingContract; - var $t19: $1_vesting_StakingInfo; - var $t20: int; - var $t21: Table int ($1_staking_contract_StakingContract); - var $t22: $1_staking_contract_StakingContract; - var $t23: Table int ($1_staking_contract_StakingContract); - var $t24: int; - var $t25: $1_stake_StakePool; - var $t26: int; - var $t27: int; - var $t28: int; - var $t29: int; - var $t30: int; - var $t31: int; - var $t32: int; - var $t33: int; - var $t34: int; - var $t35: int; var $t0: int; - var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; + var $t1: $1_string_String; + var $temp_0'$1_simple_map_SimpleMap'$1_string_String_address'': Table int (int); + var $temp_0'$1_string_String': $1_string_String; var $temp_0'address': int; - var $temp_0'u64': int; - var $1_staking_contract_Store_$memory#116: $Memory $1_staking_contract_Store; - var $1_stake_StakePool_$memory#117: $Memory $1_stake_StakePool; - var $1_vesting_VestingContract_$memory#118: $Memory $1_vesting_VestingContract; + var $1_vesting_VestingAccountManagement_$memory#60: $Memory $1_vesting_VestingAccountManagement; $t0 := _$t0; + $t1 := _$t1; // verification entrypoint assumptions call $InitVerification(); // bytecode translation starts here - // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:356:5+1 - assume {:print "$at(2,16826,16827)"} true; + // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:893:5+1 + assume {:print "$at(2,41215,41216)"} true; assume $IsValid'address'($t0); - // assume forall $rsc: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: select option::Option.vec(select coin::CoinInfo.supply($rsc)): And(And(And(And(And(Iff(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($elem)), option::$is_none(select optional_aggregator::OptionalAggregator.integer($elem))), Iff(option::$is_some(select optional_aggregator::OptionalAggregator.integer($elem)), option::$is_none(select optional_aggregator::OptionalAggregator.aggregator($elem)))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.integer($elem)), Le(select optional_aggregator::Integer.value(option::$borrow(select optional_aggregator::OptionalAggregator.integer($elem))), select optional_aggregator::Integer.limit(option::$borrow(select optional_aggregator::OptionalAggregator.integer($elem)))))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($elem)), Le(aggregator::spec_aggregator_get_val(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($elem))), aggregator::spec_get_limit(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($elem)))))), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.aggregator($elem))), 1)), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.integer($elem))), 1)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:356:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $a_0); - (($IsValid'$1_coin_CoinInfo'$1_aptos_coin_AptosCoin''($rsc) && ((LenVec($vec#$1_option_Option'$1_optional_aggregator_OptionalAggregator'($supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($rsc))) <= 1) && (var $range_1 := $vec#$1_option_Option'$1_optional_aggregator_OptionalAggregator'($supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($rsc)); (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); - ((((((($1_option_$is_some'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)) <==> $1_option_$is_none'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)) ==> ($value#$1_optional_aggregator_Integer($1_option_$borrow'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) <= $limit#$1_optional_aggregator_Integer($1_option_$borrow'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)))))) && ($1_option_$is_some'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem))) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)))))) && (LenVec($vec#$1_option_Option'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem))) <= 1)) && (LenVec($vec#$1_option_Option'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) <= 1))))))))))); - - // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:356:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $a_0); - ($IsValid'$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin''($rsc)))); - - // assume exists>(0x0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:356:5+1 - assume $ResourceExists($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, 0); - - // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:356:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, $a_0); - ($IsValid'$1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin''($rsc)))); - - // assume exists>(0x0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:356:5+1 - assume $ResourceExists($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, 0); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:356:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_stake_StakePool_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_StakePool_$memory, $a_0); - ($IsValid'$1_stake_StakePool'($rsc)))); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:356:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorConfig_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorConfig_$memory, $a_0); - ($IsValid'$1_stake_ValidatorConfig'($rsc)))); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:356:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorPerformance_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorPerformance_$memory, $a_0); - ($IsValid'$1_stake_ValidatorPerformance'($rsc)))); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:356:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorSet_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorSet_$memory, $a_0); - ($IsValid'$1_stake_ValidatorSet'($rsc)))); - - // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), forall $key: select staking_contract::Store.staking_contracts($rsc): And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), i), Index(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:356:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_staking_contract_Store_$memory, $a_0)}(var $rsc := $ResourceValue($1_staking_contract_Store_$memory, $a_0); - (($IsValid'$1_staking_contract_Store'($rsc) && (var $range_1 := $staking_contracts#$1_staking_contract_Store($rsc); (forall $key: int :: ContainsTable($range_1, $EncodeKey'address'($key)) ==> (((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), addr)))) && (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))))); (var $range_3 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))))); (forall $i_4: int, $i_5: int :: $InRange($range_2, $i_4) ==> $InRange($range_3, $i_5) ==> (var i := $i_4; - (var j := $i_5; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), i), ReadVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), j)) ==> $IsEqual'num'(i, j)))))))))))))))); - - // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:356:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); - (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; - (var j := $i_4; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); - - // assume Implies(exists(0x1), stake::validator_set_is_valid()) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:356:5+521 - // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:8:9+92 - assume ($ResourceExists($1_stake_ValidatorSet_$memory, 1) ==> $1_stake_validator_set_is_valid($1_stake_StakePool_$memory, $1_stake_ValidatorConfig_$memory, $1_stake_ValidatorPerformance_$memory, $1_stake_ValidatorSet_$memory)); - - // assume Identical($t3, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:59:9+73 - assume {:print "$at(3,2072,2145)"} true; - assume ($t3 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); - - // assume Identical($t4, $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:61:9+38 - assume {:print "$at(3,2155,2193)"} true; - assume ($t4 == $t0); - - // assume Identical($t5, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t3))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:62:9+49 - assume {:print "$at(3,2202,2251)"} true; - assume ($t5 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t3))); - - // assume Identical($t6, select staking_contract::Store.staking_contracts(global($t4))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:63:9+82 - assume {:print "$at(3,2260,2342)"} true; - assume ($t6 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t4))); + // assume WellFormed($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:893:5+1 + assume $IsValid'$1_string_String'($t1); - // assume Identical($t7, simple_map::spec_get($t6, $t5)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:64:9+73 - assume {:print "$at(3,2351,2424)"} true; - assume ($t7 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($t6, $t5)); + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:893:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingAccountManagement_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingAccountManagement_$memory, $a_0); + ($IsValid'$1_vesting_VestingAccountManagement'($rsc)))); - // assume Identical($t8, select staking_contract::StakingContract.pool_address($t7)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:69:9+49 - assume {:print "$at(3,2574,2623)"} true; - assume ($t8 == $pool_address#$1_staking_contract_StakingContract($t7)); + // assume Identical($t3, select vesting::VestingAccountManagement.roles(global($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:360:9+69 + assume {:print "$at(3,15721,15790)"} true; + assume ($t3 == $roles#$1_vesting_VestingAccountManagement($ResourceValue($1_vesting_VestingAccountManagement_$memory, $t0))); - // assume Identical($t9, global($t8)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:70:9+56 - assume {:print "$at(3,2632,2688)"} true; - assume ($t9 == $ResourceValue($1_stake_StakePool_$memory, $t8)); + // @60 := save_mem(vesting::VestingAccountManagement) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:893:5+1 + assume {:print "$at(2,41215,41216)"} true; + $1_vesting_VestingAccountManagement_$memory#60 := $1_vesting_VestingAccountManagement_$memory; - // assume Identical($t10, coin::$value(select stake::StakePool.active($t9))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:71:9+44 - assume {:print "$at(3,2697,2741)"} true; - assume ($t10 == $1_coin_$value'$1_aptos_coin_AptosCoin'($active#$1_stake_StakePool($t9))); + // trace_local[contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:893:5+1 + assume {:print "$track_local(59,11,0):", $t0} $t0 == $t0; - // assume Identical($t11, coin::$value(select stake::StakePool.pending_active($t9))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:72:9+60 - assume {:print "$at(3,2750,2810)"} true; - assume ($t11 == $1_coin_$value'$1_aptos_coin_AptosCoin'($pending_active#$1_stake_StakePool($t9))); + // trace_local[role]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:893:5+1 + assume {:print "$track_local(59,11,1):", $t1} $t1 == $t1; - // assume Identical($t12, Add($t10, $t11)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:73:9+49 - assume {:print "$at(3,2819,2868)"} true; - assume ($t12 == ($t10 + $t11)); + // $t4 := exists($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:894:17+6 + assume {:print "$at(2,41344,41350)"} true; + $t4 := $ResourceExists($1_vesting_VestingAccountManagement_$memory, $t0); - // assume Identical($t13, Sub($t12, select staking_contract::StakingContract.principal($t7))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:74:9+74 - assume {:print "$at(3,2877,2951)"} true; - assume ($t13 == ($t12 - $principal#$1_staking_contract_StakingContract($t7))); + // if ($t4) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:894:9+108 + if ($t4) { goto L1; } else { goto L0; } - // assume Identical($t14, Div(Mul($t13, select staking_contract::StakingContract.commission_percentage($t7)), 100)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:75:9+91 - assume {:print "$at(3,2960,3051)"} true; - assume ($t14 == (($t13 * $commission_percentage#$1_staking_contract_StakingContract($t7)) div 100)); + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:894:9+108 +L1: - // assume Identical($t15, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:518:9+65 - assume {:print "$at(3,23036,23101)"} true; - assume ($t15 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); + // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:894:9+108 + assume {:print "$at(2,41336,41444)"} true; + goto L2; - // assume And(Ge(select staking_contract::StakingContract.commission_percentage($t7), 0), Le(select staking_contract::StakingContract.commission_percentage($t7), 100)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:56:9+102 - assume {:print "$at(3,1852,1954)"} true; - assume (($commission_percentage#$1_staking_contract_StakingContract($t7) >= 0) && ($commission_percentage#$1_staking_contract_StakingContract($t7) <= 100)); + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:894:86+29 +L0: - // @117 := save_mem(stake::StakePool) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:56:9+102 - $1_stake_StakePool_$memory#117 := $1_stake_StakePool_$memory; + // $t5 := 13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:894:86+29 + assume {:print "$at(2,41413,41442)"} true; + $t5 := 13; + assume $IsValid'u64'($t5); - // @116 := save_mem(staking_contract::Store) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:56:9+102 - $1_staking_contract_Store_$memory#116 := $1_staking_contract_Store_$memory; + // $t6 := error::not_found($t5) on_abort goto L7 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:894:69+47 + call $t6 := $1_error_not_found($t5); + if ($abort_flag) { + assume {:print "$at(2,41396,41443)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(59,11):", $t7} $t7 == $t7; + goto L7; + } - // @118 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:56:9+102 - $1_vesting_VestingContract_$memory#118 := $1_vesting_VestingContract_$memory; + // trace_abort($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:894:9+108 + assume {:print "$at(2,41336,41444)"} true; + assume {:print "$track_abort(59,11):", $t6} $t6 == $t6; - // trace_local[vesting_contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:356:5+1 - assume {:print "$at(2,16826,16827)"} true; - assume {:print "$track_local(57,27,0):", $t0} $t0 == $t0; + // $t7 := move($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:894:9+108 + $t7 := $t6; - // assume Identical($t16, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:518:9+65 - assume {:print "$at(3,23036,23101)"} true; - assume ($t16 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); + // goto L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:894:9+108 + goto L7; - // vesting::assert_active_vesting_contract($t0) on_abort goto L2 with $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:357:9+56 - assume {:print "$at(2,16938,16994)"} true; - call $1_vesting_assert_active_vesting_contract($t0); - if ($abort_flag) { - assume {:print "$at(2,16938,16994)"} true; - $t17 := $abort_code; - assume {:print "$track_abort(57,27):", $t17} $t17 == $t17; - goto L2; - } + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:895:62+16 + assume {:print "$at(2,41507,41523)"} true; +L2: - // $t18 := get_global($t0) on_abort goto L2 with $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:359:32+13 - assume {:print "$at(2,17028,17041)"} true; - if (!$ResourceExists($1_vesting_VestingContract_$memory, $t0)) { + // $t8 := get_global($t0) on_abort goto L7 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:895:22+13 + assume {:print "$at(2,41467,41480)"} true; + if (!$ResourceExists($1_vesting_VestingAccountManagement_$memory, $t0)) { call $ExecFailureAbort(); } else { - $t18 := $ResourceValue($1_vesting_VestingContract_$memory, $t0); + $t8 := $ResourceValue($1_vesting_VestingAccountManagement_$memory, $t0); } if ($abort_flag) { - assume {:print "$at(2,17028,17041)"} true; - $t17 := $abort_code; - assume {:print "$track_abort(57,27):", $t17} $t17 == $t17; - goto L2; + assume {:print "$at(2,41467,41480)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(59,11):", $t7} $t7 == $t7; + goto L7; } - // trace_local[vesting_contract]($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:359:13+16 - assume {:print "$track_local(57,27,2):", $t18} $t18 == $t18; - - // $t19 := get_field.staking($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:361:82+24 - assume {:print "$at(2,17224,17248)"} true; - $t19 := $staking#$1_vesting_VestingContract($t18); - - // $t20 := get_field.operator($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:361:82+33 - $t20 := $operator#$1_vesting_StakingInfo($t19); - - // assume Identical($t21, select staking_contract::Store.staking_contracts(global($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:25:9+64 - assume {:print "$at(134,958,1022)"} true; - assume ($t21 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t0))); - - // assume Identical($t22, simple_map::spec_get($t21, $t20)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:26:9+73 - assume {:print "$at(134,1031,1104)"} true; - assume ($t22 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($t21, $t20)); - - // assume Identical($t23, select staking_contract::Store.staking_contracts(global($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:259:9+64 - assume {:print "$at(134,11186,11250)"} true; - assume ($t23 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t0))); - - // assume Identical($t24, select staking_contract::StakingContract.pool_address($t22)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:299:9+49 - assume {:print "$at(134,12621,12670)"} true; - assume ($t24 == $pool_address#$1_staking_contract_StakingContract($t22)); - - // assume Identical($t25, global($t24)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:300:9+56 - assume {:print "$at(134,12679,12735)"} true; - assume ($t25 == $ResourceValue($1_stake_StakePool_$memory, $t24)); - - // assume Identical($t26, coin::$value(select stake::StakePool.active($t25))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:301:9+44 - assume {:print "$at(134,12744,12788)"} true; - assume ($t26 == $1_coin_$value'$1_aptos_coin_AptosCoin'($active#$1_stake_StakePool($t25))); - - // assume Identical($t27, coin::$value(select stake::StakePool.pending_active($t25))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:302:9+60 - assume {:print "$at(134,12797,12857)"} true; - assume ($t27 == $1_coin_$value'$1_aptos_coin_AptosCoin'($pending_active#$1_stake_StakePool($t25))); - - // assume Identical($t28, Add($t26, $t27)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:303:9+49 - assume {:print "$at(134,12866,12915)"} true; - assume ($t28 == ($t26 + $t27)); + // $t9 := get_field.roles($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:895:21+64 + $t9 := $roles#$1_vesting_VestingAccountManagement($t8); - // assume Identical($t29, Sub($t28, select staking_contract::StakingContract.principal($t22))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:304:9+74 - assume {:print "$at(134,12924,12998)"} true; - assume ($t29 == ($t28 - $principal#$1_staking_contract_StakingContract($t22))); + // trace_local[roles]($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:895:13+5 + assume {:print "$track_local(59,11,2):", $t9} $t9 == $t9; - // ($t30, $t31, $t32) := staking_contract::staking_contract_amounts($t0, $t20) on_abort goto L2 with $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:361:13+103 - assume {:print "$at(2,17155,17258)"} true; - call $t30,$t31,$t32 := $1_staking_contract_staking_contract_amounts($t0, $t20); + // $t10 := simple_map::contains_key($t9, $t1) on_abort goto L7 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:896:17+38 + assume {:print "$at(2,41548,41586)"} true; + call $t10 := $1_simple_map_contains_key'$1_string_String_address'($t9, $t1); if ($abort_flag) { - assume {:print "$at(2,17155,17258)"} true; - $t17 := $abort_code; - assume {:print "$track_abort(57,27):", $t17} $t17 == $t17; - goto L2; + assume {:print "$at(2,41548,41586)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(59,11):", $t7} $t7 == $t7; + goto L7; } - // trace_local[commission_amount]($t32) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:360:37+17 - assume {:print "$at(2,17122,17139)"} true; - assume {:print "$track_local(57,27,1):", $t32} $t32 == $t32; + // if ($t10) goto L4 else goto L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:896:9+82 + if ($t10) { goto L4; } else { goto L3; } + + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:896:9+82 +L4: - // destroy($t31) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:360:34+1 + // goto L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:896:9+82 + assume {:print "$at(2,41540,41622)"} true; + goto L5; - // $t33 := get_field.remaining_grant($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:362:30+32 - assume {:print "$at(2,17289,17321)"} true; - $t33 := $remaining_grant#$1_vesting_VestingContract($t18); + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:896:9+82 +L3: - // $t34 := -($t30, $t33) on_abort goto L2 with $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:362:28+1 - call $t34 := $Sub($t30, $t33); - if ($abort_flag) { - assume {:print "$at(2,17287,17288)"} true; - $t17 := $abort_code; - assume {:print "$track_abort(57,27):", $t17} $t17 == $t17; - goto L2; - } + // $t11 := 14 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:896:74+15 + assume {:print "$at(2,41605,41620)"} true; + $t11 := 14; + assume $IsValid'u64'($t11); - // $t35 := -($t34, $t32) on_abort goto L2 with $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:362:63+1 - call $t35 := $Sub($t34, $t32); + // $t12 := error::not_found($t11) on_abort goto L7 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:896:57+33 + call $t12 := $1_error_not_found($t11); if ($abort_flag) { - assume {:print "$at(2,17322,17323)"} true; - $t17 := $abort_code; - assume {:print "$track_abort(57,27):", $t17} $t17 == $t17; - goto L2; + assume {:print "$at(2,41588,41621)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(59,11):", $t7} $t7 == $t7; + goto L7; } - // trace_return[0]($t35) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:362:9+73 - assume {:print "$track_return(57,27,0):", $t35} $t35 == $t35; - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:363:5+1 - assume {:print "$at(2,17346,17347)"} true; -L1: - - // assert Not(Not(exists[@116]($t4))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:66:9+51 - assume {:print "$at(3,2434,2485)"} true; - assert {:msg "assert_failed(3,2434,2485): function does not abort under this condition"} - !!$ResourceExists($1_staking_contract_Store_$memory#116, $t4); - - // assert Not(Not(simple_map::spec_contains_key[]($t6, $t5))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:67:9+70 - assume {:print "$at(3,2494,2564)"} true; - assert {:msg "assert_failed(3,2494,2564): function does not abort under this condition"} - !!$1_simple_map_spec_contains_key'address_$1_staking_contract_StakingContract'($t6, $t5); + // trace_abort($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:896:9+82 + assume {:print "$at(2,41540,41622)"} true; + assume {:print "$track_abort(59,11):", $t12} $t12 == $t12; - // assert Not(Not(exists[@117]($t8))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:76:9+50 - assume {:print "$at(3,3060,3110)"} true; - assert {:msg "assert_failed(3,3060,3110): function does not abort under this condition"} - !!$ResourceExists($1_stake_StakePool_$memory#117, $t8); + // $t7 := move($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:896:9+82 + $t7 := $t12; - // assert Not(Gt(Add($t10, $t11), 18446744073709551615)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:77:9+44 - assume {:print "$at(3,3119,3163)"} true; - assert {:msg "assert_failed(3,3119,3163): function does not abort under this condition"} - !(($t10 + $t11) > 18446744073709551615); + // goto L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:896:9+82 + goto L7; - // assert Not(Lt($t12, select staking_contract::StakingContract.principal($t7))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:78:9+58 - assume {:print "$at(3,3172,3230)"} true; - assert {:msg "assert_failed(3,3172,3230): function does not abort under this condition"} - !($t12 < $principal#$1_staking_contract_StakingContract($t7)); + // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:897:29+5 + assume {:print "$at(2,41652,41657)"} true; +L5: - // assert Not(Gt(Mul($t13, select staking_contract::StakingContract.commission_percentage($t7)), 18446744073709551615)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:79:9+81 - assume {:print "$at(3,3239,3320)"} true; - assert {:msg "assert_failed(3,3239,3320): function does not abort under this condition"} - !(($t13 * $commission_percentage#$1_staking_contract_StakingContract($t7)) > 18446744073709551615); + // $t13 := simple_map::borrow($t9, $t1) on_abort goto L7 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:897:10+32 + assume {:print "$at(2,41633,41665)"} true; + call $t13 := $1_simple_map_borrow'$1_string_String_address'($t9, $t1); + if ($abort_flag) { + assume {:print "$at(2,41633,41665)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(59,11):", $t7} $t7 == $t7; + goto L7; + } - // assert Not(Gt(Add(select vesting::VestingContract.remaining_grant($t3), $t14), $t12)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:80:9+86 - assume {:print "$at(3,3329,3415)"} true; - assert {:msg "assert_failed(3,3329,3415): function does not abort under this condition"} - !(($remaining_grant#$1_vesting_VestingContract($t3) + $t14) > $t12); + // trace_return[0]($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:897:9+33 + assume {:print "$track_return(59,11,0):", $t13} $t13 == $t13; - // assert Not(Lt($t12, select vesting::VestingContract.remaining_grant($t3))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:81:9+64 - assume {:print "$at(3,3424,3488)"} true; - assert {:msg "assert_failed(3,3424,3488): function does not abort under this condition"} - !($t12 < $remaining_grant#$1_vesting_VestingContract($t3)); + // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:898:5+1 + assume {:print "$at(2,41670,41671)"} true; +L6: - // assert Not(Not(exists[@118]($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:517:9+53 - assume {:print "$at(3,22974,23027)"} true; - assert {:msg "assert_failed(3,22974,23027): function does not abort under this condition"} - !!$ResourceExists($1_vesting_VestingContract_$memory#118, $t0); + // assert Not(Not(exists[@60]($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:359:9+62 + assume {:print "$at(3,15650,15712)"} true; + assert {:msg "assert_failed(3,15650,15712): function does not abort under this condition"} + !!$ResourceExists($1_vesting_VestingAccountManagement_$memory#60, $t0); - // assert Not(Neq(select vesting::VestingContract.state($t15), 1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:519:9+56 - assume {:print "$at(3,23110,23166)"} true; - assert {:msg "assert_failed(3,23110,23166): function does not abort under this condition"} - !!$IsEqual'u64'($state#$1_vesting_VestingContract($t15), 1); + // assert Not(Not(simple_map::spec_contains_key[]($t3, $t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:361:9+53 + assume {:print "$at(3,15799,15852)"} true; + assert {:msg "assert_failed(3,15799,15852): function does not abort under this condition"} + !!$1_simple_map_spec_contains_key'$1_string_String_address'($t3, $t1); - // return $t35 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:519:9+56 - $ret0 := $t35; + // return $t13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:361:9+53 + $ret0 := $t13; return; - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:363:5+1 - assume {:print "$at(2,17346,17347)"} true; -L2: + // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:898:5+1 + assume {:print "$at(2,41670,41671)"} true; +L7: - // assert Or(Or(Or(Or(Or(Or(Or(Or(Or(Not(exists[@116]($t4)), Not(simple_map::spec_contains_key[]($t6, $t5))), Not(exists[@117]($t8))), Gt(Add($t10, $t11), 18446744073709551615)), Lt($t12, select staking_contract::StakingContract.principal($t7))), Gt(Mul($t13, select staking_contract::StakingContract.commission_percentage($t7)), 18446744073709551615)), Gt(Add(select vesting::VestingContract.remaining_grant($t3), $t14), $t12)), Lt($t12, select vesting::VestingContract.remaining_grant($t3))), Not(exists[@118]($t0))), Neq(select vesting::VestingContract.state($t15), 1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:47:5+175 - assume {:print "$at(3,1573,1748)"} true; - assert {:msg "assert_failed(3,1573,1748): abort not covered by any of the `aborts_if` clauses"} - (((((((((!$ResourceExists($1_staking_contract_Store_$memory#116, $t4) || !$1_simple_map_spec_contains_key'address_$1_staking_contract_StakingContract'($t6, $t5)) || !$ResourceExists($1_stake_StakePool_$memory#117, $t8)) || (($t10 + $t11) > 18446744073709551615)) || ($t12 < $principal#$1_staking_contract_StakingContract($t7))) || (($t13 * $commission_percentage#$1_staking_contract_StakingContract($t7)) > 18446744073709551615)) || (($remaining_grant#$1_vesting_VestingContract($t3) + $t14) > $t12)) || ($t12 < $remaining_grant#$1_vesting_VestingContract($t3))) || !$ResourceExists($1_vesting_VestingContract_$memory#118, $t0)) || !$IsEqual'u64'($state#$1_vesting_VestingContract($t15), 1)); + // assert Or(Not(exists[@60]($t0)), Not(simple_map::spec_contains_key[]($t3, $t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:358:5+289 + assume {:print "$at(3,15569,15858)"} true; + assert {:msg "assert_failed(3,15569,15858): abort not covered by any of the `aborts_if` clauses"} + (!$ResourceExists($1_vesting_VestingAccountManagement_$memory#60, $t0) || !$1_simple_map_spec_contains_key'$1_string_String_address'($t3, $t1)); - // abort($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:47:5+175 - $abort_code := $t17; + // abort($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:358:5+289 + $abort_code := $t7; $abort_flag := true; return; } -// fun vesting::unlock_rewards_many [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:546:5+437 -procedure {:timeLimit 1000} $1_vesting_unlock_rewards_many$verify(_$t0: Vec (int)) returns () +// fun vesting::get_vesting_account_signer [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:903:5+315 +procedure {:timeLimit 900} $1_vesting_get_vesting_account_signer$verify(_$t0: $signer, _$t1: int) returns ($ret0: $signer) { // declare local variables - var $t1: int; - var $t2: int; - var $t3: Vec (int); - var $t4: int; + var $t2: $Mutation ($1_vesting_VestingContract); + var $t3: $1_vesting_VestingContract; + var $t4: $Mutation ($1_vesting_VestingContract); var $t5: int; - var $t6: int; - var $t7: bool; - var $t8: int; - var $t9: int; - var $t10: int; - var $t11: int; - var $t12: bool; - var $t13: int; - var $t14: int; - var $t15: int; - var $t16: $1_vesting_VestingContract; - var $t17: int; - var $t18: Table int ($1_staking_contract_StakingContract); - var $t19: $1_staking_contract_StakingContract; - var $t20: int; - var $t21: $1_stake_StakePool; - var $t22: int; - var $t23: int; - var $t24: int; - var $t25: int; - var $t26: int; - var $t27: int; - var $t28: $1_vesting_VestingContract; - var $t29: int; - var $t30: int; - var $t31: Table int ($1_staking_contract_StakingContract); - var $t32: $1_staking_contract_StakingContract; - var $t33: int; - var $t34: $1_stake_StakePool; - var $t35: int; - var $t36: int; - var $t37: int; - var $t38: int; - var $t39: int; - var $t40: $1_vesting_VestingContract; - var $t41: int; - var $t42: int; - var $t43: $1_staking_contract_Store; - var $t44: $1_staking_contract_StakingContract; - var $t45: Table int ($1_staking_contract_StakingContract); - var $t46: int; - var $t47: $1_stake_StakePool; - var $t48: int; - var $t49: int; - var $t50: int; - var $t51: int; - var $t52: $1_stake_StakePool; - var $t53: $1_stake_ValidatorSet; - var $t54: bool; - var $t55: int; - var $t56: int; - var $t57: int; - var $t0: Vec (int); - var $temp_0'u64': int; - var $temp_0'vec'address'': Vec (int); + var $t6: $1_vesting_VestingContract; + var $t7: $1_vesting_VestingContract; + var $t8: $signer; + var $t0: $signer; + var $t1: int; + var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $1_vesting_VestingContract_$memory#47: $Memory $1_vesting_VestingContract; $t0 := _$t0; + $t1 := _$t1; // verification entrypoint assumptions call $InitVerification(); // bytecode translation starts here - // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:546:5+1 - assume {:print "$at(2,25990,25991)"} true; - assume $IsValid'vec'address''($t0); - - // assume forall $rsc: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: select option::Option.vec(select coin::CoinInfo.supply($rsc)): And(And(And(And(And(Iff(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($elem)), option::$is_none(select optional_aggregator::OptionalAggregator.integer($elem))), Iff(option::$is_some(select optional_aggregator::OptionalAggregator.integer($elem)), option::$is_none(select optional_aggregator::OptionalAggregator.aggregator($elem)))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.integer($elem)), Le(select optional_aggregator::Integer.value(option::$borrow(select optional_aggregator::OptionalAggregator.integer($elem))), select optional_aggregator::Integer.limit(option::$borrow(select optional_aggregator::OptionalAggregator.integer($elem)))))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($elem)), Le(aggregator::spec_aggregator_get_val(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($elem))), aggregator::spec_get_limit(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($elem)))))), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.aggregator($elem))), 1)), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.integer($elem))), 1)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:546:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $a_0); - (($IsValid'$1_coin_CoinInfo'$1_aptos_coin_AptosCoin''($rsc) && ((LenVec($vec#$1_option_Option'$1_optional_aggregator_OptionalAggregator'($supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($rsc))) <= 1) && (var $range_1 := $vec#$1_option_Option'$1_optional_aggregator_OptionalAggregator'($supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($rsc)); (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); - ((((((($1_option_$is_some'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)) <==> $1_option_$is_none'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)) ==> ($value#$1_optional_aggregator_Integer($1_option_$borrow'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) <= $limit#$1_optional_aggregator_Integer($1_option_$borrow'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)))))) && ($1_option_$is_some'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem))) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)))))) && (LenVec($vec#$1_option_Option'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem))) <= 1)) && (LenVec($vec#$1_option_Option'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) <= 1))))))))))); - - // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:546:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $a_0); - ($IsValid'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''($rsc)))); + // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:903:5+1 + assume {:print "$at(2,41923,41924)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($addr#$signer($t0)); - // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:546:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $a_0); - ($IsValid'$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin''($rsc)))); + // assume WellFormed($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:903:5+1 + assume $IsValid'address'($t1); - // assume exists>(0x0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:546:5+1 - assume $ResourceExists($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, 0); + // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:903:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); + (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; + (var j := $i_4; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); - // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:546:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, $a_0); - ($IsValid'$1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin''($rsc)))); + // assume Identical($t3, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:504:9+65 + assume {:print "$at(3,22754,22819)"} true; + assume ($t3 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); - // assume exists>(0x0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:546:5+1 - assume $ResourceExists($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, 0); + // @47 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:903:5+1 + assume {:print "$at(2,41923,41924)"} true; + $1_vesting_VestingContract_$memory#47 := $1_vesting_VestingContract_$memory; - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:546:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_chain_status_GenesisEndMarker_$memory, $a_0)}(var $rsc := $ResourceValue($1_chain_status_GenesisEndMarker_$memory, $a_0); - ($IsValid'$1_chain_status_GenesisEndMarker'($rsc)))); + // trace_local[admin]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:903:5+1 + assume {:print "$track_local(59,12,0):", $t0} $t0 == $t0; - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:546:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_timestamp_CurrentTimeMicroseconds_$memory, $a_0)}(var $rsc := $ResourceValue($1_timestamp_CurrentTimeMicroseconds_$memory, $a_0); - ($IsValid'$1_timestamp_CurrentTimeMicroseconds'($rsc)))); + // trace_local[contract_address]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:903:5+1 + assume {:print "$track_local(59,12,1):", $t1} $t1 == $t1; - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:546:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_stake_StakePool_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_StakePool_$memory, $a_0); - ($IsValid'$1_stake_StakePool'($rsc)))); + // $t4 := borrow_global($t1) on_abort goto L2 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:904:32+17 + assume {:print "$at(2,42070,42087)"} true; + if (!$ResourceExists($1_vesting_VestingContract_$memory, $t1)) { + call $ExecFailureAbort(); + } else { + $t4 := $Mutation($Global($t1), EmptyVec(), $ResourceValue($1_vesting_VestingContract_$memory, $t1)); + } + if ($abort_flag) { + assume {:print "$at(2,42070,42087)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(59,12):", $t5} $t5 == $t5; + goto L2; + } - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:546:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorConfig_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorConfig_$memory, $a_0); - ($IsValid'$1_stake_ValidatorConfig'($rsc)))); + // trace_local[vesting_contract]($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:904:13+16 + $temp_0'$1_vesting_VestingContract' := $Dereference($t4); + assume {:print "$track_local(59,12,2):", $temp_0'$1_vesting_VestingContract'} $temp_0'$1_vesting_VestingContract' == $temp_0'$1_vesting_VestingContract'; - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:546:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorPerformance_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorPerformance_$memory, $a_0); - ($IsValid'$1_stake_ValidatorPerformance'($rsc)))); + // $t6 := read_ref($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:905:21+25 + assume {:print "$at(2,42144,42169)"} true; + $t6 := $Dereference($t4); - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:546:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorSet_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorSet_$memory, $a_0); - ($IsValid'$1_stake_ValidatorSet'($rsc)))); + // vesting::verify_admin($t0, $t6) on_abort goto L2 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:905:9+37 + call $1_vesting_verify_admin($t0, $t6); + if ($abort_flag) { + assume {:print "$at(2,42132,42169)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(59,12):", $t5} $t5 == $t5; + goto L2; + } - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:546:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_reconfiguration_Configuration_$memory, $a_0)}(var $rsc := $ResourceValue($1_reconfiguration_Configuration_$memory, $a_0); - ($IsValid'$1_reconfiguration_Configuration'($rsc)))); + // $t7 := read_ref($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:906:45+16 + assume {:print "$at(2,42215,42231)"} true; + $t7 := $Dereference($t4); - // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), forall $key: select staking_contract::Store.staking_contracts($rsc): And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), i), Index(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:546:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_staking_contract_Store_$memory, $a_0)}(var $rsc := $ResourceValue($1_staking_contract_Store_$memory, $a_0); - (($IsValid'$1_staking_contract_Store'($rsc) && (var $range_1 := $staking_contracts#$1_staking_contract_Store($rsc); (forall $key: int :: ContainsTable($range_1, $EncodeKey'address'($key)) ==> (((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), addr)))) && (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))))); (var $range_3 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))))); (forall $i_4: int, $i_5: int :: $InRange($range_2, $i_4) ==> $InRange($range_3, $i_5) ==> (var i := $i_4; - (var j := $i_5; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), i), ReadVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), j)) ==> $IsEqual'num'(i, j)))))))))))))))); + // assert forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t4)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t4)), addr)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 + // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 + assume {:print "$at(66,538,673)"} true; + assert {:msg "assert_failed(66,538,673): data invariant does not hold"} + (forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t4))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t4))), addr)))); - // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:546:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); - (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; - (var j := $i_4; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); + // assert forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t4)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t4)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t4)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t4)), j)), Eq(i, j)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 + // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 + assume {:print "$at(66,738,867)"} true; + assert {:msg "assert_failed(66,738,867): data invariant does not hold"} + (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t4))))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t4))))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; + (var j := $i_3; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t4))), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t4))), j)) ==> $IsEqual'num'(i, j)))))))); - // assume Implies(chain_status::$is_operating(), exists(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:546:5+437 - // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.spec.move:4:9+93 - assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory, 1)); + // $t8 := vesting::get_vesting_account_signer_internal($t7) on_abort goto L2 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:906:9+53 + assume {:print "$at(2,42179,42232)"} true; + call $t8 := $1_vesting_get_vesting_account_signer_internal($t7); + if ($abort_flag) { + assume {:print "$at(2,42179,42232)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(59,12):", $t5} $t5 == $t5; + goto L2; + } - // assume Implies(exists(0x1), stake::validator_set_is_valid()) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:546:5+437 - // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:8:9+92 - assume ($ResourceExists($1_stake_ValidatorSet_$memory, 1) ==> $1_stake_validator_set_is_valid($1_stake_StakePool_$memory, $1_stake_ValidatorConfig_$memory, $1_stake_ValidatorPerformance_$memory, $1_stake_ValidatorSet_$memory)); + // trace_return[0]($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:906:9+53 + assume {:print "$track_return(59,12,0):", $t8} $t8 == $t8; - // assume Implies(chain_status::$is_operating(), exists(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:546:5+437 - // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:12:9+96 - assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_stake_ValidatorSet_$memory, 1)); + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:907:5+1 + assume {:print "$at(2,42237,42238)"} true; +L1: - // assume Implies(chain_status::$is_operating(), Ge(timestamp::spec_now_microseconds(), reconfiguration::$last_reconfiguration_time())) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:546:5+437 - // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/reconfiguration.spec.move:8:9+137 - assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> ($1_timestamp_spec_now_microseconds($1_timestamp_CurrentTimeMicroseconds_$memory) >= $1_reconfiguration_$last_reconfiguration_time($1_reconfiguration_Configuration_$memory))); + // assert Not(Not(exists[@47]($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:503:9+53 + assume {:print "$at(3,22692,22745)"} true; + assert {:msg "assert_failed(3,22692,22745): function does not abort under this condition"} + !!$ResourceExists($1_vesting_VestingContract_$memory#47, $t1); - // assume forall i: Range(0, Len
($t0)): And(Ge(select staking_contract::StakingContract.commission_percentage(simple_map::spec_get(select staking_contract::Store.staking_contracts(global(Index($t0, i))), select vesting::StakingInfo.operator(select vesting::VestingContract.staking(global(Index($t0, i)))))), 0), Le(select staking_contract::StakingContract.commission_percentage(simple_map::spec_get(select staking_contract::Store.staking_contracts(global(Index($t0, i))), select vesting::StakingInfo.operator(select vesting::VestingContract.staking(global(Index($t0, i)))))), 100)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:203:9+440 - assume {:print "$at(3,9064,9504)"} true; - assume (var $range_0 := $Range(0, LenVec($t0)); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var i := $i_1; - ((($commission_percentage#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, ReadVec($t0, i))), $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($ResourceValue($1_vesting_VestingContract_$memory, ReadVec($t0, i)))))) >= 0) && ($commission_percentage#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, ReadVec($t0, i))), $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($ResourceValue($1_vesting_VestingContract_$memory, ReadVec($t0, i)))))) <= 100)))))); + // assert Not(Neq
(signer::$address_of[]($t0), select vesting::VestingContract.admin($t3))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:505:9+62 + assume {:print "$at(3,22828,22890)"} true; + assert {:msg "assert_failed(3,22828,22890): function does not abort under this condition"} + !!$IsEqual'address'($1_signer_$address_of($t0), $admin#$1_vesting_VestingContract($t3)); - // trace_local[contract_addresses]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:546:5+1 - assume {:print "$at(2,25990,25991)"} true; - assume {:print "$track_local(57,29,0):", $t0} $t0 == $t0; + // return $t8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:505:9+62 + $ret0 := $t8; + return; - // $t4 := vector::length
($t0) on_abort goto L9 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:547:19+35 - assume {:print "$at(2,26109,26144)"} true; - call $t4 := $1_vector_length'address'($t0); - if ($abort_flag) { - assume {:print "$at(2,26109,26144)"} true; - $t5 := $abort_code; - assume {:print "$track_abort(57,29):", $t5} $t5 == $t5; - goto L9; - } + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:907:5+1 + assume {:print "$at(2,42237,42238)"} true; +L2: - // $t6 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:549:24+1 - assume {:print "$at(2,26170,26171)"} true; - $t6 := 0; - assume $IsValid'u64'($t6); + // assert Or(Not(exists[@47]($t1)), Neq
(signer::$address_of[]($t0), select vesting::VestingContract.admin($t3))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:364:5+127 + assume {:print "$at(3,15864,15991)"} true; + assert {:msg "assert_failed(3,15864,15991): abort not covered by any of the `aborts_if` clauses"} + (!$ResourceExists($1_vesting_VestingContract_$memory#47, $t1) || !$IsEqual'address'($1_signer_$address_of($t0), $admin#$1_vesting_VestingContract($t3))); - // $t7 := !=($t4, $t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:549:21+2 - $t7 := !$IsEqual'u64'($t4, $t6); + // abort($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:364:5+127 + $abort_code := $t5; + $abort_flag := true; + return; - // if ($t7) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:549:9+72 - if ($t7) { goto L1; } else { goto L0; } +} - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:549:9+72 -L1: +// fun vesting::get_vesting_account_signer_internal [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:909:5+168 +procedure {:inline 1} $1_vesting_get_vesting_account_signer_internal(_$t0: $1_vesting_VestingContract) returns ($ret0: $signer) +{ + // declare local variables + var $t1: $1_account_SignerCapability; + var $t2: int; + var $t3: $signer; + var $t4: int; + var $t0: $1_vesting_VestingContract; + var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; + var $temp_0'signer': $signer; + $t0 := _$t0; - // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:549:9+72 - assume {:print "$at(2,26155,26227)"} true; - goto L2; + // bytecode translation starts here + // trace_local[vesting_contract]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:909:5+1 + assume {:print "$at(2,42244,42245)"} true; + assume {:print "$track_local(59,13,0):", $t0} $t0 == $t0; - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:549:51+28 -L0: + // $t1 := get_field.signer_cap($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:910:48+28 + assume {:print "$at(2,42377,42405)"} true; + $t1 := $signer_cap#$1_vesting_VestingContract($t0); - // $t8 := 16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:549:51+28 - assume {:print "$at(2,26197,26225)"} true; - $t8 := 16; - assume $IsValid'u64'($t8); + // assume Identical($t2, select account::SignerCapability.account($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:475:9+30 + assume {:print "$at(80,22873,22903)"} true; + assume ($t2 == $account#$1_account_SignerCapability($t1)); - // $t9 := error::invalid_argument($t8) on_abort goto L9 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:549:27+53 - call $t9 := $1_error_invalid_argument($t8); + // $t3 := account::create_signer_with_capability($t1) on_abort goto L2 with $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:910:9+68 + assume {:print "$at(2,42338,42406)"} true; + call $t3 := $1_account_create_signer_with_capability($t1); if ($abort_flag) { - assume {:print "$at(2,26173,26226)"} true; - $t5 := $abort_code; - assume {:print "$track_abort(57,29):", $t5} $t5 == $t5; - goto L9; + assume {:print "$at(2,42338,42406)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(59,13):", $t4} $t4 == $t4; + goto L2; } - // trace_abort($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:549:9+72 - assume {:print "$at(2,26155,26227)"} true; - assume {:print "$track_abort(57,29):", $t9} $t9 == $t9; + // trace_return[0]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:910:9+68 + assume {:print "$track_return(59,13,0):", $t3} $t3 == $t3; - // $t5 := move($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:549:9+72 - $t5 := $t9; + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:911:5+1 + assume {:print "$at(2,42411,42412)"} true; +L1: - // goto L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:549:9+72 - goto L9; + // return $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:911:5+1 + assume {:print "$at(2,42411,42412)"} true; + $ret0 := $t3; + return; - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:551:30+19 - assume {:print "$at(2,26259,26278)"} true; + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:911:5+1 L2: - // trace_local[v#256]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:551:9+182 - assume {:print "$at(2,26238,26420)"} true; - assume {:print "$track_local(57,29,3):", $t0} $t0 == $t0; + // abort($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:911:5+1 + assume {:print "$at(2,42411,42412)"} true; + $abort_code := $t4; + $abort_flag := true; + return; - // $t10 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:261:17+1 - assume {:print "$at(18,9246,9247)"} true; - $t10 := 0; - assume $IsValid'u64'($t10); +} - // trace_local[i#258]($t10) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:261:13+1 - assume {:print "$track_local(57,29,1):", $t10} $t10 == $t10; +// fun vesting::get_vesting_account_signer_internal [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:909:5+168 +procedure {:timeLimit 900} $1_vesting_get_vesting_account_signer_internal$verify(_$t0: $1_vesting_VestingContract) returns ($ret0: $signer) +{ + // declare local variables + var $t1: $1_account_SignerCapability; + var $t2: int; + var $t3: $signer; + var $t4: int; + var $t0: $1_vesting_VestingContract; + var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; + var $temp_0'signer': $signer; + $t0 := _$t0; - // $t11 := vector::length
($t0) on_abort goto L9 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:262:19+9 - assume {:print "$at(18,9267,9276)"} true; - call $t11 := $1_vector_length'address'($t0); - if ($abort_flag) { - assume {:print "$at(18,9267,9276)"} true; - $t5 := $abort_code; - assume {:print "$track_abort(57,29):", $t5} $t5 == $t5; - goto L9; - } + // verification entrypoint assumptions + call $InitVerification(); - // trace_local[len#259]($t11) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:262:13+3 - assume {:print "$track_local(57,29,2):", $t11} $t11 == $t11; + // bytecode translation starts here + // assume And(WellFormed($t0), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t0)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t0)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t0)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t0)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t0)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t0)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:909:5+1 + assume {:print "$at(2,42244,42245)"} true; + assume ($IsValid'$1_vesting_VestingContract'($t0) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t0)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t0)), addr)))) && (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t0)))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t0)))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; + (var j := $i_3; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t0)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t0)), j)) ==> $IsEqual'num'(i, j)))))))))); - // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume {:print "$at(18,9293,9294)"} true; -L6: + // trace_local[vesting_contract]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:909:5+1 + assume {:print "$track_local(59,13,0):", $t0} $t0 == $t0; - // $t1 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume {:print "$at(18,9293,9294)"} true; - havoc $t1; + // $t1 := get_field.signer_cap($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:910:48+28 + assume {:print "$at(2,42377,42405)"} true; + $t1 := $signer_cap#$1_vesting_VestingContract($t0); - // assume WellFormed($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume $IsValid'u64'($t1); + // assume Identical($t2, select account::SignerCapability.account($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:475:9+30 + assume {:print "$at(80,22873,22903)"} true; + assume ($t2 == $account#$1_account_SignerCapability($t1)); - // $t12 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - havoc $t12; + // $t3 := account::create_signer_with_capability($t1) on_abort goto L2 with $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:910:9+68 + assume {:print "$at(2,42338,42406)"} true; + call $t3 := $1_account_create_signer_with_capability($t1); + if ($abort_flag) { + assume {:print "$at(2,42338,42406)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(59,13):", $t4} $t4 == $t4; + goto L2; + } - // assume WellFormed($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume $IsValid'bool'($t12); + // trace_return[0]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:910:9+68 + assume {:print "$track_return(59,13,0):", $t3} $t3 == $t3; - // $t13 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - havoc $t13; + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:911:5+1 + assume {:print "$at(2,42411,42412)"} true; +L1: - // assume WellFormed($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume $IsValid'address'($t13); + // assert Not(false) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:369:9+16 + assume {:print "$at(3,16092,16108)"} true; + assert {:msg "assert_failed(3,16092,16108): function does not abort under this condition"} + !false; - // $t14 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - havoc $t14; + // return $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:369:9+16 + $ret0 := $t3; + return; - // assume WellFormed($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume $IsValid'u64'($t14); + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:911:5+1 + assume {:print "$at(2,42411,42412)"} true; +L2: - // $t15 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - havoc $t15; + // assert false at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:368:5+117 + assume {:print "$at(3,15997,16114)"} true; + assert {:msg "assert_failed(3,15997,16114): abort not covered by any of the `aborts_if` clauses"} + false; - // assume WellFormed($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume $IsValid'u64'($t15); + // abort($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:368:5+117 + $abort_code := $t4; + $abort_flag := true; + return; - // trace_local[i#258]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume {:print "$info(): enter loop, variable(s) i#258 havocked and reassigned"} true; - assume {:print "$track_local(57,29,1):", $t1} $t1 == $t1; +} - // assume Not(AbortFlag()) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume !$abort_flag; +// fun vesting::operator_commission_percentage [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:302:5+275 +procedure {:timeLimit 900} $1_vesting_operator_commission_percentage$verify(_$t0: int) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: $1_vesting_VestingContract; + var $t3: $1_vesting_StakingInfo; + var $t4: int; + var $t0: int; + var $temp_0'address': int; + var $temp_0'u64': int; + var $1_vesting_VestingContract_$memory#41: $Memory $1_vesting_VestingContract; + $t0 := _$t0; - // $t12 := <($t1, $t11) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:18+1 - call $t12 := $Lt($t1, $t11); + // verification entrypoint assumptions + call $InitVerification(); - // if ($t12) goto L4 else goto L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:9+78 - if ($t12) { goto L4; } else { goto L3; } + // bytecode translation starts here + // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:302:5+1 + assume {:print "$at(2,14085,14086)"} true; + assume $IsValid'address'($t0); - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:9+78 -L4: + // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:302:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); + (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; + (var j := $i_4; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); - // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:264:22+1 - assume {:print "$at(18,9325,9326)"} true; -L5: + // @41 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:302:5+1 + $1_vesting_VestingContract_$memory#41 := $1_vesting_VestingContract_$memory; + + // trace_local[vesting_contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:302:5+1 + assume {:print "$track_local(59,15,0):", $t0} $t0 == $t0; - // $t13 := vector::borrow
($t0, $t1) on_abort goto L9 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:264:15+12 - assume {:print "$at(18,9318,9330)"} true; - call $t13 := $1_vector_borrow'address'($t0, $t1); + // vesting::assert_vesting_contract_exists($t0) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:303:9+56 + assume {:print "$at(2,14202,14258)"} true; + call $1_vesting_assert_vesting_contract_exists($t0); if ($abort_flag) { - assume {:print "$at(18,9318,9330)"} true; - $t5 := $abort_code; - assume {:print "$track_abort(57,29):", $t5} $t5 == $t5; - goto L9; + assume {:print "$at(2,14202,14258)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(59,15):", $t1} $t1 == $t1; + goto L2; } - // assume Identical($t16, global($t13)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:161:9+65 - assume {:print "$at(3,7222,7287)"} true; - assume ($t16 == $ResourceValue($1_vesting_VestingContract_$memory, $t13)); - - // assume Identical($t17, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t16))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:162:9+49 - assume {:print "$at(3,7296,7345)"} true; - assume ($t17 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t16))); - - // assume Identical($t18, select staking_contract::Store.staking_contracts(global($t13))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:163:9+92 - assume {:print "$at(3,7354,7446)"} true; - assume ($t18 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t13))); - - // assume Identical($t19, simple_map::spec_get($t18, $t17)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:164:9+73 - assume {:print "$at(3,7455,7528)"} true; - assume ($t19 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($t18, $t17)); - - // assume Identical($t20, select staking_contract::StakingContract.pool_address($t19)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:165:9+49 - assume {:print "$at(3,7537,7586)"} true; - assume ($t20 == $pool_address#$1_staking_contract_StakingContract($t19)); - - // assume Identical($t21, global($t20)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:166:9+56 - assume {:print "$at(3,7595,7651)"} true; - assume ($t21 == $ResourceValue($1_stake_StakePool_$memory, $t20)); - - // assume Identical($t22, coin::$value(select stake::StakePool.active($t21))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:167:9+44 - assume {:print "$at(3,7660,7704)"} true; - assume ($t22 == $1_coin_$value'$1_aptos_coin_AptosCoin'($active#$1_stake_StakePool($t21))); - - // assume Identical($t23, coin::$value(select stake::StakePool.pending_active($t21))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:168:9+60 - assume {:print "$at(3,7713,7773)"} true; - assume ($t23 == $1_coin_$value'$1_aptos_coin_AptosCoin'($pending_active#$1_stake_StakePool($t21))); + // $t2 := get_global($t0) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:304:9+13 + assume {:print "$at(2,14268,14281)"} true; + if (!$ResourceExists($1_vesting_VestingContract_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t2 := $ResourceValue($1_vesting_VestingContract_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(2,14268,14281)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(59,15):", $t1} $t1 == $t1; + goto L2; + } - // assume Identical($t24, Add($t22, $t23)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:169:9+49 - assume {:print "$at(3,7782,7831)"} true; - assume ($t24 == ($t22 + $t23)); + // $t3 := get_field.staking($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:304:9+64 + $t3 := $staking#$1_vesting_VestingContract($t2); - // assume Identical($t25, Sub($t24, select staking_contract::StakingContract.principal($t19))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:170:9+74 - assume {:print "$at(3,7840,7914)"} true; - assume ($t25 == ($t24 - $principal#$1_staking_contract_StakingContract($t19))); + // $t4 := get_field.commission_percentage($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:304:9+86 + $t4 := $commission_percentage#$1_vesting_StakingInfo($t3); - // assume Identical($t26, Div(Mul($t25, select staking_contract::StakingContract.commission_percentage($t19)), 100)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:171:9+91 - assume {:print "$at(3,7923,8014)"} true; - assume ($t26 == (($t25 * $commission_percentage#$1_staking_contract_StakingContract($t19)) div 100)); + // trace_return[0]($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:304:9+86 + assume {:print "$track_return(59,15,0):", $t4} $t4 == $t4; - // assume Identical($t27, Sub(Sub($t24, select vesting::VestingContract.remaining_grant($t16)), $t26)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:172:9+87 - assume {:print "$at(3,8023,8110)"} true; - assume ($t27 == (($t24 - $remaining_grant#$1_vesting_VestingContract($t16)) - $t26)); + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:305:5+1 + assume {:print "$at(2,14359,14360)"} true; +L1: - // assume Identical($t28, global($t13)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:59:9+73 - assume {:print "$at(3,2072,2145)"} true; - assume ($t28 == $ResourceValue($1_vesting_VestingContract_$memory, $t13)); + // assert Not(Not(exists[@41]($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:28:9+61 + assume {:print "$at(3,970,1031)"} true; + assert {:msg "assert_failed(3,970,1031): function does not abort under this condition"} + !!$ResourceExists($1_vesting_VestingContract_$memory#41, $t0); - // assume Identical($t29, $t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:61:9+38 - assume {:print "$at(3,2155,2193)"} true; - assume ($t29 == $t13); + // return $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:28:9+61 + $ret0 := $t4; + return; - // assume Identical($t30, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t28))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:62:9+49 - assume {:print "$at(3,2202,2251)"} true; - assume ($t30 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t28))); + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:305:5+1 + assume {:print "$at(2,14359,14360)"} true; +L2: - // assume Identical($t31, select staking_contract::Store.staking_contracts(global($t29))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:63:9+82 - assume {:print "$at(3,2260,2342)"} true; - assume ($t31 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t29))); + // assert Not(exists[@41]($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:27:5+153 + assume {:print "$at(3,884,1037)"} true; + assert {:msg "assert_failed(3,884,1037): abort not covered by any of the `aborts_if` clauses"} + !$ResourceExists($1_vesting_VestingContract_$memory#41, $t0); - // assume Identical($t32, simple_map::spec_get($t31, $t30)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:64:9+73 - assume {:print "$at(3,2351,2424)"} true; - assume ($t32 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($t31, $t30)); + // abort($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:27:5+153 + $abort_code := $t1; + $abort_flag := true; + return; - // assume Identical($t33, select staking_contract::StakingContract.pool_address($t32)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:69:9+49 - assume {:print "$at(3,2574,2623)"} true; - assume ($t33 == $pool_address#$1_staking_contract_StakingContract($t32)); +} - // assume Identical($t34, global($t33)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:70:9+56 - assume {:print "$at(3,2632,2688)"} true; - assume ($t34 == $ResourceValue($1_stake_StakePool_$memory, $t33)); +// fun vesting::period_duration_secs [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:271:5+268 +procedure {:timeLimit 900} $1_vesting_period_duration_secs$verify(_$t0: int) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: $1_vesting_VestingContract; + var $t3: $1_vesting_VestingSchedule; + var $t4: int; + var $t0: int; + var $temp_0'address': int; + var $temp_0'u64': int; + var $1_vesting_VestingContract_$memory#40: $Memory $1_vesting_VestingContract; + $t0 := _$t0; - // assume Identical($t35, coin::$value(select stake::StakePool.active($t34))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:71:9+44 - assume {:print "$at(3,2697,2741)"} true; - assume ($t35 == $1_coin_$value'$1_aptos_coin_AptosCoin'($active#$1_stake_StakePool($t34))); + // verification entrypoint assumptions + call $InitVerification(); - // assume Identical($t36, coin::$value(select stake::StakePool.pending_active($t34))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:72:9+60 - assume {:print "$at(3,2750,2810)"} true; - assume ($t36 == $1_coin_$value'$1_aptos_coin_AptosCoin'($pending_active#$1_stake_StakePool($t34))); + // bytecode translation starts here + // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:271:5+1 + assume {:print "$at(2,12272,12273)"} true; + assume $IsValid'address'($t0); - // assume Identical($t37, Add($t35, $t36)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:73:9+49 - assume {:print "$at(3,2819,2868)"} true; - assume ($t37 == ($t35 + $t36)); + // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:271:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); + (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; + (var j := $i_4; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); - // assume Identical($t38, Sub($t37, select staking_contract::StakingContract.principal($t32))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:74:9+74 - assume {:print "$at(3,2877,2951)"} true; - assume ($t38 == ($t37 - $principal#$1_staking_contract_StakingContract($t32))); + // @40 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:271:5+1 + $1_vesting_VestingContract_$memory#40 := $1_vesting_VestingContract_$memory; - // assume Identical($t39, Div(Mul($t38, select staking_contract::StakingContract.commission_percentage($t32)), 100)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:75:9+91 - assume {:print "$at(3,2960,3051)"} true; - assume ($t39 == (($t38 * $commission_percentage#$1_staking_contract_StakingContract($t32)) div 100)); + // trace_local[vesting_contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:271:5+1 + assume {:print "$track_local(59,16,0):", $t0} $t0 == $t0; - // assume Identical($t40, global($t13)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:518:9+65 - assume {:print "$at(3,23036,23101)"} true; - assume ($t40 == $ResourceValue($1_vesting_VestingContract_$memory, $t13)); + // vesting::assert_vesting_contract_exists($t0) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:272:9+56 + assume {:print "$at(2,12379,12435)"} true; + call $1_vesting_assert_vesting_contract_exists($t0); + if ($abort_flag) { + assume {:print "$at(2,12379,12435)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(59,16):", $t1} $t1 == $t1; + goto L2; + } - // assume Identical($t41, select account::SignerCapability.account(select vesting::VestingContract.signer_cap($t40))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:434:9+46 - assume {:print "$at(3,18724,18770)"} true; - assume ($t41 == $account#$1_account_SignerCapability($signer_cap#$1_vesting_VestingContract($t40))); + // $t2 := get_global($t0) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:273:9+13 + assume {:print "$at(2,12445,12458)"} true; + if (!$ResourceExists($1_vesting_VestingContract_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t2 := $ResourceValue($1_vesting_VestingContract_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(2,12445,12458)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(59,16):", $t1} $t1 == $t1; + goto L2; + } - // assume Identical($t42, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t40))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:435:9+49 - assume {:print "$at(3,18779,18828)"} true; - assume ($t42 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t40))); + // $t3 := get_field.vesting_schedule($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:273:9+73 + $t3 := $vesting_schedule#$1_vesting_VestingContract($t2); - // assume Identical($t43, global($t41)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:439:9+49 - assume {:print "$at(3,18996,19045)"} true; - assume ($t43 == $ResourceValue($1_staking_contract_Store_$memory, $t41)); + // $t4 := get_field.period_duration($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:273:9+89 + $t4 := $period_duration#$1_vesting_VestingSchedule($t3); - // assume Identical($t44, simple_map::spec_get(select staking_contract::Store.staking_contracts($t43), $t42)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:440:9+79 - assume {:print "$at(3,19054,19133)"} true; - assume ($t44 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($t43), $t42)); + // trace_return[0]($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:273:9+89 + assume {:print "$track_return(59,16,0):", $t4} $t4 == $t4; - // assume Identical($t45, select staking_contract::Store.staking_contracts(global($t41))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 - assume {:print "$at(134,11481,11545)"} true; - assume ($t45 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t41))); + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:274:5+1 + assume {:print "$at(2,12539,12540)"} true; +L1: - // assume Identical($t46, select staking_contract::StakingContract.pool_address($t44)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:470:9+49 - assume {:print "$at(3,20547,20596)"} true; - assume ($t46 == $pool_address#$1_staking_contract_StakingContract($t44)); + // assert Not(Not(exists[@40]($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:16:9+61 + assume {:print "$at(3,501,562)"} true; + assert {:msg "assert_failed(3,501,562): function does not abort under this condition"} + !!$ResourceExists($1_vesting_VestingContract_$memory#40, $t0); - // assume Identical($t47, global($t46)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:472:9+56 - assume {:print "$at(3,20664,20720)"} true; - assume ($t47 == $ResourceValue($1_stake_StakePool_$memory, $t46)); + // return $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:16:9+61 + $ret0 := $t4; + return; - // assume Identical($t48, select coin::Coin.value(select stake::StakePool.inactive($t47))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:473:9+41 - assume {:print "$at(3,20729,20770)"} true; - assume ($t48 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t47))); + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:274:5+1 + assume {:print "$at(2,12539,12540)"} true; +L2: - // assume Identical($t49, select coin::Coin.value(select stake::StakePool.pending_inactive($t47))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:474:9+57 - assume {:print "$at(3,20779,20836)"} true; - assume ($t49 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t47))); + // assert Not(exists[@40]($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:15:5+143 + assume {:print "$at(3,425,568)"} true; + assert {:msg "assert_failed(3,425,568): abort not covered by any of the `aborts_if` clauses"} + !$ResourceExists($1_vesting_VestingContract_$memory#40, $t0); - // assume Identical($t50, Add($t48, $t49)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:478:9+63 - assume {:print "$at(3,20948,21011)"} true; - assume ($t50 == ($t48 + $t49)); + // abort($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:15:5+143 + $abort_code := $t1; + $abort_flag := true; + return; - // assume Identical($t51, select stake::OwnerCapability.pool_address(select staking_contract::StakingContract.owner_cap($t44))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:479:9+61 - assume {:print "$at(3,21020,21081)"} true; - assume ($t51 == $pool_address#$1_stake_OwnerCapability($owner_cap#$1_staking_contract_StakingContract($t44))); +} - // assume Identical($t52, global($t51)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:481:9+60 - assume {:print "$at(3,21151,21211)"} true; - assume ($t52 == $ResourceValue($1_stake_StakePool_$memory, $t51)); +// fun vesting::remaining_grant [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:283:5+246 +procedure {:timeLimit 900} $1_vesting_remaining_grant$verify(_$t0: int) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: $1_vesting_VestingContract; + var $t3: int; + var $t0: int; + var $temp_0'address': int; + var $temp_0'u64': int; + var $1_vesting_VestingContract_$memory#39: $Memory $1_vesting_VestingContract; + $t0 := _$t0; - // assume Identical($t53, global(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:483:9+66 - assume {:print "$at(3,21286,21352)"} true; - assume ($t53 == $ResourceValue($1_stake_ValidatorSet_$memory, 1)); + // verification entrypoint assumptions + call $InitVerification(); - // assume Identical($t54, And(And(Not(stake::spec_contains(select stake::ValidatorSet.pending_active($t53), $t51)), Not(stake::spec_contains(select stake::ValidatorSet.active_validators($t53), $t51))), Not(stake::spec_contains(select stake::ValidatorSet.pending_inactive($t53), $t51)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:484:9+260 - assume {:print "$at(3,21361,21621)"} true; - assume ($t54 == ((!$1_stake_spec_contains($pending_active#$1_stake_ValidatorSet($t53), $t51) && !$1_stake_spec_contains($active_validators#$1_stake_ValidatorSet($t53), $t51)) && !$1_stake_spec_contains($pending_inactive#$1_stake_ValidatorSet($t53), $t51))); + // bytecode translation starts here + // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:283:5+1 + assume {:print "$at(2,13028,13029)"} true; + assume $IsValid'address'($t0); - // assume Identical($t55, select coin::Coin.value(select stake::StakePool.inactive($t52))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:487:9+45 - assume {:print "$at(3,21630,21675)"} true; - assume ($t55 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t52))); + // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:283:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); + (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; + (var j := $i_4; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); - // assume Identical($t56, select coin::Coin.value(select stake::StakePool.pending_inactive($t52))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:488:9+61 - assume {:print "$at(3,21684,21745)"} true; - assume ($t56 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t52))); + // @39 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:283:5+1 + $1_vesting_VestingContract_$memory#39 := $1_vesting_VestingContract_$memory; - // assume Identical($t57, Add($t55, $t56)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:489:9+53 - assume {:print "$at(3,21754,21807)"} true; - assume ($t57 == ($t55 + $t56)); + // trace_local[vesting_contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:283:5+1 + assume {:print "$track_local(59,17,0):", $t0} $t0 == $t0; - // assert And(Ge(select staking_contract::StakingContract.commission_percentage($t32), 0), Le(select staking_contract::StakingContract.commission_percentage($t32), 100)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:56:9+102 - assume {:print "$at(3,1852,1954)"} true; - assert {:msg "assert_failed(3,1852,1954): precondition does not hold at this call"} - (($commission_percentage#$1_staking_contract_StakingContract($t32) >= 0) && ($commission_percentage#$1_staking_contract_StakingContract($t32) <= 100)); - - // vesting::unlock_rewards($t13) on_abort goto L9 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:553:13+32 - assume {:print "$at(2,26376,26408)"} true; - call $1_vesting_unlock_rewards($t13); + // vesting::assert_vesting_contract_exists($t0) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:284:9+56 + assume {:print "$at(2,13130,13186)"} true; + call $1_vesting_assert_vesting_contract_exists($t0); if ($abort_flag) { - assume {:print "$at(2,26376,26408)"} true; - $t5 := $abort_code; - assume {:print "$track_abort(57,29):", $t5} $t5 == $t5; - goto L9; + assume {:print "$at(2,13130,13186)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(59,17):", $t1} $t1 == $t1; + goto L2; + } + + // $t2 := get_global($t0) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:285:9+13 + assume {:print "$at(2,13196,13209)"} true; + if (!$ResourceExists($1_vesting_VestingContract_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t2 := $ResourceValue($1_vesting_VestingContract_$memory, $t0); } - - // $t14 := 1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:265:21+1 - assume {:print "$at(18,9353,9354)"} true; - $t14 := 1; - assume $IsValid'u64'($t14); - - // $t15 := +($t1, $t14) on_abort goto L9 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:265:19+1 - call $t15 := $AddU64($t1, $t14); if ($abort_flag) { - assume {:print "$at(18,9351,9352)"} true; - $t5 := $abort_code; - assume {:print "$track_abort(57,29):", $t5} $t5 == $t5; - goto L9; + assume {:print "$at(2,13196,13209)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(59,17):", $t1} $t1 == $t1; + goto L2; } - // trace_local[i#258]($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:265:13+1 - assume {:print "$track_local(57,29,1):", $t15} $t15 == $t15; - - // goto L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:265:13+9 - goto L7; + // $t3 := get_field.remaining_grant($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:285:9+72 + $t3 := $remaining_grant#$1_vesting_VestingContract($t2); - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:554:11+1 - assume {:print "$at(2,26420,26421)"} true; -L3: + // trace_return[0]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:285:9+72 + assume {:print "$track_return(59,17,0):", $t3} $t3 == $t3; - // goto L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:554:11+1 - assume {:print "$at(2,26420,26421)"} true; - goto L8; + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:286:5+1 + assume {:print "$at(2,13273,13274)"} true; +L1: - // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:554:11+1 - // Loop invariant checking block for the loop started with header: L6 -L7: + // assert Not(Not(exists[@39]($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:20:9+61 + assume {:print "$at(3,645,706)"} true; + assert {:msg "assert_failed(3,645,706): function does not abort under this condition"} + !!$ResourceExists($1_vesting_VestingContract_$memory#39, $t0); - // stop() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:554:11+1 - assume {:print "$at(2,26420,26421)"} true; - assume false; + // return $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:20:9+61 + $ret0 := $t3; return; - // label L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:555:5+1 - assume {:print "$at(2,26426,26427)"} true; -L8: - - // assert Not(Eq(Len
($t0), 0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:180:9+39 - assume {:print "$at(3,8355,8394)"} true; - assert {:msg "assert_failed(3,8355,8394): function does not abort under this condition"} - !$IsEqual'num'(LenVec($t0), 0); - - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:180:9+39 - return; + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:286:5+1 + assume {:print "$at(2,13273,13274)"} true; +L2: - // label L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:555:5+1 - assume {:print "$at(2,26426,26427)"} true; -L9: + // assert Not(exists[@39]($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:19:5+138 + assume {:print "$at(3,574,712)"} true; + assert {:msg "assert_failed(3,574,712): abort not covered by any of the `aborts_if` clauses"} + !$ResourceExists($1_vesting_VestingContract_$memory#39, $t0); - // abort($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:555:5+1 - assume {:print "$at(2,26426,26427)"} true; - $abort_code := $t5; + // abort($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:19:5+138 + $abort_code := $t1; $abort_flag := true; return; } -// fun vesting::update_operator [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:727:5+1149 -procedure {:timeLimit 1000} $1_vesting_update_operator$verify(_$t0: $signer, _$t1: int, _$t2: int, _$t3: int) returns () +// fun vesting::reset_beneficiary [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:843:5+755 +procedure {:timeLimit 900} $1_vesting_reset_beneficiary$verify(_$t0: $signer, _$t1: int, _$t2: int) returns () { // declare local variables - var $t4: $signer; - var $t5: $signer; - var $t6: int; + var $t3: bool; + var $t4: int; + var $t5: int; + var $t6: $Mutation (Table int (int)); var $t7: $Mutation ($1_vesting_VestingContract); - var $t8: $1_vesting_VestingContract; - var $t9: int; - var $t10: int; - var $t11: $1_staking_contract_Store; - var $t12: Table int ($1_staking_contract_StakingContract); - var $t13: $1_staking_contract_StakingContract; - var $t14: $1_vesting_VestingContract; - var $t15: Table int ($1_staking_contract_StakingContract); - var $t16: int; - var $t17: $1_stake_StakePool; - var $t18: int; - var $t19: int; - var $t20: int; + var $t8: int; + var $t9: $1_vesting_VestingContract; + var $t10: Table int (int); + var $t11: $1_string_String; + var $t12: $Mutation ($1_vesting_VestingContract); + var $t13: int; + var $t14: int; + var $t15: int; + var $t16: bool; + var $t17: bool; + var $t18: Vec (int); + var $t19: $1_string_String; + var $t20: Table int (int); var $t21: int; - var $t22: $1_stake_StakePool; - var $t23: $1_stake_ValidatorSet; - var $t24: bool; - var $t25: int; - var $t26: int; + var $t22: int; + var $t23: int; + var $t24: $Mutation (Table int (int)); + var $t25: Table int (int); + var $t26: bool; var $t27: int; - var $t28: $Mutation ($1_vesting_VestingContract); - var $t29: int; - var $t30: $1_vesting_VestingContract; - var $t31: $1_vesting_VestingContract; - var $t32: $signer; - var $t33: $1_vesting_StakingInfo; - var $t34: int; - var $t35: int; - var $t36: $1_staking_contract_Store; - var $t37: Table int ($1_staking_contract_StakingContract); - var $t38: Table int ($1_staking_contract_StakingContract); - var $t39: $Mutation ($1_vesting_StakingInfo); - var $t40: $Mutation (int); - var $t41: $Mutation ($1_vesting_StakingInfo); - var $t42: $Mutation (int); - var $t43: $Mutation ($1_event_EventHandle'$1_vesting_UpdateOperatorEvent'); - var $t44: int; - var $t45: $1_vesting_StakingInfo; - var $t46: int; - var $t47: $1_vesting_UpdateOperatorEvent; + var $t28: int; + var $t29: $1_vesting_VestingContract; var $t0: $signer; var $t1: int; var $t2: int; - var $t3: int; + var $temp_0'$1_simple_map_SimpleMap'address_address'': Table int (int); var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; var $temp_0'address': int; var $temp_0'signer': $signer; - var $temp_0'u64': int; - var $1_vesting_VestingContract_$memory#141: $Memory $1_vesting_VestingContract; - var $1_staking_contract_Store_$memory#142: $Memory $1_staking_contract_Store; - var $1_stake_StakePool_$memory#143: $Memory $1_stake_StakePool; - var $1_stake_ValidatorSet_$memory#144: $Memory $1_stake_ValidatorSet; - var $1_timestamp_CurrentTimeMicroseconds_$memory#145: $Memory $1_timestamp_CurrentTimeMicroseconds; + var $1_vesting_VestingContract_$memory#79: $Memory $1_vesting_VestingContract; + var $1_vesting_VestingAccountManagement_$memory#80: $Memory $1_vesting_VestingAccountManagement; $t0 := _$t0; $t1 := _$t1; $t2 := _$t2; - $t3 := _$t3; // verification entrypoint assumptions call $InitVerification(); // bytecode translation starts here - // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:727:5+1 - assume {:print "$at(2,34297,34298)"} true; + // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:843:5+1 + assume {:print "$at(2,39177,39178)"} true; assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($addr#$signer($t0)); - // assume WellFormed($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:727:5+1 + // assume WellFormed($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:843:5+1 assume $IsValid'address'($t1); - // assume WellFormed($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:727:5+1 + // assume WellFormed($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:843:5+1 assume $IsValid'address'($t2); - // assume WellFormed($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:727:5+1 - assume $IsValid'u64'($t3); - - // assume forall $rsc: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: select option::Option.vec(select coin::CoinInfo.supply($rsc)): And(And(And(And(And(Iff(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($elem)), option::$is_none(select optional_aggregator::OptionalAggregator.integer($elem))), Iff(option::$is_some(select optional_aggregator::OptionalAggregator.integer($elem)), option::$is_none(select optional_aggregator::OptionalAggregator.aggregator($elem)))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.integer($elem)), Le(select optional_aggregator::Integer.value(option::$borrow(select optional_aggregator::OptionalAggregator.integer($elem))), select optional_aggregator::Integer.limit(option::$borrow(select optional_aggregator::OptionalAggregator.integer($elem)))))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($elem)), Le(aggregator::spec_aggregator_get_val(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($elem))), aggregator::spec_get_limit(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($elem)))))), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.aggregator($elem))), 1)), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.integer($elem))), 1)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:727:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $a_0); - (($IsValid'$1_coin_CoinInfo'$1_aptos_coin_AptosCoin''($rsc) && ((LenVec($vec#$1_option_Option'$1_optional_aggregator_OptionalAggregator'($supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($rsc))) <= 1) && (var $range_1 := $vec#$1_option_Option'$1_optional_aggregator_OptionalAggregator'($supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($rsc)); (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); - ((((((($1_option_$is_some'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)) <==> $1_option_$is_none'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)) ==> ($value#$1_optional_aggregator_Integer($1_option_$borrow'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) <= $limit#$1_optional_aggregator_Integer($1_option_$borrow'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)))))) && ($1_option_$is_some'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem))) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)))))) && (LenVec($vec#$1_option_Option'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem))) <= 1)) && (LenVec($vec#$1_option_Option'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) <= 1))))))))))); - - // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:727:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $a_0); - ($IsValid'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''($rsc)))); - - // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:727:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $a_0); - ($IsValid'$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin''($rsc)))); - - // assume exists>(0x0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:727:5+1 - assume $ResourceExists($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, 0); - - // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:727:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, $a_0); - ($IsValid'$1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin''($rsc)))); - - // assume exists>(0x0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:727:5+1 - assume $ResourceExists($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, 0); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:727:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_chain_status_GenesisEndMarker_$memory, $a_0)}(var $rsc := $ResourceValue($1_chain_status_GenesisEndMarker_$memory, $a_0); - ($IsValid'$1_chain_status_GenesisEndMarker'($rsc)))); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:727:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_timestamp_CurrentTimeMicroseconds_$memory, $a_0)}(var $rsc := $ResourceValue($1_timestamp_CurrentTimeMicroseconds_$memory, $a_0); - ($IsValid'$1_timestamp_CurrentTimeMicroseconds'($rsc)))); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:727:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_stake_StakePool_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_StakePool_$memory, $a_0); - ($IsValid'$1_stake_StakePool'($rsc)))); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:727:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorConfig_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorConfig_$memory, $a_0); - ($IsValid'$1_stake_ValidatorConfig'($rsc)))); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:727:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorPerformance_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorPerformance_$memory, $a_0); - ($IsValid'$1_stake_ValidatorPerformance'($rsc)))); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:727:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorSet_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorSet_$memory, $a_0); - ($IsValid'$1_stake_ValidatorSet'($rsc)))); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:727:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_reconfiguration_Configuration_$memory, $a_0)}(var $rsc := $ResourceValue($1_reconfiguration_Configuration_$memory, $a_0); - ($IsValid'$1_reconfiguration_Configuration'($rsc)))); - - // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), forall $key: select staking_contract::Store.staking_contracts($rsc): And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), i), Index(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:727:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_staking_contract_Store_$memory, $a_0)}(var $rsc := $ResourceValue($1_staking_contract_Store_$memory, $a_0); - (($IsValid'$1_staking_contract_Store'($rsc) && (var $range_1 := $staking_contracts#$1_staking_contract_Store($rsc); (forall $key: int :: ContainsTable($range_1, $EncodeKey'address'($key)) ==> (((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), addr)))) && (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))))); (var $range_3 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))))); (forall $i_4: int, $i_5: int :: $InRange($range_2, $i_4) ==> $InRange($range_3, $i_5) ==> (var i := $i_4; - (var j := $i_5; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), i), ReadVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), j)) ==> $IsEqual'num'(i, j)))))))))))))))); + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:843:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingAccountManagement_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingAccountManagement_$memory, $a_0); + ($IsValid'$1_vesting_VestingAccountManagement'($rsc)))); - // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:727:5+1 + // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:843:5+1 assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; (var j := $i_4; (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); - // assume Implies(chain_status::$is_operating(), exists(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:727:5+1149 - // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.spec.move:4:9+93 - assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory, 1)); - - // assume Implies(exists(0x1), stake::validator_set_is_valid()) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:727:5+1149 - // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:8:9+92 - assume ($ResourceExists($1_stake_ValidatorSet_$memory, 1) ==> $1_stake_validator_set_is_valid($1_stake_StakePool_$memory, $1_stake_ValidatorConfig_$memory, $1_stake_ValidatorPerformance_$memory, $1_stake_ValidatorSet_$memory)); - - // assume Implies(chain_status::$is_operating(), exists(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:727:5+1149 - // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:12:9+96 - assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_stake_ValidatorSet_$memory, 1)); - - // assume Implies(chain_status::$is_operating(), Ge(timestamp::spec_now_microseconds(), reconfiguration::$last_reconfiguration_time())) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:727:5+1149 - // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/reconfiguration.spec.move:8:9+137 - assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> ($1_timestamp_spec_now_microseconds($1_timestamp_CurrentTimeMicroseconds_$memory) >= $1_reconfiguration_$last_reconfiguration_time($1_reconfiguration_Configuration_$memory))); - - // assume Identical($t8, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:256:9+65 - assume {:print "$at(3,11198,11263)"} true; - assume ($t8 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); - - // assume Identical($t9, select account::SignerCapability.account(select vesting::VestingContract.signer_cap($t8))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:257:9+46 - assume {:print "$at(3,11272,11318)"} true; - assume ($t9 == $account#$1_account_SignerCapability($signer_cap#$1_vesting_VestingContract($t8))); - - // assume Identical($t10, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t8))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:258:9+53 - assume {:print "$at(3,11327,11380)"} true; - assume ($t10 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t8))); - - // assume Identical($t11, global($t9)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:260:9+49 - assume {:print "$at(3,11487,11536)"} true; - assume ($t11 == $ResourceValue($1_staking_contract_Store_$memory, $t9)); - - // assume Identical($t12, select staking_contract::Store.staking_contracts($t11)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:261:9+48 - assume {:print "$at(3,11545,11593)"} true; - assume ($t12 == $staking_contracts#$1_staking_contract_Store($t11)); - - // assume Identical($t13, simple_map::spec_get($t12, $t10)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:264:9+77 - assume {:print "$at(3,11685,11762)"} true; - assume ($t13 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($t12, $t10)); - - // assume Identical($t14, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:511:9+65 - assume {:print "$at(3,22722,22787)"} true; - assume ($t14 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); - - // assume Identical($t15, select staking_contract::Store.staking_contracts(global($t9))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 - assume {:print "$at(134,11481,11545)"} true; - assume ($t15 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t9))); - - // assume Identical($t16, select staking_contract::StakingContract.pool_address($t13)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:470:9+49 - assume {:print "$at(3,20547,20596)"} true; - assume ($t16 == $pool_address#$1_staking_contract_StakingContract($t13)); - - // assume Identical($t17, global($t16)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:472:9+56 - assume {:print "$at(3,20664,20720)"} true; - assume ($t17 == $ResourceValue($1_stake_StakePool_$memory, $t16)); - - // assume Identical($t18, select coin::Coin.value(select stake::StakePool.inactive($t17))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:473:9+41 - assume {:print "$at(3,20729,20770)"} true; - assume ($t18 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t17))); - - // assume Identical($t19, select coin::Coin.value(select stake::StakePool.pending_inactive($t17))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:474:9+57 - assume {:print "$at(3,20779,20836)"} true; - assume ($t19 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t17))); - - // assume Identical($t20, Add($t18, $t19)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:478:9+63 - assume {:print "$at(3,20948,21011)"} true; - assume ($t20 == ($t18 + $t19)); - - // assume Identical($t21, select stake::OwnerCapability.pool_address(select staking_contract::StakingContract.owner_cap($t13))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:479:9+61 - assume {:print "$at(3,21020,21081)"} true; - assume ($t21 == $pool_address#$1_stake_OwnerCapability($owner_cap#$1_staking_contract_StakingContract($t13))); - - // assume Identical($t22, global($t21)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:481:9+60 - assume {:print "$at(3,21151,21211)"} true; - assume ($t22 == $ResourceValue($1_stake_StakePool_$memory, $t21)); - - // assume Identical($t23, global(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:483:9+66 - assume {:print "$at(3,21286,21352)"} true; - assume ($t23 == $ResourceValue($1_stake_ValidatorSet_$memory, 1)); - - // assume Identical($t24, And(And(Not(stake::spec_contains(select stake::ValidatorSet.pending_active($t23), $t21)), Not(stake::spec_contains(select stake::ValidatorSet.active_validators($t23), $t21))), Not(stake::spec_contains(select stake::ValidatorSet.pending_inactive($t23), $t21)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:484:9+260 - assume {:print "$at(3,21361,21621)"} true; - assume ($t24 == ((!$1_stake_spec_contains($pending_active#$1_stake_ValidatorSet($t23), $t21) && !$1_stake_spec_contains($active_validators#$1_stake_ValidatorSet($t23), $t21)) && !$1_stake_spec_contains($pending_inactive#$1_stake_ValidatorSet($t23), $t21))); - - // assume Identical($t25, select coin::Coin.value(select stake::StakePool.inactive($t22))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:487:9+45 - assume {:print "$at(3,21630,21675)"} true; - assume ($t25 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t22))); - - // assume Identical($t26, select coin::Coin.value(select stake::StakePool.pending_inactive($t22))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:488:9+61 - assume {:print "$at(3,21684,21745)"} true; - assume ($t26 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t22))); - - // assume Identical($t27, Add($t25, $t26)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:489:9+53 - assume {:print "$at(3,21754,21807)"} true; - assume ($t27 == ($t25 + $t26)); - - // @145 := save_mem(timestamp::CurrentTimeMicroseconds) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:727:5+1 - assume {:print "$at(2,34297,34298)"} true; - $1_timestamp_CurrentTimeMicroseconds_$memory#145 := $1_timestamp_CurrentTimeMicroseconds_$memory; + // assume Identical($t8, signer::$address_of($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:325:9+39 + assume {:print "$at(3,14149,14188)"} true; + assume ($t8 == $1_signer_$address_of($t0)); - // @143 := save_mem(stake::StakePool) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:727:5+1 - $1_stake_StakePool_$memory#143 := $1_stake_StakePool_$memory; + // assume Identical($t9, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:326:9+65 + assume {:print "$at(3,14197,14262)"} true; + assume ($t9 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); - // @144 := save_mem(stake::ValidatorSet) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:727:5+1 - $1_stake_ValidatorSet_$memory#144 := $1_stake_ValidatorSet_$memory; + // assume Identical($t10, select vesting::VestingAccountManagement.roles(global($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:329:9+69 + assume {:print "$at(3,14495,14564)"} true; + assume ($t10 == $roles#$1_vesting_VestingAccountManagement($ResourceValue($1_vesting_VestingAccountManagement_$memory, $t1))); - // @142 := save_mem(staking_contract::Store) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:727:5+1 - $1_staking_contract_Store_$memory#142 := $1_staking_contract_Store_$memory; + // assume Identical($t11, string::spec_utf8([82, 79, 76, 69, 95, 66, 69, 78, 69, 70, 73, 67, 73, 65, 82, 89, 95, 82, 69, 83, 69, 84, 84, 69, 82])) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:330:9+61 + assume {:print "$at(3,14573,14634)"} true; + assume ($t11 == $1_string_spec_utf8(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(82, 79, 76, 69), MakeVec4(95, 66, 69, 78)), MakeVec4(69, 70, 73, 67)), MakeVec4(73, 65, 82, 89)), MakeVec4(95, 82, 69, 83)), MakeVec4(69, 84, 84, 69)), MakeVec1(82)))); - // @141 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:727:5+1 - $1_vesting_VestingContract_$memory#141 := $1_vesting_VestingContract_$memory; + // @80 := save_mem(vesting::VestingAccountManagement) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:843:5+1 + assume {:print "$at(2,39177,39178)"} true; + $1_vesting_VestingAccountManagement_$memory#80 := $1_vesting_VestingAccountManagement_$memory; - // trace_local[admin]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:727:5+1 - assume {:print "$track_local(57,31,0):", $t0} $t0 == $t0; + // @79 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:843:5+1 + $1_vesting_VestingContract_$memory#79 := $1_vesting_VestingContract_$memory; - // trace_local[contract_address]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:727:5+1 - assume {:print "$track_local(57,31,1):", $t1} $t1 == $t1; + // trace_local[account]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:843:5+1 + assume {:print "$track_local(59,18,0):", $t0} $t0 == $t0; - // trace_local[new_operator]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:727:5+1 - assume {:print "$track_local(57,31,2):", $t2} $t2 == $t2; + // trace_local[contract_address]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:843:5+1 + assume {:print "$track_local(59,18,1):", $t1} $t1 == $t1; - // trace_local[commission_percentage]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:727:5+1 - assume {:print "$track_local(57,31,3):", $t3} $t3 == $t3; + // trace_local[shareholder]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:843:5+1 + assume {:print "$track_local(59,18,2):", $t2} $t2 == $t2; - // $t28 := borrow_global($t1) on_abort goto L2 with $t29 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:733:32+17 - assume {:print "$at(2,34521,34538)"} true; + // $t12 := borrow_global($t1) on_abort goto L10 with $t13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:848:32+17 + assume {:print "$at(2,39394,39411)"} true; if (!$ResourceExists($1_vesting_VestingContract_$memory, $t1)) { call $ExecFailureAbort(); } else { - $t28 := $Mutation($Global($t1), EmptyVec(), $ResourceValue($1_vesting_VestingContract_$memory, $t1)); + $t12 := $Mutation($Global($t1), EmptyVec(), $ResourceValue($1_vesting_VestingContract_$memory, $t1)); } if ($abort_flag) { - assume {:print "$at(2,34521,34538)"} true; - $t29 := $abort_code; - assume {:print "$track_abort(57,31):", $t29} $t29 == $t29; - goto L2; + assume {:print "$at(2,39394,39411)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(59,18):", $t13} $t13 == $t13; + goto L10; } - // trace_local[vesting_contract]($t28) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:733:13+16 - $temp_0'$1_vesting_VestingContract' := $Dereference($t28); - assume {:print "$track_local(57,31,7):", $temp_0'$1_vesting_VestingContract'} $temp_0'$1_vesting_VestingContract' == $temp_0'$1_vesting_VestingContract'; - - // $t30 := read_ref($t28) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:734:21+25 - assume {:print "$at(2,34595,34620)"} true; - $t30 := $Dereference($t28); + // trace_local[vesting_contract]($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:848:13+16 + $temp_0'$1_vesting_VestingContract' := $Dereference($t12); + assume {:print "$track_local(59,18,7):", $temp_0'$1_vesting_VestingContract'} $temp_0'$1_vesting_VestingContract' == $temp_0'$1_vesting_VestingContract'; - // vesting::verify_admin($t0, $t30) on_abort goto L2 with $t29 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:734:9+37 - call $1_vesting_verify_admin($t0, $t30); + // $t14 := signer::address_of($t0) on_abort goto L10 with $t13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:849:20+27 + assume {:print "$at(2,39467,39494)"} true; + call $t14 := $1_signer_address_of($t0); if ($abort_flag) { - assume {:print "$at(2,34583,34620)"} true; - $t29 := $abort_code; - assume {:print "$track_abort(57,31):", $t29} $t29 == $t29; - goto L2; + assume {:print "$at(2,39467,39494)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(59,18):", $t13} $t13 == $t13; + goto L10; } - // $t31 := read_ref($t28) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:735:68+16 - assume {:print "$at(2,34689,34705)"} true; - $t31 := $Dereference($t28); + // trace_local[addr]($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:849:13+4 + assume {:print "$track_local(59,18,5):", $t14} $t14 == $t14; - // $t32 := vesting::get_vesting_account_signer_internal($t31) on_abort goto L2 with $t29 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:735:32+53 - call $t32 := $1_vesting_get_vesting_account_signer_internal($t31); - if ($abort_flag) { - assume {:print "$at(2,34653,34706)"} true; - $t29 := $abort_code; - assume {:print "$track_abort(57,31):", $t29} $t29 == $t29; - goto L2; - } + // $t15 := get_field.admin($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:851:21+22 + assume {:print "$at(2,39533,39555)"} true; + $t15 := $admin#$1_vesting_VestingContract($Dereference($t12)); - // trace_local[contract_signer]($t32) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:735:13+15 - assume {:print "$track_local(57,31,5):", $t32} $t32 == $t32; + // $t16 := ==($t14, $t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:851:18+2 + $t16 := $IsEqual'address'($t14, $t15); - // $t33 := get_field.staking($t28) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:736:28+24 - assume {:print "$at(2,34735,34759)"} true; - $t33 := $staking#$1_vesting_VestingContract($Dereference($t28)); + // if ($t16) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:851:13+124 + if ($t16) { goto L1; } else { goto L0; } - // $t34 := get_field.operator($t33) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:736:28+33 - $t34 := $operator#$1_vesting_StakingInfo($t33); + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:851:13+124 +L1: - // trace_local[old_operator]($t34) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:736:13+12 - assume {:print "$track_local(57,31,6):", $t34} $t34 == $t34; + // $t17 := true at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:851:13+124 + assume {:print "$at(2,39525,39649)"} true; + $t17 := true; + assume $IsValid'bool'($t17); - // assume Identical($t35, signer::$address_of($t32)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:170:9+48 - assume {:print "$at(134,7475,7523)"} true; - assume ($t35 == $1_signer_$address_of($t32)); + // $t3 := $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:851:13+124 + $t3 := $t17; - // assume Identical($t36, global($t35)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:172:9+42 - assume {:print "$at(134,7620,7662)"} true; - assume ($t36 == $ResourceValue($1_staking_contract_Store_$memory, $t35)); + // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:851:13+124 + goto L2; - // assume Identical($t37, select staking_contract::Store.staking_contracts($t36)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:173:9+48 - assume {:print "$at(134,7671,7719)"} true; - assume ($t37 == $staking_contracts#$1_staking_contract_Store($t36)); + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:852:17+4 + assume {:print "$at(2,39575,39579)"} true; +L0: - // assume Identical($t38, select staking_contract::Store.staking_contracts(global($t35))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 - assume {:print "$at(134,11481,11545)"} true; - assume ($t38 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t35))); + // $t18 := [82, 79, 76, 69, 95, 66, 69, 78, 69, 70, 73, 67, 73, 65, 82, 89, 95, 82, 69, 83, 69, 84, 84, 69, 82] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:852:64+25 + assume {:print "$at(2,39622,39647)"} true; + $t18 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(82, 79, 76, 69), MakeVec4(95, 66, 69, 78)), MakeVec4(69, 70, 73, 67)), MakeVec4(73, 65, 82, 89)), MakeVec4(95, 82, 69, 83)), MakeVec4(69, 84, 84, 69)), MakeVec1(82)); + assume $IsValid'vec'u8''($t18); - // staking_contract::switch_operator($t32, $t34, $t2, $t3) on_abort goto L2 with $t29 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:737:9+101 - assume {:print "$at(2,34778,34879)"} true; - call $1_staking_contract_switch_operator($t32, $t34, $t2, $t3); + // $t19 := string::utf8($t18) on_abort goto L10 with $t13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:852:59+31 + call $t19 := $1_string_utf8($t18); if ($abort_flag) { - assume {:print "$at(2,34778,34879)"} true; - $t29 := $abort_code; - assume {:print "$track_abort(57,31):", $t29} $t29 == $t29; - goto L2; + assume {:print "$at(2,39617,39648)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(59,18):", $t13} $t13 == $t13; + goto L10; } - // $t39 := borrow_field.staking($t28) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:738:9+24 - assume {:print "$at(2,34889,34913)"} true; - $t39 := $ChildMutation($t28, 6, $staking#$1_vesting_VestingContract($Dereference($t28))); - - // $t40 := borrow_field.operator($t39) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:738:9+33 - $t40 := $ChildMutation($t39, 1, $operator#$1_vesting_StakingInfo($Dereference($t39))); - - // write_ref($t40, $t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:738:9+48 - $t40 := $UpdateMutation($t40, $t2); - - // write_back[Reference($t39).operator (address)]($t40) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:738:9+48 - $t39 := $UpdateMutation($t39, $Update'$1_vesting_StakingInfo'_operator($Dereference($t39), $Dereference($t40))); - - // write_back[Reference($t28).staking (vesting::StakingInfo)]($t39) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:738:9+48 - $t28 := $UpdateMutation($t28, $Update'$1_vesting_VestingContract'_staking($Dereference($t28), $Dereference($t39))); - - // $t41 := borrow_field.staking($t28) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:739:9+24 - assume {:print "$at(2,34947,34971)"} true; - $t41 := $ChildMutation($t28, 6, $staking#$1_vesting_VestingContract($Dereference($t28))); - - // $t42 := borrow_field.commission_percentage($t41) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:739:9+46 - $t42 := $ChildMutation($t41, 3, $commission_percentage#$1_vesting_StakingInfo($Dereference($t41))); - - // write_ref($t42, $t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:739:9+70 - $t42 := $UpdateMutation($t42, $t3); - - // write_back[Reference($t41).commission_percentage (u64)]($t42) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:739:9+70 - $t41 := $UpdateMutation($t41, $Update'$1_vesting_StakingInfo'_commission_percentage($Dereference($t41), $Dereference($t42))); - - // write_back[Reference($t28).staking (vesting::StakingInfo)]($t41) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:739:9+70 - $t28 := $UpdateMutation($t28, $Update'$1_vesting_VestingContract'_staking($Dereference($t28), $Dereference($t41))); - - // $t43 := borrow_field.update_operator_events($t28) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:742:13+44 - assume {:print "$at(2,35052,35096)"} true; - $t43 := $ChildMutation($t28, 9, $update_operator_events#$1_vesting_VestingContract($Dereference($t28))); + // assume Identical($t20, select vesting::VestingAccountManagement.roles(global($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:360:9+69 + assume {:print "$at(3,15721,15790)"} true; + assume ($t20 == $roles#$1_vesting_VestingAccountManagement($ResourceValue($1_vesting_VestingAccountManagement_$memory, $t1))); - // $t44 := get_field.admin($t28) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:744:24+22 - assume {:print "$at(2,35155,35177)"} true; - $t44 := $admin#$1_vesting_VestingContract($Dereference($t28)); + // $t21 := vesting::get_role_holder($t1, $t19) on_abort goto L10 with $t13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:852:25+66 + assume {:print "$at(2,39583,39649)"} true; + call $t21 := $1_vesting_get_role_holder($t1, $t19); + if ($abort_flag) { + assume {:print "$at(2,39583,39649)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(59,18):", $t13} $t13 == $t13; + goto L10; + } - // $t45 := get_field.staking($t28) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:746:39+24 - assume {:print "$at(2,35277,35301)"} true; - $t45 := $staking#$1_vesting_VestingContract($Dereference($t28)); + // $t3 := ==($t14, $t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:852:22+2 + $t3 := $IsEqual'address'($t14, $t21); - // $t46 := get_field.pool_address($t45) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:746:39+37 - $t46 := $pool_address#$1_vesting_StakingInfo($t45); + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:851:13+124 + assume {:print "$at(2,39525,39649)"} true; +L2: - // $t47 := pack vesting::UpdateOperatorEvent($t44, $t1, $t46, $t34, $t2, $t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:743:13+318 - assume {:print "$at(2,35110,35428)"} true; - $t47 := $1_vesting_UpdateOperatorEvent($t44, $t1, $t46, $t34, $t2, $t3); + // if ($t3) goto L4 else goto L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:850:9+214 + assume {:print "$at(2,39504,39718)"} true; + if ($t3) { goto L4; } else { goto L3; } - // opaque begin: event::emit_event($t43, $t47) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:741:9+411 - assume {:print "$at(2,35028,35439)"} true; + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:850:9+214 +L4: - // opaque end: event::emit_event($t43, $t47) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:741:9+411 + // goto L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:850:9+214 + assume {:print "$at(2,39504,39718)"} true; + goto L5; - // write_back[Reference($t28).update_operator_events (event::EventHandle)]($t43) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:741:9+411 - $t28 := $UpdateMutation($t28, $Update'$1_vesting_VestingContract'_update_operator_events($Dereference($t28), $Dereference($t43))); + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:850:9+214 +L3: - // assert forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t28)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t28)), addr)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 + // assert forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t12)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t12)), addr)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 - assume {:print "$at(59,538,673)"} true; - assert {:msg "assert_failed(59,538,673): data invariant does not hold"} - (forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t28))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t28))), addr)))); + assume {:print "$at(66,538,673)"} true; + assert {:msg "assert_failed(66,538,673): data invariant does not hold"} + (forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))), addr)))); - // assert forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t28)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t28)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t28)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t28)), j)), Eq(i, j)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 + // assert forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t12)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t12)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t12)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t12)), j)), Eq(i, j)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 - assume {:print "$at(59,738,867)"} true; - assert {:msg "assert_failed(59,738,867): data invariant does not hold"} - (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t28))))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t28))))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; + assume {:print "$at(66,738,867)"} true; + assert {:msg "assert_failed(66,738,867): data invariant does not hold"} + (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; (var j := $i_3; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t28))), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t28))), j)) ==> $IsEqual'num'(i, j)))))))); - - // write_back[vesting::VestingContract@]($t28) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:741:9+411 - assume {:print "$at(2,35028,35439)"} true; - $1_vesting_VestingContract_$memory := $ResourceUpdate($1_vesting_VestingContract_$memory, $GlobalLocationAddress($t28), - $Dereference($t28)); - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:752:5+1 - assume {:print "$at(2,35445,35446)"} true; -L1: - - // assert Not(Not(exists[@141]($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:510:9+53 - assume {:print "$at(3,22660,22713)"} true; - assert {:msg "assert_failed(3,22660,22713): function does not abort under this condition"} - !!$ResourceExists($1_vesting_VestingContract_$memory#141, $t1); - - // assert Not(Neq
(signer::$address_of[]($t0), select vesting::VestingContract.admin($t14))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:512:9+62 - assume {:print "$at(3,22796,22858)"} true; - assert {:msg "assert_failed(3,22796,22858): function does not abort under this condition"} - !!$IsEqual'address'($1_signer_$address_of($t0), $admin#$1_vesting_VestingContract($t14)); - - // assert Not(Not(exists[@142]($t9))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:267:9+33 - assume {:print "$at(134,11439,11472)"} true; - assert {:msg "assert_failed(134,11439,11472): function does not abort under this condition"} - !!$ResourceExists($1_staking_contract_Store_$memory#142, $t9); - - // assert Not(Not(simple_map::spec_contains_key[]($t15, $t10))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:269:9+70 - assume {:print "$at(134,11554,11624)"} true; - assert {:msg "assert_failed(134,11554,11624): function does not abort under this condition"} - !!$1_simple_map_spec_contains_key'address_$1_staking_contract_StakingContract'($t15, $t10); - - // assert Not(simple_map::spec_contains_key[]($t12, $t2)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:262:9+73 - assume {:print "$at(3,11602,11675)"} true; - assert {:msg "assert_failed(3,11602,11675): function does not abort under this condition"} - !$1_simple_map_spec_contains_key'address_$1_staking_contract_StakingContract'($t12, $t2); - - // assert Not(Not(exists[@143]($t16))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:471:9+50 - assume {:print "$at(3,20605,20655)"} true; - assert {:msg "assert_failed(3,20605,20655): function does not abort under this condition"} - !!$ResourceExists($1_stake_StakePool_$memory#143, $t16); - - // assert Not(Gt(Add($t18, $t19), 18446744073709551615)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:475:9+48 - assume {:print "$at(3,20845,20893)"} true; - assert {:msg "assert_failed(3,20845,20893): function does not abort under this condition"} - !(($t18 + $t19) > 18446744073709551615); - - // assert Not(Not(exists[@143]($t21))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:480:9+52 - assume {:print "$at(3,21090,21142)"} true; - assert {:msg "assert_failed(3,21090,21142): function does not abort under this condition"} - !!$ResourceExists($1_stake_StakePool_$memory#143, $t21); - - // assert Not(Not(exists[@144](0x1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:482:9+57 - assume {:print "$at(3,21220,21277)"} true; - assert {:msg "assert_failed(3,21220,21277): function does not abort under this condition"} - !!$ResourceExists($1_stake_ValidatorSet_$memory#144, 1); - - // assert Not(And(And($t24, Ge(timestamp::spec_now_seconds[@145](), select stake::StakePool.locked_until_secs($t22))), Gt(Add($t25, $t26), 18446744073709551615))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:490:9+150 - assume {:print "$at(3,21816,21966)"} true; - assert {:msg "assert_failed(3,21816,21966): function does not abort under this condition"} - !(($t24 && ($1_timestamp_spec_now_seconds($1_timestamp_CurrentTimeMicroseconds_$memory#145) >= $locked_until_secs#$1_stake_StakePool($t22))) && (($t25 + $t26) > 18446744073709551615)); - - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:490:9+150 - return; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:752:5+1 - assume {:print "$at(2,35445,35446)"} true; -L2: - - // abort($t29) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:752:5+1 - assume {:print "$at(2,35445,35446)"} true; - $abort_code := $t29; - $abort_flag := true; - return; - -} - -// fun vesting::verify_admin [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:937:5+182 -procedure {:inline 1} $1_vesting_verify_admin(_$t0: $signer, _$t1: $1_vesting_VestingContract) returns () -{ - // declare local variables - var $t2: int; - var $t3: int; - var $t4: int; - var $t5: bool; - var $t6: int; - var $t7: int; - var $t0: $signer; - var $t1: $1_vesting_VestingContract; - var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; - var $temp_0'signer': $signer; - $t0 := _$t0; - $t1 := _$t1; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))), j)) ==> $IsEqual'num'(i, j)))))))); - // bytecode translation starts here - // trace_local[admin]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:937:5+1 - assume {:print "$at(2,43701,43702)"} true; - assume {:print "$track_local(57,34,0):", $t0} $t0 == $t0; + // destroy($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:850:9+214 + assume {:print "$at(2,39504,39718)"} true; - // trace_local[vesting_contract]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:937:5+1 - assume {:print "$track_local(57,34,1):", $t1} $t1 == $t1; + // $t22 := 15 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:853:38+18 + assume {:print "$at(2,39688,39706)"} true; + $t22 := 15; + assume $IsValid'u64'($t22); - // $t2 := signer::address_of($t0) on_abort goto L4 with $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:17+25 - assume {:print "$at(2,43788,43813)"} true; - call $t2 := $1_signer_address_of($t0); + // $t23 := error::permission_denied($t22) on_abort goto L10 with $t13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:853:13+44 + call $t23 := $1_error_permission_denied($t22); if ($abort_flag) { - assume {:print "$at(2,43788,43813)"} true; - $t3 := $abort_code; - assume {:print "$track_abort(57,34):", $t3} $t3 == $t3; - goto L4; + assume {:print "$at(2,39663,39707)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(59,18):", $t13} $t13 == $t13; + goto L10; } - // $t4 := get_field.admin($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:46+22 - $t4 := $admin#$1_vesting_VestingContract($t1); + // trace_abort($t23) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:850:9+214 + assume {:print "$at(2,39504,39718)"} true; + assume {:print "$track_abort(59,18):", $t23} $t23 == $t23; - // $t5 := ==($t2, $t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:43+2 - $t5 := $IsEqual'address'($t2, $t4); + // $t13 := move($t23) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:850:9+214 + $t13 := $t23; - // if ($t5) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:9+96 - if ($t5) { goto L1; } else { goto L0; } + // goto L10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:850:9+214 + goto L10; - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:9+96 -L1: + // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:856:34+16 + assume {:print "$at(2,39754,39770)"} true; +L5: - // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:9+96 - assume {:print "$at(2,43780,43876)"} true; - goto L2; + // $t24 := borrow_field.beneficiaries($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:856:29+35 + assume {:print "$at(2,39749,39784)"} true; + $t24 := $ChildMutation($t12, 3, $beneficiaries#$1_vesting_VestingContract($Dereference($t12))); - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:93+10 -L0: + // trace_local[beneficiaries]($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:856:13+13 + $temp_0'$1_simple_map_SimpleMap'address_address'' := $Dereference($t24); + assume {:print "$track_local(59,18,6):", $temp_0'$1_simple_map_SimpleMap'address_address''} $temp_0'$1_simple_map_SimpleMap'address_address'' == $temp_0'$1_simple_map_SimpleMap'address_address''; - // $t6 := 7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:93+10 - assume {:print "$at(2,43864,43874)"} true; - $t6 := 7; - assume $IsValid'u64'($t6); + // $t25 := read_ref($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:857:37+29 + assume {:print "$at(2,39822,39851)"} true; + $t25 := $Dereference($t24); - // $t7 := error::unauthenticated($t6) on_abort goto L4 with $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:70+34 - call $t7 := $1_error_unauthenticated($t6); + // $t26 := simple_map::contains_key($t25, $t2) on_abort goto L10 with $t13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:857:13+53 + call $t26 := $1_simple_map_contains_key'address_address'($t25, $t2); if ($abort_flag) { - assume {:print "$at(2,43841,43875)"} true; - $t3 := $abort_code; - assume {:print "$track_abort(57,34):", $t3} $t3 == $t3; - goto L4; + assume {:print "$at(2,39798,39851)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(59,18):", $t13} $t13 == $t13; + goto L10; } - // trace_abort($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:9+96 - assume {:print "$at(2,43780,43876)"} true; - assume {:print "$track_abort(57,34):", $t7} $t7 == $t7; - - // $t3 := move($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:9+96 - $t3 := $t7; - - // goto L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:9+96 - goto L4; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:105+1 -L2: - - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:939:5+1 - assume {:print "$at(2,43882,43883)"} true; -L3: - - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:939:5+1 - assume {:print "$at(2,43882,43883)"} true; - return; - - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:939:5+1 -L4: - - // abort($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:939:5+1 - assume {:print "$at(2,43882,43883)"} true; - $abort_code := $t3; - $abort_flag := true; - return; + // if ($t26) goto L7 else goto L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:857:9+131 + if ($t26) { goto L7; } else { goto L6; } -} + // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:858:32+13 + assume {:print "$at(2,39886,39899)"} true; +L7: -// fun vesting::verify_admin [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:937:5+182 -procedure {:timeLimit 1000} $1_vesting_verify_admin$verify(_$t0: $signer, _$t1: $1_vesting_VestingContract) returns () -{ - // declare local variables - var $t2: int; - var $t3: int; - var $t4: int; - var $t5: bool; - var $t6: int; - var $t7: int; - var $t0: $signer; - var $t1: $1_vesting_VestingContract; - var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; - var $temp_0'signer': $signer; - $t0 := _$t0; - $t1 := _$t1; + // ($t27, $t28) := simple_map::remove($t24, $t2) on_abort goto L10 with $t13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:858:13+47 + assume {:print "$at(2,39867,39914)"} true; + call $t27,$t28,$t24 := $1_simple_map_remove'address_address'($t24, $t2); + if ($abort_flag) { + assume {:print "$at(2,39867,39914)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(59,18):", $t13} $t13 == $t13; + goto L10; + } - // verification entrypoint assumptions - call $InitVerification(); + // write_back[Reference($t12).beneficiaries (simple_map::SimpleMap)]($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:858:13+47 + $t12 := $UpdateMutation($t12, $Update'$1_vesting_VestingContract'_beneficiaries($Dereference($t12), $Dereference($t24))); - // bytecode translation starts here - // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:937:5+1 - assume {:print "$at(2,43701,43702)"} true; - assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($addr#$signer($t0)); + // assert forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t12)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t12)), addr)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 + // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 + assume {:print "$at(66,538,673)"} true; + assert {:msg "assert_failed(66,538,673): data invariant does not hold"} + (forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))), addr)))); - // assume And(WellFormed($t1), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t1)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t1)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t1)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t1)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t1)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t1)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:937:5+1 - assume ($IsValid'$1_vesting_VestingContract'($t1) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t1)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t1)), addr)))) && (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t1)))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t1)))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; + // assert forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t12)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t12)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t12)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t12)), j)), Eq(i, j)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 + // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 + assume {:print "$at(66,738,867)"} true; + assert {:msg "assert_failed(66,738,867): data invariant does not hold"} + (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; (var j := $i_3; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t1)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t1)), j)) ==> $IsEqual'num'(i, j)))))))))); + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))), j)) ==> $IsEqual'num'(i, j)))))))); - // trace_local[admin]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:937:5+1 - assume {:print "$track_local(57,34,0):", $t0} $t0 == $t0; + // write_back[vesting::VestingContract@]($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:858:13+47 + assume {:print "$at(2,39867,39914)"} true; + $1_vesting_VestingContract_$memory := $ResourceUpdate($1_vesting_VestingContract_$memory, $GlobalLocationAddress($t12), + $Dereference($t12)); - // trace_local[vesting_contract]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:937:5+1 - assume {:print "$track_local(57,34,1):", $t1} $t1 == $t1; + // destroy($t28) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:858:13+47 - // $t2 := signer::address_of($t0) on_abort goto L4 with $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:17+25 - assume {:print "$at(2,43788,43813)"} true; - call $t2 := $1_signer_address_of($t0); - if ($abort_flag) { - assume {:print "$at(2,43788,43813)"} true; - $t3 := $abort_code; - assume {:print "$track_abort(57,34):", $t3} $t3 == $t3; - goto L4; - } + // destroy($t27) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:858:13+47 - // $t4 := get_field.admin($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:46+22 - $t4 := $admin#$1_vesting_VestingContract($t1); + // goto L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:858:60+1 + goto L8; - // $t5 := ==($t2, $t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:43+2 - $t5 := $IsEqual'address'($t2, $t4); + // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:857:9+131 + assume {:print "$at(2,39794,39925)"} true; +L6: - // if ($t5) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:9+96 - if ($t5) { goto L1; } else { goto L0; } + // assert forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t12)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t12)), addr)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 + // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 + assume {:print "$at(66,538,673)"} true; + assert {:msg "assert_failed(66,538,673): data invariant does not hold"} + (forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))), addr)))); - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:9+96 -L1: + // assert forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t12)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t12)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t12)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t12)), j)), Eq(i, j)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 + // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 + assume {:print "$at(66,738,867)"} true; + assert {:msg "assert_failed(66,738,867): data invariant does not hold"} + (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; + (var j := $i_3; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))), j)) ==> $IsEqual'num'(i, j)))))))); - // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:9+96 - assume {:print "$at(2,43780,43876)"} true; - goto L2; + // destroy($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:857:9+131 + assume {:print "$at(2,39794,39925)"} true; - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:93+10 -L0: + // label L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:859:10+1 + assume {:print "$at(2,39925,39926)"} true; +L8: - // $t6 := 7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:93+10 - assume {:print "$at(2,43864,43874)"} true; - $t6 := 7; - assume $IsValid'u64'($t6); + // label L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:860:5+1 + assume {:print "$at(2,39931,39932)"} true; +L9: - // $t7 := error::unauthenticated($t6) on_abort goto L4 with $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:70+34 - call $t7 := $1_error_unauthenticated($t6); - if ($abort_flag) { - assume {:print "$at(2,43841,43875)"} true; - $t3 := $abort_code; - assume {:print "$track_abort(57,34):", $t3} $t3 == $t3; - goto L4; - } + // assume Identical($t29, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:334:9+75 + assume {:print "$at(3,14836,14911)"} true; + assume ($t29 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); - // trace_abort($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:9+96 - assume {:print "$at(2,43780,43876)"} true; - assume {:print "$track_abort(57,34):", $t7} $t7 == $t7; + // assert Not(Not(exists[@79]($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:323:9+53 + assume {:print "$at(3,14086,14139)"} true; + assert {:msg "assert_failed(3,14086,14139): function does not abort under this condition"} + !!$ResourceExists($1_vesting_VestingContract_$memory#79, $t1); - // $t3 := move($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:9+96 - $t3 := $t7; + // assert Not(And(Neq
($t8, select vesting::VestingContract.admin($t9)), Not(string::spec_internal_check_utf8[]([82, 79, 76, 69, 95, 66, 69, 78, 69, 70, 73, 67, 73, 65, 82, 89, 95, 82, 69, 83, 69, 84, 84, 69, 82])))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:327:9+110 + assume {:print "$at(3,14271,14381)"} true; + assert {:msg "assert_failed(3,14271,14381): function does not abort under this condition"} + !(!$IsEqual'address'($t8, $admin#$1_vesting_VestingContract($t9)) && !$1_string_spec_internal_check_utf8(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(82, 79, 76, 69), MakeVec4(95, 66, 69, 78)), MakeVec4(69, 70, 73, 67)), MakeVec4(73, 65, 82, 89)), MakeVec4(95, 82, 69, 83)), MakeVec4(69, 84, 84, 69)), MakeVec1(82)))); - // goto L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:9+96 - goto L4; + // assert Not(And(Neq
($t8, select vesting::VestingContract.admin($t9)), Not(exists[@80]($t1)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:328:9+96 + assume {:print "$at(3,14390,14486)"} true; + assert {:msg "assert_failed(3,14390,14486): function does not abort under this condition"} + !(!$IsEqual'address'($t8, $admin#$1_vesting_VestingContract($t9)) && !$ResourceExists($1_vesting_VestingAccountManagement_$memory#80, $t1)); - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:105+1 -L2: + // assert Not(And(Neq
($t8, select vesting::VestingContract.admin($t9)), Not(simple_map::spec_contains_key[]($t10, $t11)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:331:9+88 + assume {:print "$at(3,14643,14731)"} true; + assert {:msg "assert_failed(3,14643,14731): function does not abort under this condition"} + !(!$IsEqual'address'($t8, $admin#$1_vesting_VestingContract($t9)) && !$1_simple_map_spec_contains_key'$1_string_String_address'($t10, $t11)); - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:939:5+1 - assume {:print "$at(2,43882,43883)"} true; -L3: + // assert Not(And(Neq
($t8, select vesting::VestingContract.admin($t9)), Neq
($t8, simple_map::spec_get[]($t10, $t11)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:332:9+86 + assume {:print "$at(3,14740,14826)"} true; + assert {:msg "assert_failed(3,14740,14826): function does not abort under this condition"} + !(!$IsEqual'address'($t8, $admin#$1_vesting_VestingContract($t9)) && !$IsEqual'address'($t8, $1_simple_map_spec_get'$1_string_String_address'($t10, $t11))); - // assert Not(Neq
(signer::$address_of[]($t0), select vesting::VestingContract.admin($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:411:9+62 - assume {:print "$at(3,17971,18033)"} true; - assert {:msg "assert_failed(3,17971,18033): function does not abort under this condition"} - !!$IsEqual'address'($1_signer_$address_of($t0), $admin#$1_vesting_VestingContract($t1)); + // assert Not(simple_map::spec_contains_key(select vesting::VestingContract.beneficiaries($t29), $t2)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:335:9+88 + assume {:print "$at(3,14920,15008)"} true; + assert {:msg "assert_failed(3,14920,15008): post-condition does not hold"} + !$1_simple_map_spec_contains_key'address_address'($beneficiaries#$1_vesting_VestingContract($t29), $t2); - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:411:9+62 + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:335:9+88 return; - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:939:5+1 - assume {:print "$at(2,43882,43883)"} true; -L4: + // label L10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:860:5+1 + assume {:print "$at(2,39931,39932)"} true; +L10: - // assert Neq
(signer::$address_of[]($t0), select vesting::VestingContract.admin($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:410:5+148 - assume {:print "$at(3,17891,18039)"} true; - assert {:msg "assert_failed(3,17891,18039): abort not covered by any of the `aborts_if` clauses"} - !$IsEqual'address'($1_signer_$address_of($t0), $admin#$1_vesting_VestingContract($t1)); + // assert Or(Or(Or(Or(Not(exists[@79]($t1)), And(Neq
($t8, select vesting::VestingContract.admin($t9)), Not(string::spec_internal_check_utf8[]([82, 79, 76, 69, 95, 66, 69, 78, 69, 70, 73, 67, 73, 65, 82, 89, 95, 82, 69, 83, 69, 84, 84, 69, 82])))), And(Neq
($t8, select vesting::VestingContract.admin($t9)), Not(exists[@80]($t1)))), And(Neq
($t8, select vesting::VestingContract.admin($t9)), Not(simple_map::spec_contains_key[]($t10, $t11)))), And(Neq
($t8, select vesting::VestingContract.admin($t9)), Neq
($t8, simple_map::spec_get[]($t10, $t11)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:318:5+1059 + assume {:print "$at(3,13955,15014)"} true; + assert {:msg "assert_failed(3,13955,15014): abort not covered by any of the `aborts_if` clauses"} + ((((!$ResourceExists($1_vesting_VestingContract_$memory#79, $t1) || (!$IsEqual'address'($t8, $admin#$1_vesting_VestingContract($t9)) && !$1_string_spec_internal_check_utf8(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(82, 79, 76, 69), MakeVec4(95, 66, 69, 78)), MakeVec4(69, 70, 73, 67)), MakeVec4(73, 65, 82, 89)), MakeVec4(95, 82, 69, 83)), MakeVec4(69, 84, 84, 69)), MakeVec1(82))))) || (!$IsEqual'address'($t8, $admin#$1_vesting_VestingContract($t9)) && !$ResourceExists($1_vesting_VestingAccountManagement_$memory#80, $t1))) || (!$IsEqual'address'($t8, $admin#$1_vesting_VestingContract($t9)) && !$1_simple_map_spec_contains_key'$1_string_String_address'($t10, $t11))) || (!$IsEqual'address'($t8, $admin#$1_vesting_VestingContract($t9)) && !$IsEqual'address'($t8, $1_simple_map_spec_get'$1_string_String_address'($t10, $t11)))); - // abort($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:410:5+148 - $abort_code := $t3; + // abort($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:318:5+1059 + $abort_code := $t13; $abort_flag := true; return; } -// fun vesting::vest [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:558:5+2656 -procedure {:inline 1} $1_vesting_vest(_$t0: int) returns () +// fun vesting::set_beneficiary [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:807:5+1396 +procedure {:timeLimit 900} $1_vesting_set_beneficiary$verify(_$t0: $signer, _$t1: int, _$t2: int, _$t3: int) returns () { // declare local variables - var $t1: $1_fixed_point32_FixedPoint32; - var $t2: int; - var $t3: int; - var $t4: Vec ($1_fixed_point32_FixedPoint32); + var $t4: int; var $t5: int; - var $t6: int; - var $t7: $Mutation ($1_vesting_VestingContract); - var $t8: $1_fixed_point32_FixedPoint32; - var $t9: $Mutation ($1_vesting_VestingSchedule); + var $t6: $Mutation (Table int (int)); + var $t7: $Mutation (int); + var $t8: int; + var $t9: $Mutation ($1_vesting_VestingContract); var $t10: $1_vesting_VestingContract; var $t11: int; - var $t12: Table int ($1_staking_contract_StakingContract); - var $t13: $1_staking_contract_StakingContract; - var $t14: int; - var $t15: $1_stake_StakePool; - var $t16: int; - var $t17: int; - var $t18: int; - var $t19: int; - var $t20: int; + var $t12: $Mutation ($1_vesting_VestingContract); + var $t13: $1_vesting_VestingContract; + var $t14: $1_vesting_VestingContract; + var $t15: int; + var $t16: $Mutation (Table int (int)); + var $t17: Table int (int); + var $t18: bool; + var $t19: $Mutation (int); + var $t20: $Mutation ($1_event_EventHandle'$1_vesting_SetBeneficiaryEvent'); var $t21: int; - var $t22: $1_vesting_VestingContract; - var $t23: int; - var $t24: int; - var $t25: Table int ($1_staking_contract_StakingContract); - var $t26: $1_staking_contract_StakingContract; - var $t27: int; - var $t28: $1_stake_StakePool; - var $t29: int; - var $t30: int; - var $t31: int; - var $t32: int; - var $t33: int; - var $t34: $1_vesting_VestingContract; - var $t35: int; - var $t36: int; - var $t37: $1_staking_contract_Store; - var $t38: $1_staking_contract_StakingContract; - var $t39: Table int ($1_staking_contract_StakingContract); - var $t40: int; - var $t41: $1_stake_StakePool; - var $t42: int; - var $t43: int; - var $t44: int; - var $t45: int; - var $t46: $1_stake_StakePool; - var $t47: $1_stake_ValidatorSet; - var $t48: bool; - var $t49: int; - var $t50: int; - var $t51: int; - var $t52: $1_vesting_VestingContract; - var $t53: int; - var $t54: Table int ($1_staking_contract_StakingContract); - var $t55: $1_staking_contract_StakingContract; - var $t56: int; - var $t57: $1_stake_StakePool; - var $t58: int; - var $t59: int; - var $t60: int; - var $t61: int; - var $t62: int; - var $t63: int; - var $t64: $1_vesting_VestingContract; - var $t65: int; - var $t66: int; - var $t67: Table int ($1_staking_contract_StakingContract); - var $t68: $1_staking_contract_StakingContract; - var $t69: int; - var $t70: $1_stake_StakePool; - var $t71: int; - var $t72: int; - var $t73: int; - var $t74: int; - var $t75: int; - var $t76: $1_vesting_VestingContract; - var $t77: int; - var $t78: int; - var $t79: $1_staking_contract_Store; - var $t80: $1_staking_contract_StakingContract; - var $t81: Table int ($1_staking_contract_StakingContract); - var $t82: int; - var $t83: $1_stake_StakePool; - var $t84: int; - var $t85: int; - var $t86: int; - var $t87: int; - var $t88: $1_stake_StakePool; - var $t89: $1_stake_ValidatorSet; - var $t90: bool; - var $t91: int; - var $t92: int; - var $t93: int; - var $t94: int; - var $t95: $Mutation ($1_vesting_VestingContract); - var $t96: $1_vesting_VestingSchedule; - var $t97: int; - var $t98: int; - var $t99: bool; - var $t100: $Mutation ($1_vesting_VestingSchedule); - var $t101: int; - var $t102: int; - var $t103: int; - var $t104: int; - var $t105: int; - var $t106: int; - var $t107: int; - var $t108: int; - var $t109: bool; - var $t110: Vec ($1_fixed_point32_FixedPoint32); - var $t111: int; - var $t112: int; - var $t113: int; - var $t114: bool; - var $t115: int; - var $t116: int; - var $t117: int; - var $t118: $1_pool_u64_Pool; - var $t119: int; - var $t120: int; - var $t121: bool; - var $t122: int; - var $t123: int; - var $t124: int; - var $t125: int; - var $t126: $Mutation (int); - var $t127: $Mutation (int); - var $t128: $1_vesting_VestingContract; - var $t129: int; - var $t130: int; - var $t131: $1_staking_contract_Store; - var $t132: $1_staking_contract_StakingContract; - var $t133: Table int ($1_staking_contract_StakingContract); - var $t134: int; - var $t135: $1_stake_StakePool; - var $t136: int; - var $t137: int; - var $t138: int; - var $t139: int; - var $t140: $1_stake_StakePool; - var $t141: $1_stake_ValidatorSet; - var $t142: bool; - var $t143: int; - var $t144: int; - var $t145: int; - var $t146: $Mutation ($1_event_EventHandle'$1_vesting_VestEvent'); - var $t147: int; - var $t148: $1_vesting_StakingInfo; - var $t149: int; - var $t150: $1_vesting_VestEvent; - var $t0: int; - var $temp_0'$1_fixed_point32_FixedPoint32': $1_fixed_point32_FixedPoint32; + var $t22: $1_vesting_SetBeneficiaryEvent; + var $t23: $1_vesting_VestingContract; + var $t0: $signer; + var $t1: int; + var $t2: int; + var $t3: int; + var $temp_0'$1_simple_map_SimpleMap'address_address'': Table int (int); var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; - var $temp_0'$1_vesting_VestingSchedule': $1_vesting_VestingSchedule; var $temp_0'address': int; - var $temp_0'u64': int; - var $temp_0'vec'$1_fixed_point32_FixedPoint32'': Vec ($1_fixed_point32_FixedPoint32); + var $temp_0'signer': $signer; + var $1_account_Account_$memory#74: $Memory $1_account_Account; + var $1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory#75: $Memory $1_coin_CoinStore'$1_aptos_coin_AptosCoin'; + var $1_vesting_VestingContract_$memory#76: $Memory $1_vesting_VestingContract; $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + + // verification entrypoint assumptions + call $InitVerification(); // bytecode translation starts here - // assume Identical($t10, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:161:9+65 - assume {:print "$at(3,7222,7287)"} true; - assume ($t10 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); + // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:807:5+1 + assume {:print "$at(2,37644,37645)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($addr#$signer($t0)); + + // assume WellFormed($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:807:5+1 + assume $IsValid'address'($t1); + + // assume WellFormed($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:807:5+1 + assume $IsValid'address'($t2); + + // assume WellFormed($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:807:5+1 + assume $IsValid'address'($t3); + + // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.rotation_capability_offer($rsc)))), 1), Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.signer_capability_offer($rsc)))), 1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:807:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_account_Account_$memory, $a_0)}(var $rsc := $ResourceValue($1_account_Account_$memory, $a_0); + (($IsValid'$1_account_Account'($rsc) && ((LenVec($vec#$1_option_Option'address'($for#$1_account_CapabilityOffer'$1_account_RotationCapability'($rotation_capability_offer#$1_account_Account($rsc)))) <= 1) && (LenVec($vec#$1_option_Option'address'($for#$1_account_CapabilityOffer'$1_account_SignerCapability'($signer_capability_offer#$1_account_Account($rsc)))) <= 1)))))); - // assume Identical($t11, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t10))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:162:9+49 - assume {:print "$at(3,7296,7345)"} true; - assume ($t11 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t10))); + // assume forall $rsc: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: select option::Option.vec(select coin::CoinInfo.supply($rsc)): And(And(And(And(And(Iff(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($elem)), option::$is_none(select optional_aggregator::OptionalAggregator.integer($elem))), Iff(option::$is_some(select optional_aggregator::OptionalAggregator.integer($elem)), option::$is_none(select optional_aggregator::OptionalAggregator.aggregator($elem)))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.integer($elem)), Le(select optional_aggregator::Integer.value(option::$borrow(select optional_aggregator::OptionalAggregator.integer($elem))), select optional_aggregator::Integer.limit(option::$borrow(select optional_aggregator::OptionalAggregator.integer($elem)))))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($elem)), Le(aggregator::spec_aggregator_get_val(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($elem))), aggregator::spec_get_limit(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($elem)))))), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.aggregator($elem))), 1)), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.integer($elem))), 1)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:807:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'$1_aptos_coin_AptosCoin''($rsc) && ((LenVec($vec#$1_option_Option'$1_optional_aggregator_OptionalAggregator'($supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($rsc))) <= 1) && (var $range_1 := $vec#$1_option_Option'$1_optional_aggregator_OptionalAggregator'($supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($rsc)); (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)) <==> $1_option_$is_none'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)) ==> ($value#$1_optional_aggregator_Integer($1_option_$borrow'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) <= $limit#$1_optional_aggregator_Integer($1_option_$borrow'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)))))) && ($1_option_$is_some'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem))) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)))))) && (LenVec($vec#$1_option_Option'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem))) <= 1)) && (LenVec($vec#$1_option_Option'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) <= 1))))))))))); - // assume Identical($t12, select staking_contract::Store.staking_contracts(global($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:163:9+92 - assume {:print "$at(3,7354,7446)"} true; - assume ($t12 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t0))); + // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:807:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $a_0); + ($IsValid'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''($rsc)))); - // assume Identical($t13, simple_map::spec_get($t12, $t11)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:164:9+73 - assume {:print "$at(3,7455,7528)"} true; - assume ($t13 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($t12, $t11)); + // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:807:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin''($rsc)))); - // assume Identical($t14, select staking_contract::StakingContract.pool_address($t13)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:165:9+49 - assume {:print "$at(3,7537,7586)"} true; - assume ($t14 == $pool_address#$1_staking_contract_StakingContract($t13)); + // assume exists>(0x0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:807:5+1 + assume $ResourceExists($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, 0); - // assume Identical($t15, global($t14)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:166:9+56 - assume {:print "$at(3,7595,7651)"} true; - assume ($t15 == $ResourceValue($1_stake_StakePool_$memory, $t14)); + // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:807:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin''($rsc)))); - // assume Identical($t16, coin::$value(select stake::StakePool.active($t15))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:167:9+44 - assume {:print "$at(3,7660,7704)"} true; - assume ($t16 == $1_coin_$value'$1_aptos_coin_AptosCoin'($active#$1_stake_StakePool($t15))); + // assume exists>(0x0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:807:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, 0); - // assume Identical($t17, coin::$value(select stake::StakePool.pending_active($t15))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:168:9+60 - assume {:print "$at(3,7713,7773)"} true; - assume ($t17 == $1_coin_$value'$1_aptos_coin_AptosCoin'($pending_active#$1_stake_StakePool($t15))); + // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:807:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); + (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; + (var j := $i_4; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); - // assume Identical($t18, Add($t16, $t17)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:169:9+49 - assume {:print "$at(3,7782,7831)"} true; - assume ($t18 == ($t16 + $t17)); + // assume Identical($t10, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:504:9+65 + assume {:print "$at(3,22754,22819)"} true; + assume ($t10 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); - // assume Identical($t19, Sub($t18, select staking_contract::StakingContract.principal($t13))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:170:9+74 - assume {:print "$at(3,7840,7914)"} true; - assume ($t19 == ($t18 - $principal#$1_staking_contract_StakingContract($t13))); + // @74 := save_mem(account::Account) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:807:5+1 + assume {:print "$at(2,37644,37645)"} true; + $1_account_Account_$memory#74 := $1_account_Account_$memory; - // assume Identical($t20, Div(Mul($t19, select staking_contract::StakingContract.commission_percentage($t13)), 100)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:171:9+91 - assume {:print "$at(3,7923,8014)"} true; - assume ($t20 == (($t19 * $commission_percentage#$1_staking_contract_StakingContract($t13)) div 100)); + // @75 := save_mem(coin::CoinStore) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:807:5+1 + $1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory#75 := $1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory; - // assume Identical($t21, Sub(Sub($t18, select vesting::VestingContract.remaining_grant($t10)), $t20)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:172:9+87 - assume {:print "$at(3,8023,8110)"} true; - assume ($t21 == (($t18 - $remaining_grant#$1_vesting_VestingContract($t10)) - $t20)); + // @76 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:807:5+1 + $1_vesting_VestingContract_$memory#76 := $1_vesting_VestingContract_$memory; - // assume Identical($t22, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:59:9+73 - assume {:print "$at(3,2072,2145)"} true; - assume ($t22 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); + // trace_local[admin]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:807:5+1 + assume {:print "$track_local(59,20,0):", $t0} $t0 == $t0; - // assume Identical($t23, $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:61:9+38 - assume {:print "$at(3,2155,2193)"} true; - assume ($t23 == $t0); + // trace_local[contract_address]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:807:5+1 + assume {:print "$track_local(59,20,1):", $t1} $t1 == $t1; - // assume Identical($t24, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t22))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:62:9+49 - assume {:print "$at(3,2202,2251)"} true; - assume ($t24 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t22))); + // trace_local[shareholder]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:807:5+1 + assume {:print "$track_local(59,20,2):", $t2} $t2 == $t2; - // assume Identical($t25, select staking_contract::Store.staking_contracts(global($t23))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:63:9+82 - assume {:print "$at(3,2260,2342)"} true; - assume ($t25 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t23))); + // trace_local[new_beneficiary]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:807:5+1 + assume {:print "$track_local(59,20,3):", $t3} $t3 == $t3; - // assume Identical($t26, simple_map::spec_get($t25, $t24)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:64:9+73 - assume {:print "$at(3,2351,2424)"} true; - assume ($t26 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($t25, $t24)); + // aptos_account::assert_account_is_registered_for_apt($t3) on_abort goto L4 with $t11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:815:9+53 + assume {:print "$at(2,38064,38117)"} true; + call $1_aptos_account_assert_account_is_registered_for_apt($t3); + if ($abort_flag) { + assume {:print "$at(2,38064,38117)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(59,20):", $t11} $t11 == $t11; + goto L4; + } - // assume Identical($t27, select staking_contract::StakingContract.pool_address($t26)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:69:9+49 - assume {:print "$at(3,2574,2623)"} true; - assume ($t27 == $pool_address#$1_staking_contract_StakingContract($t26)); + // $t12 := borrow_global($t1) on_abort goto L4 with $t11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:817:32+17 + assume {:print "$at(2,38151,38168)"} true; + if (!$ResourceExists($1_vesting_VestingContract_$memory, $t1)) { + call $ExecFailureAbort(); + } else { + $t12 := $Mutation($Global($t1), EmptyVec(), $ResourceValue($1_vesting_VestingContract_$memory, $t1)); + } + if ($abort_flag) { + assume {:print "$at(2,38151,38168)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(59,20):", $t11} $t11 == $t11; + goto L4; + } + + // trace_local[vesting_contract]($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:817:13+16 + $temp_0'$1_vesting_VestingContract' := $Dereference($t12); + assume {:print "$track_local(59,20,9):", $temp_0'$1_vesting_VestingContract'} $temp_0'$1_vesting_VestingContract' == $temp_0'$1_vesting_VestingContract'; + + // $t13 := read_ref($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:818:21+25 + assume {:print "$at(2,38225,38250)"} true; + $t13 := $Dereference($t12); + + // vesting::verify_admin($t0, $t13) on_abort goto L4 with $t11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:818:9+37 + call $1_vesting_verify_admin($t0, $t13); + if ($abort_flag) { + assume {:print "$at(2,38213,38250)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(59,20):", $t11} $t11 == $t11; + goto L4; + } + + // $t14 := read_ref($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:820:46+31 + assume {:print "$at(2,38298,38329)"} true; + $t14 := $Dereference($t12); + + // $t15 := vesting::get_beneficiary($t14, $t2) on_abort goto L4 with $t11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:820:31+46 + call $t15 := $1_vesting_get_beneficiary($t14, $t2); + if ($abort_flag) { + assume {:print "$at(2,38283,38329)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(59,20):", $t11} $t11 == $t11; + goto L4; + } + + // trace_local[old_beneficiary]($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:820:13+15 + assume {:print "$track_local(59,20,8):", $t15} $t15 == $t15; + + // $t16 := borrow_field.beneficiaries($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:821:29+35 + assume {:print "$at(2,38359,38394)"} true; + $t16 := $ChildMutation($t12, 3, $beneficiaries#$1_vesting_VestingContract($Dereference($t12))); + + // trace_local[beneficiaries]($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:821:13+13 + $temp_0'$1_simple_map_SimpleMap'address_address'' := $Dereference($t16); + assume {:print "$track_local(59,20,6):", $temp_0'$1_simple_map_SimpleMap'address_address''} $temp_0'$1_simple_map_SimpleMap'address_address'' == $temp_0'$1_simple_map_SimpleMap'address_address''; + + // $t17 := read_ref($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:822:37+29 + assume {:print "$at(2,38432,38461)"} true; + $t17 := $Dereference($t16); + + // $t18 := simple_map::contains_key($t17, $t2) on_abort goto L4 with $t11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:822:13+53 + call $t18 := $1_simple_map_contains_key'address_address'($t17, $t2); + if ($abort_flag) { + assume {:print "$at(2,38408,38461)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(59,20):", $t11} $t11 == $t11; + goto L4; + } + + // if ($t18) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:822:9+288 + if ($t18) { goto L1; } else { goto L0; } + + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:823:54+13 + assume {:print "$at(2,38518,38531)"} true; +L1: + + // $t19 := simple_map::borrow_mut($t16, $t2) on_abort goto L4 with $t11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:823:31+51 + assume {:print "$at(2,38495,38546)"} true; + call $t19,$t16 := $1_simple_map_borrow_mut'address_address'($t16, $t2); + if ($abort_flag) { + assume {:print "$at(2,38495,38546)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(59,20):", $t11} $t11 == $t11; + goto L4; + } + + // trace_local[beneficiary]($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:823:17+11 + $temp_0'address' := $Dereference($t19); + assume {:print "$track_local(59,20,7):", $temp_0'address'} $temp_0'address' == $temp_0'address'; + + // write_ref($t19, $t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:824:13+30 + assume {:print "$at(2,38560,38590)"} true; + $t19 := $UpdateMutation($t19, $t3); + + // write_back[Reference($t16)[]]($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:824:13+30 + $t16 := $UpdateMutation($t16, UpdateTable($Dereference($t16), ReadVec(p#$Mutation($t19), LenVec(p#$Mutation($t16))), $Dereference($t19))); - // assume Identical($t28, global($t27)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:70:9+56 - assume {:print "$at(3,2632,2688)"} true; - assume ($t28 == $ResourceValue($1_stake_StakePool_$memory, $t27)); + // write_back[Reference($t12).beneficiaries (simple_map::SimpleMap)]($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:824:13+30 + $t12 := $UpdateMutation($t12, $Update'$1_vesting_VestingContract'_beneficiaries($Dereference($t12), $Dereference($t16))); - // assume Identical($t29, coin::$value(select stake::StakePool.active($t28))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:71:9+44 - assume {:print "$at(3,2697,2741)"} true; - assume ($t29 == $1_coin_$value'$1_aptos_coin_AptosCoin'($active#$1_stake_StakePool($t28))); + // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:824:43+1 + goto L2; - // assume Identical($t30, coin::$value(select stake::StakePool.pending_active($t28))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:72:9+60 - assume {:print "$at(3,2750,2810)"} true; - assume ($t30 == $1_coin_$value'$1_aptos_coin_AptosCoin'($pending_active#$1_stake_StakePool($t28))); + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:826:29+13 + assume {:print "$at(2,38637,38650)"} true; +L0: - // assume Identical($t31, Add($t29, $t30)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:73:9+49 - assume {:print "$at(3,2819,2868)"} true; - assume ($t31 == ($t29 + $t30)); + // simple_map::add($t16, $t2, $t3) on_abort goto L4 with $t11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:826:13+60 + assume {:print "$at(2,38621,38681)"} true; + call $t16 := $1_simple_map_add'address_address'($t16, $t2, $t3); + if ($abort_flag) { + assume {:print "$at(2,38621,38681)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(59,20):", $t11} $t11 == $t11; + goto L4; + } - // assume Identical($t32, Sub($t31, select staking_contract::StakingContract.principal($t26))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:74:9+74 - assume {:print "$at(3,2877,2951)"} true; - assume ($t32 == ($t31 - $principal#$1_staking_contract_StakingContract($t26))); + // write_back[Reference($t12).beneficiaries (simple_map::SimpleMap)]($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:826:13+60 + $t12 := $UpdateMutation($t12, $Update'$1_vesting_VestingContract'_beneficiaries($Dereference($t12), $Dereference($t16))); - // assume Identical($t33, Div(Mul($t32, select staking_contract::StakingContract.commission_percentage($t26)), 100)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:75:9+91 - assume {:print "$at(3,2960,3051)"} true; - assume ($t33 == (($t32 * $commission_percentage#$1_staking_contract_StakingContract($t26)) div 100)); + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:830:18+16 + assume {:print "$at(2,38732,38748)"} true; +L2: - // assume Identical($t34, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:518:9+65 - assume {:print "$at(3,23036,23101)"} true; - assume ($t34 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); + // $t20 := borrow_field.set_beneficiary_events($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:830:13+44 + assume {:print "$at(2,38727,38771)"} true; + $t20 := $ChildMutation($t12, 12, $set_beneficiary_events#$1_vesting_VestingContract($Dereference($t12))); - // assume Identical($t35, select account::SignerCapability.account(select vesting::VestingContract.signer_cap($t34))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:434:9+46 - assume {:print "$at(3,18724,18770)"} true; - assume ($t35 == $account#$1_account_SignerCapability($signer_cap#$1_vesting_VestingContract($t34))); + // $t21 := get_field.admin($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:832:24+22 + assume {:print "$at(2,38830,38852)"} true; + $t21 := $admin#$1_vesting_VestingContract($Dereference($t12)); - // assume Identical($t36, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t34))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:435:9+49 - assume {:print "$at(3,18779,18828)"} true; - assume ($t36 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t34))); + // $t22 := pack vesting::SetBeneficiaryEvent($t21, $t1, $t2, $t15, $t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:831:13+237 + assume {:print "$at(2,38785,39022)"} true; + $t22 := $1_vesting_SetBeneficiaryEvent($t21, $t1, $t2, $t15, $t3); - // assume Identical($t37, global($t35)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:439:9+49 - assume {:print "$at(3,18996,19045)"} true; - assume ($t37 == $ResourceValue($1_staking_contract_Store_$memory, $t35)); + // opaque begin: event::emit_event($t20, $t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:829:9+330 + assume {:print "$at(2,38703,39033)"} true; - // assume Identical($t38, simple_map::spec_get(select staking_contract::Store.staking_contracts($t37), $t36)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:440:9+79 - assume {:print "$at(3,19054,19133)"} true; - assume ($t38 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($t37), $t36)); + // opaque end: event::emit_event($t20, $t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:829:9+330 - // assume Identical($t39, select staking_contract::Store.staking_contracts(global($t35))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 - assume {:print "$at(134,11481,11545)"} true; - assume ($t39 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t35))); + // write_back[Reference($t12).set_beneficiary_events (event::EventHandle)]($t20) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:829:9+330 + $t12 := $UpdateMutation($t12, $Update'$1_vesting_VestingContract'_set_beneficiary_events($Dereference($t12), $Dereference($t20))); - // assume Identical($t40, select staking_contract::StakingContract.pool_address($t38)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:470:9+49 - assume {:print "$at(3,20547,20596)"} true; - assume ($t40 == $pool_address#$1_staking_contract_StakingContract($t38)); + // assert forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t12)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t12)), addr)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 + // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 + assume {:print "$at(66,538,673)"} true; + assert {:msg "assert_failed(66,538,673): data invariant does not hold"} + (forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))), addr)))); - // assume Identical($t41, global($t40)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:472:9+56 - assume {:print "$at(3,20664,20720)"} true; - assume ($t41 == $ResourceValue($1_stake_StakePool_$memory, $t40)); + // assert forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t12)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t12)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t12)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t12)), j)), Eq(i, j)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 + // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 + assume {:print "$at(66,738,867)"} true; + assert {:msg "assert_failed(66,738,867): data invariant does not hold"} + (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; + (var j := $i_3; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))), j)) ==> $IsEqual'num'(i, j)))))))); - // assume Identical($t42, select coin::Coin.value(select stake::StakePool.inactive($t41))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:473:9+41 - assume {:print "$at(3,20729,20770)"} true; - assume ($t42 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t41))); + // write_back[vesting::VestingContract@]($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:829:9+330 + assume {:print "$at(2,38703,39033)"} true; + $1_vesting_VestingContract_$memory := $ResourceUpdate($1_vesting_VestingContract_$memory, $GlobalLocationAddress($t12), + $Dereference($t12)); - // assume Identical($t43, select coin::Coin.value(select stake::StakePool.pending_inactive($t41))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:474:9+57 - assume {:print "$at(3,20779,20836)"} true; - assume ($t43 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t41))); + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:839:5+1 + assume {:print "$at(2,39039,39040)"} true; +L3: - // assume Identical($t44, Add($t42, $t43)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:478:9+63 - assume {:print "$at(3,20948,21011)"} true; - assume ($t44 == ($t42 + $t43)); + // assume Identical($t23, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:314:9+70 + assume {:print "$at(3,13782,13852)"} true; + assume ($t23 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); - // assume Identical($t45, select stake::OwnerCapability.pool_address(select staking_contract::StakingContract.owner_cap($t38))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:479:9+61 - assume {:print "$at(3,21020,21081)"} true; - assume ($t45 == $pool_address#$1_stake_OwnerCapability($owner_cap#$1_staking_contract_StakingContract($t38))); + // assert Not(Not(account::$exists_at[@74]($t3))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:311:9+47 + assume {:print "$at(3,13613,13660)"} true; + assert {:msg "assert_failed(3,13613,13660): function does not abort under this condition"} + !!$1_account_$exists_at($1_account_Account_$memory#74, $t3); - // assume Identical($t46, global($t45)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:481:9+60 - assume {:print "$at(3,21151,21211)"} true; - assume ($t46 == $ResourceValue($1_stake_StakePool_$memory, $t45)); + // assert Not(Not(coin::$is_account_registered[@75]($t3))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:312:9+67 + assume {:print "$at(3,13669,13736)"} true; + assert {:msg "assert_failed(3,13669,13736): function does not abort under this condition"} + !!$1_coin_$is_account_registered'$1_aptos_coin_AptosCoin'($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory#75, $t3); - // assume Identical($t47, global(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:483:9+66 - assume {:print "$at(3,21286,21352)"} true; - assume ($t47 == $ResourceValue($1_stake_ValidatorSet_$memory, 1)); + // assert Not(Not(exists[@76]($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:503:9+53 + assume {:print "$at(3,22692,22745)"} true; + assert {:msg "assert_failed(3,22692,22745): function does not abort under this condition"} + !!$ResourceExists($1_vesting_VestingContract_$memory#76, $t1); - // assume Identical($t48, And(And(Not(stake::spec_contains(select stake::ValidatorSet.pending_active($t47), $t45)), Not(stake::spec_contains(select stake::ValidatorSet.active_validators($t47), $t45))), Not(stake::spec_contains(select stake::ValidatorSet.pending_inactive($t47), $t45)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:484:9+260 - assume {:print "$at(3,21361,21621)"} true; - assume ($t48 == ((!$1_stake_spec_contains($pending_active#$1_stake_ValidatorSet($t47), $t45) && !$1_stake_spec_contains($active_validators#$1_stake_ValidatorSet($t47), $t45)) && !$1_stake_spec_contains($pending_inactive#$1_stake_ValidatorSet($t47), $t45))); + // assert Not(Neq
(signer::$address_of[]($t0), select vesting::VestingContract.admin($t10))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:505:9+62 + assume {:print "$at(3,22828,22890)"} true; + assert {:msg "assert_failed(3,22828,22890): function does not abort under this condition"} + !!$IsEqual'address'($1_signer_$address_of($t0), $admin#$1_vesting_VestingContract($t10)); - // assume Identical($t49, select coin::Coin.value(select stake::StakePool.inactive($t46))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:487:9+45 - assume {:print "$at(3,21630,21675)"} true; - assume ($t49 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t46))); + // assert simple_map::spec_contains_key(select vesting::VestingContract.beneficiaries($t23), $t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:315:9+82 + assume {:print "$at(3,13861,13943)"} true; + assert {:msg "assert_failed(3,13861,13943): post-condition does not hold"} + $1_simple_map_spec_contains_key'address_address'($beneficiaries#$1_vesting_VestingContract($t23), $t2); - // assume Identical($t50, select coin::Coin.value(select stake::StakePool.pending_inactive($t46))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:488:9+61 - assume {:print "$at(3,21684,21745)"} true; - assume ($t50 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t46))); + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:315:9+82 + return; - // assume Identical($t51, Add($t49, $t50)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:489:9+53 - assume {:print "$at(3,21754,21807)"} true; - assume ($t51 == ($t49 + $t50)); + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:839:5+1 + assume {:print "$at(2,39039,39040)"} true; +L4: - // assume And(Ge(select staking_contract::StakingContract.commission_percentage($t26), 0), Le(select staking_contract::StakingContract.commission_percentage($t26), 100)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:56:9+102 - assume {:print "$at(3,1852,1954)"} true; - assume (($commission_percentage#$1_staking_contract_StakingContract($t26) >= 0) && ($commission_percentage#$1_staking_contract_StakingContract($t26) <= 100)); + // assert Or(Or(Or(Not(account::$exists_at[@74]($t3)), Not(coin::$is_account_registered[@75]($t3))), Not(exists[@76]($t1))), Neq
(signer::$address_of[]($t0), select vesting::VestingContract.admin($t10))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:305:5+497 + assume {:print "$at(3,13452,13949)"} true; + assert {:msg "assert_failed(3,13452,13949): abort not covered by any of the `aborts_if` clauses"} + (((!$1_account_$exists_at($1_account_Account_$memory#74, $t3) || !$1_coin_$is_account_registered'$1_aptos_coin_AptosCoin'($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory#75, $t3)) || !$ResourceExists($1_vesting_VestingContract_$memory#76, $t1)) || !$IsEqual'address'($1_signer_$address_of($t0), $admin#$1_vesting_VestingContract($t10))); - // trace_local[contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:558:5+1 - assume {:print "$at(2,26481,26482)"} true; - assume {:print "$track_local(57,35,0):", $t0} $t0 == $t0; + // abort($t11) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:305:5+497 + $abort_code := $t11; + $abort_flag := true; + return; - // assume Identical($t52, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:161:9+65 - assume {:print "$at(3,7222,7287)"} true; - assume ($t52 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); +} - // assume Identical($t53, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t52))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:162:9+49 - assume {:print "$at(3,7296,7345)"} true; - assume ($t53 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t52))); +// fun vesting::set_beneficiary_resetter [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:885:5+314 +procedure {:timeLimit 900} $1_vesting_set_beneficiary_resetter$verify(_$t0: $signer, _$t1: int, _$t2: int) returns () +{ + // declare local variables + var $t3: $1_vesting_VestingContract; + var $t4: Vec (int); + var $t5: $1_string_String; + var $t6: int; + var $t7: $1_vesting_VestingContract; + var $t0: $signer; + var $t1: int; + var $t2: int; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $1_vesting_VestingContract_$memory#73: $Memory $1_vesting_VestingContract; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; - // assume Identical($t54, select staking_contract::Store.staking_contracts(global($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:163:9+92 - assume {:print "$at(3,7354,7446)"} true; - assume ($t54 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t0))); + // verification entrypoint assumptions + call $InitVerification(); - // assume Identical($t55, simple_map::spec_get($t54, $t53)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:164:9+73 - assume {:print "$at(3,7455,7528)"} true; - assume ($t55 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($t54, $t53)); + // bytecode translation starts here + // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:885:5+1 + assume {:print "$at(2,40895,40896)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($addr#$signer($t0)); - // assume Identical($t56, select staking_contract::StakingContract.pool_address($t55)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:165:9+49 - assume {:print "$at(3,7537,7586)"} true; - assume ($t56 == $pool_address#$1_staking_contract_StakingContract($t55)); + // assume WellFormed($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:885:5+1 + assume $IsValid'address'($t1); - // assume Identical($t57, global($t56)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:166:9+56 - assume {:print "$at(3,7595,7651)"} true; - assume ($t57 == $ResourceValue($1_stake_StakePool_$memory, $t56)); + // assume WellFormed($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:885:5+1 + assume $IsValid'address'($t2); - // assume Identical($t58, coin::$value(select stake::StakePool.active($t57))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:167:9+44 - assume {:print "$at(3,7660,7704)"} true; - assume ($t58 == $1_coin_$value'$1_aptos_coin_AptosCoin'($active#$1_stake_StakePool($t57))); + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:885:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingAccountManagement_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingAccountManagement_$memory, $a_0); + ($IsValid'$1_vesting_VestingAccountManagement'($rsc)))); - // assume Identical($t59, coin::$value(select stake::StakePool.pending_active($t57))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:168:9+60 - assume {:print "$at(3,7713,7773)"} true; - assume ($t59 == $1_coin_$value'$1_aptos_coin_AptosCoin'($pending_active#$1_stake_StakePool($t57))); + // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:885:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); + (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; + (var j := $i_4; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); - // assume Identical($t60, Add($t58, $t59)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:169:9+49 - assume {:print "$at(3,7782,7831)"} true; - assume ($t60 == ($t58 + $t59)); + // assume Identical($t3, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:495:9+65 + assume {:print "$at(3,22296,22361)"} true; + assume ($t3 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); - // assume Identical($t61, Sub($t60, select staking_contract::StakingContract.principal($t55))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:170:9+74 - assume {:print "$at(3,7840,7914)"} true; - assume ($t61 == ($t60 - $principal#$1_staking_contract_StakingContract($t55))); + // @73 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:885:5+1 + assume {:print "$at(2,40895,40896)"} true; + $1_vesting_VestingContract_$memory#73 := $1_vesting_VestingContract_$memory; - // assume Identical($t62, Div(Mul($t61, select staking_contract::StakingContract.commission_percentage($t55)), 100)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:171:9+91 - assume {:print "$at(3,7923,8014)"} true; - assume ($t62 == (($t61 * $commission_percentage#$1_staking_contract_StakingContract($t55)) div 100)); + // trace_local[admin]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:885:5+1 + assume {:print "$track_local(59,21,0):", $t0} $t0 == $t0; - // assume Identical($t63, Sub(Sub($t60, select vesting::VestingContract.remaining_grant($t52)), $t62)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:172:9+87 - assume {:print "$at(3,8023,8110)"} true; - assume ($t63 == (($t60 - $remaining_grant#$1_vesting_VestingContract($t52)) - $t62)); + // trace_local[contract_address]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:885:5+1 + assume {:print "$track_local(59,21,1):", $t1} $t1 == $t1; - // assume Identical($t64, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:59:9+73 - assume {:print "$at(3,2072,2145)"} true; - assume ($t64 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); + // trace_local[beneficiary_resetter]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:885:5+1 + assume {:print "$track_local(59,21,2):", $t2} $t2 == $t2; - // assume Identical($t65, $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:61:9+38 - assume {:print "$at(3,2155,2193)"} true; - assume ($t65 == $t0); + // $t4 := [82, 79, 76, 69, 95, 66, 69, 78, 69, 70, 73, 67, 73, 65, 82, 89, 95, 82, 69, 83, 69, 84, 84, 69, 82] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:890:59+25 + assume {:print "$at(2,41153,41178)"} true; + $t4 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(82, 79, 76, 69), MakeVec4(95, 66, 69, 78)), MakeVec4(69, 70, 73, 67)), MakeVec4(73, 65, 82, 89)), MakeVec4(95, 82, 69, 83)), MakeVec4(69, 84, 84, 69)), MakeVec1(82)); + assume $IsValid'vec'u8''($t4); - // assume Identical($t66, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t64))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:62:9+49 - assume {:print "$at(3,2202,2251)"} true; - assume ($t66 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t64))); + // $t5 := string::utf8($t4) on_abort goto L2 with $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:890:54+31 + call $t5 := $1_string_utf8($t4); + if ($abort_flag) { + assume {:print "$at(2,41148,41179)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(59,21):", $t6} $t6 == $t6; + goto L2; + } - // assume Identical($t67, select staking_contract::Store.staking_contracts(global($t65))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:63:9+82 - assume {:print "$at(3,2260,2342)"} true; - assume ($t67 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t65))); + // assume Identical($t7, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:495:9+65 + assume {:print "$at(3,22296,22361)"} true; + assume ($t7 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); - // assume Identical($t68, simple_map::spec_get($t67, $t66)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:64:9+73 - assume {:print "$at(3,2351,2424)"} true; - assume ($t68 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($t67, $t66)); + // vesting::set_management_role($t0, $t1, $t5, $t2) on_abort goto L2 with $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:890:9+99 + assume {:print "$at(2,41103,41202)"} true; + call $1_vesting_set_management_role($t0, $t1, $t5, $t2); + if ($abort_flag) { + assume {:print "$at(2,41103,41202)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(59,21):", $t6} $t6 == $t6; + goto L2; + } - // assume Identical($t69, select staking_contract::StakingContract.pool_address($t68)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:69:9+49 - assume {:print "$at(3,2574,2623)"} true; - assume ($t69 == $pool_address#$1_staking_contract_StakingContract($t68)); + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:891:5+1 + assume {:print "$at(2,41208,41209)"} true; +L1: - // assume Identical($t70, global($t69)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:70:9+56 - assume {:print "$at(3,2632,2688)"} true; - assume ($t70 == $ResourceValue($1_stake_StakePool_$memory, $t69)); + // assert Not(Not(string::spec_internal_check_utf8[]([82, 79, 76, 69, 95, 66, 69, 78, 69, 70, 73, 67, 73, 65, 82, 89, 95, 82, 69, 83, 69, 84, 84, 69, 82]))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:354:9+76 + assume {:print "$at(3,15438,15514)"} true; + assert {:msg "assert_failed(3,15438,15514): function does not abort under this condition"} + !!$1_string_spec_internal_check_utf8(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(82, 79, 76, 69), MakeVec4(95, 66, 69, 78)), MakeVec4(69, 70, 73, 67)), MakeVec4(73, 65, 82, 89)), MakeVec4(95, 82, 69, 83)), MakeVec4(69, 84, 84, 69)), MakeVec1(82))); - // assume Identical($t71, coin::$value(select stake::StakePool.active($t70))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:71:9+44 - assume {:print "$at(3,2697,2741)"} true; - assume ($t71 == $1_coin_$value'$1_aptos_coin_AptosCoin'($active#$1_stake_StakePool($t70))); + // assert Not(Not(exists[@73]($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:494:9+53 + assume {:print "$at(3,22234,22287)"} true; + assert {:msg "assert_failed(3,22234,22287): function does not abort under this condition"} + !!$ResourceExists($1_vesting_VestingContract_$memory#73, $t1); - // assume Identical($t72, coin::$value(select stake::StakePool.pending_active($t70))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:72:9+60 - assume {:print "$at(3,2750,2810)"} true; - assume ($t72 == $1_coin_$value'$1_aptos_coin_AptosCoin'($pending_active#$1_stake_StakePool($t70))); + // assert Not(Neq
(signer::$address_of[]($t0), select vesting::VestingContract.admin($t3))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:497:9+62 + assume {:print "$at(3,22518,22580)"} true; + assert {:msg "assert_failed(3,22518,22580): function does not abort under this condition"} + !!$IsEqual'address'($1_signer_$address_of($t0), $admin#$1_vesting_VestingContract($t3)); - // assume Identical($t73, Add($t71, $t72)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:73:9+49 - assume {:print "$at(3,2819,2868)"} true; - assume ($t73 == ($t71 + $t72)); + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:497:9+62 + return; - // assume Identical($t74, Sub($t73, select staking_contract::StakingContract.principal($t68))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:74:9+74 - assume {:print "$at(3,2877,2951)"} true; - assume ($t74 == ($t73 - $principal#$1_staking_contract_StakingContract($t68))); + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:891:5+1 + assume {:print "$at(2,41208,41209)"} true; +L2: - // assume Identical($t75, Div(Mul($t74, select staking_contract::StakingContract.commission_percentage($t68)), 100)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:75:9+91 - assume {:print "$at(3,2960,3051)"} true; - assume ($t75 == (($t74 * $commission_percentage#$1_staking_contract_StakingContract($t68)) div 100)); + // abort($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:891:5+1 + assume {:print "$at(2,41208,41209)"} true; + $abort_code := $t6; + $abort_flag := true; + return; - // assume Identical($t76, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:518:9+65 - assume {:print "$at(3,23036,23101)"} true; - assume ($t76 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); +} - // assume Identical($t77, select account::SignerCapability.account(select vesting::VestingContract.signer_cap($t76))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:434:9+46 - assume {:print "$at(3,18724,18770)"} true; - assume ($t77 == $account#$1_account_SignerCapability($signer_cap#$1_vesting_VestingContract($t76))); +// fun vesting::set_management_role [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:862:5+951 +procedure {:inline 1} $1_vesting_set_management_role(_$t0: $signer, _$t1: int, _$t2: $1_string_String, _$t3: int) returns () +{ + // declare local variables + var $t4: $signer; + var $t5: $1_string_String; + var $t6: $Mutation (Table int (int)); + var $t7: $Mutation ($1_vesting_VestingContract); + var $t8: $1_vesting_VestingContract; + var $t9: $Mutation ($1_vesting_VestingContract); + var $t10: int; + var $t11: $1_vesting_VestingContract; + var $t12: bool; + var $t13: bool; + var $t14: $1_vesting_VestingContract; + var $t15: $signer; + var $t16: Table int (int); + var $t17: $1_vesting_VestingAccountManagement; + var $t18: $Mutation ($1_vesting_VestingAccountManagement); + var $t19: $Mutation (Table int (int)); + var $t20: Table int (int); + var $t21: bool; + var $t22: $Mutation (int); + var $t0: $signer; + var $t1: int; + var $t2: $1_string_String; + var $t3: int; + var $temp_0'$1_simple_map_SimpleMap'$1_string_String_address'': Table int (int); + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; + var $temp_0'address': int; + var $temp_0'signer': $signer; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; - // assume Identical($t78, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t76))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:435:9+49 - assume {:print "$at(3,18779,18828)"} true; - assume ($t78 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t76))); + // bytecode translation starts here + // assume Identical($t8, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:495:9+65 + assume {:print "$at(3,22296,22361)"} true; + assume ($t8 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); - // assume Identical($t79, global($t77)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:439:9+49 - assume {:print "$at(3,18996,19045)"} true; - assume ($t79 == $ResourceValue($1_staking_contract_Store_$memory, $t77)); + // trace_local[admin]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:862:5+1 + assume {:print "$at(2,39938,39939)"} true; + assume {:print "$track_local(59,22,0):", $t0} $t0 == $t0; - // assume Identical($t80, simple_map::spec_get(select staking_contract::Store.staking_contracts($t79), $t78)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:440:9+79 - assume {:print "$at(3,19054,19133)"} true; - assume ($t80 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($t79), $t78)); + // trace_local[contract_address]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:862:5+1 + assume {:print "$track_local(59,22,1):", $t1} $t1 == $t1; - // assume Identical($t81, select staking_contract::Store.staking_contracts(global($t77))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 - assume {:print "$at(134,11481,11545)"} true; - assume ($t81 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t77))); + // trace_local[role]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:862:5+1 + assume {:print "$track_local(59,22,2):", $t2} $t2 == $t2; - // assume Identical($t82, select staking_contract::StakingContract.pool_address($t80)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:470:9+49 - assume {:print "$at(3,20547,20596)"} true; - assume ($t82 == $pool_address#$1_staking_contract_StakingContract($t80)); + // trace_local[role_holder]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:862:5+1 + assume {:print "$track_local(59,22,3):", $t3} $t3 == $t3; - // assume Identical($t83, global($t82)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:472:9+56 - assume {:print "$at(3,20664,20720)"} true; - assume ($t83 == $ResourceValue($1_stake_StakePool_$memory, $t82)); + // $t9 := borrow_global($t1) on_abort goto L7 with $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:868:32+17 + assume {:print "$at(2,40177,40194)"} true; + if (!$ResourceExists($1_vesting_VestingContract_$memory, $t1)) { + call $ExecFailureAbort(); + } else { + $t9 := $Mutation($Global($t1), EmptyVec(), $ResourceValue($1_vesting_VestingContract_$memory, $t1)); + } + if ($abort_flag) { + assume {:print "$at(2,40177,40194)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(59,22):", $t10} $t10 == $t10; + goto L7; + } - // assume Identical($t84, select coin::Coin.value(select stake::StakePool.inactive($t83))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:473:9+41 - assume {:print "$at(3,20729,20770)"} true; - assume ($t84 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t83))); + // trace_local[vesting_contract]($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:868:13+16 + $temp_0'$1_vesting_VestingContract' := $Dereference($t9); + assume {:print "$track_local(59,22,7):", $temp_0'$1_vesting_VestingContract'} $temp_0'$1_vesting_VestingContract' == $temp_0'$1_vesting_VestingContract'; - // assume Identical($t85, select coin::Coin.value(select stake::StakePool.pending_inactive($t83))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:474:9+57 - assume {:print "$at(3,20779,20836)"} true; - assume ($t85 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t83))); + // $t11 := read_ref($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:869:21+25 + assume {:print "$at(2,40251,40276)"} true; + $t11 := $Dereference($t9); - // assume Identical($t86, Add($t84, $t85)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:478:9+63 - assume {:print "$at(3,20948,21011)"} true; - assume ($t86 == ($t84 + $t85)); + // vesting::verify_admin($t0, $t11) on_abort goto L7 with $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:869:9+37 + call $1_vesting_verify_admin($t0, $t11); + if ($abort_flag) { + assume {:print "$at(2,40239,40276)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(59,22):", $t10} $t10 == $t10; + goto L7; + } - // assume Identical($t87, select stake::OwnerCapability.pool_address(select staking_contract::StakingContract.owner_cap($t80))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:479:9+61 - assume {:print "$at(3,21020,21081)"} true; - assume ($t87 == $pool_address#$1_stake_OwnerCapability($owner_cap#$1_staking_contract_StakingContract($t80))); + // $t12 := exists($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:871:14+6 + assume {:print "$at(2,40292,40298)"} true; + $t12 := $ResourceExists($1_vesting_VestingAccountManagement_$memory, $t1); - // assume Identical($t88, global($t87)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:481:9+60 - assume {:print "$at(3,21151,21211)"} true; - assume ($t88 == $ResourceValue($1_stake_StakePool_$memory, $t87)); + // $t13 := !($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:871:13+1 + call $t13 := $Not($t12); - // assume Identical($t89, global(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:483:9+66 - assume {:print "$at(3,21286,21352)"} true; - assume ($t89 == $ResourceValue($1_stake_ValidatorSet_$memory, 1)); + // if ($t13) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:871:9+299 + if ($t13) { goto L1; } else { goto L0; } - // assume Identical($t90, And(And(Not(stake::spec_contains(select stake::ValidatorSet.pending_active($t89), $t87)), Not(stake::spec_contains(select stake::ValidatorSet.active_validators($t89), $t87))), Not(stake::spec_contains(select stake::ValidatorSet.pending_inactive($t89), $t87)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:484:9+260 - assume {:print "$at(3,21361,21621)"} true; - assume ($t90 == ((!$1_stake_spec_contains($pending_active#$1_stake_ValidatorSet($t89), $t87) && !$1_stake_spec_contains($active_validators#$1_stake_ValidatorSet($t89), $t87)) && !$1_stake_spec_contains($pending_inactive#$1_stake_ValidatorSet($t89), $t87))); + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:872:72+16 + assume {:print "$at(2,40417,40433)"} true; +L1: - // assume Identical($t91, select coin::Coin.value(select stake::StakePool.inactive($t88))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:487:9+45 - assume {:print "$at(3,21630,21675)"} true; - assume ($t91 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t88))); + // $t14 := read_ref($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:872:72+16 + assume {:print "$at(2,40417,40433)"} true; + $t14 := $Dereference($t9); - // assume Identical($t92, select coin::Coin.value(select stake::StakePool.pending_inactive($t88))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:488:9+61 - assume {:print "$at(3,21684,21745)"} true; - assume ($t92 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t88))); + // pack_ref_deep($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:872:72+16 - // assume Identical($t93, Add($t91, $t92)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:489:9+53 - assume {:print "$at(3,21754,21807)"} true; - assume ($t93 == ($t91 + $t92)); + // $t15 := vesting::get_vesting_account_signer_internal($t14) on_abort goto L7 with $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:872:36+53 + call $t15 := $1_vesting_get_vesting_account_signer_internal($t14); + if ($abort_flag) { + assume {:print "$at(2,40381,40434)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(59,22):", $t10} $t10 == $t10; + goto L7; + } - // vesting::unlock_rewards($t0) on_abort goto L8 with $t94 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:560:9+32 - assume {:print "$at(2,26610,26642)"} true; - call $1_vesting_unlock_rewards($t0); + // $t16 := simple_map::create() on_abort goto L7 with $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:874:24+37 + assume {:print "$at(2,40523,40560)"} true; + call $t16 := $1_simple_map_create'$1_string_String_address'(); if ($abort_flag) { - assume {:print "$at(2,26610,26642)"} true; - $t94 := $abort_code; - assume {:print "$track_abort(57,35):", $t94} $t94 == $t94; - goto L8; + assume {:print "$at(2,40523,40560)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(59,22):", $t10} $t10 == $t10; + goto L7; } - // $t95 := borrow_global($t0) on_abort goto L8 with $t94 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:564:32+17 - assume {:print "$at(2,26810,26827)"} true; - if (!$ResourceExists($1_vesting_VestingContract_$memory, $t0)) { + // $t17 := pack vesting::VestingAccountManagement($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:873:38+102 + assume {:print "$at(2,40473,40575)"} true; + $t17 := $1_vesting_VestingAccountManagement($t16); + + // move_to($t17, $t15) on_abort goto L7 with $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:873:13+7 + if ($ResourceExists($1_vesting_VestingAccountManagement_$memory, $addr#$signer($t15))) { call $ExecFailureAbort(); } else { - $t95 := $Mutation($Global($t0), EmptyVec(), $ResourceValue($1_vesting_VestingContract_$memory, $t0)); + $1_vesting_VestingAccountManagement_$memory := $ResourceUpdate($1_vesting_VestingAccountManagement_$memory, $addr#$signer($t15), $t17); } if ($abort_flag) { - assume {:print "$at(2,26810,26827)"} true; - $t94 := $abort_code; - assume {:print "$track_abort(57,35):", $t94} $t94 == $t94; - goto L8; + assume {:print "$at(2,40448,40455)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(59,22):", $t10} $t10 == $t10; + goto L7; } - // trace_local[vesting_contract]($t95) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:564:13+16 - $temp_0'$1_vesting_VestingContract' := $Dereference($t95); - assume {:print "$track_local(57,35,7):", $temp_0'$1_vesting_VestingContract'} $temp_0'$1_vesting_VestingContract' == $temp_0'$1_vesting_VestingContract'; - - // $t96 := get_field.vesting_schedule($t95) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:566:13+33 - assume {:print "$at(2,26932,26965)"} true; - $t96 := $vesting_schedule#$1_vesting_VestingContract($Dereference($t95)); - - // $t97 := get_field.start_timestamp_secs($t96) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:566:13+54 - $t97 := $start_timestamp_secs#$1_vesting_VestingSchedule($t96); - - // $t98 := timestamp::now_seconds() on_abort goto L8 with $t94 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:566:70+24 - call $t98 := $1_timestamp_now_seconds(); - if ($abort_flag) { - assume {:print "$at(2,26989,27013)"} true; - $t94 := $abort_code; - assume {:print "$track_abort(57,35):", $t94} $t94 == $t94; - goto L8; - } + // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:873:13+128 + goto L2; - // $t99 := >($t97, $t98) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:566:68+1 - call $t99 := $Gt($t97, $t98); + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:871:9+299 + assume {:print "$at(2,40287,40586)"} true; +L0: - // if ($t99) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:566:9+117 - if ($t99) { goto L1; } else { goto L0; } + // pack_ref_deep($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:871:9+299 + assume {:print "$at(2,40287,40586)"} true; - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:567:13+6 - assume {:print "$at(2,27029,27035)"} true; -L1: + // destroy($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:871:9+299 - // pack_ref_deep($t95) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:567:13+6 - assume {:print "$at(2,27029,27035)"} true; + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:877:70+16 + assume {:print "$at(2,40657,40673)"} true; +L2: - // destroy($t95) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:567:13+6 + // $t18 := borrow_global($t1) on_abort goto L7 with $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:877:26+17 + assume {:print "$at(2,40613,40630)"} true; + if (!$ResourceExists($1_vesting_VestingAccountManagement_$memory, $t1)) { + call $ExecFailureAbort(); + } else { + $t18 := $Mutation($Global($t1), EmptyVec(), $ResourceValue($1_vesting_VestingAccountManagement_$memory, $t1)); + } + if ($abort_flag) { + assume {:print "$at(2,40613,40630)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(59,22):", $t10} $t10 == $t10; + goto L7; + } - // goto L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:567:13+6 - goto L7; + // $t19 := borrow_field.roles($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:877:21+72 + $t19 := $ChildMutation($t18, 0, $roles#$1_vesting_VestingAccountManagement($Dereference($t18))); - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:571:37+16 - assume {:print "$at(2,27200,27216)"} true; -L0: + // trace_local[roles]($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:877:13+5 + $temp_0'$1_simple_map_SimpleMap'$1_string_String_address'' := $Dereference($t19); + assume {:print "$track_local(59,22,6):", $temp_0'$1_simple_map_SimpleMap'$1_string_String_address''} $temp_0'$1_simple_map_SimpleMap'$1_string_String_address'' == $temp_0'$1_simple_map_SimpleMap'$1_string_String_address''; - // $t100 := borrow_field.vesting_schedule($t95) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:571:32+38 - assume {:print "$at(2,27195,27233)"} true; - $t100 := $ChildMutation($t95, 4, $vesting_schedule#$1_vesting_VestingContract($Dereference($t95))); + // $t20 := read_ref($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:878:37+14 + assume {:print "$at(2,40718,40732)"} true; + $t20 := $Dereference($t19); - // trace_local[vesting_schedule]($t100) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:571:13+16 - $temp_0'$1_vesting_VestingSchedule' := $Dereference($t100); - assume {:print "$track_local(57,35,9):", $temp_0'$1_vesting_VestingSchedule'} $temp_0'$1_vesting_VestingSchedule' == $temp_0'$1_vesting_VestingSchedule'; + // $t21 := simple_map::contains_key($t20, $t2) on_abort goto L7 with $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:878:13+38 + call $t21 := $1_simple_map_contains_key'$1_string_String_address'($t20, $t2); + if ($abort_flag) { + assume {:print "$at(2,40694,40732)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(59,22):", $t10} $t10 == $t10; + goto L7; + } - // $t101 := get_field.last_vested_period($t100) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:572:34+35 - assume {:print "$at(2,27268,27303)"} true; - $t101 := $last_vested_period#$1_vesting_VestingSchedule($Dereference($t100)); + // if ($t21) goto L4 else goto L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:878:9+192 + if ($t21) { goto L4; } else { goto L3; } - // $t102 := 1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:573:56+1 - assume {:print "$at(2,27360,27361)"} true; - $t102 := 1; - assume $IsValid'u64'($t102); + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:879:53+11 + assume {:print "$at(2,40788,40799)"} true; +L4: - // $t103 := +($t101, $t102) on_abort goto L8 with $t94 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:573:54+1 - call $t103 := $AddU64($t101, $t102); + // $t22 := simple_map::borrow_mut($t19, $t2) on_abort goto L7 with $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:879:14+36 + assume {:print "$at(2,40749,40785)"} true; + call $t22,$t19 := $1_simple_map_borrow_mut'$1_string_String_address'($t19, $t2); if ($abort_flag) { - assume {:print "$at(2,27358,27359)"} true; - $t94 := $abort_code; - assume {:print "$track_abort(57,35):", $t94} $t94 == $t94; - goto L8; + assume {:print "$at(2,40749,40785)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(59,22):", $t10} $t10 == $t10; + goto L7; } - // trace_local[next_period_to_vest]($t103) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:573:13+19 - assume {:print "$track_local(57,35,3):", $t103} $t103 == $t103; + // write_ref($t22, $t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:879:13+51 + $t22 := $UpdateMutation($t22, $t3); + + // write_back[Reference($t19)[]]($t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:879:13+51 + $t19 := $UpdateMutation($t19, UpdateTable($Dereference($t19), ReadVec(p#$Mutation($t22), LenVec(p#$Mutation($t19))), $Dereference($t22))); - // $t104 := timestamp::now_seconds() on_abort goto L8 with $t94 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:575:14+24 - assume {:print "$at(2,27412,27436)"} true; - call $t104 := $1_timestamp_now_seconds(); - if ($abort_flag) { - assume {:print "$at(2,27412,27436)"} true; - $t94 := $abort_code; - assume {:print "$track_abort(57,35):", $t94} $t94 == $t94; - goto L8; - } + // write_back[Reference($t18).roles (simple_map::SimpleMap)]($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:879:13+51 + $t18 := $UpdateMutation($t18, $Update'$1_vesting_VestingAccountManagement'_roles($Dereference($t18), $Dereference($t19))); - // $t105 := get_field.start_timestamp_secs($t100) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:575:41+37 - $t105 := $start_timestamp_secs#$1_vesting_VestingSchedule($Dereference($t100)); + // write_back[vesting::VestingAccountManagement@]($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:879:13+51 + $1_vesting_VestingAccountManagement_$memory := $ResourceUpdate($1_vesting_VestingAccountManagement_$memory, $GlobalLocationAddress($t18), + $Dereference($t18)); - // $t106 := -($t104, $t105) on_abort goto L8 with $t94 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:575:39+1 - call $t106 := $Sub($t104, $t105); - if ($abort_flag) { - assume {:print "$at(2,27437,27438)"} true; - $t94 := $abort_code; - assume {:print "$track_abort(57,35):", $t94} $t94 == $t94; - goto L8; - } + // goto L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:879:64+1 + goto L5; - // $t107 := get_field.period_duration($t100) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:575:82+32 - $t107 := $period_duration#$1_vesting_VestingSchedule($Dereference($t100)); + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:881:29+5 + assume {:print "$at(2,40846,40851)"} true; +L3: - // $t108 := /($t106, $t107) on_abort goto L8 with $t94 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:575:80+1 - call $t108 := $Div($t106, $t107); + // simple_map::add($t19, $t2, $t3) on_abort goto L7 with $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:881:13+41 + assume {:print "$at(2,40830,40871)"} true; + call $t19 := $1_simple_map_add'$1_string_String_address'($t19, $t2, $t3); if ($abort_flag) { - assume {:print "$at(2,27478,27479)"} true; - $t94 := $abort_code; - assume {:print "$track_abort(57,35):", $t94} $t94 == $t94; - goto L8; + assume {:print "$at(2,40830,40871)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(59,22):", $t10} $t10 == $t10; + goto L7; } - // $t109 := <($t108, $t103) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:576:35+1 - assume {:print "$at(2,27548,27549)"} true; - call $t109 := $Lt($t108, $t103); + // write_back[Reference($t18).roles (simple_map::SimpleMap)]($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:881:13+41 + $t18 := $UpdateMutation($t18, $Update'$1_vesting_VestingAccountManagement'_roles($Dereference($t18), $Dereference($t19))); - // if ($t109) goto L3 else goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:576:9+79 - if ($t109) { goto L3; } else { goto L2; } + // write_back[vesting::VestingAccountManagement@]($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:881:13+41 + $1_vesting_VestingAccountManagement_$memory := $ResourceUpdate($1_vesting_VestingAccountManagement_$memory, $GlobalLocationAddress($t18), + $Dereference($t18)); - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:577:13+6 - assume {:print "$at(2,27585,27591)"} true; -L3: + // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:882:10+1 + assume {:print "$at(2,40882,40883)"} true; +L5: - // destroy($t100) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:577:13+6 - assume {:print "$at(2,27585,27591)"} true; + // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:883:5+1 + assume {:print "$at(2,40888,40889)"} true; +L6: - // pack_ref_deep($t95) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:577:13+6 + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:883:5+1 + assume {:print "$at(2,40888,40889)"} true; + return; - // destroy($t95) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:577:13+6 + // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:883:5+1 +L7: - // goto L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:577:13+6 - goto L7; + // abort($t10) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:883:5+1 + assume {:print "$at(2,40888,40889)"} true; + $abort_code := $t10; + $abort_flag := true; + return; - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:582:25+16 - assume {:print "$at(2,27767,27783)"} true; -L2: +} - // $t110 := get_field.schedule($t100) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:582:24+26 - assume {:print "$at(2,27766,27792)"} true; - $t110 := $schedule#$1_vesting_VestingSchedule($Dereference($t100)); +// fun vesting::set_management_role [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:862:5+951 +procedure {:timeLimit 900} $1_vesting_set_management_role$verify(_$t0: $signer, _$t1: int, _$t2: $1_string_String, _$t3: int) returns () +{ + // declare local variables + var $t4: $signer; + var $t5: $1_string_String; + var $t6: $Mutation (Table int (int)); + var $t7: $Mutation ($1_vesting_VestingContract); + var $t8: $1_vesting_VestingContract; + var $t9: $Mutation ($1_vesting_VestingContract); + var $t10: int; + var $t11: $1_vesting_VestingContract; + var $t12: bool; + var $t13: bool; + var $t14: $1_vesting_VestingContract; + var $t15: $signer; + var $t16: Table int (int); + var $t17: $1_vesting_VestingAccountManagement; + var $t18: $Mutation ($1_vesting_VestingAccountManagement); + var $t19: $Mutation (Table int (int)); + var $t20: Table int (int); + var $t21: bool; + var $t22: $Mutation (int); + var $t0: $signer; + var $t1: int; + var $t2: $1_string_String; + var $t3: int; + var $temp_0'$1_simple_map_SimpleMap'$1_string_String_address'': Table int (int); + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $1_vesting_VestingContract_$memory#58: $Memory $1_vesting_VestingContract; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; - // trace_local[schedule]($t110) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:582:13+8 - assume {:print "$track_local(57,35,4):", $t110} $t110 == $t110; + // verification entrypoint assumptions + call $InitVerification(); - // $t111 := 1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:583:52+1 - assume {:print "$at(2,27845,27846)"} true; - $t111 := 1; - assume $IsValid'u64'($t111); + // bytecode translation starts here + // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:862:5+1 + assume {:print "$at(2,39938,39939)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($addr#$signer($t0)); - // $t112 := -($t103, $t111) on_abort goto L8 with $t94 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:583:50+1 - call $t112 := $Sub($t103, $t111); - if ($abort_flag) { - assume {:print "$at(2,27843,27844)"} true; - $t94 := $abort_code; - assume {:print "$track_abort(57,35):", $t94} $t94 == $t94; - goto L8; - } + // assume WellFormed($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:862:5+1 + assume $IsValid'address'($t1); - // trace_local[schedule_index]($t112) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:583:13+14 - assume {:print "$track_local(57,35,5):", $t112} $t112 == $t112; + // assume WellFormed($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:862:5+1 + assume $IsValid'$1_string_String'($t2); - // $t113 := vector::length($t110) on_abort goto L8 with $t94 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:584:53+24 - assume {:print "$at(2,27900,27924)"} true; - call $t113 := $1_vector_length'$1_fixed_point32_FixedPoint32'($t110); - if ($abort_flag) { - assume {:print "$at(2,27900,27924)"} true; - $t94 := $abort_code; - assume {:print "$track_abort(57,35):", $t94} $t94 == $t94; - goto L8; - } + // assume WellFormed($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:862:5+1 + assume $IsValid'address'($t3); - // $t114 := <($t112, $t113) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:584:51+1 - call $t114 := $Lt($t112, $t113); + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:862:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingAccountManagement_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingAccountManagement_$memory, $a_0); + ($IsValid'$1_vesting_VestingAccountManagement'($rsc)))); - // if ($t114) goto L5 else goto L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:584:32+281 - if ($t114) { goto L5; } else { goto L4; } + // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:862:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); + (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; + (var j := $i_4; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); - // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:585:29+8 - assume {:print "$at(2,27956,27964)"} true; -L5: + // assume Identical($t8, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:495:9+65 + assume {:print "$at(3,22296,22361)"} true; + assume ($t8 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); - // $t1 := vector::borrow($t110, $t112) on_abort goto L8 with $t94 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:585:14+40 - assume {:print "$at(2,27941,27981)"} true; - call $t1 := $1_vector_borrow'$1_fixed_point32_FixedPoint32'($t110, $t112); - if ($abort_flag) { - assume {:print "$at(2,27941,27981)"} true; - $t94 := $abort_code; - assume {:print "$track_abort(57,35):", $t94} $t94 == $t94; - goto L8; - } + // @58 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:862:5+1 + assume {:print "$at(2,39938,39939)"} true; + $1_vesting_VestingContract_$memory#58 := $1_vesting_VestingContract_$memory; - // goto L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:584:32+281 - assume {:print "$at(2,27879,28160)"} true; - goto L6; + // trace_local[admin]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:862:5+1 + assume {:print "$track_local(59,22,0):", $t0} $t0 == $t0; - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:588:29+8 - assume {:print "$at(2,28111,28119)"} true; -L4: + // trace_local[contract_address]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:862:5+1 + assume {:print "$track_local(59,22,1):", $t1} $t1 == $t1; - // $t115 := vector::length($t110) on_abort goto L8 with $t94 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:588:39+24 - assume {:print "$at(2,28121,28145)"} true; - call $t115 := $1_vector_length'$1_fixed_point32_FixedPoint32'($t110); - if ($abort_flag) { - assume {:print "$at(2,28121,28145)"} true; - $t94 := $abort_code; - assume {:print "$track_abort(57,35):", $t94} $t94 == $t94; - goto L8; - } + // trace_local[role]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:862:5+1 + assume {:print "$track_local(59,22,2):", $t2} $t2 == $t2; - // $t116 := 1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:588:66+1 - $t116 := 1; - assume $IsValid'u64'($t116); + // trace_local[role_holder]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:862:5+1 + assume {:print "$track_local(59,22,3):", $t3} $t3 == $t3; - // $t117 := -($t115, $t116) on_abort goto L8 with $t94 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:588:64+1 - call $t117 := $Sub($t115, $t116); - if ($abort_flag) { - assume {:print "$at(2,28146,28147)"} true; - $t94 := $abort_code; - assume {:print "$track_abort(57,35):", $t94} $t94 == $t94; - goto L8; + // $t9 := borrow_global($t1) on_abort goto L7 with $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:868:32+17 + assume {:print "$at(2,40177,40194)"} true; + if (!$ResourceExists($1_vesting_VestingContract_$memory, $t1)) { + call $ExecFailureAbort(); + } else { + $t9 := $Mutation($Global($t1), EmptyVec(), $ResourceValue($1_vesting_VestingContract_$memory, $t1)); } - - // $t1 := vector::borrow($t110, $t117) on_abort goto L8 with $t94 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:588:14+54 - call $t1 := $1_vector_borrow'$1_fixed_point32_FixedPoint32'($t110, $t117); if ($abort_flag) { - assume {:print "$at(2,28096,28150)"} true; - $t94 := $abort_code; - assume {:print "$track_abort(57,35):", $t94} $t94 == $t94; - goto L8; + assume {:print "$at(2,40177,40194)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(59,22):", $t10} $t10 == $t10; + goto L7; } - // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:584:32+281 - assume {:print "$at(2,27879,28160)"} true; -L6: - - // trace_local[vesting_fraction]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:584:13+16 - assume {:print "$at(2,27860,27876)"} true; - assume {:print "$track_local(57,35,8):", $t1} $t1 == $t1; + // trace_local[vesting_contract]($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:868:13+16 + $temp_0'$1_vesting_VestingContract' := $Dereference($t9); + assume {:print "$track_local(59,22,7):", $temp_0'$1_vesting_VestingContract'} $temp_0'$1_vesting_VestingContract' == $temp_0'$1_vesting_VestingContract'; - // $t118 := get_field.grant_pool($t95) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:590:49+28 - assume {:print "$at(2,28210,28238)"} true; - $t118 := $grant_pool#$1_vesting_VestingContract($Dereference($t95)); + // $t11 := read_ref($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:869:21+25 + assume {:print "$at(2,40251,40276)"} true; + $t11 := $Dereference($t9); - // $t119 := pool_u64::total_coins($t118) on_abort goto L8 with $t94 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:590:27+51 - call $t119 := $1_pool_u64_total_coins($t118); + // vesting::verify_admin($t0, $t11) on_abort goto L7 with $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:869:9+37 + call $1_vesting_verify_admin($t0, $t11); if ($abort_flag) { - assume {:print "$at(2,28188,28239)"} true; - $t94 := $abort_code; - assume {:print "$track_abort(57,35):", $t94} $t94 == $t94; - goto L8; + assume {:print "$at(2,40239,40276)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(59,22):", $t10} $t10 == $t10; + goto L7; } - // $t120 := opaque begin: fixed_point32::multiply_u64($t119, $t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:591:29+58 - assume {:print "$at(2,28269,28327)"} true; - - // assume Identical($t121, Gt(fixed_point32::spec_multiply_u64($t119, $t1), 18446744073709551615)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:591:29+58 - assume ($t121 == ($1_fixed_point32_spec_multiply_u64($t119, $t1) > 18446744073709551615)); - - // if ($t121) goto L11 else goto L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:591:29+58 - if ($t121) { goto L11; } else { goto L9; } - - // label L10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:591:29+58 -L10: - - // assume And(Gt(fixed_point32::spec_multiply_u64($t119, $t1), 18446744073709551615), Eq(131075, $t94)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:591:29+58 - assume {:print "$at(2,28269,28327)"} true; - assume (($1_fixed_point32_spec_multiply_u64($t119, $t1) > 18446744073709551615) && $IsEqual'num'(131075, $t94)); - - // trace_abort($t94) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:591:29+58 - assume {:print "$at(2,28269,28327)"} true; - assume {:print "$track_abort(57,35):", $t94} $t94 == $t94; + // $t12 := exists($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:871:14+6 + assume {:print "$at(2,40292,40298)"} true; + $t12 := $ResourceExists($1_vesting_VestingAccountManagement_$memory, $t1); - // goto L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:591:29+58 - goto L8; + // $t13 := !($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:871:13+1 + call $t13 := $Not($t12); - // label L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:591:29+58 -L9: + // if ($t13) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:871:9+299 + if ($t13) { goto L1; } else { goto L0; } - // assume WellFormed($t120) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:591:29+58 - assume {:print "$at(2,28269,28327)"} true; - assume $IsValid'u64'($t120); + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:872:72+16 + assume {:print "$at(2,40417,40433)"} true; +L1: - // assume Eq($t120, fixed_point32::spec_multiply_u64($t119, $t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:591:29+58 - assume $IsEqual'u64'($t120, $1_fixed_point32_spec_multiply_u64($t119, $t1)); + // $t14 := read_ref($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:872:72+16 + assume {:print "$at(2,40417,40433)"} true; + $t14 := $Dereference($t9); - // $t120 := opaque end: fixed_point32::multiply_u64($t119, $t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:591:29+58 + // assert forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t9)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t9)), addr)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 + // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 + assume {:print "$at(66,538,673)"} true; + assert {:msg "assert_failed(66,538,673): data invariant does not hold"} + (forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t9))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t9))), addr)))); - // $t122 := get_field.remaining_grant($t95) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:593:44+32 - assume {:print "$at(2,28489,28521)"} true; - $t122 := $remaining_grant#$1_vesting_VestingContract($Dereference($t95)); + // assert forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t9)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t9)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t9)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t9)), j)), Eq(i, j)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 + // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 + assume {:print "$at(66,738,867)"} true; + assert {:msg "assert_failed(66,738,867): data invariant does not hold"} + (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t9))))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t9))))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; + (var j := $i_3; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t9))), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t9))), j)) ==> $IsEqual'num'(i, j)))))))); - // $t123 := math64::min($t120, $t122) on_abort goto L8 with $t94 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:593:25+52 - call $t123 := $1_math64_min($t120, $t122); + // $t15 := vesting::get_vesting_account_signer_internal($t14) on_abort goto L7 with $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:872:36+53 + assume {:print "$at(2,40381,40434)"} true; + call $t15 := $1_vesting_get_vesting_account_signer_internal($t14); if ($abort_flag) { - assume {:print "$at(2,28470,28522)"} true; - $t94 := $abort_code; - assume {:print "$track_abort(57,35):", $t94} $t94 == $t94; - goto L8; + assume {:print "$at(2,40381,40434)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(59,22):", $t10} $t10 == $t10; + goto L7; } - // trace_local[vested_amount]($t123) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:593:9+13 - assume {:print "$track_local(57,35,6):", $t123} $t123 == $t123; - - // $t124 := get_field.remaining_grant($t95) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:594:44+32 - assume {:print "$at(2,28567,28599)"} true; - $t124 := $remaining_grant#$1_vesting_VestingContract($Dereference($t95)); - - // $t125 := -($t124, $t123) on_abort goto L8 with $t94 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:594:77+1 - call $t125 := $Sub($t124, $t123); + // $t16 := simple_map::create() on_abort goto L7 with $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:874:24+37 + assume {:print "$at(2,40523,40560)"} true; + call $t16 := $1_simple_map_create'$1_string_String_address'(); if ($abort_flag) { - assume {:print "$at(2,28600,28601)"} true; - $t94 := $abort_code; - assume {:print "$track_abort(57,35):", $t94} $t94 == $t94; - goto L8; + assume {:print "$at(2,40523,40560)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(59,22):", $t10} $t10 == $t10; + goto L7; } - // $t126 := borrow_field.remaining_grant($t95) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:594:9+32 - $t126 := $ChildMutation($t95, 7, $remaining_grant#$1_vesting_VestingContract($Dereference($t95))); - - // write_ref($t126, $t125) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:594:9+83 - $t126 := $UpdateMutation($t126, $t125); - - // write_back[Reference($t95).remaining_grant (u64)]($t126) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:594:9+83 - $t95 := $UpdateMutation($t95, $Update'$1_vesting_VestingContract'_remaining_grant($Dereference($t95), $Dereference($t126))); - - // $t127 := borrow_field.last_vested_period($t100) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:595:9+35 - assume {:print "$at(2,28625,28660)"} true; - $t127 := $ChildMutation($t100, 3, $last_vested_period#$1_vesting_VestingSchedule($Dereference($t100))); + // $t17 := pack vesting::VestingAccountManagement($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:873:38+102 + assume {:print "$at(2,40473,40575)"} true; + $t17 := $1_vesting_VestingAccountManagement($t16); - // write_ref($t127, $t103) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:595:9+57 - $t127 := $UpdateMutation($t127, $t103); + // move_to($t17, $t15) on_abort goto L7 with $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:873:13+7 + if ($ResourceExists($1_vesting_VestingAccountManagement_$memory, $addr#$signer($t15))) { + call $ExecFailureAbort(); + } else { + $1_vesting_VestingAccountManagement_$memory := $ResourceUpdate($1_vesting_VestingAccountManagement_$memory, $addr#$signer($t15), $t17); + } + if ($abort_flag) { + assume {:print "$at(2,40448,40455)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(59,22):", $t10} $t10 == $t10; + goto L7; + } - // write_back[Reference($t100).last_vested_period (u64)]($t127) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:595:9+57 - $t100 := $UpdateMutation($t100, $Update'$1_vesting_VestingSchedule'_last_vested_period($Dereference($t100), $Dereference($t127))); + // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:873:13+128 + goto L2; - // write_back[Reference($t95).vesting_schedule (vesting::VestingSchedule)]($t100) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:595:9+57 - $t95 := $UpdateMutation($t95, $Update'$1_vesting_VestingContract'_vesting_schedule($Dereference($t95), $Dereference($t100))); + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:871:9+299 + assume {:print "$at(2,40287,40586)"} true; +L0: - // $t128 := read_ref($t95) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:596:21+33 - assume {:print "$at(2,28704,28737)"} true; - $t128 := $Dereference($t95); + // assert forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t9)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t9)), addr)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 + // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 + assume {:print "$at(66,538,673)"} true; + assert {:msg "assert_failed(66,538,673): data invariant does not hold"} + (forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t9))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t9))), addr)))); - // assume Identical($t129, select account::SignerCapability.account(select vesting::VestingContract.signer_cap($t128))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:434:9+46 - assume {:print "$at(3,18724,18770)"} true; - assume ($t129 == $account#$1_account_SignerCapability($signer_cap#$1_vesting_VestingContract($t128))); + // assert forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t9)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t9)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t9)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t9)), j)), Eq(i, j)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 + // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 + assume {:print "$at(66,738,867)"} true; + assert {:msg "assert_failed(66,738,867): data invariant does not hold"} + (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t9))))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t9))))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; + (var j := $i_3; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t9))), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t9))), j)) ==> $IsEqual'num'(i, j)))))))); - // assume Identical($t130, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t128))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:435:9+49 - assume {:print "$at(3,18779,18828)"} true; - assume ($t130 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t128))); + // destroy($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:871:9+299 + assume {:print "$at(2,40287,40586)"} true; - // assume Identical($t131, global($t129)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:439:9+49 - assume {:print "$at(3,18996,19045)"} true; - assume ($t131 == $ResourceValue($1_staking_contract_Store_$memory, $t129)); + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:877:70+16 + assume {:print "$at(2,40657,40673)"} true; +L2: - // assume Identical($t132, simple_map::spec_get(select staking_contract::Store.staking_contracts($t131), $t130)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:440:9+79 - assume {:print "$at(3,19054,19133)"} true; - assume ($t132 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($t131), $t130)); + // $t18 := borrow_global($t1) on_abort goto L7 with $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:877:26+17 + assume {:print "$at(2,40613,40630)"} true; + if (!$ResourceExists($1_vesting_VestingAccountManagement_$memory, $t1)) { + call $ExecFailureAbort(); + } else { + $t18 := $Mutation($Global($t1), EmptyVec(), $ResourceValue($1_vesting_VestingAccountManagement_$memory, $t1)); + } + if ($abort_flag) { + assume {:print "$at(2,40613,40630)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(59,22):", $t10} $t10 == $t10; + goto L7; + } - // assume Identical($t133, select staking_contract::Store.staking_contracts(global($t129))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 - assume {:print "$at(134,11481,11545)"} true; - assume ($t133 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t129))); + // $t19 := borrow_field.roles($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:877:21+72 + $t19 := $ChildMutation($t18, 0, $roles#$1_vesting_VestingAccountManagement($Dereference($t18))); - // assume Identical($t134, select staking_contract::StakingContract.pool_address($t132)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:470:9+49 - assume {:print "$at(3,20547,20596)"} true; - assume ($t134 == $pool_address#$1_staking_contract_StakingContract($t132)); + // trace_local[roles]($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:877:13+5 + $temp_0'$1_simple_map_SimpleMap'$1_string_String_address'' := $Dereference($t19); + assume {:print "$track_local(59,22,6):", $temp_0'$1_simple_map_SimpleMap'$1_string_String_address''} $temp_0'$1_simple_map_SimpleMap'$1_string_String_address'' == $temp_0'$1_simple_map_SimpleMap'$1_string_String_address''; - // assume Identical($t135, global($t134)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:472:9+56 - assume {:print "$at(3,20664,20720)"} true; - assume ($t135 == $ResourceValue($1_stake_StakePool_$memory, $t134)); + // $t20 := read_ref($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:878:37+14 + assume {:print "$at(2,40718,40732)"} true; + $t20 := $Dereference($t19); - // assume Identical($t136, select coin::Coin.value(select stake::StakePool.inactive($t135))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:473:9+41 - assume {:print "$at(3,20729,20770)"} true; - assume ($t136 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t135))); + // $t21 := simple_map::contains_key($t20, $t2) on_abort goto L7 with $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:878:13+38 + call $t21 := $1_simple_map_contains_key'$1_string_String_address'($t20, $t2); + if ($abort_flag) { + assume {:print "$at(2,40694,40732)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(59,22):", $t10} $t10 == $t10; + goto L7; + } - // assume Identical($t137, select coin::Coin.value(select stake::StakePool.pending_inactive($t135))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:474:9+57 - assume {:print "$at(3,20779,20836)"} true; - assume ($t137 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t135))); + // if ($t21) goto L4 else goto L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:878:9+192 + if ($t21) { goto L4; } else { goto L3; } - // assume Identical($t138, Add($t136, $t137)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:478:9+63 - assume {:print "$at(3,20948,21011)"} true; - assume ($t138 == ($t136 + $t137)); + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:879:53+11 + assume {:print "$at(2,40788,40799)"} true; +L4: - // assume Identical($t139, select stake::OwnerCapability.pool_address(select staking_contract::StakingContract.owner_cap($t132))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:479:9+61 - assume {:print "$at(3,21020,21081)"} true; - assume ($t139 == $pool_address#$1_stake_OwnerCapability($owner_cap#$1_staking_contract_StakingContract($t132))); + // $t22 := simple_map::borrow_mut($t19, $t2) on_abort goto L7 with $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:879:14+36 + assume {:print "$at(2,40749,40785)"} true; + call $t22,$t19 := $1_simple_map_borrow_mut'$1_string_String_address'($t19, $t2); + if ($abort_flag) { + assume {:print "$at(2,40749,40785)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(59,22):", $t10} $t10 == $t10; + goto L7; + } - // assume Identical($t140, global($t139)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:481:9+60 - assume {:print "$at(3,21151,21211)"} true; - assume ($t140 == $ResourceValue($1_stake_StakePool_$memory, $t139)); + // write_ref($t22, $t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:879:13+51 + $t22 := $UpdateMutation($t22, $t3); - // assume Identical($t141, global(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:483:9+66 - assume {:print "$at(3,21286,21352)"} true; - assume ($t141 == $ResourceValue($1_stake_ValidatorSet_$memory, 1)); + // write_back[Reference($t19)[]]($t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:879:13+51 + $t19 := $UpdateMutation($t19, UpdateTable($Dereference($t19), ReadVec(p#$Mutation($t22), LenVec(p#$Mutation($t19))), $Dereference($t22))); - // assume Identical($t142, And(And(Not(stake::spec_contains(select stake::ValidatorSet.pending_active($t141), $t139)), Not(stake::spec_contains(select stake::ValidatorSet.active_validators($t141), $t139))), Not(stake::spec_contains(select stake::ValidatorSet.pending_inactive($t141), $t139)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:484:9+260 - assume {:print "$at(3,21361,21621)"} true; - assume ($t142 == ((!$1_stake_spec_contains($pending_active#$1_stake_ValidatorSet($t141), $t139) && !$1_stake_spec_contains($active_validators#$1_stake_ValidatorSet($t141), $t139)) && !$1_stake_spec_contains($pending_inactive#$1_stake_ValidatorSet($t141), $t139))); + // write_back[Reference($t18).roles (simple_map::SimpleMap)]($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:879:13+51 + $t18 := $UpdateMutation($t18, $Update'$1_vesting_VestingAccountManagement'_roles($Dereference($t18), $Dereference($t19))); - // assume Identical($t143, select coin::Coin.value(select stake::StakePool.inactive($t140))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:487:9+45 - assume {:print "$at(3,21630,21675)"} true; - assume ($t143 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t140))); + // write_back[vesting::VestingAccountManagement@]($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:879:13+51 + $1_vesting_VestingAccountManagement_$memory := $ResourceUpdate($1_vesting_VestingAccountManagement_$memory, $GlobalLocationAddress($t18), + $Dereference($t18)); - // assume Identical($t144, select coin::Coin.value(select stake::StakePool.pending_inactive($t140))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:488:9+61 - assume {:print "$at(3,21684,21745)"} true; - assume ($t144 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t140))); + // goto L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:879:64+1 + goto L5; - // assume Identical($t145, Add($t143, $t144)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:489:9+53 - assume {:print "$at(3,21754,21807)"} true; - assume ($t145 == ($t143 + $t144)); + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:881:29+5 + assume {:print "$at(2,40846,40851)"} true; +L3: - // vesting::unlock_stake($t128, $t123) on_abort goto L8 with $t94 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:596:9+45 - assume {:print "$at(2,28692,28737)"} true; - call $1_vesting_unlock_stake($t128, $t123); + // simple_map::add($t19, $t2, $t3) on_abort goto L7 with $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:881:13+41 + assume {:print "$at(2,40830,40871)"} true; + call $t19 := $1_simple_map_add'$1_string_String_address'($t19, $t2, $t3); if ($abort_flag) { - assume {:print "$at(2,28692,28737)"} true; - $t94 := $abort_code; - assume {:print "$track_abort(57,35):", $t94} $t94 == $t94; - goto L8; + assume {:print "$at(2,40830,40871)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(59,22):", $t10} $t10 == $t10; + goto L7; } - // $t146 := borrow_field.vest_events($t95) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:599:13+33 - assume {:print "$at(2,28772,28805)"} true; - $t146 := $ChildMutation($t95, 14, $vest_events#$1_vesting_VestingContract($Dereference($t95))); - - // $t147 := get_field.admin($t95) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:601:24+22 - assume {:print "$at(2,28854,28876)"} true; - $t147 := $admin#$1_vesting_VestingContract($Dereference($t95)); - - // $t148 := get_field.staking($t95) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:603:39+24 - assume {:print "$at(2,28976,29000)"} true; - $t148 := $staking#$1_vesting_VestingContract($Dereference($t95)); - - // $t149 := get_field.pool_address($t148) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:603:39+37 - $t149 := $pool_address#$1_vesting_StakingInfo($t148); - - // $t150 := pack vesting::VestEvent($t147, $t0, $t149, $t103, $t123) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:600:13+300 - assume {:print "$at(2,28819,29119)"} true; - $t150 := $1_vesting_VestEvent($t147, $t0, $t149, $t103, $t123); - - // opaque begin: event::emit_event($t146, $t150) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:598:9+382 - assume {:print "$at(2,28748,29130)"} true; + // write_back[Reference($t18).roles (simple_map::SimpleMap)]($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:881:13+41 + $t18 := $UpdateMutation($t18, $Update'$1_vesting_VestingAccountManagement'_roles($Dereference($t18), $Dereference($t19))); - // opaque end: event::emit_event($t146, $t150) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:598:9+382 + // write_back[vesting::VestingAccountManagement@]($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:881:13+41 + $1_vesting_VestingAccountManagement_$memory := $ResourceUpdate($1_vesting_VestingAccountManagement_$memory, $GlobalLocationAddress($t18), + $Dereference($t18)); - // write_back[Reference($t95).vest_events (event::EventHandle)]($t146) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:598:9+382 - $t95 := $UpdateMutation($t95, $Update'$1_vesting_VestingContract'_vest_events($Dereference($t95), $Dereference($t146))); + // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:882:10+1 + assume {:print "$at(2,40882,40883)"} true; +L5: - // pack_ref_deep($t95) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:598:9+382 + // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:883:5+1 + assume {:print "$at(2,40888,40889)"} true; +L6: - // write_back[vesting::VestingContract@]($t95) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:598:9+382 - $1_vesting_VestingContract_$memory := $ResourceUpdate($1_vesting_VestingContract_$memory, $GlobalLocationAddress($t95), - $Dereference($t95)); + // assert Not(Not(exists[@58]($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:494:9+53 + assume {:print "$at(3,22234,22287)"} true; + assert {:msg "assert_failed(3,22234,22287): function does not abort under this condition"} + !!$ResourceExists($1_vesting_VestingContract_$memory#58, $t1); - // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:608:5+1 - assume {:print "$at(2,29136,29137)"} true; -L7: + // assert Not(Neq
(signer::$address_of[]($t0), select vesting::VestingContract.admin($t8))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:497:9+62 + assume {:print "$at(3,22518,22580)"} true; + assert {:msg "assert_failed(3,22518,22580): function does not abort under this condition"} + !!$IsEqual'address'($1_signer_$address_of($t0), $admin#$1_vesting_VestingContract($t8)); - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:608:5+1 - assume {:print "$at(2,29136,29137)"} true; + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:497:9+62 return; - // label L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:608:5+1 -L8: + // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:883:5+1 + assume {:print "$at(2,40888,40889)"} true; +L7: - // abort($t94) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:608:5+1 - assume {:print "$at(2,29136,29137)"} true; - $abort_code := $t94; + // abort($t10) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:883:5+1 + assume {:print "$at(2,40888,40889)"} true; + $abort_code := $t10; $abort_flag := true; return; - // label L11 at :1:1+10 - assume {:print "$at(1,0,10)"} true; -L11: - - // destroy($t95) at :1:1+10 - assume {:print "$at(1,0,10)"} true; - - // destroy($t100) at :1:1+10 - - // goto L10 at :1:1+10 - goto L10; - } -// fun vesting::vest_many [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:611:5+408 -procedure {:timeLimit 1000} $1_vesting_vest_many$verify(_$t0: Vec (int)) returns () +// fun vesting::total_accumulated_rewards [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:356:5+521 +procedure {:inline 1} $1_vesting_total_accumulated_rewards(_$t0: int) returns ($ret0: int) { // declare local variables var $t1: int; - var $t2: int; - var $t3: Vec (int); + var $t2: $1_vesting_VestingContract; + var $t3: $1_vesting_VestingContract; var $t4: int; var $t5: int; - var $t6: int; - var $t7: bool; + var $t6: Table int ($1_staking_contract_StakingContract); + var $t7: $1_staking_contract_StakingContract; var $t8: int; - var $t9: int; + var $t9: $1_stake_StakePool; var $t10: int; var $t11: int; - var $t12: bool; + var $t12: int; var $t13: int; var $t14: int; - var $t15: int; + var $t15: $1_vesting_VestingContract; var $t16: $1_vesting_VestingContract; var $t17: int; - var $t18: Table int ($1_staking_contract_StakingContract); - var $t19: $1_staking_contract_StakingContract; + var $t18: $1_vesting_VestingContract; + var $t19: $1_vesting_StakingInfo; var $t20: int; - var $t21: $1_stake_StakePool; - var $t22: int; + var $t21: Table int ($1_staking_contract_StakingContract); + var $t22: $1_staking_contract_StakingContract; var $t23: int; - var $t24: int; + var $t24: $1_stake_StakePool; var $t25: int; var $t26: int; var $t27: int; - var $t28: $1_vesting_VestingContract; - var $t29: int; + var $t28: int; + var $t29: Table int ($1_staking_contract_StakingContract); var $t30: int; - var $t31: Table int ($1_staking_contract_StakingContract); - var $t32: $1_staking_contract_StakingContract; + var $t31: $1_stake_StakePool; + var $t32: int; var $t33: int; - var $t34: $1_stake_StakePool; + var $t34: int; var $t35: int; var $t36: int; var $t37: int; var $t38: int; var $t39: int; - var $t40: $1_vesting_VestingContract; + var $t40: int; var $t41: int; - var $t42: int; - var $t43: $1_staking_contract_Store; - var $t44: $1_staking_contract_StakingContract; - var $t45: Table int ($1_staking_contract_StakingContract); - var $t46: int; - var $t47: $1_stake_StakePool; - var $t48: int; - var $t49: int; - var $t50: int; - var $t51: int; - var $t52: $1_stake_StakePool; - var $t53: $1_stake_ValidatorSet; - var $t54: bool; - var $t55: int; - var $t56: int; - var $t57: int; - var $t0: Vec (int); + var $t0: int; + var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; + var $temp_0'address': int; var $temp_0'u64': int; - var $temp_0'vec'address'': Vec (int); $t0 := _$t0; - // verification entrypoint assumptions - call $InitVerification(); - // bytecode translation starts here - // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:611:5+1 - assume {:print "$at(2,29191,29192)"} true; - assume $IsValid'vec'address''($t0); - - // assume forall $rsc: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: select option::Option.vec(select coin::CoinInfo.supply($rsc)): And(And(And(And(And(Iff(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($elem)), option::$is_none(select optional_aggregator::OptionalAggregator.integer($elem))), Iff(option::$is_some(select optional_aggregator::OptionalAggregator.integer($elem)), option::$is_none(select optional_aggregator::OptionalAggregator.aggregator($elem)))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.integer($elem)), Le(select optional_aggregator::Integer.value(option::$borrow(select optional_aggregator::OptionalAggregator.integer($elem))), select optional_aggregator::Integer.limit(option::$borrow(select optional_aggregator::OptionalAggregator.integer($elem)))))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($elem)), Le(aggregator::spec_aggregator_get_val(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($elem))), aggregator::spec_get_limit(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($elem)))))), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.aggregator($elem))), 1)), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.integer($elem))), 1)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:611:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $a_0); - (($IsValid'$1_coin_CoinInfo'$1_aptos_coin_AptosCoin''($rsc) && ((LenVec($vec#$1_option_Option'$1_optional_aggregator_OptionalAggregator'($supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($rsc))) <= 1) && (var $range_1 := $vec#$1_option_Option'$1_optional_aggregator_OptionalAggregator'($supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($rsc)); (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); - ((((((($1_option_$is_some'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)) <==> $1_option_$is_none'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)) ==> ($value#$1_optional_aggregator_Integer($1_option_$borrow'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) <= $limit#$1_optional_aggregator_Integer($1_option_$borrow'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)))))) && ($1_option_$is_some'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem))) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)))))) && (LenVec($vec#$1_option_Option'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem))) <= 1)) && (LenVec($vec#$1_option_Option'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) <= 1))))))))))); - - // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:611:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $a_0); - ($IsValid'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''($rsc)))); - - // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:611:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $a_0); - ($IsValid'$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin''($rsc)))); - - // assume exists>(0x0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:611:5+1 - assume $ResourceExists($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, 0); - - // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:611:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, $a_0); - ($IsValid'$1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin''($rsc)))); - - // assume exists>(0x0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:611:5+1 - assume $ResourceExists($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, 0); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:611:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_chain_status_GenesisEndMarker_$memory, $a_0)}(var $rsc := $ResourceValue($1_chain_status_GenesisEndMarker_$memory, $a_0); - ($IsValid'$1_chain_status_GenesisEndMarker'($rsc)))); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:611:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_timestamp_CurrentTimeMicroseconds_$memory, $a_0)}(var $rsc := $ResourceValue($1_timestamp_CurrentTimeMicroseconds_$memory, $a_0); - ($IsValid'$1_timestamp_CurrentTimeMicroseconds'($rsc)))); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:611:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_stake_StakePool_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_StakePool_$memory, $a_0); - ($IsValid'$1_stake_StakePool'($rsc)))); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:611:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorConfig_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorConfig_$memory, $a_0); - ($IsValid'$1_stake_ValidatorConfig'($rsc)))); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:611:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorPerformance_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorPerformance_$memory, $a_0); - ($IsValid'$1_stake_ValidatorPerformance'($rsc)))); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:611:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorSet_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorSet_$memory, $a_0); - ($IsValid'$1_stake_ValidatorSet'($rsc)))); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:611:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_reconfiguration_Configuration_$memory, $a_0)}(var $rsc := $ResourceValue($1_reconfiguration_Configuration_$memory, $a_0); - ($IsValid'$1_reconfiguration_Configuration'($rsc)))); - - // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), forall $key: select staking_contract::Store.staking_contracts($rsc): And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), i), Index(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:611:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_staking_contract_Store_$memory, $a_0)}(var $rsc := $ResourceValue($1_staking_contract_Store_$memory, $a_0); - (($IsValid'$1_staking_contract_Store'($rsc) && (var $range_1 := $staking_contracts#$1_staking_contract_Store($rsc); (forall $key: int :: ContainsTable($range_1, $EncodeKey'address'($key)) ==> (((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), addr)))) && (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))))); (var $range_3 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))))); (forall $i_4: int, $i_5: int :: $InRange($range_2, $i_4) ==> $InRange($range_3, $i_5) ==> (var i := $i_4; - (var j := $i_5; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), i), ReadVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), j)) ==> $IsEqual'num'(i, j)))))))))))))))); + // assume Identical($t3, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:62:9+73 + assume {:print "$at(3,2327,2400)"} true; + assume ($t3 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); - // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:611:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); - (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; - (var j := $i_4; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); + // assume Identical($t4, $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:64:9+38 + assume {:print "$at(3,2410,2448)"} true; + assume ($t4 == $t0); - // assume Implies(chain_status::$is_operating(), exists(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:611:5+408 - // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.spec.move:4:9+93 - assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory, 1)); + // assume Identical($t5, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t3))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:65:9+49 + assume {:print "$at(3,2457,2506)"} true; + assume ($t5 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t3))); - // assume Implies(exists(0x1), stake::validator_set_is_valid()) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:611:5+408 - // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:8:9+92 - assume ($ResourceExists($1_stake_ValidatorSet_$memory, 1) ==> $1_stake_validator_set_is_valid($1_stake_StakePool_$memory, $1_stake_ValidatorConfig_$memory, $1_stake_ValidatorPerformance_$memory, $1_stake_ValidatorSet_$memory)); + // assume Identical($t6, select staking_contract::Store.staking_contracts(global($t4))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:66:9+82 + assume {:print "$at(3,2515,2597)"} true; + assume ($t6 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t4))); - // assume Implies(chain_status::$is_operating(), exists(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:611:5+408 - // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:12:9+96 - assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_stake_ValidatorSet_$memory, 1)); + // assume Identical($t7, simple_map::spec_get($t6, $t5)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:67:9+73 + assume {:print "$at(3,2606,2679)"} true; + assume ($t7 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($t6, $t5)); - // assume Implies(chain_status::$is_operating(), Ge(timestamp::spec_now_microseconds(), reconfiguration::$last_reconfiguration_time())) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:611:5+408 - // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/reconfiguration.spec.move:8:9+137 - assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> ($1_timestamp_spec_now_microseconds($1_timestamp_CurrentTimeMicroseconds_$memory) >= $1_reconfiguration_$last_reconfiguration_time($1_reconfiguration_Configuration_$memory))); + // assume Identical($t8, select staking_contract::StakingContract.pool_address($t7)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:72:9+49 + assume {:print "$at(3,2829,2878)"} true; + assume ($t8 == $pool_address#$1_staking_contract_StakingContract($t7)); - // assume forall i: Range(0, Len
($t0)): And(Ge(select staking_contract::StakingContract.commission_percentage(simple_map::spec_get(select staking_contract::Store.staking_contracts(global(Index($t0, i))), select vesting::StakingInfo.operator(select vesting::VestingContract.staking(global(Index($t0, i)))))), 0), Le(select staking_contract::StakingContract.commission_percentage(simple_map::spec_get(select staking_contract::Store.staking_contracts(global(Index($t0, i))), select vesting::StakingInfo.operator(select vesting::VestingContract.staking(global(Index($t0, i)))))), 100)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:203:9+440 - assume {:print "$at(3,9064,9504)"} true; - assume (var $range_0 := $Range(0, LenVec($t0)); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var i := $i_1; - ((($commission_percentage#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, ReadVec($t0, i))), $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($ResourceValue($1_vesting_VestingContract_$memory, ReadVec($t0, i)))))) >= 0) && ($commission_percentage#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, ReadVec($t0, i))), $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($ResourceValue($1_vesting_VestingContract_$memory, ReadVec($t0, i)))))) <= 100)))))); + // assume Identical($t9, global($t8)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:73:9+56 + assume {:print "$at(3,2887,2943)"} true; + assume ($t9 == $ResourceValue($1_stake_StakePool_$memory, $t8)); - // trace_local[contract_addresses]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:611:5+1 - assume {:print "$at(2,29191,29192)"} true; - assume {:print "$track_local(57,36,0):", $t0} $t0 == $t0; + // assume Identical($t10, coin::$value(select stake::StakePool.active($t9))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:74:9+44 + assume {:print "$at(3,2952,2996)"} true; + assume ($t10 == $1_coin_$value'$1_aptos_coin_AptosCoin'($active#$1_stake_StakePool($t9))); - // $t4 := vector::length
($t0) on_abort goto L9 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:612:19+35 - assume {:print "$at(2,29300,29335)"} true; - call $t4 := $1_vector_length'address'($t0); - if ($abort_flag) { - assume {:print "$at(2,29300,29335)"} true; - $t5 := $abort_code; - assume {:print "$track_abort(57,36):", $t5} $t5 == $t5; - goto L9; - } + // assume Identical($t11, coin::$value(select stake::StakePool.pending_active($t9))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:75:9+60 + assume {:print "$at(3,3005,3065)"} true; + assume ($t11 == $1_coin_$value'$1_aptos_coin_AptosCoin'($pending_active#$1_stake_StakePool($t9))); - // $t6 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:614:24+1 - assume {:print "$at(2,29361,29362)"} true; - $t6 := 0; - assume $IsValid'u64'($t6); + // assume Identical($t12, Add($t10, $t11)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:76:9+49 + assume {:print "$at(3,3074,3123)"} true; + assume ($t12 == ($t10 + $t11)); - // $t7 := !=($t4, $t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:614:21+2 - $t7 := !$IsEqual'u64'($t4, $t6); + // assume Identical($t13, Sub($t12, select staking_contract::StakingContract.principal($t7))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:77:9+74 + assume {:print "$at(3,3132,3206)"} true; + assume ($t13 == ($t12 - $principal#$1_staking_contract_StakingContract($t7))); - // if ($t7) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:614:9+72 - if ($t7) { goto L1; } else { goto L0; } + // assume Identical($t14, Div(Mul($t13, select staking_contract::StakingContract.commission_percentage($t7)), 100)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:78:9+91 + assume {:print "$at(3,3215,3306)"} true; + assume ($t14 == (($t13 * $commission_percentage#$1_staking_contract_StakingContract($t7)) div 100)); - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:614:9+72 -L1: + // assume Identical($t15, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:511:9+65 + assume {:print "$at(3,23068,23133)"} true; + assume ($t15 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); - // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:614:9+72 - assume {:print "$at(2,29346,29418)"} true; - goto L2; + // assume And(Ge(select staking_contract::StakingContract.commission_percentage($t7), 0), Le(select staking_contract::StakingContract.commission_percentage($t7), 100)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:59:9+102 + assume {:print "$at(3,2107,2209)"} true; + assume (($commission_percentage#$1_staking_contract_StakingContract($t7) >= 0) && ($commission_percentage#$1_staking_contract_StakingContract($t7) <= 100)); - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:614:51+28 -L0: + // trace_local[vesting_contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:356:5+1 + assume {:print "$at(2,16826,16827)"} true; + assume {:print "$track_local(59,27,0):", $t0} $t0 == $t0; - // $t8 := 16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:614:51+28 - assume {:print "$at(2,29388,29416)"} true; - $t8 := 16; - assume $IsValid'u64'($t8); + // assume Identical($t16, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:511:9+65 + assume {:print "$at(3,23068,23133)"} true; + assume ($t16 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); - // $t9 := error::invalid_argument($t8) on_abort goto L9 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:614:27+53 - call $t9 := $1_error_invalid_argument($t8); + // vesting::assert_active_vesting_contract($t0) on_abort goto L2 with $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:357:9+56 + assume {:print "$at(2,16938,16994)"} true; + call $1_vesting_assert_active_vesting_contract($t0); if ($abort_flag) { - assume {:print "$at(2,29364,29417)"} true; - $t5 := $abort_code; - assume {:print "$track_abort(57,36):", $t5} $t5 == $t5; - goto L9; + assume {:print "$at(2,16938,16994)"} true; + $t17 := $abort_code; + assume {:print "$track_abort(59,27):", $t17} $t17 == $t17; + goto L2; } - // trace_abort($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:614:9+72 - assume {:print "$at(2,29346,29418)"} true; - assume {:print "$track_abort(57,36):", $t9} $t9 == $t9; - - // $t5 := move($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:614:9+72 - $t5 := $t9; - - // goto L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:614:9+72 - goto L9; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:616:30+19 - assume {:print "$at(2,29450,29469)"} true; -L2: - - // trace_local[v#262]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:616:9+163 - assume {:print "$at(2,29429,29592)"} true; - assume {:print "$track_local(57,36,3):", $t0} $t0 == $t0; - - // $t10 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:261:17+1 - assume {:print "$at(18,9246,9247)"} true; - $t10 := 0; - assume $IsValid'u64'($t10); - - // trace_local[i#264]($t10) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:261:13+1 - assume {:print "$track_local(57,36,1):", $t10} $t10 == $t10; - - // $t11 := vector::length
($t0) on_abort goto L9 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:262:19+9 - assume {:print "$at(18,9267,9276)"} true; - call $t11 := $1_vector_length'address'($t0); - if ($abort_flag) { - assume {:print "$at(18,9267,9276)"} true; - $t5 := $abort_code; - assume {:print "$track_abort(57,36):", $t5} $t5 == $t5; - goto L9; + // $t18 := get_global($t0) on_abort goto L2 with $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:359:32+13 + assume {:print "$at(2,17028,17041)"} true; + if (!$ResourceExists($1_vesting_VestingContract_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t18 := $ResourceValue($1_vesting_VestingContract_$memory, $t0); } - - // trace_local[len#265]($t11) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:262:13+3 - assume {:print "$track_local(57,36,2):", $t11} $t11 == $t11; - - // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume {:print "$at(18,9293,9294)"} true; -L6: - - // $t1 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume {:print "$at(18,9293,9294)"} true; - havoc $t1; - - // assume WellFormed($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume $IsValid'u64'($t1); - - // $t12 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - havoc $t12; - - // assume WellFormed($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume $IsValid'bool'($t12); - - // $t13 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - havoc $t13; - - // assume WellFormed($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume $IsValid'address'($t13); - - // $t14 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - havoc $t14; - - // assume WellFormed($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume $IsValid'u64'($t14); - - // $t15 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - havoc $t15; - - // assume WellFormed($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume $IsValid'u64'($t15); - - // trace_local[i#264]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume {:print "$info(): enter loop, variable(s) i#264 havocked and reassigned"} true; - assume {:print "$track_local(57,36,1):", $t1} $t1 == $t1; - - // assume Not(AbortFlag()) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:16+1 - assume !$abort_flag; - - // $t12 := <($t1, $t11) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:18+1 - call $t12 := $Lt($t1, $t11); - - // if ($t12) goto L4 else goto L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:9+78 - if ($t12) { goto L4; } else { goto L3; } - - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:263:9+78 -L4: - - // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:264:22+1 - assume {:print "$at(18,9325,9326)"} true; -L5: - - // $t13 := vector::borrow
($t0, $t1) on_abort goto L9 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:264:15+12 - assume {:print "$at(18,9318,9330)"} true; - call $t13 := $1_vector_borrow'address'($t0, $t1); if ($abort_flag) { - assume {:print "$at(18,9318,9330)"} true; - $t5 := $abort_code; - assume {:print "$track_abort(57,36):", $t5} $t5 == $t5; - goto L9; + assume {:print "$at(2,17028,17041)"} true; + $t17 := $abort_code; + assume {:print "$track_abort(59,27):", $t17} $t17 == $t17; + goto L2; } - // assume Identical($t16, global($t13)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:161:9+65 - assume {:print "$at(3,7222,7287)"} true; - assume ($t16 == $ResourceValue($1_vesting_VestingContract_$memory, $t13)); - - // assume Identical($t17, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t16))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:162:9+49 - assume {:print "$at(3,7296,7345)"} true; - assume ($t17 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t16))); - - // assume Identical($t18, select staking_contract::Store.staking_contracts(global($t13))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:163:9+92 - assume {:print "$at(3,7354,7446)"} true; - assume ($t18 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t13))); - - // assume Identical($t19, simple_map::spec_get($t18, $t17)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:164:9+73 - assume {:print "$at(3,7455,7528)"} true; - assume ($t19 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($t18, $t17)); - - // assume Identical($t20, select staking_contract::StakingContract.pool_address($t19)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:165:9+49 - assume {:print "$at(3,7537,7586)"} true; - assume ($t20 == $pool_address#$1_staking_contract_StakingContract($t19)); - - // assume Identical($t21, global($t20)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:166:9+56 - assume {:print "$at(3,7595,7651)"} true; - assume ($t21 == $ResourceValue($1_stake_StakePool_$memory, $t20)); - - // assume Identical($t22, coin::$value(select stake::StakePool.active($t21))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:167:9+44 - assume {:print "$at(3,7660,7704)"} true; - assume ($t22 == $1_coin_$value'$1_aptos_coin_AptosCoin'($active#$1_stake_StakePool($t21))); - - // assume Identical($t23, coin::$value(select stake::StakePool.pending_active($t21))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:168:9+60 - assume {:print "$at(3,7713,7773)"} true; - assume ($t23 == $1_coin_$value'$1_aptos_coin_AptosCoin'($pending_active#$1_stake_StakePool($t21))); - - // assume Identical($t24, Add($t22, $t23)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:169:9+49 - assume {:print "$at(3,7782,7831)"} true; - assume ($t24 == ($t22 + $t23)); - - // assume Identical($t25, Sub($t24, select staking_contract::StakingContract.principal($t19))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:170:9+74 - assume {:print "$at(3,7840,7914)"} true; - assume ($t25 == ($t24 - $principal#$1_staking_contract_StakingContract($t19))); - - // assume Identical($t26, Div(Mul($t25, select staking_contract::StakingContract.commission_percentage($t19)), 100)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:171:9+91 - assume {:print "$at(3,7923,8014)"} true; - assume ($t26 == (($t25 * $commission_percentage#$1_staking_contract_StakingContract($t19)) div 100)); - - // assume Identical($t27, Sub(Sub($t24, select vesting::VestingContract.remaining_grant($t16)), $t26)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:172:9+87 - assume {:print "$at(3,8023,8110)"} true; - assume ($t27 == (($t24 - $remaining_grant#$1_vesting_VestingContract($t16)) - $t26)); - - // assume Identical($t28, global($t13)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:59:9+73 - assume {:print "$at(3,2072,2145)"} true; - assume ($t28 == $ResourceValue($1_vesting_VestingContract_$memory, $t13)); - - // assume Identical($t29, $t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:61:9+38 - assume {:print "$at(3,2155,2193)"} true; - assume ($t29 == $t13); - - // assume Identical($t30, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t28))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:62:9+49 - assume {:print "$at(3,2202,2251)"} true; - assume ($t30 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t28))); - - // assume Identical($t31, select staking_contract::Store.staking_contracts(global($t29))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:63:9+82 - assume {:print "$at(3,2260,2342)"} true; - assume ($t31 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t29))); - - // assume Identical($t32, simple_map::spec_get($t31, $t30)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:64:9+73 - assume {:print "$at(3,2351,2424)"} true; - assume ($t32 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($t31, $t30)); - - // assume Identical($t33, select staking_contract::StakingContract.pool_address($t32)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:69:9+49 - assume {:print "$at(3,2574,2623)"} true; - assume ($t33 == $pool_address#$1_staking_contract_StakingContract($t32)); - - // assume Identical($t34, global($t33)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:70:9+56 - assume {:print "$at(3,2632,2688)"} true; - assume ($t34 == $ResourceValue($1_stake_StakePool_$memory, $t33)); - - // assume Identical($t35, coin::$value(select stake::StakePool.active($t34))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:71:9+44 - assume {:print "$at(3,2697,2741)"} true; - assume ($t35 == $1_coin_$value'$1_aptos_coin_AptosCoin'($active#$1_stake_StakePool($t34))); - - // assume Identical($t36, coin::$value(select stake::StakePool.pending_active($t34))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:72:9+60 - assume {:print "$at(3,2750,2810)"} true; - assume ($t36 == $1_coin_$value'$1_aptos_coin_AptosCoin'($pending_active#$1_stake_StakePool($t34))); + // trace_local[vesting_contract]($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:359:13+16 + assume {:print "$track_local(59,27,2):", $t18} $t18 == $t18; - // assume Identical($t37, Add($t35, $t36)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:73:9+49 - assume {:print "$at(3,2819,2868)"} true; - assume ($t37 == ($t35 + $t36)); + // $t19 := get_field.staking($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:361:82+24 + assume {:print "$at(2,17224,17248)"} true; + $t19 := $staking#$1_vesting_VestingContract($t18); - // assume Identical($t38, Sub($t37, select staking_contract::StakingContract.principal($t32))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:74:9+74 - assume {:print "$at(3,2877,2951)"} true; - assume ($t38 == ($t37 - $principal#$1_staking_contract_StakingContract($t32))); + // $t20 := get_field.operator($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:361:82+33 + $t20 := $operator#$1_vesting_StakingInfo($t19); - // assume Identical($t39, Div(Mul($t38, select staking_contract::StakingContract.commission_percentage($t32)), 100)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:75:9+91 - assume {:print "$at(3,2960,3051)"} true; - assume ($t39 == (($t38 * $commission_percentage#$1_staking_contract_StakingContract($t32)) div 100)); + // assume Identical($t21, select staking_contract::Store.staking_contracts(global($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:25:9+64 + assume {:print "$at(141,843,907)"} true; + assume ($t21 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t0))); - // assume Identical($t40, global($t13)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:518:9+65 - assume {:print "$at(3,23036,23101)"} true; - assume ($t40 == $ResourceValue($1_vesting_VestingContract_$memory, $t13)); + // assume Identical($t22, simple_map::spec_get($t21, $t20)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:26:9+73 + assume {:print "$at(141,916,989)"} true; + assume ($t22 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($t21, $t20)); - // assume Identical($t41, select account::SignerCapability.account(select vesting::VestingContract.signer_cap($t40))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:434:9+46 - assume {:print "$at(3,18724,18770)"} true; - assume ($t41 == $account#$1_account_SignerCapability($signer_cap#$1_vesting_VestingContract($t40))); + // assume Identical($t23, select staking_contract::StakingContract.pool_address($t22)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:30:9+49 + assume {:print "$at(141,1108,1157)"} true; + assume ($t23 == $pool_address#$1_staking_contract_StakingContract($t22)); - // assume Identical($t42, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t40))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:435:9+49 - assume {:print "$at(3,18779,18828)"} true; - assume ($t42 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t40))); + // assume Identical($t24, global($t23)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:31:9+56 + assume {:print "$at(141,1166,1222)"} true; + assume ($t24 == $ResourceValue($1_stake_StakePool_$memory, $t23)); - // assume Identical($t43, global($t41)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:439:9+49 - assume {:print "$at(3,18996,19045)"} true; - assume ($t43 == $ResourceValue($1_staking_contract_Store_$memory, $t41)); + // assume Identical($t25, coin::$value(select stake::StakePool.active($t24))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:32:9+44 + assume {:print "$at(141,1231,1275)"} true; + assume ($t25 == $1_coin_$value'$1_aptos_coin_AptosCoin'($active#$1_stake_StakePool($t24))); - // assume Identical($t44, simple_map::spec_get(select staking_contract::Store.staking_contracts($t43), $t42)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:440:9+79 - assume {:print "$at(3,19054,19133)"} true; - assume ($t44 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($t43), $t42)); + // assume Identical($t26, coin::$value(select stake::StakePool.pending_active($t24))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:33:9+60 + assume {:print "$at(141,1284,1344)"} true; + assume ($t26 == $1_coin_$value'$1_aptos_coin_AptosCoin'($pending_active#$1_stake_StakePool($t24))); - // assume Identical($t45, select staking_contract::Store.staking_contracts(global($t41))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 - assume {:print "$at(134,11481,11545)"} true; - assume ($t45 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t41))); + // assume Identical($t27, Add($t25, $t26)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:34:9+49 + assume {:print "$at(141,1353,1402)"} true; + assume ($t27 == ($t25 + $t26)); - // assume Identical($t46, select staking_contract::StakingContract.pool_address($t44)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:470:9+49 - assume {:print "$at(3,20547,20596)"} true; - assume ($t46 == $pool_address#$1_staking_contract_StakingContract($t44)); + // assume Identical($t28, Sub($t27, select staking_contract::StakingContract.principal($t22))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:35:9+74 + assume {:print "$at(141,1411,1485)"} true; + assume ($t28 == ($t27 - $principal#$1_staking_contract_StakingContract($t22))); - // assume Identical($t47, global($t46)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:472:9+56 - assume {:print "$at(3,20664,20720)"} true; - assume ($t47 == $ResourceValue($1_stake_StakePool_$memory, $t46)); + // assume Identical($t29, select staking_contract::Store.staking_contracts(global($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:302:9+64 + assume {:print "$at(141,12978,13042)"} true; + assume ($t29 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t0))); - // assume Identical($t48, select coin::Coin.value(select stake::StakePool.inactive($t47))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:473:9+41 - assume {:print "$at(3,20729,20770)"} true; - assume ($t48 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t47))); + // assume Identical($t30, select staking_contract::StakingContract.pool_address($t22)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:334:9+49 + assume {:print "$at(141,14229,14278)"} true; + assume ($t30 == $pool_address#$1_staking_contract_StakingContract($t22)); - // assume Identical($t49, select coin::Coin.value(select stake::StakePool.pending_inactive($t47))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:474:9+57 - assume {:print "$at(3,20779,20836)"} true; - assume ($t49 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t47))); + // assume Identical($t31, global($t30)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:335:9+56 + assume {:print "$at(141,14287,14343)"} true; + assume ($t31 == $ResourceValue($1_stake_StakePool_$memory, $t30)); - // assume Identical($t50, Add($t48, $t49)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:478:9+63 - assume {:print "$at(3,20948,21011)"} true; - assume ($t50 == ($t48 + $t49)); + // assume Identical($t32, coin::$value(select stake::StakePool.active($t31))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:336:9+44 + assume {:print "$at(141,14352,14396)"} true; + assume ($t32 == $1_coin_$value'$1_aptos_coin_AptosCoin'($active#$1_stake_StakePool($t31))); - // assume Identical($t51, select stake::OwnerCapability.pool_address(select staking_contract::StakingContract.owner_cap($t44))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:479:9+61 - assume {:print "$at(3,21020,21081)"} true; - assume ($t51 == $pool_address#$1_stake_OwnerCapability($owner_cap#$1_staking_contract_StakingContract($t44))); + // assume Identical($t33, coin::$value(select stake::StakePool.pending_active($t31))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:337:9+60 + assume {:print "$at(141,14405,14465)"} true; + assume ($t33 == $1_coin_$value'$1_aptos_coin_AptosCoin'($pending_active#$1_stake_StakePool($t31))); - // assume Identical($t52, global($t51)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:481:9+60 - assume {:print "$at(3,21151,21211)"} true; - assume ($t52 == $ResourceValue($1_stake_StakePool_$memory, $t51)); + // assume Identical($t34, Add($t32, $t33)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:338:9+49 + assume {:print "$at(141,14474,14523)"} true; + assume ($t34 == ($t32 + $t33)); - // assume Identical($t53, global(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:483:9+66 - assume {:print "$at(3,21286,21352)"} true; - assume ($t53 == $ResourceValue($1_stake_ValidatorSet_$memory, 1)); + // assume Identical($t35, Sub($t34, select staking_contract::StakingContract.principal($t22))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:339:9+74 + assume {:print "$at(141,14532,14606)"} true; + assume ($t35 == ($t34 - $principal#$1_staking_contract_StakingContract($t22))); - // assume Identical($t54, And(And(Not(stake::spec_contains(select stake::ValidatorSet.pending_active($t53), $t51)), Not(stake::spec_contains(select stake::ValidatorSet.active_validators($t53), $t51))), Not(stake::spec_contains(select stake::ValidatorSet.pending_inactive($t53), $t51)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:484:9+260 - assume {:print "$at(3,21361,21621)"} true; - assume ($t54 == ((!$1_stake_spec_contains($pending_active#$1_stake_ValidatorSet($t53), $t51) && !$1_stake_spec_contains($active_validators#$1_stake_ValidatorSet($t53), $t51)) && !$1_stake_spec_contains($pending_inactive#$1_stake_ValidatorSet($t53), $t51))); + // ($t36, $t37, $t38) := staking_contract::staking_contract_amounts($t0, $t20) on_abort goto L2 with $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:361:13+103 + assume {:print "$at(2,17155,17258)"} true; + call $t36,$t37,$t38 := $1_staking_contract_staking_contract_amounts($t0, $t20); + if ($abort_flag) { + assume {:print "$at(2,17155,17258)"} true; + $t17 := $abort_code; + assume {:print "$track_abort(59,27):", $t17} $t17 == $t17; + goto L2; + } - // assume Identical($t55, select coin::Coin.value(select stake::StakePool.inactive($t52))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:487:9+45 - assume {:print "$at(3,21630,21675)"} true; - assume ($t55 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t52))); + // trace_local[commission_amount]($t38) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:360:37+17 + assume {:print "$at(2,17122,17139)"} true; + assume {:print "$track_local(59,27,1):", $t38} $t38 == $t38; - // assume Identical($t56, select coin::Coin.value(select stake::StakePool.pending_inactive($t52))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:488:9+61 - assume {:print "$at(3,21684,21745)"} true; - assume ($t56 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t52))); + // destroy($t37) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:360:34+1 - // assume Identical($t57, Add($t55, $t56)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:489:9+53 - assume {:print "$at(3,21754,21807)"} true; - assume ($t57 == ($t55 + $t56)); + // $t39 := get_field.remaining_grant($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:362:30+32 + assume {:print "$at(2,17289,17321)"} true; + $t39 := $remaining_grant#$1_vesting_VestingContract($t18); - // assert And(Ge(select staking_contract::StakingContract.commission_percentage($t32), 0), Le(select staking_contract::StakingContract.commission_percentage($t32), 100)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:56:9+102 - assume {:print "$at(3,1852,1954)"} true; - assert {:msg "assert_failed(3,1852,1954): precondition does not hold at this call"} - (($commission_percentage#$1_staking_contract_StakingContract($t32) >= 0) && ($commission_percentage#$1_staking_contract_StakingContract($t32) <= 100)); - - // vesting::vest($t13) on_abort goto L9 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:618:13+22 - assume {:print "$at(2,29558,29580)"} true; - call $1_vesting_vest($t13); + // $t40 := -($t36, $t39) on_abort goto L2 with $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:362:28+1 + call $t40 := $Sub($t36, $t39); if ($abort_flag) { - assume {:print "$at(2,29558,29580)"} true; - $t5 := $abort_code; - assume {:print "$track_abort(57,36):", $t5} $t5 == $t5; - goto L9; + assume {:print "$at(2,17287,17288)"} true; + $t17 := $abort_code; + assume {:print "$track_abort(59,27):", $t17} $t17 == $t17; + goto L2; } - // $t14 := 1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:265:21+1 - assume {:print "$at(18,9353,9354)"} true; - $t14 := 1; - assume $IsValid'u64'($t14); - - // $t15 := +($t1, $t14) on_abort goto L9 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:265:19+1 - call $t15 := $AddU64($t1, $t14); + // $t41 := -($t40, $t38) on_abort goto L2 with $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:362:63+1 + call $t41 := $Sub($t40, $t38); if ($abort_flag) { - assume {:print "$at(18,9351,9352)"} true; - $t5 := $abort_code; - assume {:print "$track_abort(57,36):", $t5} $t5 == $t5; - goto L9; + assume {:print "$at(2,17322,17323)"} true; + $t17 := $abort_code; + assume {:print "$track_abort(59,27):", $t17} $t17 == $t17; + goto L2; } - // trace_local[i#264]($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:265:13+1 - assume {:print "$track_local(57,36,1):", $t15} $t15 == $t15; - - // goto L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:265:13+9 - goto L7; - - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:619:11+1 - assume {:print "$at(2,29592,29593)"} true; -L3: - - // goto L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:619:11+1 - assume {:print "$at(2,29592,29593)"} true; - goto L8; - - // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:619:11+1 - // Loop invariant checking block for the loop started with header: L6 -L7: - - // stop() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:619:11+1 - assume {:print "$at(2,29592,29593)"} true; - assume false; - return; - - // label L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:620:5+1 - assume {:print "$at(2,29598,29599)"} true; -L8: + // trace_return[0]($t41) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:362:9+73 + assume {:print "$track_return(59,27,0):", $t41} $t41 == $t41; - // assert Not(Eq(Len
($t0), 0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:196:9+39 - assume {:print "$at(3,8886,8925)"} true; - assert {:msg "assert_failed(3,8886,8925): function does not abort under this condition"} - !$IsEqual'num'(LenVec($t0), 0); + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:363:5+1 + assume {:print "$at(2,17346,17347)"} true; +L1: - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:196:9+39 + // return $t41 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:363:5+1 + assume {:print "$at(2,17346,17347)"} true; + $ret0 := $t41; return; - // label L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:620:5+1 - assume {:print "$at(2,29598,29599)"} true; -L9: + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:363:5+1 +L2: - // abort($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:620:5+1 - assume {:print "$at(2,29598,29599)"} true; - $abort_code := $t5; + // abort($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:363:5+1 + assume {:print "$at(2,17346,17347)"} true; + $abort_code := $t17; $abort_flag := true; return; } -// fun vesting::vesting_contracts [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:309:5+258 -procedure {:timeLimit 1000} $1_vesting_vesting_contracts$verify(_$t0: int) returns ($ret0: Vec (int)) +// fun vesting::total_accumulated_rewards [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:356:5+521 +procedure {:timeLimit 300} $1_vesting_total_accumulated_rewards$verify(_$t0: int) returns ($ret0: int) { // declare local variables - var $t1: Vec (int); - var $t2: bool; - var $t3: bool; + var $t1: int; + var $t2: $1_vesting_VestingContract; + var $t3: $1_vesting_VestingContract; var $t4: int; - var $t5: $1_vesting_AdminStore; + var $t5: int; + var $t6: Table int ($1_staking_contract_StakingContract); + var $t7: $1_staking_contract_StakingContract; + var $t8: int; + var $t9: $1_stake_StakePool; + var $t10: int; + var $t11: int; + var $t12: int; + var $t13: int; + var $t14: int; + var $t15: $1_vesting_VestingContract; + var $t16: $1_vesting_VestingContract; + var $t17: int; + var $t18: $1_vesting_VestingContract; + var $t19: $1_vesting_StakingInfo; + var $t20: int; + var $t21: Table int ($1_staking_contract_StakingContract); + var $t22: $1_staking_contract_StakingContract; + var $t23: int; + var $t24: $1_stake_StakePool; + var $t25: int; + var $t26: int; + var $t27: int; + var $t28: int; + var $t29: Table int ($1_staking_contract_StakingContract); + var $t30: int; + var $t31: $1_stake_StakePool; + var $t32: int; + var $t33: int; + var $t34: int; + var $t35: int; + var $t36: int; + var $t37: int; + var $t38: int; + var $t39: int; + var $t40: int; + var $t41: int; var $t0: int; + var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; var $temp_0'address': int; - var $temp_0'vec'address'': Vec (int); + var $temp_0'u64': int; + var $1_staking_contract_Store_$memory#81: $Memory $1_staking_contract_Store; + var $1_stake_StakePool_$memory#82: $Memory $1_stake_StakePool; + var $1_vesting_VestingContract_$memory#83: $Memory $1_vesting_VestingContract; $t0 := _$t0; // verification entrypoint assumptions call $InitVerification(); // bytecode translation starts here - // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:309:5+1 - assume {:print "$at(2,14451,14452)"} true; + // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:356:5+1 + assume {:print "$at(2,16826,16827)"} true; assume $IsValid'address'($t0); - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:309:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_vesting_AdminStore_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_AdminStore_$memory, $a_0); - ($IsValid'$1_vesting_AdminStore'($rsc)))); + // assume forall $rsc: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: select option::Option.vec(select coin::CoinInfo.supply($rsc)): And(And(And(And(And(Iff(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($elem)), option::$is_none(select optional_aggregator::OptionalAggregator.integer($elem))), Iff(option::$is_some(select optional_aggregator::OptionalAggregator.integer($elem)), option::$is_none(select optional_aggregator::OptionalAggregator.aggregator($elem)))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.integer($elem)), Le(select optional_aggregator::Integer.value(option::$borrow(select optional_aggregator::OptionalAggregator.integer($elem))), select optional_aggregator::Integer.limit(option::$borrow(select optional_aggregator::OptionalAggregator.integer($elem)))))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($elem)), Le(aggregator::spec_aggregator_get_val(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($elem))), aggregator::spec_get_limit(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($elem)))))), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.aggregator($elem))), 1)), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.integer($elem))), 1)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:356:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'$1_aptos_coin_AptosCoin''($rsc) && ((LenVec($vec#$1_option_Option'$1_optional_aggregator_OptionalAggregator'($supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($rsc))) <= 1) && (var $range_1 := $vec#$1_option_Option'$1_optional_aggregator_OptionalAggregator'($supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($rsc)); (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)) <==> $1_option_$is_none'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)) ==> ($value#$1_optional_aggregator_Integer($1_option_$borrow'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) <= $limit#$1_optional_aggregator_Integer($1_option_$borrow'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)))))) && ($1_option_$is_some'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem))) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)))))) && (LenVec($vec#$1_option_Option'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem))) <= 1)) && (LenVec($vec#$1_option_Option'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) <= 1))))))))))); - // trace_local[admin]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:309:5+1 - assume {:print "$track_local(57,37,0):", $t0} $t0 == $t0; + // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:356:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin''($rsc)))); - // $t2 := exists($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:310:14+6 - assume {:print "$at(2,14548,14554)"} true; - $t2 := $ResourceExists($1_vesting_AdminStore_$memory, $t0); + // assume exists>(0x0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:356:5+1 + assume $ResourceExists($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, 0); - // $t3 := !($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:310:13+1 - call $t3 := $Not($t2); + // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:356:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin''($rsc)))); - // if ($t3) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:310:9+160 - if ($t3) { goto L1; } else { goto L0; } + // assume exists>(0x0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:356:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, 0); - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:311:13+24 - assume {:print "$at(2,14589,14613)"} true; -L1: + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:356:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_stake_StakePool_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_StakePool_$memory, $a_0); + ($IsValid'$1_stake_StakePool'($rsc)))); - // $t1 := vector::empty
() on_abort goto L4 with $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:311:13+24 - assume {:print "$at(2,14589,14613)"} true; - call $t1 := $1_vector_empty'address'(); - if ($abort_flag) { - assume {:print "$at(2,14589,14613)"} true; - $t4 := $abort_code; - assume {:print "$track_abort(57,37):", $t4} $t4 == $t4; - goto L4; - } + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:356:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorConfig_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorConfig_$memory, $a_0); + ($IsValid'$1_stake_ValidatorConfig'($rsc)))); - // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:310:9+160 - assume {:print "$at(2,14543,14703)"} true; - goto L2; + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:356:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorPerformance_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorPerformance_$memory, $a_0); + ($IsValid'$1_stake_ValidatorPerformance'($rsc)))); - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:313:39+5 - assume {:print "$at(2,14669,14674)"} true; -L0: + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:356:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorSet_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorSet_$memory, $a_0); + ($IsValid'$1_stake_ValidatorSet'($rsc)))); - // $t5 := get_global($t0) on_abort goto L4 with $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:313:13+13 - assume {:print "$at(2,14643,14656)"} true; - if (!$ResourceExists($1_vesting_AdminStore_$memory, $t0)) { - call $ExecFailureAbort(); - } else { - $t5 := $ResourceValue($1_vesting_AdminStore_$memory, $t0); - } - if ($abort_flag) { - assume {:print "$at(2,14643,14656)"} true; - $t4 := $abort_code; - assume {:print "$track_abort(57,37):", $t4} $t4 == $t4; - goto L4; - } + // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), forall $key: select staking_contract::Store.staking_contracts($rsc): And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), i), Index(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:356:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_staking_contract_Store_$memory, $a_0)}(var $rsc := $ResourceValue($1_staking_contract_Store_$memory, $a_0); + (($IsValid'$1_staking_contract_Store'($rsc) && (var $range_1 := $staking_contracts#$1_staking_contract_Store($rsc); (forall $key: int :: ContainsTable($range_1, $EncodeKey'address'($key)) ==> (((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), addr)))) && (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))))); (var $range_3 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))))); (forall $i_4: int, $i_5: int :: $InRange($range_2, $i_4) ==> $InRange($range_3, $i_5) ==> (var i := $i_4; + (var j := $i_5; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), i), ReadVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), j)) ==> $IsEqual'num'(i, j)))))))))))))))); - // $t1 := get_field.vesting_contracts($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:313:13+50 - $t1 := $vesting_contracts#$1_vesting_AdminStore($t5); + // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:356:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); + (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; + (var j := $i_4; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:310:9+160 - assume {:print "$at(2,14543,14703)"} true; -L2: + // assume Implies(exists(0x1), stake::validator_set_is_valid()) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:356:5+521 + // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:8:9+92 + assume ($ResourceExists($1_stake_ValidatorSet_$memory, 1) ==> $1_stake_validator_set_is_valid($1_stake_StakePool_$memory, $1_stake_ValidatorConfig_$memory, $1_stake_ValidatorPerformance_$memory, $1_stake_ValidatorSet_$memory)); - // trace_return[0]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:310:9+160 - assume {:print "$at(2,14543,14703)"} true; - assume {:print "$track_return(57,37,0):", $t1} $t1 == $t1; + // assume Identical($t3, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:62:9+73 + assume {:print "$at(3,2327,2400)"} true; + assume ($t3 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:315:5+1 - assume {:print "$at(2,14708,14709)"} true; -L3: + // assume Identical($t4, $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:64:9+38 + assume {:print "$at(3,2410,2448)"} true; + assume ($t4 == $t0); - // assert Not(false) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:32:9+16 - assume {:print "$at(3,1109,1125)"} true; - assert {:msg "assert_failed(3,1109,1125): function does not abort under this condition"} - !false; + // assume Identical($t5, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t3))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:65:9+49 + assume {:print "$at(3,2457,2506)"} true; + assume ($t5 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t3))); - // return $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:32:9+16 - $ret0 := $t1; - return; + // assume Identical($t6, select staking_contract::Store.staking_contracts(global($t4))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:66:9+82 + assume {:print "$at(3,2515,2597)"} true; + assume ($t6 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t4))); - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:315:5+1 - assume {:print "$at(2,14708,14709)"} true; -L4: + // assume Identical($t7, simple_map::spec_get($t6, $t5)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:67:9+73 + assume {:print "$at(3,2606,2679)"} true; + assume ($t7 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($t6, $t5)); - // assert false at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:31:5+88 - assume {:print "$at(3,1043,1131)"} true; - assert {:msg "assert_failed(3,1043,1131): abort not covered by any of the `aborts_if` clauses"} - false; + // assume Identical($t8, select staking_contract::StakingContract.pool_address($t7)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:72:9+49 + assume {:print "$at(3,2829,2878)"} true; + assume ($t8 == $pool_address#$1_staking_contract_StakingContract($t7)); - // abort($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:31:5+88 - $abort_code := $t4; - $abort_flag := true; - return; + // assume Identical($t9, global($t8)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:73:9+56 + assume {:print "$at(3,2887,2943)"} true; + assume ($t9 == $ResourceValue($1_stake_StakePool_$memory, $t8)); -} + // assume Identical($t10, coin::$value(select stake::StakePool.active($t9))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:74:9+44 + assume {:print "$at(3,2952,2996)"} true; + assume ($t10 == $1_coin_$value'$1_aptos_coin_AptosCoin'($active#$1_stake_StakePool($t9))); -// fun vesting::vesting_start_secs [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:261:5+271 -procedure {:timeLimit 1000} $1_vesting_vesting_start_secs$verify(_$t0: int) returns ($ret0: int) -{ - // declare local variables - var $t1: int; - var $t2: $1_vesting_VestingContract; - var $t3: $1_vesting_VestingSchedule; - var $t4: int; - var $t0: int; - var $temp_0'address': int; - var $temp_0'u64': int; - var $1_vesting_VestingContract_$memory#54: $Memory $1_vesting_VestingContract; - $t0 := _$t0; + // assume Identical($t11, coin::$value(select stake::StakePool.pending_active($t9))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:75:9+60 + assume {:print "$at(3,3005,3065)"} true; + assume ($t11 == $1_coin_$value'$1_aptos_coin_AptosCoin'($pending_active#$1_stake_StakePool($t9))); - // verification entrypoint assumptions - call $InitVerification(); + // assume Identical($t12, Add($t10, $t11)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:76:9+49 + assume {:print "$at(3,3074,3123)"} true; + assume ($t12 == ($t10 + $t11)); - // bytecode translation starts here - // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:261:5+1 - assume {:print "$at(2,11707,11708)"} true; - assume $IsValid'address'($t0); + // assume Identical($t13, Sub($t12, select staking_contract::StakingContract.principal($t7))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:77:9+74 + assume {:print "$at(3,3132,3206)"} true; + assume ($t13 == ($t12 - $principal#$1_staking_contract_StakingContract($t7))); - // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:261:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); - (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; - (var j := $i_4; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); + // assume Identical($t14, Div(Mul($t13, select staking_contract::StakingContract.commission_percentage($t7)), 100)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:78:9+91 + assume {:print "$at(3,3215,3306)"} true; + assume ($t14 == (($t13 * $commission_percentage#$1_staking_contract_StakingContract($t7)) div 100)); - // @54 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:261:5+1 - $1_vesting_VestingContract_$memory#54 := $1_vesting_VestingContract_$memory; + // assume Identical($t15, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:511:9+65 + assume {:print "$at(3,23068,23133)"} true; + assume ($t15 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); - // trace_local[vesting_contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:261:5+1 - assume {:print "$track_local(57,39,0):", $t0} $t0 == $t0; + // assume And(Ge(select staking_contract::StakingContract.commission_percentage($t7), 0), Le(select staking_contract::StakingContract.commission_percentage($t7), 100)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:59:9+102 + assume {:print "$at(3,2107,2209)"} true; + assume (($commission_percentage#$1_staking_contract_StakingContract($t7) >= 0) && ($commission_percentage#$1_staking_contract_StakingContract($t7) <= 100)); - // vesting::assert_vesting_contract_exists($t0) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:262:9+56 - assume {:print "$at(2,11812,11868)"} true; - call $1_vesting_assert_vesting_contract_exists($t0); - if ($abort_flag) { - assume {:print "$at(2,11812,11868)"} true; - $t1 := $abort_code; - assume {:print "$track_abort(57,39):", $t1} $t1 == $t1; + // @82 := save_mem(stake::StakePool) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:59:9+102 + $1_stake_StakePool_$memory#82 := $1_stake_StakePool_$memory; + + // @81 := save_mem(staking_contract::Store) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:59:9+102 + $1_staking_contract_Store_$memory#81 := $1_staking_contract_Store_$memory; + + // @83 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:59:9+102 + $1_vesting_VestingContract_$memory#83 := $1_vesting_VestingContract_$memory; + + // trace_local[vesting_contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:356:5+1 + assume {:print "$at(2,16826,16827)"} true; + assume {:print "$track_local(59,27,0):", $t0} $t0 == $t0; + + // assume Identical($t16, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:511:9+65 + assume {:print "$at(3,23068,23133)"} true; + assume ($t16 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); + + // vesting::assert_active_vesting_contract($t0) on_abort goto L2 with $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:357:9+56 + assume {:print "$at(2,16938,16994)"} true; + call $1_vesting_assert_active_vesting_contract($t0); + if ($abort_flag) { + assume {:print "$at(2,16938,16994)"} true; + $t17 := $abort_code; + assume {:print "$track_abort(59,27):", $t17} $t17 == $t17; goto L2; } - // $t2 := get_global($t0) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:263:9+13 - assume {:print "$at(2,11878,11891)"} true; + // $t18 := get_global($t0) on_abort goto L2 with $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:359:32+13 + assume {:print "$at(2,17028,17041)"} true; if (!$ResourceExists($1_vesting_VestingContract_$memory, $t0)) { call $ExecFailureAbort(); } else { - $t2 := $ResourceValue($1_vesting_VestingContract_$memory, $t0); + $t18 := $ResourceValue($1_vesting_VestingContract_$memory, $t0); } if ($abort_flag) { - assume {:print "$at(2,11878,11891)"} true; - $t1 := $abort_code; - assume {:print "$track_abort(57,39):", $t1} $t1 == $t1; + assume {:print "$at(2,17028,17041)"} true; + $t17 := $abort_code; + assume {:print "$track_abort(59,27):", $t17} $t17 == $t17; goto L2; } - // $t3 := get_field.vesting_schedule($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:263:9+73 - $t3 := $vesting_schedule#$1_vesting_VestingContract($t2); + // trace_local[vesting_contract]($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:359:13+16 + assume {:print "$track_local(59,27,2):", $t18} $t18 == $t18; - // $t4 := get_field.start_timestamp_secs($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:263:9+94 - $t4 := $start_timestamp_secs#$1_vesting_VestingSchedule($t3); + // $t19 := get_field.staking($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:361:82+24 + assume {:print "$at(2,17224,17248)"} true; + $t19 := $staking#$1_vesting_VestingContract($t18); - // trace_return[0]($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:263:9+94 - assume {:print "$track_return(57,39,0):", $t4} $t4 == $t4; + // $t20 := get_field.operator($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:361:82+33 + $t20 := $operator#$1_vesting_StakingInfo($t19); - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:264:5+1 - assume {:print "$at(2,11977,11978)"} true; -L1: + // assume Identical($t21, select staking_contract::Store.staking_contracts(global($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:25:9+64 + assume {:print "$at(141,843,907)"} true; + assume ($t21 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t0))); - // assert Not(Not(exists[@54]($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:12:9+61 - assume {:print "$at(3,352,413)"} true; - assert {:msg "assert_failed(3,352,413): function does not abort under this condition"} - !!$ResourceExists($1_vesting_VestingContract_$memory#54, $t0); + // assume Identical($t22, simple_map::spec_get($t21, $t20)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:26:9+73 + assume {:print "$at(141,916,989)"} true; + assume ($t22 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($t21, $t20)); - // return $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:12:9+61 - $ret0 := $t4; - return; + // assume Identical($t23, select staking_contract::StakingContract.pool_address($t22)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:30:9+49 + assume {:print "$at(141,1108,1157)"} true; + assume ($t23 == $pool_address#$1_staking_contract_StakingContract($t22)); - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:264:5+1 - assume {:print "$at(2,11977,11978)"} true; -L2: + // assume Identical($t24, global($t23)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:31:9+56 + assume {:print "$at(141,1166,1222)"} true; + assume ($t24 == $ResourceValue($1_stake_StakePool_$memory, $t23)); - // assert Not(exists[@54]($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:11:5+141 - assume {:print "$at(3,278,419)"} true; - assert {:msg "assert_failed(3,278,419): abort not covered by any of the `aborts_if` clauses"} - !$ResourceExists($1_vesting_VestingContract_$memory#54, $t0); + // assume Identical($t25, coin::$value(select stake::StakePool.active($t24))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:32:9+44 + assume {:print "$at(141,1231,1275)"} true; + assume ($t25 == $1_coin_$value'$1_aptos_coin_AptosCoin'($active#$1_stake_StakePool($t24))); - // abort($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:11:5+141 - $abort_code := $t1; - $abort_flag := true; - return; + // assume Identical($t26, coin::$value(select stake::StakePool.pending_active($t24))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:33:9+60 + assume {:print "$at(141,1284,1344)"} true; + assume ($t26 == $1_coin_$value'$1_aptos_coin_AptosCoin'($pending_active#$1_stake_StakePool($t24))); -} + // assume Identical($t27, Add($t25, $t26)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:34:9+49 + assume {:print "$at(141,1353,1402)"} true; + assume ($t27 == ($t25 + $t26)); -// fun vesting::withdraw_stake [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:956:5+587 -procedure {:inline 1} $1_vesting_withdraw_stake(_$t0: $1_vesting_VestingContract, _$t1: int) returns ($ret0: $1_coin_Coin'$1_aptos_coin_AptosCoin') -{ - // declare local variables - var $t2: $signer; - var $t3: int; - var $t4: int; - var $t5: $1_staking_contract_Store; - var $t6: $1_staking_contract_StakingContract; - var $t7: Table int ($1_staking_contract_StakingContract); - var $t8: int; - var $t9: $1_stake_StakePool; - var $t10: int; - var $t11: int; - var $t12: int; - var $t13: int; - var $t14: $1_stake_StakePool; - var $t15: $1_stake_ValidatorSet; - var $t16: bool; - var $t17: int; - var $t18: int; - var $t19: int; - var $t20: $1_vesting_StakingInfo; - var $t21: int; - var $t22: Table int ($1_staking_contract_StakingContract); - var $t23: int; - var $t24: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; - var $t25: int; - var $t26: $signer; - var $t27: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; - var $t28: int; - var $t29: $1_coin_CoinStore'$1_aptos_coin_AptosCoin'; - var $t30: int; - var $t31: int; - var $t32: $1_coin_CoinStore'$1_aptos_coin_AptosCoin'; - var $t33: int; - var $t34: $1_coin_Coin'$1_aptos_coin_AptosCoin'; - var $t0: $1_vesting_VestingContract; - var $t1: int; - var $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin'': $1_coin_Coin'$1_aptos_coin_AptosCoin'; - var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; - var $temp_0'address': int; - var $temp_0'u64': int; - $t0 := _$t0; - $t1 := _$t1; + // assume Identical($t28, Sub($t27, select staking_contract::StakingContract.principal($t22))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:35:9+74 + assume {:print "$at(141,1411,1485)"} true; + assume ($t28 == ($t27 - $principal#$1_staking_contract_StakingContract($t22))); - // bytecode translation starts here - // assume Identical($t4, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:455:9+49 - assume {:print "$at(3,19684,19733)"} true; - assume ($t4 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t0))); + // assume Identical($t29, select staking_contract::Store.staking_contracts(global($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:302:9+64 + assume {:print "$at(141,12978,13042)"} true; + assume ($t29 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t0))); - // assume Identical($t5, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:459:9+62 - assume {:print "$at(3,19898,19960)"} true; - assume ($t5 == $ResourceValue($1_staking_contract_Store_$memory, $t1)); + // assume Identical($t30, select staking_contract::StakingContract.pool_address($t22)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:334:9+49 + assume {:print "$at(141,14229,14278)"} true; + assume ($t30 == $pool_address#$1_staking_contract_StakingContract($t22)); - // assume Identical($t6, simple_map::spec_get(select staking_contract::Store.staking_contracts($t5), $t4)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:460:9+79 - assume {:print "$at(3,19969,20048)"} true; - assume ($t6 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($t5), $t4)); + // assume Identical($t31, global($t30)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:335:9+56 + assume {:print "$at(141,14287,14343)"} true; + assume ($t31 == $ResourceValue($1_stake_StakePool_$memory, $t30)); - // assume Identical($t7, select staking_contract::Store.staking_contracts(global($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 - assume {:print "$at(134,11481,11545)"} true; - assume ($t7 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t1))); + // assume Identical($t32, coin::$value(select stake::StakePool.active($t31))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:336:9+44 + assume {:print "$at(141,14352,14396)"} true; + assume ($t32 == $1_coin_$value'$1_aptos_coin_AptosCoin'($active#$1_stake_StakePool($t31))); - // assume Identical($t8, select staking_contract::StakingContract.pool_address($t6)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:470:9+49 - assume {:print "$at(3,20547,20596)"} true; - assume ($t8 == $pool_address#$1_staking_contract_StakingContract($t6)); + // assume Identical($t33, coin::$value(select stake::StakePool.pending_active($t31))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:337:9+60 + assume {:print "$at(141,14405,14465)"} true; + assume ($t33 == $1_coin_$value'$1_aptos_coin_AptosCoin'($pending_active#$1_stake_StakePool($t31))); - // assume Identical($t9, global($t8)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:472:9+56 - assume {:print "$at(3,20664,20720)"} true; - assume ($t9 == $ResourceValue($1_stake_StakePool_$memory, $t8)); + // assume Identical($t34, Add($t32, $t33)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:338:9+49 + assume {:print "$at(141,14474,14523)"} true; + assume ($t34 == ($t32 + $t33)); - // assume Identical($t10, select coin::Coin.value(select stake::StakePool.inactive($t9))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:473:9+41 - assume {:print "$at(3,20729,20770)"} true; - assume ($t10 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t9))); + // assume Identical($t35, Sub($t34, select staking_contract::StakingContract.principal($t22))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:339:9+74 + assume {:print "$at(141,14532,14606)"} true; + assume ($t35 == ($t34 - $principal#$1_staking_contract_StakingContract($t22))); - // assume Identical($t11, select coin::Coin.value(select stake::StakePool.pending_inactive($t9))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:474:9+57 - assume {:print "$at(3,20779,20836)"} true; - assume ($t11 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t9))); + // assert And(Ge(select staking_contract::StakingContract.commission_percentage($t22), 0), Le(select staking_contract::StakingContract.commission_percentage($t22), 100)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:332:9+102 + assume {:print "$at(141,14117,14219)"} true; + assert {:msg "assert_failed(141,14117,14219): precondition does not hold at this call"} + (($commission_percentage#$1_staking_contract_StakingContract($t22) >= 0) && ($commission_percentage#$1_staking_contract_StakingContract($t22) <= 100)); - // assume Identical($t12, Add($t10, $t11)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:478:9+63 - assume {:print "$at(3,20948,21011)"} true; - assume ($t12 == ($t10 + $t11)); + // ($t36, $t37, $t38) := staking_contract::staking_contract_amounts($t0, $t20) on_abort goto L2 with $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:361:13+103 + assume {:print "$at(2,17155,17258)"} true; + call $t36,$t37,$t38 := $1_staking_contract_staking_contract_amounts($t0, $t20); + if ($abort_flag) { + assume {:print "$at(2,17155,17258)"} true; + $t17 := $abort_code; + assume {:print "$track_abort(59,27):", $t17} $t17 == $t17; + goto L2; + } + + // trace_local[commission_amount]($t38) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:360:37+17 + assume {:print "$at(2,17122,17139)"} true; + assume {:print "$track_local(59,27,1):", $t38} $t38 == $t38; + + // destroy($t37) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:360:34+1 + + // $t39 := get_field.remaining_grant($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:362:30+32 + assume {:print "$at(2,17289,17321)"} true; + $t39 := $remaining_grant#$1_vesting_VestingContract($t18); + + // $t40 := -($t36, $t39) on_abort goto L2 with $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:362:28+1 + call $t40 := $Sub($t36, $t39); + if ($abort_flag) { + assume {:print "$at(2,17287,17288)"} true; + $t17 := $abort_code; + assume {:print "$track_abort(59,27):", $t17} $t17 == $t17; + goto L2; + } + + // $t41 := -($t40, $t38) on_abort goto L2 with $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:362:63+1 + call $t41 := $Sub($t40, $t38); + if ($abort_flag) { + assume {:print "$at(2,17322,17323)"} true; + $t17 := $abort_code; + assume {:print "$track_abort(59,27):", $t17} $t17 == $t17; + goto L2; + } + + // trace_return[0]($t41) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:362:9+73 + assume {:print "$track_return(59,27,0):", $t41} $t41 == $t41; - // assume Identical($t13, select stake::OwnerCapability.pool_address(select staking_contract::StakingContract.owner_cap($t6))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:479:9+61 - assume {:print "$at(3,21020,21081)"} true; - assume ($t13 == $pool_address#$1_stake_OwnerCapability($owner_cap#$1_staking_contract_StakingContract($t6))); + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:363:5+1 + assume {:print "$at(2,17346,17347)"} true; +L1: - // assume Identical($t14, global($t13)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:481:9+60 - assume {:print "$at(3,21151,21211)"} true; - assume ($t14 == $ResourceValue($1_stake_StakePool_$memory, $t13)); + // assert Not(Not(exists[@81]($t4))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:69:9+51 + assume {:print "$at(3,2689,2740)"} true; + assert {:msg "assert_failed(3,2689,2740): function does not abort under this condition"} + !!$ResourceExists($1_staking_contract_Store_$memory#81, $t4); - // assume Identical($t15, global(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:483:9+66 - assume {:print "$at(3,21286,21352)"} true; - assume ($t15 == $ResourceValue($1_stake_ValidatorSet_$memory, 1)); + // assert Not(Not(simple_map::spec_contains_key[]($t6, $t5))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:70:9+70 + assume {:print "$at(3,2749,2819)"} true; + assert {:msg "assert_failed(3,2749,2819): function does not abort under this condition"} + !!$1_simple_map_spec_contains_key'address_$1_staking_contract_StakingContract'($t6, $t5); - // assume Identical($t16, And(And(Not(stake::spec_contains(select stake::ValidatorSet.pending_active($t15), $t13)), Not(stake::spec_contains(select stake::ValidatorSet.active_validators($t15), $t13))), Not(stake::spec_contains(select stake::ValidatorSet.pending_inactive($t15), $t13)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:484:9+260 - assume {:print "$at(3,21361,21621)"} true; - assume ($t16 == ((!$1_stake_spec_contains($pending_active#$1_stake_ValidatorSet($t15), $t13) && !$1_stake_spec_contains($active_validators#$1_stake_ValidatorSet($t15), $t13)) && !$1_stake_spec_contains($pending_inactive#$1_stake_ValidatorSet($t15), $t13))); + // assert Not(Not(exists[@82]($t8))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:79:9+50 + assume {:print "$at(3,3315,3365)"} true; + assert {:msg "assert_failed(3,3315,3365): function does not abort under this condition"} + !!$ResourceExists($1_stake_StakePool_$memory#82, $t8); - // assume Identical($t17, select coin::Coin.value(select stake::StakePool.inactive($t14))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:487:9+45 - assume {:print "$at(3,21630,21675)"} true; - assume ($t17 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t14))); + // assert Not(Gt(Add($t10, $t11), 18446744073709551615)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:80:9+44 + assume {:print "$at(3,3374,3418)"} true; + assert {:msg "assert_failed(3,3374,3418): function does not abort under this condition"} + !(($t10 + $t11) > 18446744073709551615); - // assume Identical($t18, select coin::Coin.value(select stake::StakePool.pending_inactive($t14))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:488:9+61 - assume {:print "$at(3,21684,21745)"} true; - assume ($t18 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t14))); + // assert Not(Lt($t12, select staking_contract::StakingContract.principal($t7))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:81:9+58 + assume {:print "$at(3,3427,3485)"} true; + assert {:msg "assert_failed(3,3427,3485): function does not abort under this condition"} + !($t12 < $principal#$1_staking_contract_StakingContract($t7)); - // assume Identical($t19, Add($t17, $t18)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:489:9+53 - assume {:print "$at(3,21754,21807)"} true; - assume ($t19 == ($t17 + $t18)); + // assert Not(Gt(Mul($t13, select staking_contract::StakingContract.commission_percentage($t7)), 18446744073709551615)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:82:9+81 + assume {:print "$at(3,3494,3575)"} true; + assert {:msg "assert_failed(3,3494,3575): function does not abort under this condition"} + !(($t13 * $commission_percentage#$1_staking_contract_StakingContract($t7)) > 18446744073709551615); - // trace_local[vesting_contract]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:956:5+1 - assume {:print "$at(2,44691,44692)"} true; - assume {:print "$track_local(57,41,0):", $t0} $t0 == $t0; + // assert Not(Gt(Add(select vesting::VestingContract.remaining_grant($t3), $t14), $t12)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:83:9+86 + assume {:print "$at(3,3584,3670)"} true; + assert {:msg "assert_failed(3,3584,3670): function does not abort under this condition"} + !(($remaining_grant#$1_vesting_VestingContract($t3) + $t14) > $t12); - // trace_local[contract_address]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:956:5+1 - assume {:print "$track_local(57,41,1):", $t1} $t1 == $t1; + // assert Not(Lt($t12, select vesting::VestingContract.remaining_grant($t3))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:84:9+64 + assume {:print "$at(3,3679,3743)"} true; + assert {:msg "assert_failed(3,3679,3743): function does not abort under this condition"} + !($t12 < $remaining_grant#$1_vesting_VestingContract($t3)); - // $t20 := get_field.staking($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:959:56+24 - assume {:print "$at(2,45009,45033)"} true; - $t20 := $staking#$1_vesting_VestingContract($t0); + // assert Not(Not(exists[@83]($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:510:9+53 + assume {:print "$at(3,23006,23059)"} true; + assert {:msg "assert_failed(3,23006,23059): function does not abort under this condition"} + !!$ResourceExists($1_vesting_VestingContract_$memory#83, $t0); - // $t21 := get_field.operator($t20) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:959:56+33 - $t21 := $operator#$1_vesting_StakingInfo($t20); + // assert Not(Neq(select vesting::VestingContract.state($t15), 1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:512:9+56 + assume {:print "$at(3,23142,23198)"} true; + assert {:msg "assert_failed(3,23142,23198): function does not abort under this condition"} + !!$IsEqual'u64'($state#$1_vesting_VestingContract($t15), 1); - // assume Identical($t22, select staking_contract::Store.staking_contracts(global($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 - assume {:print "$at(134,11481,11545)"} true; - assume ($t22 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t1))); + // return $t41 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:512:9+56 + $ret0 := $t41; + return; - // staking_contract::distribute($t1, $t21) on_abort goto L2 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:959:9+81 - assume {:print "$at(2,44962,45043)"} true; - call $1_staking_contract_distribute($t1, $t21); - if ($abort_flag) { - assume {:print "$at(2,44962,45043)"} true; - $t23 := $abort_code; - assume {:print "$track_abort(57,41):", $t23} $t23 == $t23; - goto L2; - } + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:363:5+1 + assume {:print "$at(2,17346,17347)"} true; +L2: - // assume Identical($t24, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 - assume {:print "$at(95,1664,1763)"} true; - assume ($t24 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + // assert Or(Or(Or(Or(Or(Or(Or(Or(Or(Not(exists[@81]($t4)), Not(simple_map::spec_contains_key[]($t6, $t5))), Not(exists[@82]($t8))), Gt(Add($t10, $t11), 18446744073709551615)), Lt($t12, select staking_contract::StakingContract.principal($t7))), Gt(Mul($t13, select staking_contract::StakingContract.commission_percentage($t7)), 18446744073709551615)), Gt(Add(select vesting::VestingContract.remaining_grant($t3), $t14), $t12)), Lt($t12, select vesting::VestingContract.remaining_grant($t3))), Not(exists[@83]($t0))), Neq(select vesting::VestingContract.state($t15), 1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:47:5+175 + assume {:print "$at(3,1573,1748)"} true; + assert {:msg "assert_failed(3,1573,1748): abort not covered by any of the `aborts_if` clauses"} + (((((((((!$ResourceExists($1_staking_contract_Store_$memory#81, $t4) || !$1_simple_map_spec_contains_key'address_$1_staking_contract_StakingContract'($t6, $t5)) || !$ResourceExists($1_stake_StakePool_$memory#82, $t8)) || (($t10 + $t11) > 18446744073709551615)) || ($t12 < $principal#$1_staking_contract_StakingContract($t7))) || (($t13 * $commission_percentage#$1_staking_contract_StakingContract($t7)) > 18446744073709551615)) || (($remaining_grant#$1_vesting_VestingContract($t3) + $t14) > $t12)) || ($t12 < $remaining_grant#$1_vesting_VestingContract($t3))) || !$ResourceExists($1_vesting_VestingContract_$memory#83, $t0)) || !$IsEqual'u64'($state#$1_vesting_VestingContract($t15), 1)); - // $t25 := coin::balance($t1) on_abort goto L2 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:960:31+42 - assume {:print "$at(2,45075,45117)"} true; - call $t25 := $1_coin_balance'$1_aptos_coin_AptosCoin'($t1); - if ($abort_flag) { - assume {:print "$at(2,45075,45117)"} true; - $t23 := $abort_code; - assume {:print "$track_abort(57,41):", $t23} $t23 == $t23; - goto L2; - } + // abort($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:47:5+175 + $abort_code := $t17; + $abort_flag := true; + return; + +} + +// fun vesting::verify_admin [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:937:5+182 +procedure {:inline 1} $1_vesting_verify_admin(_$t0: $signer, _$t1: $1_vesting_VestingContract) returns () +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: bool; + var $t6: int; + var $t7: int; + var $t0: $signer; + var $t1: $1_vesting_VestingContract; + var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; + var $temp_0'signer': $signer; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[admin]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:937:5+1 + assume {:print "$at(2,43701,43702)"} true; + assume {:print "$track_local(59,34,0):", $t0} $t0 == $t0; - // trace_local[withdrawn_coins]($t25) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:960:13+15 - assume {:print "$track_local(57,41,3):", $t25} $t25 == $t25; + // trace_local[vesting_contract]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:937:5+1 + assume {:print "$track_local(59,34,1):", $t1} $t1 == $t1; - // $t26 := vesting::get_vesting_account_signer_internal($t0) on_abort goto L2 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:961:32+53 - assume {:print "$at(2,45150,45203)"} true; - call $t26 := $1_vesting_get_vesting_account_signer_internal($t0); + // $t2 := signer::address_of($t0) on_abort goto L4 with $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:17+25 + assume {:print "$at(2,43788,43813)"} true; + call $t2 := $1_signer_address_of($t0); if ($abort_flag) { - assume {:print "$at(2,45150,45203)"} true; - $t23 := $abort_code; - assume {:print "$track_abort(57,41):", $t23} $t23 == $t23; - goto L2; + assume {:print "$at(2,43788,43813)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(59,34):", $t3} $t3 == $t3; + goto L4; } - // assume Identical($t27, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 - assume {:print "$at(95,1664,1763)"} true; - assume ($t27 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + // $t4 := get_field.admin($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:46+22 + $t4 := $admin#$1_vesting_VestingContract($t1); - // assume Identical($t28, signer::$address_of($t26)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:384:9+47 - assume {:print "$at(95,16622,16669)"} true; - assume ($t28 == $1_signer_$address_of($t26)); + // $t5 := ==($t2, $t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:43+2 + $t5 := $IsEqual'address'($t2, $t4); - // assume Identical($t29, global>($t28)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:385:9+59 - assume {:print "$at(95,16678,16737)"} true; - assume ($t29 == $ResourceValue($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $t28)); + // if ($t5) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:9+96 + if ($t5) { goto L1; } else { goto L0; } - // assume Identical($t30, select coin::Coin.value(select coin::CoinStore.coin($t29))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:386:9+36 - assume {:print "$at(95,16746,16782)"} true; - assume ($t30 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($coin#$1_coin_CoinStore'$1_aptos_coin_AptosCoin'($t29))); + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:9+96 +L1: - // assume Identical($t31, signer::$address_of($t26)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:394:9+47 - assume {:print "$at(95,17076,17123)"} true; - assume ($t31 == $1_signer_$address_of($t26)); + // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:9+96 + assume {:print "$at(2,43780,43876)"} true; + goto L2; - // assume Identical($t32, global>($t31)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:395:9+59 - assume {:print "$at(95,17132,17191)"} true; - assume ($t32 == $ResourceValue($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $t31)); + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:93+10 +L0: - // assume Identical($t33, select coin::Coin.value(select coin::CoinStore.coin($t32))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:396:9+36 - assume {:print "$at(95,17200,17236)"} true; - assume ($t33 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($coin#$1_coin_CoinStore'$1_aptos_coin_AptosCoin'($t32))); + // $t6 := 7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:93+10 + assume {:print "$at(2,43864,43874)"} true; + $t6 := 7; + assume $IsValid'u64'($t6); - // $t34 := coin::withdraw($t26, $t25) on_abort goto L2 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:962:9+59 - assume {:print "$at(2,45213,45272)"} true; - call $t34 := $1_coin_withdraw'$1_aptos_coin_AptosCoin'($t26, $t25); + // $t7 := error::unauthenticated($t6) on_abort goto L4 with $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:70+34 + call $t7 := $1_error_unauthenticated($t6); if ($abort_flag) { - assume {:print "$at(2,45213,45272)"} true; - $t23 := $abort_code; - assume {:print "$track_abort(57,41):", $t23} $t23 == $t23; - goto L2; + assume {:print "$at(2,43841,43875)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(59,34):", $t3} $t3 == $t3; + goto L4; } - // trace_return[0]($t34) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:962:9+59 - assume {:print "$track_return(57,41,0):", $t34} $t34 == $t34; + // trace_abort($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:9+96 + assume {:print "$at(2,43780,43876)"} true; + assume {:print "$track_abort(59,34):", $t7} $t7 == $t7; - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:963:5+1 - assume {:print "$at(2,45277,45278)"} true; -L1: + // $t3 := move($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:9+96 + $t3 := $t7; - // return $t34 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:963:5+1 - assume {:print "$at(2,45277,45278)"} true; - $ret0 := $t34; - return; + // goto L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:9+96 + goto L4; - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:963:5+1 + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:105+1 L2: - // abort($t23) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:963:5+1 - assume {:print "$at(2,45277,45278)"} true; - $abort_code := $t23; + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:939:5+1 + assume {:print "$at(2,43882,43883)"} true; +L3: + + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:939:5+1 + assume {:print "$at(2,43882,43883)"} true; + return; + + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:939:5+1 +L4: + + // abort($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:939:5+1 + assume {:print "$at(2,43882,43883)"} true; + $abort_code := $t3; $abort_flag := true; return; } -// fun vesting::withdraw_stake [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:956:5+587 -procedure {:timeLimit 1000} $1_vesting_withdraw_stake$verify(_$t0: $1_vesting_VestingContract, _$t1: int) returns ($ret0: $1_coin_Coin'$1_aptos_coin_AptosCoin') +// fun vesting::verify_admin [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:937:5+182 +procedure {:timeLimit 900} $1_vesting_verify_admin$verify(_$t0: $signer, _$t1: $1_vesting_VestingContract) returns () { // declare local variables - var $t2: $signer; + var $t2: int; var $t3: int; var $t4: int; - var $t5: $1_staking_contract_Store; - var $t6: $1_staking_contract_StakingContract; - var $t7: Table int ($1_staking_contract_StakingContract); - var $t8: int; - var $t9: $1_stake_StakePool; - var $t10: int; - var $t11: int; - var $t12: int; - var $t13: int; - var $t14: $1_stake_StakePool; - var $t15: $1_stake_ValidatorSet; - var $t16: bool; - var $t17: int; - var $t18: int; - var $t19: int; - var $t20: $1_vesting_StakingInfo; - var $t21: int; - var $t22: Table int ($1_staking_contract_StakingContract); - var $t23: int; - var $t24: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; - var $t25: int; - var $t26: $signer; - var $t27: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; - var $t28: int; - var $t29: $1_coin_CoinStore'$1_aptos_coin_AptosCoin'; - var $t30: int; - var $t31: int; - var $t32: $1_coin_CoinStore'$1_aptos_coin_AptosCoin'; - var $t33: int; - var $t34: $1_coin_Coin'$1_aptos_coin_AptosCoin'; - var $t0: $1_vesting_VestingContract; - var $t1: int; - var $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin'': $1_coin_Coin'$1_aptos_coin_AptosCoin'; + var $t5: bool; + var $t6: int; + var $t7: int; + var $t0: $signer; + var $t1: $1_vesting_VestingContract; var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; - var $temp_0'address': int; - var $temp_0'u64': int; - var $1_staking_contract_Store_$memory#133: $Memory $1_staking_contract_Store; - var $1_stake_StakePool_$memory#134: $Memory $1_stake_StakePool; - var $1_stake_ValidatorSet_$memory#135: $Memory $1_stake_ValidatorSet; - var $1_timestamp_CurrentTimeMicroseconds_$memory#136: $Memory $1_timestamp_CurrentTimeMicroseconds; + var $temp_0'signer': $signer; $t0 := _$t0; $t1 := _$t1; // verification entrypoint assumptions - call $InitVerification(); - - // bytecode translation starts here - // assume And(WellFormed($t0), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t0)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t0)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t0)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t0)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t0)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t0)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:956:5+1 - assume {:print "$at(2,44691,44692)"} true; - assume ($IsValid'$1_vesting_VestingContract'($t0) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t0)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t0)), addr)))) && (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t0)))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t0)))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; - (var j := $i_3; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t0)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t0)), j)) ==> $IsEqual'num'(i, j)))))))))); - - // assume WellFormed($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:956:5+1 - assume $IsValid'address'($t1); - - // assume forall $rsc: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: select option::Option.vec(select coin::CoinInfo.supply($rsc)): And(And(And(And(And(Iff(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($elem)), option::$is_none(select optional_aggregator::OptionalAggregator.integer($elem))), Iff(option::$is_some(select optional_aggregator::OptionalAggregator.integer($elem)), option::$is_none(select optional_aggregator::OptionalAggregator.aggregator($elem)))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.integer($elem)), Le(select optional_aggregator::Integer.value(option::$borrow(select optional_aggregator::OptionalAggregator.integer($elem))), select optional_aggregator::Integer.limit(option::$borrow(select optional_aggregator::OptionalAggregator.integer($elem)))))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($elem)), Le(aggregator::spec_aggregator_get_val(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($elem))), aggregator::spec_get_limit(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($elem)))))), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.aggregator($elem))), 1)), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.integer($elem))), 1)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:956:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $a_0); - (($IsValid'$1_coin_CoinInfo'$1_aptos_coin_AptosCoin''($rsc) && ((LenVec($vec#$1_option_Option'$1_optional_aggregator_OptionalAggregator'($supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($rsc))) <= 1) && (var $range_1 := $vec#$1_option_Option'$1_optional_aggregator_OptionalAggregator'($supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($rsc)); (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); - ((((((($1_option_$is_some'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)) <==> $1_option_$is_none'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)) ==> ($value#$1_optional_aggregator_Integer($1_option_$borrow'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) <= $limit#$1_optional_aggregator_Integer($1_option_$borrow'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)))))) && ($1_option_$is_some'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem))) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)))))) && (LenVec($vec#$1_option_Option'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem))) <= 1)) && (LenVec($vec#$1_option_Option'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) <= 1))))))))))); - - // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:956:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $a_0); - ($IsValid'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''($rsc)))); + call $InitVerification(); - // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:956:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $a_0); - ($IsValid'$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin''($rsc)))); + // bytecode translation starts here + // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:937:5+1 + assume {:print "$at(2,43701,43702)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($addr#$signer($t0)); - // assume exists>(0x0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:956:5+1 - assume $ResourceExists($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, 0); + // assume And(WellFormed($t1), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t1)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t1)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t1)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t1)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t1)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t1)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:937:5+1 + assume ($IsValid'$1_vesting_VestingContract'($t1) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t1)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t1)), addr)))) && (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t1)))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t1)))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; + (var j := $i_3; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t1)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t1)), j)) ==> $IsEqual'num'(i, j)))))))))); - // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:956:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, $a_0); - ($IsValid'$1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin''($rsc)))); + // trace_local[admin]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:937:5+1 + assume {:print "$track_local(59,34,0):", $t0} $t0 == $t0; - // assume exists>(0x0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:956:5+1 - assume $ResourceExists($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, 0); + // trace_local[vesting_contract]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:937:5+1 + assume {:print "$track_local(59,34,1):", $t1} $t1 == $t1; - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:956:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_chain_status_GenesisEndMarker_$memory, $a_0)}(var $rsc := $ResourceValue($1_chain_status_GenesisEndMarker_$memory, $a_0); - ($IsValid'$1_chain_status_GenesisEndMarker'($rsc)))); + // $t2 := signer::address_of($t0) on_abort goto L4 with $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:17+25 + assume {:print "$at(2,43788,43813)"} true; + call $t2 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(2,43788,43813)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(59,34):", $t3} $t3 == $t3; + goto L4; + } - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:956:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_timestamp_CurrentTimeMicroseconds_$memory, $a_0)}(var $rsc := $ResourceValue($1_timestamp_CurrentTimeMicroseconds_$memory, $a_0); - ($IsValid'$1_timestamp_CurrentTimeMicroseconds'($rsc)))); + // $t4 := get_field.admin($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:46+22 + $t4 := $admin#$1_vesting_VestingContract($t1); - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:956:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_stake_StakePool_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_StakePool_$memory, $a_0); - ($IsValid'$1_stake_StakePool'($rsc)))); + // $t5 := ==($t2, $t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:43+2 + $t5 := $IsEqual'address'($t2, $t4); - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:956:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorConfig_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorConfig_$memory, $a_0); - ($IsValid'$1_stake_ValidatorConfig'($rsc)))); + // if ($t5) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:9+96 + if ($t5) { goto L1; } else { goto L0; } - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:956:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorPerformance_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorPerformance_$memory, $a_0); - ($IsValid'$1_stake_ValidatorPerformance'($rsc)))); + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:9+96 +L1: - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:956:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorSet_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorSet_$memory, $a_0); - ($IsValid'$1_stake_ValidatorSet'($rsc)))); + // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:9+96 + assume {:print "$at(2,43780,43876)"} true; + goto L2; - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:956:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_reconfiguration_Configuration_$memory, $a_0)}(var $rsc := $ResourceValue($1_reconfiguration_Configuration_$memory, $a_0); - ($IsValid'$1_reconfiguration_Configuration'($rsc)))); + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:93+10 +L0: - // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), forall $key: select staking_contract::Store.staking_contracts($rsc): And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), i), Index(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:956:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_staking_contract_Store_$memory, $a_0)}(var $rsc := $ResourceValue($1_staking_contract_Store_$memory, $a_0); - (($IsValid'$1_staking_contract_Store'($rsc) && (var $range_1 := $staking_contracts#$1_staking_contract_Store($rsc); (forall $key: int :: ContainsTable($range_1, $EncodeKey'address'($key)) ==> (((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), addr)))) && (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))))); (var $range_3 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))))); (forall $i_4: int, $i_5: int :: $InRange($range_2, $i_4) ==> $InRange($range_3, $i_5) ==> (var i := $i_4; - (var j := $i_5; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), i), ReadVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), j)) ==> $IsEqual'num'(i, j)))))))))))))))); + // $t6 := 7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:93+10 + assume {:print "$at(2,43864,43874)"} true; + $t6 := 7; + assume $IsValid'u64'($t6); - // assume Implies(chain_status::$is_operating(), exists(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:956:5+587 - // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.spec.move:4:9+93 - assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory, 1)); + // $t7 := error::unauthenticated($t6) on_abort goto L4 with $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:70+34 + call $t7 := $1_error_unauthenticated($t6); + if ($abort_flag) { + assume {:print "$at(2,43841,43875)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(59,34):", $t3} $t3 == $t3; + goto L4; + } - // assume Implies(exists(0x1), stake::validator_set_is_valid()) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:956:5+587 - // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:8:9+92 - assume ($ResourceExists($1_stake_ValidatorSet_$memory, 1) ==> $1_stake_validator_set_is_valid($1_stake_StakePool_$memory, $1_stake_ValidatorConfig_$memory, $1_stake_ValidatorPerformance_$memory, $1_stake_ValidatorSet_$memory)); + // trace_abort($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:9+96 + assume {:print "$at(2,43780,43876)"} true; + assume {:print "$track_abort(59,34):", $t7} $t7 == $t7; - // assume Implies(chain_status::$is_operating(), exists(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:956:5+587 - // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:12:9+96 - assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_stake_ValidatorSet_$memory, 1)); + // $t3 := move($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:9+96 + $t3 := $t7; - // assume Implies(chain_status::$is_operating(), Ge(timestamp::spec_now_microseconds(), reconfiguration::$last_reconfiguration_time())) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:956:5+587 - // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/reconfiguration.spec.move:8:9+137 - assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> ($1_timestamp_spec_now_microseconds($1_timestamp_CurrentTimeMicroseconds_$memory) >= $1_reconfiguration_$last_reconfiguration_time($1_reconfiguration_Configuration_$memory))); + // goto L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:9+96 + goto L4; - // assume Identical($t4, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:455:9+49 - assume {:print "$at(3,19684,19733)"} true; - assume ($t4 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t0))); + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:105+1 +L2: - // assume Identical($t5, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:459:9+62 - assume {:print "$at(3,19898,19960)"} true; - assume ($t5 == $ResourceValue($1_staking_contract_Store_$memory, $t1)); + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:939:5+1 + assume {:print "$at(2,43882,43883)"} true; +L3: - // assume Identical($t6, simple_map::spec_get(select staking_contract::Store.staking_contracts($t5), $t4)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:460:9+79 - assume {:print "$at(3,19969,20048)"} true; - assume ($t6 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($t5), $t4)); + // assert Not(Neq
(signer::$address_of[]($t0), select vesting::VestingContract.admin($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:406:9+62 + assume {:print "$at(3,18026,18088)"} true; + assert {:msg "assert_failed(3,18026,18088): function does not abort under this condition"} + !!$IsEqual'address'($1_signer_$address_of($t0), $admin#$1_vesting_VestingContract($t1)); - // assume Identical($t7, select staking_contract::Store.staking_contracts(global($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 - assume {:print "$at(134,11481,11545)"} true; - assume ($t7 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t1))); + // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:406:9+62 + return; - // assume Identical($t8, select staking_contract::StakingContract.pool_address($t6)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:470:9+49 - assume {:print "$at(3,20547,20596)"} true; - assume ($t8 == $pool_address#$1_staking_contract_StakingContract($t6)); + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:939:5+1 + assume {:print "$at(2,43882,43883)"} true; +L4: - // assume Identical($t9, global($t8)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:472:9+56 - assume {:print "$at(3,20664,20720)"} true; - assume ($t9 == $ResourceValue($1_stake_StakePool_$memory, $t8)); + // assert Neq
(signer::$address_of[]($t0), select vesting::VestingContract.admin($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:405:5+148 + assume {:print "$at(3,17946,18094)"} true; + assert {:msg "assert_failed(3,17946,18094): abort not covered by any of the `aborts_if` clauses"} + !$IsEqual'address'($1_signer_$address_of($t0), $admin#$1_vesting_VestingContract($t1)); - // assume Identical($t10, select coin::Coin.value(select stake::StakePool.inactive($t9))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:473:9+41 - assume {:print "$at(3,20729,20770)"} true; - assume ($t10 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t9))); + // abort($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:405:5+148 + $abort_code := $t3; + $abort_flag := true; + return; - // assume Identical($t11, select coin::Coin.value(select stake::StakePool.pending_inactive($t9))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:474:9+57 - assume {:print "$at(3,20779,20836)"} true; - assume ($t11 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t9))); +} - // assume Identical($t12, Add($t10, $t11)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:478:9+63 - assume {:print "$at(3,20948,21011)"} true; - assume ($t12 == ($t10 + $t11)); +// fun vesting::vesting_contracts [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:309:5+258 +procedure {:timeLimit 900} $1_vesting_vesting_contracts$verify(_$t0: int) returns ($ret0: Vec (int)) +{ + // declare local variables + var $t1: Vec (int); + var $t2: bool; + var $t3: bool; + var $t4: int; + var $t5: $1_vesting_AdminStore; + var $t0: int; + var $temp_0'address': int; + var $temp_0'vec'address'': Vec (int); + $t0 := _$t0; - // assume Identical($t13, select stake::OwnerCapability.pool_address(select staking_contract::StakingContract.owner_cap($t6))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:479:9+61 - assume {:print "$at(3,21020,21081)"} true; - assume ($t13 == $pool_address#$1_stake_OwnerCapability($owner_cap#$1_staking_contract_StakingContract($t6))); + // verification entrypoint assumptions + call $InitVerification(); - // assume Identical($t14, global($t13)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:481:9+60 - assume {:print "$at(3,21151,21211)"} true; - assume ($t14 == $ResourceValue($1_stake_StakePool_$memory, $t13)); + // bytecode translation starts here + // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:309:5+1 + assume {:print "$at(2,14451,14452)"} true; + assume $IsValid'address'($t0); - // assume Identical($t15, global(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:483:9+66 - assume {:print "$at(3,21286,21352)"} true; - assume ($t15 == $ResourceValue($1_stake_ValidatorSet_$memory, 1)); + // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:309:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_vesting_AdminStore_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_AdminStore_$memory, $a_0); + ($IsValid'$1_vesting_AdminStore'($rsc)))); - // assume Identical($t16, And(And(Not(stake::spec_contains(select stake::ValidatorSet.pending_active($t15), $t13)), Not(stake::spec_contains(select stake::ValidatorSet.active_validators($t15), $t13))), Not(stake::spec_contains(select stake::ValidatorSet.pending_inactive($t15), $t13)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:484:9+260 - assume {:print "$at(3,21361,21621)"} true; - assume ($t16 == ((!$1_stake_spec_contains($pending_active#$1_stake_ValidatorSet($t15), $t13) && !$1_stake_spec_contains($active_validators#$1_stake_ValidatorSet($t15), $t13)) && !$1_stake_spec_contains($pending_inactive#$1_stake_ValidatorSet($t15), $t13))); + // trace_local[admin]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:309:5+1 + assume {:print "$track_local(59,37,0):", $t0} $t0 == $t0; - // assume Identical($t17, select coin::Coin.value(select stake::StakePool.inactive($t14))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:487:9+45 - assume {:print "$at(3,21630,21675)"} true; - assume ($t17 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($inactive#$1_stake_StakePool($t14))); + // $t2 := exists($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:310:14+6 + assume {:print "$at(2,14548,14554)"} true; + $t2 := $ResourceExists($1_vesting_AdminStore_$memory, $t0); - // assume Identical($t18, select coin::Coin.value(select stake::StakePool.pending_inactive($t14))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:488:9+61 - assume {:print "$at(3,21684,21745)"} true; - assume ($t18 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($pending_inactive#$1_stake_StakePool($t14))); + // $t3 := !($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:310:13+1 + call $t3 := $Not($t2); - // assume Identical($t19, Add($t17, $t18)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:489:9+53 - assume {:print "$at(3,21754,21807)"} true; - assume ($t19 == ($t17 + $t18)); + // if ($t3) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:310:9+160 + if ($t3) { goto L1; } else { goto L0; } - // @136 := save_mem(timestamp::CurrentTimeMicroseconds) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:956:5+1 - assume {:print "$at(2,44691,44692)"} true; - $1_timestamp_CurrentTimeMicroseconds_$memory#136 := $1_timestamp_CurrentTimeMicroseconds_$memory; + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:311:13+24 + assume {:print "$at(2,14589,14613)"} true; +L1: - // @134 := save_mem(stake::StakePool) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:956:5+1 - $1_stake_StakePool_$memory#134 := $1_stake_StakePool_$memory; + // $t1 := vector::empty
() on_abort goto L4 with $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:311:13+24 + assume {:print "$at(2,14589,14613)"} true; + call $t1 := $1_vector_empty'address'(); + if ($abort_flag) { + assume {:print "$at(2,14589,14613)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(59,37):", $t4} $t4 == $t4; + goto L4; + } - // @135 := save_mem(stake::ValidatorSet) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:956:5+1 - $1_stake_ValidatorSet_$memory#135 := $1_stake_ValidatorSet_$memory; + // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:310:9+160 + assume {:print "$at(2,14543,14703)"} true; + goto L2; - // @133 := save_mem(staking_contract::Store) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:956:5+1 - $1_staking_contract_Store_$memory#133 := $1_staking_contract_Store_$memory; + // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:313:39+5 + assume {:print "$at(2,14669,14674)"} true; +L0: - // trace_local[vesting_contract]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:956:5+1 - assume {:print "$track_local(57,41,0):", $t0} $t0 == $t0; + // $t5 := get_global($t0) on_abort goto L4 with $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:313:13+13 + assume {:print "$at(2,14643,14656)"} true; + if (!$ResourceExists($1_vesting_AdminStore_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t5 := $ResourceValue($1_vesting_AdminStore_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(2,14643,14656)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(59,37):", $t4} $t4 == $t4; + goto L4; + } - // trace_local[contract_address]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:956:5+1 - assume {:print "$track_local(57,41,1):", $t1} $t1 == $t1; + // $t1 := get_field.vesting_contracts($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:313:13+50 + $t1 := $vesting_contracts#$1_vesting_AdminStore($t5); - // $t20 := get_field.staking($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:959:56+24 - assume {:print "$at(2,45009,45033)"} true; - $t20 := $staking#$1_vesting_VestingContract($t0); + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:310:9+160 + assume {:print "$at(2,14543,14703)"} true; +L2: - // $t21 := get_field.operator($t20) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:959:56+33 - $t21 := $operator#$1_vesting_StakingInfo($t20); + // trace_return[0]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:310:9+160 + assume {:print "$at(2,14543,14703)"} true; + assume {:print "$track_return(59,37,0):", $t1} $t1 == $t1; - // assume Identical($t22, select staking_contract::Store.staking_contracts(global($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:268:9+64 - assume {:print "$at(134,11481,11545)"} true; - assume ($t22 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t1))); + // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:315:5+1 + assume {:print "$at(2,14708,14709)"} true; +L3: - // staking_contract::distribute($t1, $t21) on_abort goto L2 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:959:9+81 - assume {:print "$at(2,44962,45043)"} true; - call $1_staking_contract_distribute($t1, $t21); - if ($abort_flag) { - assume {:print "$at(2,44962,45043)"} true; - $t23 := $abort_code; - assume {:print "$track_abort(57,41):", $t23} $t23 == $t23; - goto L2; - } + // assert Not(false) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:32:9+16 + assume {:print "$at(3,1109,1125)"} true; + assert {:msg "assert_failed(3,1109,1125): function does not abort under this condition"} + !false; - // assume Identical($t24, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 - assume {:print "$at(95,1664,1763)"} true; - assume ($t24 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); + // return $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:32:9+16 + $ret0 := $t1; + return; - // $t25 := coin::balance($t1) on_abort goto L2 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:960:31+42 - assume {:print "$at(2,45075,45117)"} true; - call $t25 := $1_coin_balance'$1_aptos_coin_AptosCoin'($t1); - if ($abort_flag) { - assume {:print "$at(2,45075,45117)"} true; - $t23 := $abort_code; - assume {:print "$track_abort(57,41):", $t23} $t23 == $t23; - goto L2; - } + // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:315:5+1 + assume {:print "$at(2,14708,14709)"} true; +L4: - // trace_local[withdrawn_coins]($t25) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:960:13+15 - assume {:print "$track_local(57,41,3):", $t25} $t25 == $t25; + // assert false at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:31:5+88 + assume {:print "$at(3,1043,1131)"} true; + assert {:msg "assert_failed(3,1043,1131): abort not covered by any of the `aborts_if` clauses"} + false; - // $t26 := vesting::get_vesting_account_signer_internal($t0) on_abort goto L2 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:961:32+53 - assume {:print "$at(2,45150,45203)"} true; - call $t26 := $1_vesting_get_vesting_account_signer_internal($t0); - if ($abort_flag) { - assume {:print "$at(2,45150,45203)"} true; - $t23 := $abort_code; - assume {:print "$track_abort(57,41):", $t23} $t23 == $t23; - goto L2; - } + // abort($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:31:5+88 + $abort_code := $t4; + $abort_flag := true; + return; - // assume Identical($t27, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 - assume {:print "$at(95,1664,1763)"} true; - assume ($t27 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); +} - // assume Identical($t28, signer::$address_of($t26)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:384:9+47 - assume {:print "$at(95,16622,16669)"} true; - assume ($t28 == $1_signer_$address_of($t26)); +// fun vesting::vesting_start_secs [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:261:5+271 +procedure {:timeLimit 900} $1_vesting_vesting_start_secs$verify(_$t0: int) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: $1_vesting_VestingContract; + var $t3: $1_vesting_VestingSchedule; + var $t4: int; + var $t0: int; + var $temp_0'address': int; + var $temp_0'u64': int; + var $1_vesting_VestingContract_$memory#38: $Memory $1_vesting_VestingContract; + $t0 := _$t0; - // assume Identical($t29, global>($t28)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:385:9+59 - assume {:print "$at(95,16678,16737)"} true; - assume ($t29 == $ResourceValue($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $t28)); + // verification entrypoint assumptions + call $InitVerification(); - // assume Identical($t30, select coin::Coin.value(select coin::CoinStore.coin($t29))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:386:9+36 - assume {:print "$at(95,16746,16782)"} true; - assume ($t30 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($coin#$1_coin_CoinStore'$1_aptos_coin_AptosCoin'($t29))); + // bytecode translation starts here + // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:261:5+1 + assume {:print "$at(2,11707,11708)"} true; + assume $IsValid'address'($t0); - // assume Identical($t31, signer::$address_of($t26)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:394:9+47 - assume {:print "$at(95,17076,17123)"} true; - assume ($t31 == $1_signer_$address_of($t26)); + // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:261:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); + (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; + (var j := $i_4; + (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); - // assume Identical($t32, global>($t31)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:395:9+59 - assume {:print "$at(95,17132,17191)"} true; - assume ($t32 == $ResourceValue($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $t31)); + // @38 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:261:5+1 + $1_vesting_VestingContract_$memory#38 := $1_vesting_VestingContract_$memory; - // assume Identical($t33, select coin::Coin.value(select coin::CoinStore.coin($t32))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:396:9+36 - assume {:print "$at(95,17200,17236)"} true; - assume ($t33 == $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($coin#$1_coin_CoinStore'$1_aptos_coin_AptosCoin'($t32))); + // trace_local[vesting_contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:261:5+1 + assume {:print "$track_local(59,39,0):", $t0} $t0 == $t0; - // $t34 := coin::withdraw($t26, $t25) on_abort goto L2 with $t23 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:962:9+59 - assume {:print "$at(2,45213,45272)"} true; - call $t34 := $1_coin_withdraw'$1_aptos_coin_AptosCoin'($t26, $t25); + // vesting::assert_vesting_contract_exists($t0) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:262:9+56 + assume {:print "$at(2,11812,11868)"} true; + call $1_vesting_assert_vesting_contract_exists($t0); if ($abort_flag) { - assume {:print "$at(2,45213,45272)"} true; - $t23 := $abort_code; - assume {:print "$track_abort(57,41):", $t23} $t23 == $t23; + assume {:print "$at(2,11812,11868)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(59,39):", $t1} $t1 == $t1; goto L2; } - // trace_return[0]($t34) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:962:9+59 - assume {:print "$track_return(57,41,0):", $t34} $t34 == $t34; - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:963:5+1 - assume {:print "$at(2,45277,45278)"} true; -L1: - - // assert Not(Not(exists[@133]($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:267:9+33 - assume {:print "$at(134,11439,11472)"} true; - assert {:msg "assert_failed(134,11439,11472): function does not abort under this condition"} - !!$ResourceExists($1_staking_contract_Store_$memory#133, $t1); - - // assert Not(Not(simple_map::spec_contains_key[]($t7, $t4))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:269:9+70 - assume {:print "$at(134,11554,11624)"} true; - assert {:msg "assert_failed(134,11554,11624): function does not abort under this condition"} - !!$1_simple_map_spec_contains_key'address_$1_staking_contract_StakingContract'($t7, $t4); + // $t2 := get_global($t0) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:263:9+13 + assume {:print "$at(2,11878,11891)"} true; + if (!$ResourceExists($1_vesting_VestingContract_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t2 := $ResourceValue($1_vesting_VestingContract_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(2,11878,11891)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(59,39):", $t1} $t1 == $t1; + goto L2; + } - // assert Not(Not(exists[@134]($t8))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:471:9+50 - assume {:print "$at(3,20605,20655)"} true; - assert {:msg "assert_failed(3,20605,20655): function does not abort under this condition"} - !!$ResourceExists($1_stake_StakePool_$memory#134, $t8); + // $t3 := get_field.vesting_schedule($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:263:9+73 + $t3 := $vesting_schedule#$1_vesting_VestingContract($t2); - // assert Not(Gt(Add($t10, $t11), 18446744073709551615)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:475:9+48 - assume {:print "$at(3,20845,20893)"} true; - assert {:msg "assert_failed(3,20845,20893): function does not abort under this condition"} - !(($t10 + $t11) > 18446744073709551615); + // $t4 := get_field.start_timestamp_secs($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:263:9+94 + $t4 := $start_timestamp_secs#$1_vesting_VestingSchedule($t3); - // assert Not(Not(exists[@134]($t13))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:480:9+52 - assume {:print "$at(3,21090,21142)"} true; - assert {:msg "assert_failed(3,21090,21142): function does not abort under this condition"} - !!$ResourceExists($1_stake_StakePool_$memory#134, $t13); + // trace_return[0]($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:263:9+94 + assume {:print "$track_return(59,39,0):", $t4} $t4 == $t4; - // assert Not(Not(exists[@135](0x1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:482:9+57 - assume {:print "$at(3,21220,21277)"} true; - assert {:msg "assert_failed(3,21220,21277): function does not abort under this condition"} - !!$ResourceExists($1_stake_ValidatorSet_$memory#135, 1); + // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:264:5+1 + assume {:print "$at(2,11977,11978)"} true; +L1: - // assert Not(And(And($t16, Ge(timestamp::spec_now_seconds[@136](), select stake::StakePool.locked_until_secs($t14))), Gt(Add($t17, $t18), 18446744073709551615))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:490:9+150 - assume {:print "$at(3,21816,21966)"} true; - assert {:msg "assert_failed(3,21816,21966): function does not abort under this condition"} - !(($t16 && ($1_timestamp_spec_now_seconds($1_timestamp_CurrentTimeMicroseconds_$memory#136) >= $locked_until_secs#$1_stake_StakePool($t14))) && (($t17 + $t18) > 18446744073709551615)); + // assert Not(Not(exists[@38]($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:12:9+61 + assume {:print "$at(3,352,413)"} true; + assert {:msg "assert_failed(3,352,413): function does not abort under this condition"} + !!$ResourceExists($1_vesting_VestingContract_$memory#38, $t0); - // return $t34 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:490:9+150 - $ret0 := $t34; + // return $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:12:9+61 + $ret0 := $t4; return; - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:963:5+1 - assume {:print "$at(2,45277,45278)"} true; + // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:264:5+1 + assume {:print "$at(2,11977,11978)"} true; L2: - // abort($t23) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:963:5+1 - assume {:print "$at(2,45277,45278)"} true; - $abort_code := $t23; + // assert Not(exists[@38]($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:11:5+141 + assume {:print "$at(3,278,419)"} true; + assert {:msg "assert_failed(3,278,419): abort not covered by any of the `aborts_if` clauses"} + !$ResourceExists($1_vesting_VestingContract_$memory#38, $t0); + + // abort($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:11:5+141 + $abort_code := $t1; $abort_flag := true; return; diff --git a/aptos-move/framework/aptos-framework/sources/vesting.spec.move b/aptos-move/framework/aptos-framework/sources/vesting.spec.move index 307aabfd7717b..1c6b364c9d166 100644 --- a/aptos-move/framework/aptos-framework/sources/vesting.spec.move +++ b/aptos-move/framework/aptos-framework/sources/vesting.spec.move @@ -45,7 +45,7 @@ spec aptos_framework::vesting { } spec total_accumulated_rewards(vesting_contract_address: address): u64 { - pragma verify_duration_estimate = 120; + pragma verify_duration_estimate = 300; include TotalAccumulatedRewardsAbortsIf; } From d3fce95af8ebabb34aea843eba5f790f674e940d Mon Sep 17 00:00:00 2001 From: chan-bing Date: Sat, 29 Jul 2023 13:31:14 +0800 Subject: [PATCH 09/13] rm boogie --- .../framework/aptos-framework/boogie.bpl | 23528 ---------------- 1 file changed, 23528 deletions(-) delete mode 100644 aptos-move/framework/aptos-framework/boogie.bpl diff --git a/aptos-move/framework/aptos-framework/boogie.bpl b/aptos-move/framework/aptos-framework/boogie.bpl deleted file mode 100644 index 424de1b5f615c..0000000000000 --- a/aptos-move/framework/aptos-framework/boogie.bpl +++ /dev/null @@ -1,23528 +0,0 @@ - -// ** Expanded prelude - -// Copyright (c) The Diem Core Contributors -// Copyright (c) The Move Contributors -// SPDX-License-Identifier: Apache-2.0 - -// Basic theory for vectors using arrays. This version of vectors is not extensional. - -type {:datatype} Vec _; - -function {:constructor} Vec(v: [int]T, l: int): Vec T; - -function {:builtin "MapConst"} MapConstVec(T): [int]T; -function DefaultVecElem(): T; -function {:inline} DefaultVecMap(): [int]T { MapConstVec(DefaultVecElem()) } - -function {:inline} EmptyVec(): Vec T { - Vec(DefaultVecMap(), 0) -} - -function {:inline} MakeVec1(v: T): Vec T { - Vec(DefaultVecMap()[0 := v], 1) -} - -function {:inline} MakeVec2(v1: T, v2: T): Vec T { - Vec(DefaultVecMap()[0 := v1][1 := v2], 2) -} - -function {:inline} MakeVec3(v1: T, v2: T, v3: T): Vec T { - Vec(DefaultVecMap()[0 := v1][1 := v2][2 := v3], 3) -} - -function {:inline} MakeVec4(v1: T, v2: T, v3: T, v4: T): Vec T { - Vec(DefaultVecMap()[0 := v1][1 := v2][2 := v3][3 := v4], 4) -} - -function {:inline} ExtendVec(v: Vec T, elem: T): Vec T { - (var l := l#Vec(v); - Vec(v#Vec(v)[l := elem], l + 1)) -} - -function {:inline} ReadVec(v: Vec T, i: int): T { - v#Vec(v)[i] -} - -function {:inline} LenVec(v: Vec T): int { - l#Vec(v) -} - -function {:inline} IsEmptyVec(v: Vec T): bool { - l#Vec(v) == 0 -} - -function {:inline} RemoveVec(v: Vec T): Vec T { - (var l := l#Vec(v) - 1; - Vec(v#Vec(v)[l := DefaultVecElem()], l)) -} - -function {:inline} RemoveAtVec(v: Vec T, i: int): Vec T { - (var l := l#Vec(v) - 1; - Vec( - (lambda j: int :: - if j >= 0 && j < l then - if j < i then v#Vec(v)[j] else v#Vec(v)[j+1] - else DefaultVecElem()), - l)) -} - -function {:inline} ConcatVec(v1: Vec T, v2: Vec T): Vec T { - (var l1, m1, l2, m2 := l#Vec(v1), v#Vec(v1), l#Vec(v2), v#Vec(v2); - Vec( - (lambda i: int :: - if i >= 0 && i < l1 + l2 then - if i < l1 then m1[i] else m2[i - l1] - else DefaultVecElem()), - l1 + l2)) -} - -function {:inline} ReverseVec(v: Vec T): Vec T { - (var l := l#Vec(v); - Vec( - (lambda i: int :: if 0 <= i && i < l then v#Vec(v)[l - i - 1] else DefaultVecElem()), - l)) -} - -function {:inline} SliceVec(v: Vec T, i: int, j: int): Vec T { - (var m := v#Vec(v); - Vec( - (lambda k:int :: - if 0 <= k && k < j - i then - m[i + k] - else - DefaultVecElem()), - (if j - i < 0 then 0 else j - i))) -} - - -function {:inline} UpdateVec(v: Vec T, i: int, elem: T): Vec T { - Vec(v#Vec(v)[i := elem], l#Vec(v)) -} - -function {:inline} SwapVec(v: Vec T, i: int, j: int): Vec T { - (var m := v#Vec(v); - Vec(m[i := m[j]][j := m[i]], l#Vec(v))) -} - -function {:inline} ContainsVec(v: Vec T, e: T): bool { - (var l := l#Vec(v); - (exists i: int :: InRangeVec(v, i) && v#Vec(v)[i] == e)) -} - -function IndexOfVec(v: Vec T, e: T): int; -axiom {:ctor "Vec"} (forall v: Vec T, e: T :: {IndexOfVec(v, e)} - (var i := IndexOfVec(v,e); - if (!ContainsVec(v, e)) then i == -1 - else InRangeVec(v, i) && ReadVec(v, i) == e && - (forall j: int :: j >= 0 && j < i ==> ReadVec(v, j) != e))); - -// This function should stay non-inlined as it guards many quantifiers -// over vectors. It appears important to have this uninterpreted for -// quantifier triggering. -function InRangeVec(v: Vec T, i: int): bool { - i >= 0 && i < LenVec(v) -} - -// Copyright (c) The Diem Core Contributors -// Copyright (c) The Move Contributors -// SPDX-License-Identifier: Apache-2.0 - -// Boogie model for multisets, based on Boogie arrays. This theory assumes extensional equality for element types. - -type {:datatype} Multiset _; -function {:constructor} Multiset(v: [T]int, l: int): Multiset T; - -function {:builtin "MapConst"} MapConstMultiset(l: int): [T]int; - -function {:inline} EmptyMultiset(): Multiset T { - Multiset(MapConstMultiset(0), 0) -} - -function {:inline} LenMultiset(s: Multiset T): int { - l#Multiset(s) -} - -function {:inline} ExtendMultiset(s: Multiset T, v: T): Multiset T { - (var len := l#Multiset(s); - (var cnt := v#Multiset(s)[v]; - Multiset(v#Multiset(s)[v := (cnt + 1)], len + 1))) -} - -// This function returns (s1 - s2). This function assumes that s2 is a subset of s1. -function {:inline} SubtractMultiset(s1: Multiset T, s2: Multiset T): Multiset T { - (var len1 := l#Multiset(s1); - (var len2 := l#Multiset(s2); - Multiset((lambda v:T :: v#Multiset(s1)[v]-v#Multiset(s2)[v]), len1-len2))) -} - -function {:inline} IsEmptyMultiset(s: Multiset T): bool { - (l#Multiset(s) == 0) && - (forall v: T :: v#Multiset(s)[v] == 0) -} - -function {:inline} IsSubsetMultiset(s1: Multiset T, s2: Multiset T): bool { - (l#Multiset(s1) <= l#Multiset(s2)) && - (forall v: T :: v#Multiset(s1)[v] <= v#Multiset(s2)[v]) -} - -function {:inline} ContainsMultiset(s: Multiset T, v: T): bool { - v#Multiset(s)[v] > 0 -} - -// Copyright (c) The Diem Core Contributors -// Copyright (c) The Move Contributors -// SPDX-License-Identifier: Apache-2.0 - -// Theory for tables. - -type {:datatype} Table _ _; - -// v is the SMT array holding the key-value assignment. e is an array which -// independently determines whether a key is valid or not. l is the length. -// -// Note that even though the program cannot reflect over existence of a key, -// we want the specification to be able to do this, so it can express -// verification conditions like "key has been inserted". -function {:constructor} Table(v: [K]V, e: [K]bool, l: int): Table K V; - -// Functions for default SMT arrays. For the table values, we don't care and -// use an uninterpreted function. -function DefaultTableArray(): [K]V; -function DefaultTableKeyExistsArray(): [K]bool; -axiom DefaultTableKeyExistsArray() == (lambda i: int :: false); - -function {:inline} EmptyTable(): Table K V { - Table(DefaultTableArray(), DefaultTableKeyExistsArray(), 0) -} - -function {:inline} GetTable(t: Table K V, k: K): V { - // Notice we do not check whether key is in the table. The result is undetermined if it is not. - v#Table(t)[k] -} - -function {:inline} LenTable(t: Table K V): int { - l#Table(t) -} - - -function {:inline} ContainsTable(t: Table K V, k: K): bool { - e#Table(t)[k] -} - -function {:inline} UpdateTable(t: Table K V, k: K, v: V): Table K V { - Table(v#Table(t)[k := v], e#Table(t), l#Table(t)) -} - -function {:inline} AddTable(t: Table K V, k: K, v: V): Table K V { - // This function has an undetermined result if the key is already in the table - // (all specification functions have this "partial definiteness" behavior). Thus we can - // just increment the length. - Table(v#Table(t)[k := v], e#Table(t)[k := true], l#Table(t) + 1) -} - -function {:inline} RemoveTable(t: Table K V, k: K): Table K V { - // Similar as above, we only need to consider the case where the key is in the table. - Table(v#Table(t), e#Table(t)[k := false], l#Table(t) - 1) -} - -axiom {:ctor "Table"} (forall t: Table K V :: {LenTable(t)} - (exists k: K :: {ContainsTable(t, k)} ContainsTable(t, k)) ==> LenTable(t) >= 1 -); -// TODO: we might want to encoder a stronger property that the length of table -// must be more than N given a set of N items. Currently we don't see a need here -// and the above axiom seems to be sufficient. -// Copyright © Aptos Foundation -// SPDX-License-Identifier: Apache-2.0 - -// ================================================================================== -// Native object::exists_at - -// ================================================================================== -// Intrinsic implementation of aggregator and aggregator factory - -type {:datatype} $1_aggregator_Aggregator; -function {:constructor} $1_aggregator_Aggregator($handle: int, $key: int, $limit: int, $val: int): $1_aggregator_Aggregator; -function {:inline} $Update'$1_aggregator_Aggregator'_handle(s: $1_aggregator_Aggregator, x: int): $1_aggregator_Aggregator { - $1_aggregator_Aggregator(x, $key#$1_aggregator_Aggregator(s), $limit#$1_aggregator_Aggregator(s), $val#$1_aggregator_Aggregator(s)) -} -function {:inline} $Update'$1_aggregator_Aggregator'_key(s: $1_aggregator_Aggregator, x: int): $1_aggregator_Aggregator { - $1_aggregator_Aggregator($handle#$1_aggregator_Aggregator(s), x, $limit#$1_aggregator_Aggregator(s), $val#$1_aggregator_Aggregator(s)) -} -function {:inline} $Update'$1_aggregator_Aggregator'_limit(s: $1_aggregator_Aggregator, x: int): $1_aggregator_Aggregator { - $1_aggregator_Aggregator($handle#$1_aggregator_Aggregator(s), $key#$1_aggregator_Aggregator(s), x, $val#$1_aggregator_Aggregator(s)) -} -function {:inline} $Update'$1_aggregator_Aggregator'_val(s: $1_aggregator_Aggregator, x: int): $1_aggregator_Aggregator { - $1_aggregator_Aggregator($handle#$1_aggregator_Aggregator(s), $key#$1_aggregator_Aggregator(s), $limit#$1_aggregator_Aggregator(s), x) -} -function $IsValid'$1_aggregator_Aggregator'(s: $1_aggregator_Aggregator): bool { - $IsValid'address'($handle#$1_aggregator_Aggregator(s)) - && $IsValid'address'($key#$1_aggregator_Aggregator(s)) - && $IsValid'u128'($limit#$1_aggregator_Aggregator(s)) - && $IsValid'u128'($val#$1_aggregator_Aggregator(s)) -} -function {:inline} $IsEqual'$1_aggregator_Aggregator'(s1: $1_aggregator_Aggregator, s2: $1_aggregator_Aggregator): bool { - s1 == s2 -} -function {:inline} $1_aggregator_spec_get_limit(s1: $1_aggregator_Aggregator): int { - $limit#$1_aggregator_Aggregator(s1) -} -function {:inline} $1_aggregator_spec_get_handle(s1: $1_aggregator_Aggregator): int { - $handle#$1_aggregator_Aggregator(s1) -} -function {:inline} $1_aggregator_spec_get_key(s1: $1_aggregator_Aggregator): int { - $key#$1_aggregator_Aggregator(s1) -} -function {:inline} $1_aggregator_spec_get_val(s1: $1_aggregator_Aggregator): int { - $val#$1_aggregator_Aggregator(s1) -} - -function $1_aggregator_spec_read(agg: $1_aggregator_Aggregator): int { - $1_aggregator_spec_get_val(agg) -} - -function $1_aggregator_spec_aggregator_set_val(agg: $1_aggregator_Aggregator, val: int): $1_aggregator_Aggregator { - $Update'$1_aggregator_Aggregator'_val(agg, val) -} - -function $1_aggregator_spec_aggregator_get_val(agg: $1_aggregator_Aggregator): int { - $1_aggregator_spec_get_val(agg) -} - -function $1_aggregator_factory_spec_new_aggregator(limit: int) : $1_aggregator_Aggregator; - -axiom (forall limit: int :: {$1_aggregator_factory_spec_new_aggregator(limit)} - (var agg := $1_aggregator_factory_spec_new_aggregator(limit); - $1_aggregator_spec_get_limit(agg) == limit)); - -axiom (forall limit: int :: {$1_aggregator_factory_spec_new_aggregator(limit)} - (var agg := $1_aggregator_factory_spec_new_aggregator(limit); - $1_aggregator_spec_aggregator_get_val(agg) == 0)); - - -// ============================================================================================ -// Primitive Types - -const $MAX_U8: int; -axiom $MAX_U8 == 255; -const $MAX_U16: int; -axiom $MAX_U16 == 65535; -const $MAX_U32: int; -axiom $MAX_U32 == 4294967295; -const $MAX_U64: int; -axiom $MAX_U64 == 18446744073709551615; -const $MAX_U128: int; -axiom $MAX_U128 == 340282366920938463463374607431768211455; -const $MAX_U256: int; -axiom $MAX_U256 == 115792089237316195423570985008687907853269984665640564039457584007913129639935; - -// Templates for bitvector operations - -function {:bvbuiltin "bvand"} $And'Bv8'(bv8,bv8) returns(bv8); -function {:bvbuiltin "bvor"} $Or'Bv8'(bv8,bv8) returns(bv8); -function {:bvbuiltin "bvxor"} $Xor'Bv8'(bv8,bv8) returns(bv8); -function {:bvbuiltin "bvadd"} $Add'Bv8'(bv8,bv8) returns(bv8); -function {:bvbuiltin "bvsub"} $Sub'Bv8'(bv8,bv8) returns(bv8); -function {:bvbuiltin "bvmul"} $Mul'Bv8'(bv8,bv8) returns(bv8); -function {:bvbuiltin "bvudiv"} $Div'Bv8'(bv8,bv8) returns(bv8); -function {:bvbuiltin "bvurem"} $Mod'Bv8'(bv8,bv8) returns(bv8); -function {:bvbuiltin "bvshl"} $Shl'Bv8'(bv8,bv8) returns(bv8); -function {:bvbuiltin "bvlshr"} $Shr'Bv8'(bv8,bv8) returns(bv8); -function {:bvbuiltin "bvult"} $Lt'Bv8'(bv8,bv8) returns(bool); -function {:bvbuiltin "bvule"} $Le'Bv8'(bv8,bv8) returns(bool); -function {:bvbuiltin "bvugt"} $Gt'Bv8'(bv8,bv8) returns(bool); -function {:bvbuiltin "bvuge"} $Ge'Bv8'(bv8,bv8) returns(bool); - -procedure {:inline 1} $AddBv8(src1: bv8, src2: bv8) returns (dst: bv8) -{ - if ($Lt'Bv8'($Add'Bv8'(src1, src2), src1)) { - call $ExecFailureAbort(); - return; - } - dst := $Add'Bv8'(src1, src2); -} - -procedure {:inline 1} $AddBv8_unchecked(src1: bv8, src2: bv8) returns (dst: bv8) -{ - dst := $Add'Bv8'(src1, src2); -} - -procedure {:inline 1} $SubBv8(src1: bv8, src2: bv8) returns (dst: bv8) -{ - if ($Lt'Bv8'(src1, src2)) { - call $ExecFailureAbort(); - return; - } - dst := $Sub'Bv8'(src1, src2); -} - -procedure {:inline 1} $MulBv8(src1: bv8, src2: bv8) returns (dst: bv8) -{ - if ($Lt'Bv8'($Mul'Bv8'(src1, src2), src1)) { - call $ExecFailureAbort(); - return; - } - dst := $Mul'Bv8'(src1, src2); -} - -procedure {:inline 1} $DivBv8(src1: bv8, src2: bv8) returns (dst: bv8) -{ - if (src2 == 0bv8) { - call $ExecFailureAbort(); - return; - } - dst := $Div'Bv8'(src1, src2); -} - -procedure {:inline 1} $ModBv8(src1: bv8, src2: bv8) returns (dst: bv8) -{ - if (src2 == 0bv8) { - call $ExecFailureAbort(); - return; - } - dst := $Mod'Bv8'(src1, src2); -} - -procedure {:inline 1} $AndBv8(src1: bv8, src2: bv8) returns (dst: bv8) -{ - dst := $And'Bv8'(src1,src2); -} - -procedure {:inline 1} $OrBv8(src1: bv8, src2: bv8) returns (dst: bv8) -{ - dst := $Or'Bv8'(src1,src2); -} - -procedure {:inline 1} $XorBv8(src1: bv8, src2: bv8) returns (dst: bv8) -{ - dst := $Xor'Bv8'(src1,src2); -} - -procedure {:inline 1} $LtBv8(src1: bv8, src2: bv8) returns (dst: bool) -{ - dst := $Lt'Bv8'(src1,src2); -} - -procedure {:inline 1} $LeBv8(src1: bv8, src2: bv8) returns (dst: bool) -{ - dst := $Le'Bv8'(src1,src2); -} - -procedure {:inline 1} $GtBv8(src1: bv8, src2: bv8) returns (dst: bool) -{ - dst := $Gt'Bv8'(src1,src2); -} - -procedure {:inline 1} $GeBv8(src1: bv8, src2: bv8) returns (dst: bool) -{ - dst := $Ge'Bv8'(src1,src2); -} - -function $IsValid'bv8'(v: bv8): bool { - $Ge'Bv8'(v,0bv8) && $Le'Bv8'(v,255bv8) -} - -function {:inline} $IsEqual'bv8'(x: bv8, y: bv8): bool { - x == y -} - -procedure {:inline 1} $int2bv8(src: int) returns (dst: bv8) -{ - if (src > 255) { - call $ExecFailureAbort(); - return; - } - dst := $int2bv.8(src); -} - -procedure {:inline 1} $bv2int8(src: bv8) returns (dst: int) -{ - dst := $bv2int.8(src); -} - -function {:builtin "(_ int2bv 8)"} $int2bv.8(i: int) returns (bv8); -function {:builtin "bv2nat"} $bv2int.8(i: bv8) returns (int); - -function {:bvbuiltin "bvand"} $And'Bv16'(bv16,bv16) returns(bv16); -function {:bvbuiltin "bvor"} $Or'Bv16'(bv16,bv16) returns(bv16); -function {:bvbuiltin "bvxor"} $Xor'Bv16'(bv16,bv16) returns(bv16); -function {:bvbuiltin "bvadd"} $Add'Bv16'(bv16,bv16) returns(bv16); -function {:bvbuiltin "bvsub"} $Sub'Bv16'(bv16,bv16) returns(bv16); -function {:bvbuiltin "bvmul"} $Mul'Bv16'(bv16,bv16) returns(bv16); -function {:bvbuiltin "bvudiv"} $Div'Bv16'(bv16,bv16) returns(bv16); -function {:bvbuiltin "bvurem"} $Mod'Bv16'(bv16,bv16) returns(bv16); -function {:bvbuiltin "bvshl"} $Shl'Bv16'(bv16,bv16) returns(bv16); -function {:bvbuiltin "bvlshr"} $Shr'Bv16'(bv16,bv16) returns(bv16); -function {:bvbuiltin "bvult"} $Lt'Bv16'(bv16,bv16) returns(bool); -function {:bvbuiltin "bvule"} $Le'Bv16'(bv16,bv16) returns(bool); -function {:bvbuiltin "bvugt"} $Gt'Bv16'(bv16,bv16) returns(bool); -function {:bvbuiltin "bvuge"} $Ge'Bv16'(bv16,bv16) returns(bool); - -procedure {:inline 1} $AddBv16(src1: bv16, src2: bv16) returns (dst: bv16) -{ - if ($Lt'Bv16'($Add'Bv16'(src1, src2), src1)) { - call $ExecFailureAbort(); - return; - } - dst := $Add'Bv16'(src1, src2); -} - -procedure {:inline 1} $AddBv16_unchecked(src1: bv16, src2: bv16) returns (dst: bv16) -{ - dst := $Add'Bv16'(src1, src2); -} - -procedure {:inline 1} $SubBv16(src1: bv16, src2: bv16) returns (dst: bv16) -{ - if ($Lt'Bv16'(src1, src2)) { - call $ExecFailureAbort(); - return; - } - dst := $Sub'Bv16'(src1, src2); -} - -procedure {:inline 1} $MulBv16(src1: bv16, src2: bv16) returns (dst: bv16) -{ - if ($Lt'Bv16'($Mul'Bv16'(src1, src2), src1)) { - call $ExecFailureAbort(); - return; - } - dst := $Mul'Bv16'(src1, src2); -} - -procedure {:inline 1} $DivBv16(src1: bv16, src2: bv16) returns (dst: bv16) -{ - if (src2 == 0bv16) { - call $ExecFailureAbort(); - return; - } - dst := $Div'Bv16'(src1, src2); -} - -procedure {:inline 1} $ModBv16(src1: bv16, src2: bv16) returns (dst: bv16) -{ - if (src2 == 0bv16) { - call $ExecFailureAbort(); - return; - } - dst := $Mod'Bv16'(src1, src2); -} - -procedure {:inline 1} $AndBv16(src1: bv16, src2: bv16) returns (dst: bv16) -{ - dst := $And'Bv16'(src1,src2); -} - -procedure {:inline 1} $OrBv16(src1: bv16, src2: bv16) returns (dst: bv16) -{ - dst := $Or'Bv16'(src1,src2); -} - -procedure {:inline 1} $XorBv16(src1: bv16, src2: bv16) returns (dst: bv16) -{ - dst := $Xor'Bv16'(src1,src2); -} - -procedure {:inline 1} $LtBv16(src1: bv16, src2: bv16) returns (dst: bool) -{ - dst := $Lt'Bv16'(src1,src2); -} - -procedure {:inline 1} $LeBv16(src1: bv16, src2: bv16) returns (dst: bool) -{ - dst := $Le'Bv16'(src1,src2); -} - -procedure {:inline 1} $GtBv16(src1: bv16, src2: bv16) returns (dst: bool) -{ - dst := $Gt'Bv16'(src1,src2); -} - -procedure {:inline 1} $GeBv16(src1: bv16, src2: bv16) returns (dst: bool) -{ - dst := $Ge'Bv16'(src1,src2); -} - -function $IsValid'bv16'(v: bv16): bool { - $Ge'Bv16'(v,0bv16) && $Le'Bv16'(v,65535bv16) -} - -function {:inline} $IsEqual'bv16'(x: bv16, y: bv16): bool { - x == y -} - -procedure {:inline 1} $int2bv16(src: int) returns (dst: bv16) -{ - if (src > 65535) { - call $ExecFailureAbort(); - return; - } - dst := $int2bv.16(src); -} - -procedure {:inline 1} $bv2int16(src: bv16) returns (dst: int) -{ - dst := $bv2int.16(src); -} - -function {:builtin "(_ int2bv 16)"} $int2bv.16(i: int) returns (bv16); -function {:builtin "bv2nat"} $bv2int.16(i: bv16) returns (int); - -function {:bvbuiltin "bvand"} $And'Bv32'(bv32,bv32) returns(bv32); -function {:bvbuiltin "bvor"} $Or'Bv32'(bv32,bv32) returns(bv32); -function {:bvbuiltin "bvxor"} $Xor'Bv32'(bv32,bv32) returns(bv32); -function {:bvbuiltin "bvadd"} $Add'Bv32'(bv32,bv32) returns(bv32); -function {:bvbuiltin "bvsub"} $Sub'Bv32'(bv32,bv32) returns(bv32); -function {:bvbuiltin "bvmul"} $Mul'Bv32'(bv32,bv32) returns(bv32); -function {:bvbuiltin "bvudiv"} $Div'Bv32'(bv32,bv32) returns(bv32); -function {:bvbuiltin "bvurem"} $Mod'Bv32'(bv32,bv32) returns(bv32); -function {:bvbuiltin "bvshl"} $Shl'Bv32'(bv32,bv32) returns(bv32); -function {:bvbuiltin "bvlshr"} $Shr'Bv32'(bv32,bv32) returns(bv32); -function {:bvbuiltin "bvult"} $Lt'Bv32'(bv32,bv32) returns(bool); -function {:bvbuiltin "bvule"} $Le'Bv32'(bv32,bv32) returns(bool); -function {:bvbuiltin "bvugt"} $Gt'Bv32'(bv32,bv32) returns(bool); -function {:bvbuiltin "bvuge"} $Ge'Bv32'(bv32,bv32) returns(bool); - -procedure {:inline 1} $AddBv32(src1: bv32, src2: bv32) returns (dst: bv32) -{ - if ($Lt'Bv32'($Add'Bv32'(src1, src2), src1)) { - call $ExecFailureAbort(); - return; - } - dst := $Add'Bv32'(src1, src2); -} - -procedure {:inline 1} $AddBv32_unchecked(src1: bv32, src2: bv32) returns (dst: bv32) -{ - dst := $Add'Bv32'(src1, src2); -} - -procedure {:inline 1} $SubBv32(src1: bv32, src2: bv32) returns (dst: bv32) -{ - if ($Lt'Bv32'(src1, src2)) { - call $ExecFailureAbort(); - return; - } - dst := $Sub'Bv32'(src1, src2); -} - -procedure {:inline 1} $MulBv32(src1: bv32, src2: bv32) returns (dst: bv32) -{ - if ($Lt'Bv32'($Mul'Bv32'(src1, src2), src1)) { - call $ExecFailureAbort(); - return; - } - dst := $Mul'Bv32'(src1, src2); -} - -procedure {:inline 1} $DivBv32(src1: bv32, src2: bv32) returns (dst: bv32) -{ - if (src2 == 0bv32) { - call $ExecFailureAbort(); - return; - } - dst := $Div'Bv32'(src1, src2); -} - -procedure {:inline 1} $ModBv32(src1: bv32, src2: bv32) returns (dst: bv32) -{ - if (src2 == 0bv32) { - call $ExecFailureAbort(); - return; - } - dst := $Mod'Bv32'(src1, src2); -} - -procedure {:inline 1} $AndBv32(src1: bv32, src2: bv32) returns (dst: bv32) -{ - dst := $And'Bv32'(src1,src2); -} - -procedure {:inline 1} $OrBv32(src1: bv32, src2: bv32) returns (dst: bv32) -{ - dst := $Or'Bv32'(src1,src2); -} - -procedure {:inline 1} $XorBv32(src1: bv32, src2: bv32) returns (dst: bv32) -{ - dst := $Xor'Bv32'(src1,src2); -} - -procedure {:inline 1} $LtBv32(src1: bv32, src2: bv32) returns (dst: bool) -{ - dst := $Lt'Bv32'(src1,src2); -} - -procedure {:inline 1} $LeBv32(src1: bv32, src2: bv32) returns (dst: bool) -{ - dst := $Le'Bv32'(src1,src2); -} - -procedure {:inline 1} $GtBv32(src1: bv32, src2: bv32) returns (dst: bool) -{ - dst := $Gt'Bv32'(src1,src2); -} - -procedure {:inline 1} $GeBv32(src1: bv32, src2: bv32) returns (dst: bool) -{ - dst := $Ge'Bv32'(src1,src2); -} - -function $IsValid'bv32'(v: bv32): bool { - $Ge'Bv32'(v,0bv32) && $Le'Bv32'(v,2147483647bv32) -} - -function {:inline} $IsEqual'bv32'(x: bv32, y: bv32): bool { - x == y -} - -procedure {:inline 1} $int2bv32(src: int) returns (dst: bv32) -{ - if (src > 2147483647) { - call $ExecFailureAbort(); - return; - } - dst := $int2bv.32(src); -} - -procedure {:inline 1} $bv2int32(src: bv32) returns (dst: int) -{ - dst := $bv2int.32(src); -} - -function {:builtin "(_ int2bv 32)"} $int2bv.32(i: int) returns (bv32); -function {:builtin "bv2nat"} $bv2int.32(i: bv32) returns (int); - -function {:bvbuiltin "bvand"} $And'Bv64'(bv64,bv64) returns(bv64); -function {:bvbuiltin "bvor"} $Or'Bv64'(bv64,bv64) returns(bv64); -function {:bvbuiltin "bvxor"} $Xor'Bv64'(bv64,bv64) returns(bv64); -function {:bvbuiltin "bvadd"} $Add'Bv64'(bv64,bv64) returns(bv64); -function {:bvbuiltin "bvsub"} $Sub'Bv64'(bv64,bv64) returns(bv64); -function {:bvbuiltin "bvmul"} $Mul'Bv64'(bv64,bv64) returns(bv64); -function {:bvbuiltin "bvudiv"} $Div'Bv64'(bv64,bv64) returns(bv64); -function {:bvbuiltin "bvurem"} $Mod'Bv64'(bv64,bv64) returns(bv64); -function {:bvbuiltin "bvshl"} $Shl'Bv64'(bv64,bv64) returns(bv64); -function {:bvbuiltin "bvlshr"} $Shr'Bv64'(bv64,bv64) returns(bv64); -function {:bvbuiltin "bvult"} $Lt'Bv64'(bv64,bv64) returns(bool); -function {:bvbuiltin "bvule"} $Le'Bv64'(bv64,bv64) returns(bool); -function {:bvbuiltin "bvugt"} $Gt'Bv64'(bv64,bv64) returns(bool); -function {:bvbuiltin "bvuge"} $Ge'Bv64'(bv64,bv64) returns(bool); - -procedure {:inline 1} $AddBv64(src1: bv64, src2: bv64) returns (dst: bv64) -{ - if ($Lt'Bv64'($Add'Bv64'(src1, src2), src1)) { - call $ExecFailureAbort(); - return; - } - dst := $Add'Bv64'(src1, src2); -} - -procedure {:inline 1} $AddBv64_unchecked(src1: bv64, src2: bv64) returns (dst: bv64) -{ - dst := $Add'Bv64'(src1, src2); -} - -procedure {:inline 1} $SubBv64(src1: bv64, src2: bv64) returns (dst: bv64) -{ - if ($Lt'Bv64'(src1, src2)) { - call $ExecFailureAbort(); - return; - } - dst := $Sub'Bv64'(src1, src2); -} - -procedure {:inline 1} $MulBv64(src1: bv64, src2: bv64) returns (dst: bv64) -{ - if ($Lt'Bv64'($Mul'Bv64'(src1, src2), src1)) { - call $ExecFailureAbort(); - return; - } - dst := $Mul'Bv64'(src1, src2); -} - -procedure {:inline 1} $DivBv64(src1: bv64, src2: bv64) returns (dst: bv64) -{ - if (src2 == 0bv64) { - call $ExecFailureAbort(); - return; - } - dst := $Div'Bv64'(src1, src2); -} - -procedure {:inline 1} $ModBv64(src1: bv64, src2: bv64) returns (dst: bv64) -{ - if (src2 == 0bv64) { - call $ExecFailureAbort(); - return; - } - dst := $Mod'Bv64'(src1, src2); -} - -procedure {:inline 1} $AndBv64(src1: bv64, src2: bv64) returns (dst: bv64) -{ - dst := $And'Bv64'(src1,src2); -} - -procedure {:inline 1} $OrBv64(src1: bv64, src2: bv64) returns (dst: bv64) -{ - dst := $Or'Bv64'(src1,src2); -} - -procedure {:inline 1} $XorBv64(src1: bv64, src2: bv64) returns (dst: bv64) -{ - dst := $Xor'Bv64'(src1,src2); -} - -procedure {:inline 1} $LtBv64(src1: bv64, src2: bv64) returns (dst: bool) -{ - dst := $Lt'Bv64'(src1,src2); -} - -procedure {:inline 1} $LeBv64(src1: bv64, src2: bv64) returns (dst: bool) -{ - dst := $Le'Bv64'(src1,src2); -} - -procedure {:inline 1} $GtBv64(src1: bv64, src2: bv64) returns (dst: bool) -{ - dst := $Gt'Bv64'(src1,src2); -} - -procedure {:inline 1} $GeBv64(src1: bv64, src2: bv64) returns (dst: bool) -{ - dst := $Ge'Bv64'(src1,src2); -} - -function $IsValid'bv64'(v: bv64): bool { - $Ge'Bv64'(v,0bv64) && $Le'Bv64'(v,18446744073709551615bv64) -} - -function {:inline} $IsEqual'bv64'(x: bv64, y: bv64): bool { - x == y -} - -procedure {:inline 1} $int2bv64(src: int) returns (dst: bv64) -{ - if (src > 18446744073709551615) { - call $ExecFailureAbort(); - return; - } - dst := $int2bv.64(src); -} - -procedure {:inline 1} $bv2int64(src: bv64) returns (dst: int) -{ - dst := $bv2int.64(src); -} - -function {:builtin "(_ int2bv 64)"} $int2bv.64(i: int) returns (bv64); -function {:builtin "bv2nat"} $bv2int.64(i: bv64) returns (int); - -function {:bvbuiltin "bvand"} $And'Bv128'(bv128,bv128) returns(bv128); -function {:bvbuiltin "bvor"} $Or'Bv128'(bv128,bv128) returns(bv128); -function {:bvbuiltin "bvxor"} $Xor'Bv128'(bv128,bv128) returns(bv128); -function {:bvbuiltin "bvadd"} $Add'Bv128'(bv128,bv128) returns(bv128); -function {:bvbuiltin "bvsub"} $Sub'Bv128'(bv128,bv128) returns(bv128); -function {:bvbuiltin "bvmul"} $Mul'Bv128'(bv128,bv128) returns(bv128); -function {:bvbuiltin "bvudiv"} $Div'Bv128'(bv128,bv128) returns(bv128); -function {:bvbuiltin "bvurem"} $Mod'Bv128'(bv128,bv128) returns(bv128); -function {:bvbuiltin "bvshl"} $Shl'Bv128'(bv128,bv128) returns(bv128); -function {:bvbuiltin "bvlshr"} $Shr'Bv128'(bv128,bv128) returns(bv128); -function {:bvbuiltin "bvult"} $Lt'Bv128'(bv128,bv128) returns(bool); -function {:bvbuiltin "bvule"} $Le'Bv128'(bv128,bv128) returns(bool); -function {:bvbuiltin "bvugt"} $Gt'Bv128'(bv128,bv128) returns(bool); -function {:bvbuiltin "bvuge"} $Ge'Bv128'(bv128,bv128) returns(bool); - -procedure {:inline 1} $AddBv128(src1: bv128, src2: bv128) returns (dst: bv128) -{ - if ($Lt'Bv128'($Add'Bv128'(src1, src2), src1)) { - call $ExecFailureAbort(); - return; - } - dst := $Add'Bv128'(src1, src2); -} - -procedure {:inline 1} $AddBv128_unchecked(src1: bv128, src2: bv128) returns (dst: bv128) -{ - dst := $Add'Bv128'(src1, src2); -} - -procedure {:inline 1} $SubBv128(src1: bv128, src2: bv128) returns (dst: bv128) -{ - if ($Lt'Bv128'(src1, src2)) { - call $ExecFailureAbort(); - return; - } - dst := $Sub'Bv128'(src1, src2); -} - -procedure {:inline 1} $MulBv128(src1: bv128, src2: bv128) returns (dst: bv128) -{ - if ($Lt'Bv128'($Mul'Bv128'(src1, src2), src1)) { - call $ExecFailureAbort(); - return; - } - dst := $Mul'Bv128'(src1, src2); -} - -procedure {:inline 1} $DivBv128(src1: bv128, src2: bv128) returns (dst: bv128) -{ - if (src2 == 0bv128) { - call $ExecFailureAbort(); - return; - } - dst := $Div'Bv128'(src1, src2); -} - -procedure {:inline 1} $ModBv128(src1: bv128, src2: bv128) returns (dst: bv128) -{ - if (src2 == 0bv128) { - call $ExecFailureAbort(); - return; - } - dst := $Mod'Bv128'(src1, src2); -} - -procedure {:inline 1} $AndBv128(src1: bv128, src2: bv128) returns (dst: bv128) -{ - dst := $And'Bv128'(src1,src2); -} - -procedure {:inline 1} $OrBv128(src1: bv128, src2: bv128) returns (dst: bv128) -{ - dst := $Or'Bv128'(src1,src2); -} - -procedure {:inline 1} $XorBv128(src1: bv128, src2: bv128) returns (dst: bv128) -{ - dst := $Xor'Bv128'(src1,src2); -} - -procedure {:inline 1} $LtBv128(src1: bv128, src2: bv128) returns (dst: bool) -{ - dst := $Lt'Bv128'(src1,src2); -} - -procedure {:inline 1} $LeBv128(src1: bv128, src2: bv128) returns (dst: bool) -{ - dst := $Le'Bv128'(src1,src2); -} - -procedure {:inline 1} $GtBv128(src1: bv128, src2: bv128) returns (dst: bool) -{ - dst := $Gt'Bv128'(src1,src2); -} - -procedure {:inline 1} $GeBv128(src1: bv128, src2: bv128) returns (dst: bool) -{ - dst := $Ge'Bv128'(src1,src2); -} - -function $IsValid'bv128'(v: bv128): bool { - $Ge'Bv128'(v,0bv128) && $Le'Bv128'(v,340282366920938463463374607431768211455bv128) -} - -function {:inline} $IsEqual'bv128'(x: bv128, y: bv128): bool { - x == y -} - -procedure {:inline 1} $int2bv128(src: int) returns (dst: bv128) -{ - if (src > 340282366920938463463374607431768211455) { - call $ExecFailureAbort(); - return; - } - dst := $int2bv.128(src); -} - -procedure {:inline 1} $bv2int128(src: bv128) returns (dst: int) -{ - dst := $bv2int.128(src); -} - -function {:builtin "(_ int2bv 128)"} $int2bv.128(i: int) returns (bv128); -function {:builtin "bv2nat"} $bv2int.128(i: bv128) returns (int); - -function {:bvbuiltin "bvand"} $And'Bv256'(bv256,bv256) returns(bv256); -function {:bvbuiltin "bvor"} $Or'Bv256'(bv256,bv256) returns(bv256); -function {:bvbuiltin "bvxor"} $Xor'Bv256'(bv256,bv256) returns(bv256); -function {:bvbuiltin "bvadd"} $Add'Bv256'(bv256,bv256) returns(bv256); -function {:bvbuiltin "bvsub"} $Sub'Bv256'(bv256,bv256) returns(bv256); -function {:bvbuiltin "bvmul"} $Mul'Bv256'(bv256,bv256) returns(bv256); -function {:bvbuiltin "bvudiv"} $Div'Bv256'(bv256,bv256) returns(bv256); -function {:bvbuiltin "bvurem"} $Mod'Bv256'(bv256,bv256) returns(bv256); -function {:bvbuiltin "bvshl"} $Shl'Bv256'(bv256,bv256) returns(bv256); -function {:bvbuiltin "bvlshr"} $Shr'Bv256'(bv256,bv256) returns(bv256); -function {:bvbuiltin "bvult"} $Lt'Bv256'(bv256,bv256) returns(bool); -function {:bvbuiltin "bvule"} $Le'Bv256'(bv256,bv256) returns(bool); -function {:bvbuiltin "bvugt"} $Gt'Bv256'(bv256,bv256) returns(bool); -function {:bvbuiltin "bvuge"} $Ge'Bv256'(bv256,bv256) returns(bool); - -procedure {:inline 1} $AddBv256(src1: bv256, src2: bv256) returns (dst: bv256) -{ - if ($Lt'Bv256'($Add'Bv256'(src1, src2), src1)) { - call $ExecFailureAbort(); - return; - } - dst := $Add'Bv256'(src1, src2); -} - -procedure {:inline 1} $AddBv256_unchecked(src1: bv256, src2: bv256) returns (dst: bv256) -{ - dst := $Add'Bv256'(src1, src2); -} - -procedure {:inline 1} $SubBv256(src1: bv256, src2: bv256) returns (dst: bv256) -{ - if ($Lt'Bv256'(src1, src2)) { - call $ExecFailureAbort(); - return; - } - dst := $Sub'Bv256'(src1, src2); -} - -procedure {:inline 1} $MulBv256(src1: bv256, src2: bv256) returns (dst: bv256) -{ - if ($Lt'Bv256'($Mul'Bv256'(src1, src2), src1)) { - call $ExecFailureAbort(); - return; - } - dst := $Mul'Bv256'(src1, src2); -} - -procedure {:inline 1} $DivBv256(src1: bv256, src2: bv256) returns (dst: bv256) -{ - if (src2 == 0bv256) { - call $ExecFailureAbort(); - return; - } - dst := $Div'Bv256'(src1, src2); -} - -procedure {:inline 1} $ModBv256(src1: bv256, src2: bv256) returns (dst: bv256) -{ - if (src2 == 0bv256) { - call $ExecFailureAbort(); - return; - } - dst := $Mod'Bv256'(src1, src2); -} - -procedure {:inline 1} $AndBv256(src1: bv256, src2: bv256) returns (dst: bv256) -{ - dst := $And'Bv256'(src1,src2); -} - -procedure {:inline 1} $OrBv256(src1: bv256, src2: bv256) returns (dst: bv256) -{ - dst := $Or'Bv256'(src1,src2); -} - -procedure {:inline 1} $XorBv256(src1: bv256, src2: bv256) returns (dst: bv256) -{ - dst := $Xor'Bv256'(src1,src2); -} - -procedure {:inline 1} $LtBv256(src1: bv256, src2: bv256) returns (dst: bool) -{ - dst := $Lt'Bv256'(src1,src2); -} - -procedure {:inline 1} $LeBv256(src1: bv256, src2: bv256) returns (dst: bool) -{ - dst := $Le'Bv256'(src1,src2); -} - -procedure {:inline 1} $GtBv256(src1: bv256, src2: bv256) returns (dst: bool) -{ - dst := $Gt'Bv256'(src1,src2); -} - -procedure {:inline 1} $GeBv256(src1: bv256, src2: bv256) returns (dst: bool) -{ - dst := $Ge'Bv256'(src1,src2); -} - -function $IsValid'bv256'(v: bv256): bool { - $Ge'Bv256'(v,0bv256) && $Le'Bv256'(v,115792089237316195423570985008687907853269984665640564039457584007913129639935bv256) -} - -function {:inline} $IsEqual'bv256'(x: bv256, y: bv256): bool { - x == y -} - -procedure {:inline 1} $int2bv256(src: int) returns (dst: bv256) -{ - if (src > 115792089237316195423570985008687907853269984665640564039457584007913129639935) { - call $ExecFailureAbort(); - return; - } - dst := $int2bv.256(src); -} - -procedure {:inline 1} $bv2int256(src: bv256) returns (dst: int) -{ - dst := $bv2int.256(src); -} - -function {:builtin "(_ int2bv 256)"} $int2bv.256(i: int) returns (bv256); -function {:builtin "bv2nat"} $bv2int.256(i: bv256) returns (int); - -type {:datatype} $Range; -function {:constructor} $Range(lb: int, ub: int): $Range; - -function {:inline} $IsValid'bool'(v: bool): bool { - true -} - -function $IsValid'u8'(v: int): bool { - v >= 0 && v <= $MAX_U8 -} - -function $IsValid'u16'(v: int): bool { - v >= 0 && v <= $MAX_U16 -} - -function $IsValid'u32'(v: int): bool { - v >= 0 && v <= $MAX_U32 -} - -function $IsValid'u64'(v: int): bool { - v >= 0 && v <= $MAX_U64 -} - -function $IsValid'u128'(v: int): bool { - v >= 0 && v <= $MAX_U128 -} - -function $IsValid'u256'(v: int): bool { - v >= 0 && v <= $MAX_U256 -} - -function $IsValid'num'(v: int): bool { - true -} - -function $IsValid'address'(v: int): bool { - // TODO: restrict max to representable addresses? - v >= 0 -} - -function {:inline} $IsValidRange(r: $Range): bool { - $IsValid'u64'(lb#$Range(r)) && $IsValid'u64'(ub#$Range(r)) -} - -// Intentionally not inlined so it serves as a trigger in quantifiers. -function $InRange(r: $Range, i: int): bool { - lb#$Range(r) <= i && i < ub#$Range(r) -} - - -function {:inline} $IsEqual'u8'(x: int, y: int): bool { - x == y -} - -function {:inline} $IsEqual'u16'(x: int, y: int): bool { - x == y -} - -function {:inline} $IsEqual'u32'(x: int, y: int): bool { - x == y -} - -function {:inline} $IsEqual'u64'(x: int, y: int): bool { - x == y -} - -function {:inline} $IsEqual'u128'(x: int, y: int): bool { - x == y -} - -function {:inline} $IsEqual'u256'(x: int, y: int): bool { - x == y -} - -function {:inline} $IsEqual'num'(x: int, y: int): bool { - x == y -} - -function {:inline} $IsEqual'address'(x: int, y: int): bool { - x == y -} - -function {:inline} $IsEqual'bool'(x: bool, y: bool): bool { - x == y -} - -// ============================================================================================ -// Memory - -type {:datatype} $Location; - -// A global resource location within the statically known resource type's memory, -// where `a` is an address. -function {:constructor} $Global(a: int): $Location; - -// A local location. `i` is the unique index of the local. -function {:constructor} $Local(i: int): $Location; - -// The location of a reference outside of the verification scope, for example, a `&mut` parameter -// of the function being verified. References with these locations don't need to be written back -// when mutation ends. -function {:constructor} $Param(i: int): $Location; - -// The location of an uninitialized mutation. Using this to make sure that the location -// will not be equal to any valid mutation locations, i.e., $Local, $Global, or $Param. -function {:constructor} $Uninitialized(): $Location; - -// A mutable reference which also carries its current value. Since mutable references -// are single threaded in Move, we can keep them together and treat them as a value -// during mutation until the point they are stored back to their original location. -type {:datatype} $Mutation _; -function {:constructor} $Mutation(l: $Location, p: Vec int, v: T): $Mutation T; - -// Representation of memory for a given type. -type {:datatype} $Memory _; -function {:constructor} $Memory(domain: [int]bool, contents: [int]T): $Memory T; - -function {:builtin "MapConst"} $ConstMemoryDomain(v: bool): [int]bool; -function {:builtin "MapConst"} $ConstMemoryContent(v: T): [int]T; -axiom $ConstMemoryDomain(false) == (lambda i: int :: false); -axiom $ConstMemoryDomain(true) == (lambda i: int :: true); - - -// Dereferences a mutation. -function {:inline} $Dereference(ref: $Mutation T): T { - v#$Mutation(ref) -} - -// Update the value of a mutation. -function {:inline} $UpdateMutation(m: $Mutation T, v: T): $Mutation T { - $Mutation(l#$Mutation(m), p#$Mutation(m), v) -} - -function {:inline} $ChildMutation(m: $Mutation T1, offset: int, v: T2): $Mutation T2 { - $Mutation(l#$Mutation(m), ExtendVec(p#$Mutation(m), offset), v) -} - -// Return true if two mutations share the location and path -function {:inline} $IsSameMutation(parent: $Mutation T1, child: $Mutation T2 ): bool { - l#$Mutation(parent) == l#$Mutation(child) && p#$Mutation(parent) == p#$Mutation(child) -} - -// Return true if the mutation is a parent of a child which was derived with the given edge offset. This -// is used to implement write-back choices. -function {:inline} $IsParentMutation(parent: $Mutation T1, edge: int, child: $Mutation T2 ): bool { - l#$Mutation(parent) == l#$Mutation(child) && - (var pp := p#$Mutation(parent); - (var cp := p#$Mutation(child); - (var pl := LenVec(pp); - (var cl := LenVec(cp); - cl == pl + 1 && - (forall i: int:: i >= 0 && i < pl ==> ReadVec(pp, i) == ReadVec(cp, i)) && - $EdgeMatches(ReadVec(cp, pl), edge) - )))) -} - -// Return true if the mutation is a parent of a child, for hyper edge. -function {:inline} $IsParentMutationHyper(parent: $Mutation T1, hyper_edge: Vec int, child: $Mutation T2 ): bool { - l#$Mutation(parent) == l#$Mutation(child) && - (var pp := p#$Mutation(parent); - (var cp := p#$Mutation(child); - (var pl := LenVec(pp); - (var cl := LenVec(cp); - (var el := LenVec(hyper_edge); - cl == pl + el && - (forall i: int:: i >= 0 && i < pl ==> ReadVec(pp, i) == ReadVec(cp, i)) && - (forall i: int:: i >= 0 && i < el ==> $EdgeMatches(ReadVec(cp, pl + i), ReadVec(hyper_edge, i))) - ))))) -} - -function {:inline} $EdgeMatches(edge: int, edge_pattern: int): bool { - edge_pattern == -1 // wildcard - || edge_pattern == edge -} - - - -function {:inline} $SameLocation(m1: $Mutation T1, m2: $Mutation T2): bool { - l#$Mutation(m1) == l#$Mutation(m2) -} - -function {:inline} $HasGlobalLocation(m: $Mutation T): bool { - is#$Global(l#$Mutation(m)) -} - -function {:inline} $HasLocalLocation(m: $Mutation T, idx: int): bool { - l#$Mutation(m) == $Local(idx) -} - -function {:inline} $GlobalLocationAddress(m: $Mutation T): int { - a#$Global(l#$Mutation(m)) -} - - - -// Tests whether resource exists. -function {:inline} $ResourceExists(m: $Memory T, addr: int): bool { - domain#$Memory(m)[addr] -} - -// Obtains Value of given resource. -function {:inline} $ResourceValue(m: $Memory T, addr: int): T { - contents#$Memory(m)[addr] -} - -// Update resource. -function {:inline} $ResourceUpdate(m: $Memory T, a: int, v: T): $Memory T { - $Memory(domain#$Memory(m)[a := true], contents#$Memory(m)[a := v]) -} - -// Remove resource. -function {:inline} $ResourceRemove(m: $Memory T, a: int): $Memory T { - $Memory(domain#$Memory(m)[a := false], contents#$Memory(m)) -} - -// Copies resource from memory s to m. -function {:inline} $ResourceCopy(m: $Memory T, s: $Memory T, a: int): $Memory T { - $Memory(domain#$Memory(m)[a := domain#$Memory(s)[a]], - contents#$Memory(m)[a := contents#$Memory(s)[a]]) -} - - - -// ============================================================================================ -// Abort Handling - -var $abort_flag: bool; -var $abort_code: int; - -function {:inline} $process_abort_code(code: int): int { - code -} - -const $EXEC_FAILURE_CODE: int; -axiom $EXEC_FAILURE_CODE == -1; - -// TODO(wrwg): currently we map aborts of native functions like those for vectors also to -// execution failure. This may need to be aligned with what the runtime actually does. - -procedure {:inline 1} $ExecFailureAbort() { - $abort_flag := true; - $abort_code := $EXEC_FAILURE_CODE; -} - -procedure {:inline 1} $Abort(code: int) { - $abort_flag := true; - $abort_code := code; -} - -function {:inline} $StdError(cat: int, reason: int): int { - reason * 256 + cat -} - -procedure {:inline 1} $InitVerification() { - // Set abort_flag to false, and havoc abort_code - $abort_flag := false; - havoc $abort_code; - // Initialize event store - call $InitEventStore(); -} - -// ============================================================================================ -// Instructions - - -procedure {:inline 1} $CastU8(src: int) returns (dst: int) -{ - if (src > $MAX_U8) { - call $ExecFailureAbort(); - return; - } - dst := src; -} - -procedure {:inline 1} $CastU16(src: int) returns (dst: int) -{ - if (src > $MAX_U16) { - call $ExecFailureAbort(); - return; - } - dst := src; -} - -procedure {:inline 1} $CastU32(src: int) returns (dst: int) -{ - if (src > $MAX_U32) { - call $ExecFailureAbort(); - return; - } - dst := src; -} - -procedure {:inline 1} $CastU64(src: int) returns (dst: int) -{ - if (src > $MAX_U64) { - call $ExecFailureAbort(); - return; - } - dst := src; -} - -procedure {:inline 1} $CastU128(src: int) returns (dst: int) -{ - if (src > $MAX_U128) { - call $ExecFailureAbort(); - return; - } - dst := src; -} - -procedure {:inline 1} $CastU256(src: int) returns (dst: int) -{ - if (src > $MAX_U256) { - call $ExecFailureAbort(); - return; - } - dst := src; -} - -procedure {:inline 1} $AddU8(src1: int, src2: int) returns (dst: int) -{ - if (src1 + src2 > $MAX_U8) { - call $ExecFailureAbort(); - return; - } - dst := src1 + src2; -} - -procedure {:inline 1} $AddU16(src1: int, src2: int) returns (dst: int) -{ - if (src1 + src2 > $MAX_U16) { - call $ExecFailureAbort(); - return; - } - dst := src1 + src2; -} - -procedure {:inline 1} $AddU16_unchecked(src1: int, src2: int) returns (dst: int) -{ - dst := src1 + src2; -} - -procedure {:inline 1} $AddU32(src1: int, src2: int) returns (dst: int) -{ - if (src1 + src2 > $MAX_U32) { - call $ExecFailureAbort(); - return; - } - dst := src1 + src2; -} - -procedure {:inline 1} $AddU32_unchecked(src1: int, src2: int) returns (dst: int) -{ - dst := src1 + src2; -} - -procedure {:inline 1} $AddU64(src1: int, src2: int) returns (dst: int) -{ - if (src1 + src2 > $MAX_U64) { - call $ExecFailureAbort(); - return; - } - dst := src1 + src2; -} - -procedure {:inline 1} $AddU64_unchecked(src1: int, src2: int) returns (dst: int) -{ - dst := src1 + src2; -} - -procedure {:inline 1} $AddU128(src1: int, src2: int) returns (dst: int) -{ - if (src1 + src2 > $MAX_U128) { - call $ExecFailureAbort(); - return; - } - dst := src1 + src2; -} - -procedure {:inline 1} $AddU128_unchecked(src1: int, src2: int) returns (dst: int) -{ - dst := src1 + src2; -} - -procedure {:inline 1} $AddU256(src1: int, src2: int) returns (dst: int) -{ - if (src1 + src2 > $MAX_U256) { - call $ExecFailureAbort(); - return; - } - dst := src1 + src2; -} - -procedure {:inline 1} $AddU256_unchecked(src1: int, src2: int) returns (dst: int) -{ - dst := src1 + src2; -} - -procedure {:inline 1} $Sub(src1: int, src2: int) returns (dst: int) -{ - if (src1 < src2) { - call $ExecFailureAbort(); - return; - } - dst := src1 - src2; -} - -// uninterpreted function to return an undefined value. -function $undefined_int(): int; - -// Recursive exponentiation function -// Undefined unless e >=0. $pow(0,0) is also undefined. -function $pow(n: int, e: int): int { - if n != 0 && e == 0 then 1 - else if e > 0 then n * $pow(n, e - 1) - else $undefined_int() -} - -function $shl(src1: int, p: int): int { - src1 * $pow(2, p) -} - -function $shlU8(src1: int, p: int): int { - (src1 * $pow(2, p)) mod 256 -} - -function $shlU16(src1: int, p: int): int { - (src1 * $pow(2, p)) mod 65536 -} - -function $shlU32(src1: int, p: int): int { - (src1 * $pow(2, p)) mod 4294967296 -} - -function $shlU64(src1: int, p: int): int { - (src1 * $pow(2, p)) mod 18446744073709551616 -} - -function $shlU128(src1: int, p: int): int { - (src1 * $pow(2, p)) mod 340282366920938463463374607431768211456 -} - -function $shlU256(src1: int, p: int): int { - (src1 * $pow(2, p)) mod 115792089237316195423570985008687907853269984665640564039457584007913129639936 -} - -function $shr(src1: int, p: int): int { - src1 div $pow(2, p) -} - -// We need to know the size of the destination in order to drop bits -// that have been shifted left more than that, so we have $ShlU8/16/32/64/128/256 -procedure {:inline 1} $ShlU8(src1: int, src2: int) returns (dst: int) -{ - var res: int; - // src2 is a u8 - assume src2 >= 0 && src2 < 256; - if (src2 >= 8) { - call $ExecFailureAbort(); - return; - } - dst := $shlU8(src1, src2); -} - -// Template for cast and shift operations of bitvector types - -procedure {:inline 1} $CastBv8to8(src: bv8) returns (dst: bv8) -{ - dst := src; -} - - -function $shlBv8From8(src1: bv8, src2: bv8) returns (bv8) -{ - $Shl'Bv8'(src1, src2) -} - -procedure {:inline 1} $ShlBv8From8(src1: bv8, src2: bv8) returns (dst: bv8) -{ - if ($Ge'Bv8'(src2, 8bv8)) { - call $ExecFailureAbort(); - return; - } - dst := $Shl'Bv8'(src1, src2); -} - -function $shrBv8From8(src1: bv8, src2: bv8) returns (bv8) -{ - $Shr'Bv8'(src1, src2) -} - -procedure {:inline 1} $ShrBv8From8(src1: bv8, src2: bv8) returns (dst: bv8) -{ - if ($Ge'Bv8'(src2, 8bv8)) { - call $ExecFailureAbort(); - return; - } - dst := $Shr'Bv8'(src1, src2); -} - -procedure {:inline 1} $CastBv16to8(src: bv16) returns (dst: bv8) -{ - if ($Gt'Bv16'(src, 255bv16)) { - call $ExecFailureAbort(); - return; - } - dst := src[8:0]; -} - - -function $shlBv8From16(src1: bv8, src2: bv16) returns (bv8) -{ - $Shl'Bv8'(src1, src2[8:0]) -} - -procedure {:inline 1} $ShlBv8From16(src1: bv8, src2: bv16) returns (dst: bv8) -{ - if ($Ge'Bv16'(src2, 8bv16)) { - call $ExecFailureAbort(); - return; - } - dst := $Shl'Bv8'(src1, src2[8:0]); -} - -function $shrBv8From16(src1: bv8, src2: bv16) returns (bv8) -{ - $Shr'Bv8'(src1, src2[8:0]) -} - -procedure {:inline 1} $ShrBv8From16(src1: bv8, src2: bv16) returns (dst: bv8) -{ - if ($Ge'Bv16'(src2, 8bv16)) { - call $ExecFailureAbort(); - return; - } - dst := $Shr'Bv8'(src1, src2[8:0]); -} - -procedure {:inline 1} $CastBv32to8(src: bv32) returns (dst: bv8) -{ - if ($Gt'Bv32'(src, 255bv32)) { - call $ExecFailureAbort(); - return; - } - dst := src[8:0]; -} - - -function $shlBv8From32(src1: bv8, src2: bv32) returns (bv8) -{ - $Shl'Bv8'(src1, src2[8:0]) -} - -procedure {:inline 1} $ShlBv8From32(src1: bv8, src2: bv32) returns (dst: bv8) -{ - if ($Ge'Bv32'(src2, 8bv32)) { - call $ExecFailureAbort(); - return; - } - dst := $Shl'Bv8'(src1, src2[8:0]); -} - -function $shrBv8From32(src1: bv8, src2: bv32) returns (bv8) -{ - $Shr'Bv8'(src1, src2[8:0]) -} - -procedure {:inline 1} $ShrBv8From32(src1: bv8, src2: bv32) returns (dst: bv8) -{ - if ($Ge'Bv32'(src2, 8bv32)) { - call $ExecFailureAbort(); - return; - } - dst := $Shr'Bv8'(src1, src2[8:0]); -} - -procedure {:inline 1} $CastBv64to8(src: bv64) returns (dst: bv8) -{ - if ($Gt'Bv64'(src, 255bv64)) { - call $ExecFailureAbort(); - return; - } - dst := src[8:0]; -} - - -function $shlBv8From64(src1: bv8, src2: bv64) returns (bv8) -{ - $Shl'Bv8'(src1, src2[8:0]) -} - -procedure {:inline 1} $ShlBv8From64(src1: bv8, src2: bv64) returns (dst: bv8) -{ - if ($Ge'Bv64'(src2, 8bv64)) { - call $ExecFailureAbort(); - return; - } - dst := $Shl'Bv8'(src1, src2[8:0]); -} - -function $shrBv8From64(src1: bv8, src2: bv64) returns (bv8) -{ - $Shr'Bv8'(src1, src2[8:0]) -} - -procedure {:inline 1} $ShrBv8From64(src1: bv8, src2: bv64) returns (dst: bv8) -{ - if ($Ge'Bv64'(src2, 8bv64)) { - call $ExecFailureAbort(); - return; - } - dst := $Shr'Bv8'(src1, src2[8:0]); -} - -procedure {:inline 1} $CastBv128to8(src: bv128) returns (dst: bv8) -{ - if ($Gt'Bv128'(src, 255bv128)) { - call $ExecFailureAbort(); - return; - } - dst := src[8:0]; -} - - -function $shlBv8From128(src1: bv8, src2: bv128) returns (bv8) -{ - $Shl'Bv8'(src1, src2[8:0]) -} - -procedure {:inline 1} $ShlBv8From128(src1: bv8, src2: bv128) returns (dst: bv8) -{ - if ($Ge'Bv128'(src2, 8bv128)) { - call $ExecFailureAbort(); - return; - } - dst := $Shl'Bv8'(src1, src2[8:0]); -} - -function $shrBv8From128(src1: bv8, src2: bv128) returns (bv8) -{ - $Shr'Bv8'(src1, src2[8:0]) -} - -procedure {:inline 1} $ShrBv8From128(src1: bv8, src2: bv128) returns (dst: bv8) -{ - if ($Ge'Bv128'(src2, 8bv128)) { - call $ExecFailureAbort(); - return; - } - dst := $Shr'Bv8'(src1, src2[8:0]); -} - -procedure {:inline 1} $CastBv256to8(src: bv256) returns (dst: bv8) -{ - if ($Gt'Bv256'(src, 255bv256)) { - call $ExecFailureAbort(); - return; - } - dst := src[8:0]; -} - - -function $shlBv8From256(src1: bv8, src2: bv256) returns (bv8) -{ - $Shl'Bv8'(src1, src2[8:0]) -} - -procedure {:inline 1} $ShlBv8From256(src1: bv8, src2: bv256) returns (dst: bv8) -{ - if ($Ge'Bv256'(src2, 8bv256)) { - call $ExecFailureAbort(); - return; - } - dst := $Shl'Bv8'(src1, src2[8:0]); -} - -function $shrBv8From256(src1: bv8, src2: bv256) returns (bv8) -{ - $Shr'Bv8'(src1, src2[8:0]) -} - -procedure {:inline 1} $ShrBv8From256(src1: bv8, src2: bv256) returns (dst: bv8) -{ - if ($Ge'Bv256'(src2, 8bv256)) { - call $ExecFailureAbort(); - return; - } - dst := $Shr'Bv8'(src1, src2[8:0]); -} - -procedure {:inline 1} $CastBv8to16(src: bv8) returns (dst: bv16) -{ - dst := 0bv8 ++ src; -} - - -function $shlBv16From8(src1: bv16, src2: bv8) returns (bv16) -{ - $Shl'Bv16'(src1, 0bv8 ++ src2) -} - -procedure {:inline 1} $ShlBv16From8(src1: bv16, src2: bv8) returns (dst: bv16) -{ - if ($Ge'Bv8'(src2, 16bv8)) { - call $ExecFailureAbort(); - return; - } - dst := $Shl'Bv16'(src1, 0bv8 ++ src2); -} - -function $shrBv16From8(src1: bv16, src2: bv8) returns (bv16) -{ - $Shr'Bv16'(src1, 0bv8 ++ src2) -} - -procedure {:inline 1} $ShrBv16From8(src1: bv16, src2: bv8) returns (dst: bv16) -{ - if ($Ge'Bv8'(src2, 16bv8)) { - call $ExecFailureAbort(); - return; - } - dst := $Shr'Bv16'(src1, 0bv8 ++ src2); -} - -procedure {:inline 1} $CastBv16to16(src: bv16) returns (dst: bv16) -{ - dst := src; -} - - -function $shlBv16From16(src1: bv16, src2: bv16) returns (bv16) -{ - $Shl'Bv16'(src1, src2) -} - -procedure {:inline 1} $ShlBv16From16(src1: bv16, src2: bv16) returns (dst: bv16) -{ - if ($Ge'Bv16'(src2, 16bv16)) { - call $ExecFailureAbort(); - return; - } - dst := $Shl'Bv16'(src1, src2); -} - -function $shrBv16From16(src1: bv16, src2: bv16) returns (bv16) -{ - $Shr'Bv16'(src1, src2) -} - -procedure {:inline 1} $ShrBv16From16(src1: bv16, src2: bv16) returns (dst: bv16) -{ - if ($Ge'Bv16'(src2, 16bv16)) { - call $ExecFailureAbort(); - return; - } - dst := $Shr'Bv16'(src1, src2); -} - -procedure {:inline 1} $CastBv32to16(src: bv32) returns (dst: bv16) -{ - if ($Gt'Bv32'(src, 65535bv32)) { - call $ExecFailureAbort(); - return; - } - dst := src[16:0]; -} - - -function $shlBv16From32(src1: bv16, src2: bv32) returns (bv16) -{ - $Shl'Bv16'(src1, src2[16:0]) -} - -procedure {:inline 1} $ShlBv16From32(src1: bv16, src2: bv32) returns (dst: bv16) -{ - if ($Ge'Bv32'(src2, 16bv32)) { - call $ExecFailureAbort(); - return; - } - dst := $Shl'Bv16'(src1, src2[16:0]); -} - -function $shrBv16From32(src1: bv16, src2: bv32) returns (bv16) -{ - $Shr'Bv16'(src1, src2[16:0]) -} - -procedure {:inline 1} $ShrBv16From32(src1: bv16, src2: bv32) returns (dst: bv16) -{ - if ($Ge'Bv32'(src2, 16bv32)) { - call $ExecFailureAbort(); - return; - } - dst := $Shr'Bv16'(src1, src2[16:0]); -} - -procedure {:inline 1} $CastBv64to16(src: bv64) returns (dst: bv16) -{ - if ($Gt'Bv64'(src, 65535bv64)) { - call $ExecFailureAbort(); - return; - } - dst := src[16:0]; -} - - -function $shlBv16From64(src1: bv16, src2: bv64) returns (bv16) -{ - $Shl'Bv16'(src1, src2[16:0]) -} - -procedure {:inline 1} $ShlBv16From64(src1: bv16, src2: bv64) returns (dst: bv16) -{ - if ($Ge'Bv64'(src2, 16bv64)) { - call $ExecFailureAbort(); - return; - } - dst := $Shl'Bv16'(src1, src2[16:0]); -} - -function $shrBv16From64(src1: bv16, src2: bv64) returns (bv16) -{ - $Shr'Bv16'(src1, src2[16:0]) -} - -procedure {:inline 1} $ShrBv16From64(src1: bv16, src2: bv64) returns (dst: bv16) -{ - if ($Ge'Bv64'(src2, 16bv64)) { - call $ExecFailureAbort(); - return; - } - dst := $Shr'Bv16'(src1, src2[16:0]); -} - -procedure {:inline 1} $CastBv128to16(src: bv128) returns (dst: bv16) -{ - if ($Gt'Bv128'(src, 65535bv128)) { - call $ExecFailureAbort(); - return; - } - dst := src[16:0]; -} - - -function $shlBv16From128(src1: bv16, src2: bv128) returns (bv16) -{ - $Shl'Bv16'(src1, src2[16:0]) -} - -procedure {:inline 1} $ShlBv16From128(src1: bv16, src2: bv128) returns (dst: bv16) -{ - if ($Ge'Bv128'(src2, 16bv128)) { - call $ExecFailureAbort(); - return; - } - dst := $Shl'Bv16'(src1, src2[16:0]); -} - -function $shrBv16From128(src1: bv16, src2: bv128) returns (bv16) -{ - $Shr'Bv16'(src1, src2[16:0]) -} - -procedure {:inline 1} $ShrBv16From128(src1: bv16, src2: bv128) returns (dst: bv16) -{ - if ($Ge'Bv128'(src2, 16bv128)) { - call $ExecFailureAbort(); - return; - } - dst := $Shr'Bv16'(src1, src2[16:0]); -} - -procedure {:inline 1} $CastBv256to16(src: bv256) returns (dst: bv16) -{ - if ($Gt'Bv256'(src, 65535bv256)) { - call $ExecFailureAbort(); - return; - } - dst := src[16:0]; -} - - -function $shlBv16From256(src1: bv16, src2: bv256) returns (bv16) -{ - $Shl'Bv16'(src1, src2[16:0]) -} - -procedure {:inline 1} $ShlBv16From256(src1: bv16, src2: bv256) returns (dst: bv16) -{ - if ($Ge'Bv256'(src2, 16bv256)) { - call $ExecFailureAbort(); - return; - } - dst := $Shl'Bv16'(src1, src2[16:0]); -} - -function $shrBv16From256(src1: bv16, src2: bv256) returns (bv16) -{ - $Shr'Bv16'(src1, src2[16:0]) -} - -procedure {:inline 1} $ShrBv16From256(src1: bv16, src2: bv256) returns (dst: bv16) -{ - if ($Ge'Bv256'(src2, 16bv256)) { - call $ExecFailureAbort(); - return; - } - dst := $Shr'Bv16'(src1, src2[16:0]); -} - -procedure {:inline 1} $CastBv8to32(src: bv8) returns (dst: bv32) -{ - dst := 0bv24 ++ src; -} - - -function $shlBv32From8(src1: bv32, src2: bv8) returns (bv32) -{ - $Shl'Bv32'(src1, 0bv24 ++ src2) -} - -procedure {:inline 1} $ShlBv32From8(src1: bv32, src2: bv8) returns (dst: bv32) -{ - if ($Ge'Bv8'(src2, 32bv8)) { - call $ExecFailureAbort(); - return; - } - dst := $Shl'Bv32'(src1, 0bv24 ++ src2); -} - -function $shrBv32From8(src1: bv32, src2: bv8) returns (bv32) -{ - $Shr'Bv32'(src1, 0bv24 ++ src2) -} - -procedure {:inline 1} $ShrBv32From8(src1: bv32, src2: bv8) returns (dst: bv32) -{ - if ($Ge'Bv8'(src2, 32bv8)) { - call $ExecFailureAbort(); - return; - } - dst := $Shr'Bv32'(src1, 0bv24 ++ src2); -} - -procedure {:inline 1} $CastBv16to32(src: bv16) returns (dst: bv32) -{ - dst := 0bv16 ++ src; -} - - -function $shlBv32From16(src1: bv32, src2: bv16) returns (bv32) -{ - $Shl'Bv32'(src1, 0bv16 ++ src2) -} - -procedure {:inline 1} $ShlBv32From16(src1: bv32, src2: bv16) returns (dst: bv32) -{ - if ($Ge'Bv16'(src2, 32bv16)) { - call $ExecFailureAbort(); - return; - } - dst := $Shl'Bv32'(src1, 0bv16 ++ src2); -} - -function $shrBv32From16(src1: bv32, src2: bv16) returns (bv32) -{ - $Shr'Bv32'(src1, 0bv16 ++ src2) -} - -procedure {:inline 1} $ShrBv32From16(src1: bv32, src2: bv16) returns (dst: bv32) -{ - if ($Ge'Bv16'(src2, 32bv16)) { - call $ExecFailureAbort(); - return; - } - dst := $Shr'Bv32'(src1, 0bv16 ++ src2); -} - -procedure {:inline 1} $CastBv32to32(src: bv32) returns (dst: bv32) -{ - dst := src; -} - - -function $shlBv32From32(src1: bv32, src2: bv32) returns (bv32) -{ - $Shl'Bv32'(src1, src2) -} - -procedure {:inline 1} $ShlBv32From32(src1: bv32, src2: bv32) returns (dst: bv32) -{ - if ($Ge'Bv32'(src2, 32bv32)) { - call $ExecFailureAbort(); - return; - } - dst := $Shl'Bv32'(src1, src2); -} - -function $shrBv32From32(src1: bv32, src2: bv32) returns (bv32) -{ - $Shr'Bv32'(src1, src2) -} - -procedure {:inline 1} $ShrBv32From32(src1: bv32, src2: bv32) returns (dst: bv32) -{ - if ($Ge'Bv32'(src2, 32bv32)) { - call $ExecFailureAbort(); - return; - } - dst := $Shr'Bv32'(src1, src2); -} - -procedure {:inline 1} $CastBv64to32(src: bv64) returns (dst: bv32) -{ - if ($Gt'Bv64'(src, 2147483647bv64)) { - call $ExecFailureAbort(); - return; - } - dst := src[32:0]; -} - - -function $shlBv32From64(src1: bv32, src2: bv64) returns (bv32) -{ - $Shl'Bv32'(src1, src2[32:0]) -} - -procedure {:inline 1} $ShlBv32From64(src1: bv32, src2: bv64) returns (dst: bv32) -{ - if ($Ge'Bv64'(src2, 32bv64)) { - call $ExecFailureAbort(); - return; - } - dst := $Shl'Bv32'(src1, src2[32:0]); -} - -function $shrBv32From64(src1: bv32, src2: bv64) returns (bv32) -{ - $Shr'Bv32'(src1, src2[32:0]) -} - -procedure {:inline 1} $ShrBv32From64(src1: bv32, src2: bv64) returns (dst: bv32) -{ - if ($Ge'Bv64'(src2, 32bv64)) { - call $ExecFailureAbort(); - return; - } - dst := $Shr'Bv32'(src1, src2[32:0]); -} - -procedure {:inline 1} $CastBv128to32(src: bv128) returns (dst: bv32) -{ - if ($Gt'Bv128'(src, 2147483647bv128)) { - call $ExecFailureAbort(); - return; - } - dst := src[32:0]; -} - - -function $shlBv32From128(src1: bv32, src2: bv128) returns (bv32) -{ - $Shl'Bv32'(src1, src2[32:0]) -} - -procedure {:inline 1} $ShlBv32From128(src1: bv32, src2: bv128) returns (dst: bv32) -{ - if ($Ge'Bv128'(src2, 32bv128)) { - call $ExecFailureAbort(); - return; - } - dst := $Shl'Bv32'(src1, src2[32:0]); -} - -function $shrBv32From128(src1: bv32, src2: bv128) returns (bv32) -{ - $Shr'Bv32'(src1, src2[32:0]) -} - -procedure {:inline 1} $ShrBv32From128(src1: bv32, src2: bv128) returns (dst: bv32) -{ - if ($Ge'Bv128'(src2, 32bv128)) { - call $ExecFailureAbort(); - return; - } - dst := $Shr'Bv32'(src1, src2[32:0]); -} - -procedure {:inline 1} $CastBv256to32(src: bv256) returns (dst: bv32) -{ - if ($Gt'Bv256'(src, 2147483647bv256)) { - call $ExecFailureAbort(); - return; - } - dst := src[32:0]; -} - - -function $shlBv32From256(src1: bv32, src2: bv256) returns (bv32) -{ - $Shl'Bv32'(src1, src2[32:0]) -} - -procedure {:inline 1} $ShlBv32From256(src1: bv32, src2: bv256) returns (dst: bv32) -{ - if ($Ge'Bv256'(src2, 32bv256)) { - call $ExecFailureAbort(); - return; - } - dst := $Shl'Bv32'(src1, src2[32:0]); -} - -function $shrBv32From256(src1: bv32, src2: bv256) returns (bv32) -{ - $Shr'Bv32'(src1, src2[32:0]) -} - -procedure {:inline 1} $ShrBv32From256(src1: bv32, src2: bv256) returns (dst: bv32) -{ - if ($Ge'Bv256'(src2, 32bv256)) { - call $ExecFailureAbort(); - return; - } - dst := $Shr'Bv32'(src1, src2[32:0]); -} - -procedure {:inline 1} $CastBv8to64(src: bv8) returns (dst: bv64) -{ - dst := 0bv56 ++ src; -} - - -function $shlBv64From8(src1: bv64, src2: bv8) returns (bv64) -{ - $Shl'Bv64'(src1, 0bv56 ++ src2) -} - -procedure {:inline 1} $ShlBv64From8(src1: bv64, src2: bv8) returns (dst: bv64) -{ - if ($Ge'Bv8'(src2, 64bv8)) { - call $ExecFailureAbort(); - return; - } - dst := $Shl'Bv64'(src1, 0bv56 ++ src2); -} - -function $shrBv64From8(src1: bv64, src2: bv8) returns (bv64) -{ - $Shr'Bv64'(src1, 0bv56 ++ src2) -} - -procedure {:inline 1} $ShrBv64From8(src1: bv64, src2: bv8) returns (dst: bv64) -{ - if ($Ge'Bv8'(src2, 64bv8)) { - call $ExecFailureAbort(); - return; - } - dst := $Shr'Bv64'(src1, 0bv56 ++ src2); -} - -procedure {:inline 1} $CastBv16to64(src: bv16) returns (dst: bv64) -{ - dst := 0bv48 ++ src; -} - - -function $shlBv64From16(src1: bv64, src2: bv16) returns (bv64) -{ - $Shl'Bv64'(src1, 0bv48 ++ src2) -} - -procedure {:inline 1} $ShlBv64From16(src1: bv64, src2: bv16) returns (dst: bv64) -{ - if ($Ge'Bv16'(src2, 64bv16)) { - call $ExecFailureAbort(); - return; - } - dst := $Shl'Bv64'(src1, 0bv48 ++ src2); -} - -function $shrBv64From16(src1: bv64, src2: bv16) returns (bv64) -{ - $Shr'Bv64'(src1, 0bv48 ++ src2) -} - -procedure {:inline 1} $ShrBv64From16(src1: bv64, src2: bv16) returns (dst: bv64) -{ - if ($Ge'Bv16'(src2, 64bv16)) { - call $ExecFailureAbort(); - return; - } - dst := $Shr'Bv64'(src1, 0bv48 ++ src2); -} - -procedure {:inline 1} $CastBv32to64(src: bv32) returns (dst: bv64) -{ - dst := 0bv32 ++ src; -} - - -function $shlBv64From32(src1: bv64, src2: bv32) returns (bv64) -{ - $Shl'Bv64'(src1, 0bv32 ++ src2) -} - -procedure {:inline 1} $ShlBv64From32(src1: bv64, src2: bv32) returns (dst: bv64) -{ - if ($Ge'Bv32'(src2, 64bv32)) { - call $ExecFailureAbort(); - return; - } - dst := $Shl'Bv64'(src1, 0bv32 ++ src2); -} - -function $shrBv64From32(src1: bv64, src2: bv32) returns (bv64) -{ - $Shr'Bv64'(src1, 0bv32 ++ src2) -} - -procedure {:inline 1} $ShrBv64From32(src1: bv64, src2: bv32) returns (dst: bv64) -{ - if ($Ge'Bv32'(src2, 64bv32)) { - call $ExecFailureAbort(); - return; - } - dst := $Shr'Bv64'(src1, 0bv32 ++ src2); -} - -procedure {:inline 1} $CastBv64to64(src: bv64) returns (dst: bv64) -{ - dst := src; -} - - -function $shlBv64From64(src1: bv64, src2: bv64) returns (bv64) -{ - $Shl'Bv64'(src1, src2) -} - -procedure {:inline 1} $ShlBv64From64(src1: bv64, src2: bv64) returns (dst: bv64) -{ - if ($Ge'Bv64'(src2, 64bv64)) { - call $ExecFailureAbort(); - return; - } - dst := $Shl'Bv64'(src1, src2); -} - -function $shrBv64From64(src1: bv64, src2: bv64) returns (bv64) -{ - $Shr'Bv64'(src1, src2) -} - -procedure {:inline 1} $ShrBv64From64(src1: bv64, src2: bv64) returns (dst: bv64) -{ - if ($Ge'Bv64'(src2, 64bv64)) { - call $ExecFailureAbort(); - return; - } - dst := $Shr'Bv64'(src1, src2); -} - -procedure {:inline 1} $CastBv128to64(src: bv128) returns (dst: bv64) -{ - if ($Gt'Bv128'(src, 18446744073709551615bv128)) { - call $ExecFailureAbort(); - return; - } - dst := src[64:0]; -} - - -function $shlBv64From128(src1: bv64, src2: bv128) returns (bv64) -{ - $Shl'Bv64'(src1, src2[64:0]) -} - -procedure {:inline 1} $ShlBv64From128(src1: bv64, src2: bv128) returns (dst: bv64) -{ - if ($Ge'Bv128'(src2, 64bv128)) { - call $ExecFailureAbort(); - return; - } - dst := $Shl'Bv64'(src1, src2[64:0]); -} - -function $shrBv64From128(src1: bv64, src2: bv128) returns (bv64) -{ - $Shr'Bv64'(src1, src2[64:0]) -} - -procedure {:inline 1} $ShrBv64From128(src1: bv64, src2: bv128) returns (dst: bv64) -{ - if ($Ge'Bv128'(src2, 64bv128)) { - call $ExecFailureAbort(); - return; - } - dst := $Shr'Bv64'(src1, src2[64:0]); -} - -procedure {:inline 1} $CastBv256to64(src: bv256) returns (dst: bv64) -{ - if ($Gt'Bv256'(src, 18446744073709551615bv256)) { - call $ExecFailureAbort(); - return; - } - dst := src[64:0]; -} - - -function $shlBv64From256(src1: bv64, src2: bv256) returns (bv64) -{ - $Shl'Bv64'(src1, src2[64:0]) -} - -procedure {:inline 1} $ShlBv64From256(src1: bv64, src2: bv256) returns (dst: bv64) -{ - if ($Ge'Bv256'(src2, 64bv256)) { - call $ExecFailureAbort(); - return; - } - dst := $Shl'Bv64'(src1, src2[64:0]); -} - -function $shrBv64From256(src1: bv64, src2: bv256) returns (bv64) -{ - $Shr'Bv64'(src1, src2[64:0]) -} - -procedure {:inline 1} $ShrBv64From256(src1: bv64, src2: bv256) returns (dst: bv64) -{ - if ($Ge'Bv256'(src2, 64bv256)) { - call $ExecFailureAbort(); - return; - } - dst := $Shr'Bv64'(src1, src2[64:0]); -} - -procedure {:inline 1} $CastBv8to128(src: bv8) returns (dst: bv128) -{ - dst := 0bv120 ++ src; -} - - -function $shlBv128From8(src1: bv128, src2: bv8) returns (bv128) -{ - $Shl'Bv128'(src1, 0bv120 ++ src2) -} - -procedure {:inline 1} $ShlBv128From8(src1: bv128, src2: bv8) returns (dst: bv128) -{ - if ($Ge'Bv8'(src2, 128bv8)) { - call $ExecFailureAbort(); - return; - } - dst := $Shl'Bv128'(src1, 0bv120 ++ src2); -} - -function $shrBv128From8(src1: bv128, src2: bv8) returns (bv128) -{ - $Shr'Bv128'(src1, 0bv120 ++ src2) -} - -procedure {:inline 1} $ShrBv128From8(src1: bv128, src2: bv8) returns (dst: bv128) -{ - if ($Ge'Bv8'(src2, 128bv8)) { - call $ExecFailureAbort(); - return; - } - dst := $Shr'Bv128'(src1, 0bv120 ++ src2); -} - -procedure {:inline 1} $CastBv16to128(src: bv16) returns (dst: bv128) -{ - dst := 0bv112 ++ src; -} - - -function $shlBv128From16(src1: bv128, src2: bv16) returns (bv128) -{ - $Shl'Bv128'(src1, 0bv112 ++ src2) -} - -procedure {:inline 1} $ShlBv128From16(src1: bv128, src2: bv16) returns (dst: bv128) -{ - if ($Ge'Bv16'(src2, 128bv16)) { - call $ExecFailureAbort(); - return; - } - dst := $Shl'Bv128'(src1, 0bv112 ++ src2); -} - -function $shrBv128From16(src1: bv128, src2: bv16) returns (bv128) -{ - $Shr'Bv128'(src1, 0bv112 ++ src2) -} - -procedure {:inline 1} $ShrBv128From16(src1: bv128, src2: bv16) returns (dst: bv128) -{ - if ($Ge'Bv16'(src2, 128bv16)) { - call $ExecFailureAbort(); - return; - } - dst := $Shr'Bv128'(src1, 0bv112 ++ src2); -} - -procedure {:inline 1} $CastBv32to128(src: bv32) returns (dst: bv128) -{ - dst := 0bv96 ++ src; -} - - -function $shlBv128From32(src1: bv128, src2: bv32) returns (bv128) -{ - $Shl'Bv128'(src1, 0bv96 ++ src2) -} - -procedure {:inline 1} $ShlBv128From32(src1: bv128, src2: bv32) returns (dst: bv128) -{ - if ($Ge'Bv32'(src2, 128bv32)) { - call $ExecFailureAbort(); - return; - } - dst := $Shl'Bv128'(src1, 0bv96 ++ src2); -} - -function $shrBv128From32(src1: bv128, src2: bv32) returns (bv128) -{ - $Shr'Bv128'(src1, 0bv96 ++ src2) -} - -procedure {:inline 1} $ShrBv128From32(src1: bv128, src2: bv32) returns (dst: bv128) -{ - if ($Ge'Bv32'(src2, 128bv32)) { - call $ExecFailureAbort(); - return; - } - dst := $Shr'Bv128'(src1, 0bv96 ++ src2); -} - -procedure {:inline 1} $CastBv64to128(src: bv64) returns (dst: bv128) -{ - dst := 0bv64 ++ src; -} - - -function $shlBv128From64(src1: bv128, src2: bv64) returns (bv128) -{ - $Shl'Bv128'(src1, 0bv64 ++ src2) -} - -procedure {:inline 1} $ShlBv128From64(src1: bv128, src2: bv64) returns (dst: bv128) -{ - if ($Ge'Bv64'(src2, 128bv64)) { - call $ExecFailureAbort(); - return; - } - dst := $Shl'Bv128'(src1, 0bv64 ++ src2); -} - -function $shrBv128From64(src1: bv128, src2: bv64) returns (bv128) -{ - $Shr'Bv128'(src1, 0bv64 ++ src2) -} - -procedure {:inline 1} $ShrBv128From64(src1: bv128, src2: bv64) returns (dst: bv128) -{ - if ($Ge'Bv64'(src2, 128bv64)) { - call $ExecFailureAbort(); - return; - } - dst := $Shr'Bv128'(src1, 0bv64 ++ src2); -} - -procedure {:inline 1} $CastBv128to128(src: bv128) returns (dst: bv128) -{ - dst := src; -} - - -function $shlBv128From128(src1: bv128, src2: bv128) returns (bv128) -{ - $Shl'Bv128'(src1, src2) -} - -procedure {:inline 1} $ShlBv128From128(src1: bv128, src2: bv128) returns (dst: bv128) -{ - if ($Ge'Bv128'(src2, 128bv128)) { - call $ExecFailureAbort(); - return; - } - dst := $Shl'Bv128'(src1, src2); -} - -function $shrBv128From128(src1: bv128, src2: bv128) returns (bv128) -{ - $Shr'Bv128'(src1, src2) -} - -procedure {:inline 1} $ShrBv128From128(src1: bv128, src2: bv128) returns (dst: bv128) -{ - if ($Ge'Bv128'(src2, 128bv128)) { - call $ExecFailureAbort(); - return; - } - dst := $Shr'Bv128'(src1, src2); -} - -procedure {:inline 1} $CastBv256to128(src: bv256) returns (dst: bv128) -{ - if ($Gt'Bv256'(src, 340282366920938463463374607431768211455bv256)) { - call $ExecFailureAbort(); - return; - } - dst := src[128:0]; -} - - -function $shlBv128From256(src1: bv128, src2: bv256) returns (bv128) -{ - $Shl'Bv128'(src1, src2[128:0]) -} - -procedure {:inline 1} $ShlBv128From256(src1: bv128, src2: bv256) returns (dst: bv128) -{ - if ($Ge'Bv256'(src2, 128bv256)) { - call $ExecFailureAbort(); - return; - } - dst := $Shl'Bv128'(src1, src2[128:0]); -} - -function $shrBv128From256(src1: bv128, src2: bv256) returns (bv128) -{ - $Shr'Bv128'(src1, src2[128:0]) -} - -procedure {:inline 1} $ShrBv128From256(src1: bv128, src2: bv256) returns (dst: bv128) -{ - if ($Ge'Bv256'(src2, 128bv256)) { - call $ExecFailureAbort(); - return; - } - dst := $Shr'Bv128'(src1, src2[128:0]); -} - -procedure {:inline 1} $CastBv8to256(src: bv8) returns (dst: bv256) -{ - dst := 0bv248 ++ src; -} - - -function $shlBv256From8(src1: bv256, src2: bv8) returns (bv256) -{ - $Shl'Bv256'(src1, 0bv248 ++ src2) -} - -procedure {:inline 1} $ShlBv256From8(src1: bv256, src2: bv8) returns (dst: bv256) -{ - if ($Ge'Bv8'(src2, 256bv8)) { - call $ExecFailureAbort(); - return; - } - dst := $Shl'Bv256'(src1, 0bv248 ++ src2); -} - -function $shrBv256From8(src1: bv256, src2: bv8) returns (bv256) -{ - $Shr'Bv256'(src1, 0bv248 ++ src2) -} - -procedure {:inline 1} $ShrBv256From8(src1: bv256, src2: bv8) returns (dst: bv256) -{ - if ($Ge'Bv8'(src2, 256bv8)) { - call $ExecFailureAbort(); - return; - } - dst := $Shr'Bv256'(src1, 0bv248 ++ src2); -} - -procedure {:inline 1} $CastBv16to256(src: bv16) returns (dst: bv256) -{ - dst := 0bv240 ++ src; -} - - -function $shlBv256From16(src1: bv256, src2: bv16) returns (bv256) -{ - $Shl'Bv256'(src1, 0bv240 ++ src2) -} - -procedure {:inline 1} $ShlBv256From16(src1: bv256, src2: bv16) returns (dst: bv256) -{ - if ($Ge'Bv16'(src2, 256bv16)) { - call $ExecFailureAbort(); - return; - } - dst := $Shl'Bv256'(src1, 0bv240 ++ src2); -} - -function $shrBv256From16(src1: bv256, src2: bv16) returns (bv256) -{ - $Shr'Bv256'(src1, 0bv240 ++ src2) -} - -procedure {:inline 1} $ShrBv256From16(src1: bv256, src2: bv16) returns (dst: bv256) -{ - if ($Ge'Bv16'(src2, 256bv16)) { - call $ExecFailureAbort(); - return; - } - dst := $Shr'Bv256'(src1, 0bv240 ++ src2); -} - -procedure {:inline 1} $CastBv32to256(src: bv32) returns (dst: bv256) -{ - dst := 0bv224 ++ src; -} - - -function $shlBv256From32(src1: bv256, src2: bv32) returns (bv256) -{ - $Shl'Bv256'(src1, 0bv224 ++ src2) -} - -procedure {:inline 1} $ShlBv256From32(src1: bv256, src2: bv32) returns (dst: bv256) -{ - if ($Ge'Bv32'(src2, 256bv32)) { - call $ExecFailureAbort(); - return; - } - dst := $Shl'Bv256'(src1, 0bv224 ++ src2); -} - -function $shrBv256From32(src1: bv256, src2: bv32) returns (bv256) -{ - $Shr'Bv256'(src1, 0bv224 ++ src2) -} - -procedure {:inline 1} $ShrBv256From32(src1: bv256, src2: bv32) returns (dst: bv256) -{ - if ($Ge'Bv32'(src2, 256bv32)) { - call $ExecFailureAbort(); - return; - } - dst := $Shr'Bv256'(src1, 0bv224 ++ src2); -} - -procedure {:inline 1} $CastBv64to256(src: bv64) returns (dst: bv256) -{ - dst := 0bv192 ++ src; -} - - -function $shlBv256From64(src1: bv256, src2: bv64) returns (bv256) -{ - $Shl'Bv256'(src1, 0bv192 ++ src2) -} - -procedure {:inline 1} $ShlBv256From64(src1: bv256, src2: bv64) returns (dst: bv256) -{ - if ($Ge'Bv64'(src2, 256bv64)) { - call $ExecFailureAbort(); - return; - } - dst := $Shl'Bv256'(src1, 0bv192 ++ src2); -} - -function $shrBv256From64(src1: bv256, src2: bv64) returns (bv256) -{ - $Shr'Bv256'(src1, 0bv192 ++ src2) -} - -procedure {:inline 1} $ShrBv256From64(src1: bv256, src2: bv64) returns (dst: bv256) -{ - if ($Ge'Bv64'(src2, 256bv64)) { - call $ExecFailureAbort(); - return; - } - dst := $Shr'Bv256'(src1, 0bv192 ++ src2); -} - -procedure {:inline 1} $CastBv128to256(src: bv128) returns (dst: bv256) -{ - dst := 0bv128 ++ src; -} - - -function $shlBv256From128(src1: bv256, src2: bv128) returns (bv256) -{ - $Shl'Bv256'(src1, 0bv128 ++ src2) -} - -procedure {:inline 1} $ShlBv256From128(src1: bv256, src2: bv128) returns (dst: bv256) -{ - if ($Ge'Bv128'(src2, 256bv128)) { - call $ExecFailureAbort(); - return; - } - dst := $Shl'Bv256'(src1, 0bv128 ++ src2); -} - -function $shrBv256From128(src1: bv256, src2: bv128) returns (bv256) -{ - $Shr'Bv256'(src1, 0bv128 ++ src2) -} - -procedure {:inline 1} $ShrBv256From128(src1: bv256, src2: bv128) returns (dst: bv256) -{ - if ($Ge'Bv128'(src2, 256bv128)) { - call $ExecFailureAbort(); - return; - } - dst := $Shr'Bv256'(src1, 0bv128 ++ src2); -} - -procedure {:inline 1} $CastBv256to256(src: bv256) returns (dst: bv256) -{ - dst := src; -} - - -function $shlBv256From256(src1: bv256, src2: bv256) returns (bv256) -{ - $Shl'Bv256'(src1, src2) -} - -procedure {:inline 1} $ShlBv256From256(src1: bv256, src2: bv256) returns (dst: bv256) -{ - if ($Ge'Bv256'(src2, 256bv256)) { - call $ExecFailureAbort(); - return; - } - dst := $Shl'Bv256'(src1, src2); -} - -function $shrBv256From256(src1: bv256, src2: bv256) returns (bv256) -{ - $Shr'Bv256'(src1, src2) -} - -procedure {:inline 1} $ShrBv256From256(src1: bv256, src2: bv256) returns (dst: bv256) -{ - if ($Ge'Bv256'(src2, 256bv256)) { - call $ExecFailureAbort(); - return; - } - dst := $Shr'Bv256'(src1, src2); -} - -procedure {:inline 1} $ShlU16(src1: int, src2: int) returns (dst: int) -{ - var res: int; - // src2 is a u8 - assume src2 >= 0 && src2 < 256; - if (src2 >= 16) { - call $ExecFailureAbort(); - return; - } - dst := $shlU16(src1, src2); -} - -procedure {:inline 1} $ShlU32(src1: int, src2: int) returns (dst: int) -{ - var res: int; - // src2 is a u8 - assume src2 >= 0 && src2 < 256; - if (src2 >= 32) { - call $ExecFailureAbort(); - return; - } - dst := $shlU32(src1, src2); -} - -procedure {:inline 1} $ShlU64(src1: int, src2: int) returns (dst: int) -{ - var res: int; - // src2 is a u8 - assume src2 >= 0 && src2 < 256; - if (src2 >= 64) { - call $ExecFailureAbort(); - return; - } - dst := $shlU64(src1, src2); -} - -procedure {:inline 1} $ShlU128(src1: int, src2: int) returns (dst: int) -{ - var res: int; - // src2 is a u8 - assume src2 >= 0 && src2 < 256; - if (src2 >= 128) { - call $ExecFailureAbort(); - return; - } - dst := $shlU128(src1, src2); -} - -procedure {:inline 1} $ShlU256(src1: int, src2: int) returns (dst: int) -{ - var res: int; - // src2 is a u8 - assume src2 >= 0 && src2 < 256; - dst := $shlU256(src1, src2); -} - -procedure {:inline 1} $Shr(src1: int, src2: int) returns (dst: int) -{ - var res: int; - // src2 is a u8 - assume src2 >= 0 && src2 < 256; - dst := $shr(src1, src2); -} - -procedure {:inline 1} $ShrU8(src1: int, src2: int) returns (dst: int) -{ - var res: int; - // src2 is a u8 - assume src2 >= 0 && src2 < 256; - if (src2 >= 8) { - call $ExecFailureAbort(); - return; - } - dst := $shr(src1, src2); -} - -procedure {:inline 1} $ShrU16(src1: int, src2: int) returns (dst: int) -{ - var res: int; - // src2 is a u8 - assume src2 >= 0 && src2 < 256; - if (src2 >= 16) { - call $ExecFailureAbort(); - return; - } - dst := $shr(src1, src2); -} - -procedure {:inline 1} $ShrU32(src1: int, src2: int) returns (dst: int) -{ - var res: int; - // src2 is a u8 - assume src2 >= 0 && src2 < 256; - if (src2 >= 32) { - call $ExecFailureAbort(); - return; - } - dst := $shr(src1, src2); -} - -procedure {:inline 1} $ShrU64(src1: int, src2: int) returns (dst: int) -{ - var res: int; - // src2 is a u8 - assume src2 >= 0 && src2 < 256; - if (src2 >= 64) { - call $ExecFailureAbort(); - return; - } - dst := $shr(src1, src2); -} - -procedure {:inline 1} $ShrU128(src1: int, src2: int) returns (dst: int) -{ - var res: int; - // src2 is a u8 - assume src2 >= 0 && src2 < 256; - if (src2 >= 128) { - call $ExecFailureAbort(); - return; - } - dst := $shr(src1, src2); -} - -procedure {:inline 1} $ShrU256(src1: int, src2: int) returns (dst: int) -{ - var res: int; - // src2 is a u8 - assume src2 >= 0 && src2 < 256; - dst := $shr(src1, src2); -} - -procedure {:inline 1} $MulU8(src1: int, src2: int) returns (dst: int) -{ - if (src1 * src2 > $MAX_U8) { - call $ExecFailureAbort(); - return; - } - dst := src1 * src2; -} - -procedure {:inline 1} $MulU16(src1: int, src2: int) returns (dst: int) -{ - if (src1 * src2 > $MAX_U16) { - call $ExecFailureAbort(); - return; - } - dst := src1 * src2; -} - -procedure {:inline 1} $MulU32(src1: int, src2: int) returns (dst: int) -{ - if (src1 * src2 > $MAX_U32) { - call $ExecFailureAbort(); - return; - } - dst := src1 * src2; -} - -procedure {:inline 1} $MulU64(src1: int, src2: int) returns (dst: int) -{ - if (src1 * src2 > $MAX_U64) { - call $ExecFailureAbort(); - return; - } - dst := src1 * src2; -} - -procedure {:inline 1} $MulU128(src1: int, src2: int) returns (dst: int) -{ - if (src1 * src2 > $MAX_U128) { - call $ExecFailureAbort(); - return; - } - dst := src1 * src2; -} - -procedure {:inline 1} $MulU256(src1: int, src2: int) returns (dst: int) -{ - if (src1 * src2 > $MAX_U256) { - call $ExecFailureAbort(); - return; - } - dst := src1 * src2; -} - -procedure {:inline 1} $Div(src1: int, src2: int) returns (dst: int) -{ - if (src2 == 0) { - call $ExecFailureAbort(); - return; - } - dst := src1 div src2; -} - -procedure {:inline 1} $Mod(src1: int, src2: int) returns (dst: int) -{ - if (src2 == 0) { - call $ExecFailureAbort(); - return; - } - dst := src1 mod src2; -} - -procedure {:inline 1} $ArithBinaryUnimplemented(src1: int, src2: int) returns (dst: int); - -procedure {:inline 1} $Lt(src1: int, src2: int) returns (dst: bool) -{ - dst := src1 < src2; -} - -procedure {:inline 1} $Gt(src1: int, src2: int) returns (dst: bool) -{ - dst := src1 > src2; -} - -procedure {:inline 1} $Le(src1: int, src2: int) returns (dst: bool) -{ - dst := src1 <= src2; -} - -procedure {:inline 1} $Ge(src1: int, src2: int) returns (dst: bool) -{ - dst := src1 >= src2; -} - -procedure {:inline 1} $And(src1: bool, src2: bool) returns (dst: bool) -{ - dst := src1 && src2; -} - -procedure {:inline 1} $Or(src1: bool, src2: bool) returns (dst: bool) -{ - dst := src1 || src2; -} - -procedure {:inline 1} $Not(src: bool) returns (dst: bool) -{ - dst := !src; -} - -// Pack and Unpack are auto-generated for each type T - - -// ================================================================================== -// Native Vector - -function {:inline} $SliceVecByRange(v: Vec T, r: $Range): Vec T { - SliceVec(v, lb#$Range(r), ub#$Range(r)) -} - -// ---------------------------------------------------------------------------------- -// Native Vector implementation for element type `#0` - -// Not inlined. It appears faster this way. -function $IsEqual'vec'#0''(v1: Vec (#0), v2: Vec (#0)): bool { - LenVec(v1) == LenVec(v2) && - (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'#0'(ReadVec(v1, i), ReadVec(v2, i))) -} - -// Not inlined. -function $IsPrefix'vec'#0''(v: Vec (#0), prefix: Vec (#0)): bool { - LenVec(v) >= LenVec(prefix) && - (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'#0'(ReadVec(v, i), ReadVec(prefix, i))) -} - -// Not inlined. -function $IsSuffix'vec'#0''(v: Vec (#0), suffix: Vec (#0)): bool { - LenVec(v) >= LenVec(suffix) && - (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'#0'(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) -} - -// Not inlined. -function $IsValid'vec'#0''(v: Vec (#0)): bool { - $IsValid'u64'(LenVec(v)) && - (forall i: int:: InRangeVec(v, i) ==> $IsValid'#0'(ReadVec(v, i))) -} - - -function {:inline} $ContainsVec'#0'(v: Vec (#0), e: #0): bool { - (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'#0'(ReadVec(v, i), e)) -} - -function $IndexOfVec'#0'(v: Vec (#0), e: #0): int; -axiom (forall v: Vec (#0), e: #0:: {$IndexOfVec'#0'(v, e)} - (var i := $IndexOfVec'#0'(v, e); - if (!$ContainsVec'#0'(v, e)) then i == -1 - else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'#0'(ReadVec(v, i), e) && - (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'#0'(ReadVec(v, j), e)))); - - -function {:inline} $RangeVec'#0'(v: Vec (#0)): $Range { - $Range(0, LenVec(v)) -} - - -function {:inline} $EmptyVec'#0'(): Vec (#0) { - EmptyVec() -} - -procedure {:inline 1} $1_vector_empty'#0'() returns (v: Vec (#0)) { - v := EmptyVec(); -} - -function {:inline} $1_vector_$empty'#0'(): Vec (#0) { - EmptyVec() -} - -procedure {:inline 1} $1_vector_is_empty'#0'(v: Vec (#0)) returns (b: bool) { - b := IsEmptyVec(v); -} - -procedure {:inline 1} $1_vector_push_back'#0'(m: $Mutation (Vec (#0)), val: #0) returns (m': $Mutation (Vec (#0))) { - m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); -} - -function {:inline} $1_vector_$push_back'#0'(v: Vec (#0), val: #0): Vec (#0) { - ExtendVec(v, val) -} - -procedure {:inline 1} $1_vector_pop_back'#0'(m: $Mutation (Vec (#0))) returns (e: #0, m': $Mutation (Vec (#0))) { - var v: Vec (#0); - var len: int; - v := $Dereference(m); - len := LenVec(v); - if (len == 0) { - call $ExecFailureAbort(); - return; - } - e := ReadVec(v, len-1); - m' := $UpdateMutation(m, RemoveVec(v)); -} - -procedure {:inline 1} $1_vector_append'#0'(m: $Mutation (Vec (#0)), other: Vec (#0)) returns (m': $Mutation (Vec (#0))) { - m' := $UpdateMutation(m, ConcatVec($Dereference(m), other)); -} - -procedure {:inline 1} $1_vector_reverse'#0'(m: $Mutation (Vec (#0))) returns (m': $Mutation (Vec (#0))) { - m' := $UpdateMutation(m, ReverseVec($Dereference(m))); -} - -procedure {:inline 1} $1_vector_reverse_append'#0'(m: $Mutation (Vec (#0)), other: Vec (#0)) returns (m': $Mutation (Vec (#0))) { - m' := $UpdateMutation(m, ConcatVec($Dereference(m), ReverseVec(other))); -} - -procedure {:inline 1} $1_vector_trim_reverse'#0'(m: $Mutation (Vec (#0)), new_len: int) returns (v: (Vec (#0)), m': $Mutation (Vec (#0))) { - var len: int; - v := $Dereference(m); - if (LenVec(v) < new_len) { - call $ExecFailureAbort(); - return; - } - v := SliceVec(v, new_len, LenVec(v)); - v := ReverseVec(v); - m' := $UpdateMutation(m, SliceVec($Dereference(m), 0, new_len)); -} - -procedure {:inline 1} $1_vector_trim'#0'(m: $Mutation (Vec (#0)), new_len: int) returns (v: (Vec (#0)), m': $Mutation (Vec (#0))) { - var len: int; - v := $Dereference(m); - if (LenVec(v) < new_len) { - call $ExecFailureAbort(); - return; - } - v := SliceVec(v, new_len, LenVec(v)); - m' := $UpdateMutation(m, SliceVec($Dereference(m), 0, new_len)); -} - -procedure {:inline 1} $1_vector_reverse_slice'#0'(m: $Mutation (Vec (#0)), left: int, right: int) returns (m': $Mutation (Vec (#0))) { - var left_vec: Vec (#0); - var mid_vec: Vec (#0); - var right_vec: Vec (#0); - var v: Vec (#0); - if (left > right) { - call $ExecFailureAbort(); - return; - } - if (left == right) { - m' := m; - return; - } - v := $Dereference(m); - if (!(right >= 0 && right <= LenVec(v))) { - call $ExecFailureAbort(); - return; - } - left_vec := SliceVec(v, 0, left); - right_vec := SliceVec(v, right, LenVec(v)); - mid_vec := ReverseVec(SliceVec(v, left, right)); - m' := $UpdateMutation(m, ConcatVec(left_vec, ConcatVec(mid_vec, right_vec))); -} - -procedure {:inline 1} $1_vector_rotate'#0'(m: $Mutation (Vec (#0)), rot: int) returns (n: int, m': $Mutation (Vec (#0))) { - var v: Vec (#0); - var len: int; - var left_vec: Vec (#0); - var right_vec: Vec (#0); - v := $Dereference(m); - if (!(rot >= 0 && rot <= LenVec(v))) { - call $ExecFailureAbort(); - return; - } - left_vec := SliceVec(v, 0, rot); - right_vec := SliceVec(v, rot, LenVec(v)); - m' := $UpdateMutation(m, ConcatVec(right_vec, left_vec)); - n := LenVec(v) - rot; -} - -procedure {:inline 1} $1_vector_rotate_slice'#0'(m: $Mutation (Vec (#0)), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec (#0))) { - var left_vec: Vec (#0); - var mid_vec: Vec (#0); - var right_vec: Vec (#0); - var mid_left_vec: Vec (#0); - var mid_right_vec: Vec (#0); - var v: Vec (#0); - v := $Dereference(m); - if (!(left <= rot && rot <= right)) { - call $ExecFailureAbort(); - return; - } - if (!(right >= 0 && right <= LenVec(v))) { - call $ExecFailureAbort(); - return; - } - v := $Dereference(m); - left_vec := SliceVec(v, 0, left); - right_vec := SliceVec(v, right, LenVec(v)); - mid_left_vec := SliceVec(v, left, rot); - mid_right_vec := SliceVec(v, rot, right); - mid_vec := ConcatVec(mid_right_vec, mid_left_vec); - m' := $UpdateMutation(m, ConcatVec(left_vec, ConcatVec(mid_vec, right_vec))); - n := left + (right - rot); -} - -procedure {:inline 1} $1_vector_insert'#0'(m: $Mutation (Vec (#0)), i: int, e: #0) returns (m': $Mutation (Vec (#0))) { - var left_vec: Vec (#0); - var right_vec: Vec (#0); - var v: Vec (#0); - v := $Dereference(m); - if (!(i >= 0 && i <= LenVec(v))) { - call $ExecFailureAbort(); - return; - } - if (i == LenVec(v)) { - m' := $UpdateMutation(m, ExtendVec(v, e)); - } else { - left_vec := ExtendVec(SliceVec(v, 0, i), e); - right_vec := SliceVec(v, i, LenVec(v)); - m' := $UpdateMutation(m, ConcatVec(left_vec, right_vec)); - } -} - -procedure {:inline 1} $1_vector_length'#0'(v: Vec (#0)) returns (l: int) { - l := LenVec(v); -} - -function {:inline} $1_vector_$length'#0'(v: Vec (#0)): int { - LenVec(v) -} - -procedure {:inline 1} $1_vector_borrow'#0'(v: Vec (#0), i: int) returns (dst: #0) { - if (!InRangeVec(v, i)) { - call $ExecFailureAbort(); - return; - } - dst := ReadVec(v, i); -} - -function {:inline} $1_vector_$borrow'#0'(v: Vec (#0), i: int): #0 { - ReadVec(v, i) -} - -procedure {:inline 1} $1_vector_borrow_mut'#0'(m: $Mutation (Vec (#0)), index: int) -returns (dst: $Mutation (#0), m': $Mutation (Vec (#0))) -{ - var v: Vec (#0); - v := $Dereference(m); - if (!InRangeVec(v, index)) { - call $ExecFailureAbort(); - return; - } - dst := $Mutation(l#$Mutation(m), ExtendVec(p#$Mutation(m), index), ReadVec(v, index)); - m' := m; -} - -function {:inline} $1_vector_$borrow_mut'#0'(v: Vec (#0), i: int): #0 { - ReadVec(v, i) -} - -procedure {:inline 1} $1_vector_destroy_empty'#0'(v: Vec (#0)) { - if (!IsEmptyVec(v)) { - call $ExecFailureAbort(); - } -} - -procedure {:inline 1} $1_vector_swap'#0'(m: $Mutation (Vec (#0)), i: int, j: int) returns (m': $Mutation (Vec (#0))) -{ - var v: Vec (#0); - v := $Dereference(m); - if (!InRangeVec(v, i) || !InRangeVec(v, j)) { - call $ExecFailureAbort(); - return; - } - m' := $UpdateMutation(m, SwapVec(v, i, j)); -} - -function {:inline} $1_vector_$swap'#0'(v: Vec (#0), i: int, j: int): Vec (#0) { - SwapVec(v, i, j) -} - -procedure {:inline 1} $1_vector_remove'#0'(m: $Mutation (Vec (#0)), i: int) returns (e: #0, m': $Mutation (Vec (#0))) -{ - var v: Vec (#0); - - v := $Dereference(m); - - if (!InRangeVec(v, i)) { - call $ExecFailureAbort(); - return; - } - e := ReadVec(v, i); - m' := $UpdateMutation(m, RemoveAtVec(v, i)); -} - -procedure {:inline 1} $1_vector_swap_remove'#0'(m: $Mutation (Vec (#0)), i: int) returns (e: #0, m': $Mutation (Vec (#0))) -{ - var len: int; - var v: Vec (#0); - - v := $Dereference(m); - len := LenVec(v); - if (!InRangeVec(v, i)) { - call $ExecFailureAbort(); - return; - } - e := ReadVec(v, i); - m' := $UpdateMutation(m, RemoveVec(SwapVec(v, i, len-1))); -} - -procedure {:inline 1} $1_vector_contains'#0'(v: Vec (#0), e: #0) returns (res: bool) { - res := $ContainsVec'#0'(v, e); -} - -procedure {:inline 1} -$1_vector_index_of'#0'(v: Vec (#0), e: #0) returns (res1: bool, res2: int) { - res2 := $IndexOfVec'#0'(v, e); - if (res2 >= 0) { - res1 := true; - } else { - res1 := false; - res2 := 0; - } -} - - -// ---------------------------------------------------------------------------------- -// Native Vector implementation for element type `$1_aggregator_Aggregator` - -// Not inlined. It appears faster this way. -function $IsEqual'vec'$1_aggregator_Aggregator''(v1: Vec ($1_aggregator_Aggregator), v2: Vec ($1_aggregator_Aggregator)): bool { - LenVec(v1) == LenVec(v2) && - (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'$1_aggregator_Aggregator'(ReadVec(v1, i), ReadVec(v2, i))) -} - -// Not inlined. -function $IsPrefix'vec'$1_aggregator_Aggregator''(v: Vec ($1_aggregator_Aggregator), prefix: Vec ($1_aggregator_Aggregator)): bool { - LenVec(v) >= LenVec(prefix) && - (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'$1_aggregator_Aggregator'(ReadVec(v, i), ReadVec(prefix, i))) -} - -// Not inlined. -function $IsSuffix'vec'$1_aggregator_Aggregator''(v: Vec ($1_aggregator_Aggregator), suffix: Vec ($1_aggregator_Aggregator)): bool { - LenVec(v) >= LenVec(suffix) && - (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'$1_aggregator_Aggregator'(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) -} - -// Not inlined. -function $IsValid'vec'$1_aggregator_Aggregator''(v: Vec ($1_aggregator_Aggregator)): bool { - $IsValid'u64'(LenVec(v)) && - (forall i: int:: InRangeVec(v, i) ==> $IsValid'$1_aggregator_Aggregator'(ReadVec(v, i))) -} - - -function {:inline} $ContainsVec'$1_aggregator_Aggregator'(v: Vec ($1_aggregator_Aggregator), e: $1_aggregator_Aggregator): bool { - (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_aggregator_Aggregator'(ReadVec(v, i), e)) -} - -function $IndexOfVec'$1_aggregator_Aggregator'(v: Vec ($1_aggregator_Aggregator), e: $1_aggregator_Aggregator): int; -axiom (forall v: Vec ($1_aggregator_Aggregator), e: $1_aggregator_Aggregator:: {$IndexOfVec'$1_aggregator_Aggregator'(v, e)} - (var i := $IndexOfVec'$1_aggregator_Aggregator'(v, e); - if (!$ContainsVec'$1_aggregator_Aggregator'(v, e)) then i == -1 - else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_aggregator_Aggregator'(ReadVec(v, i), e) && - (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'$1_aggregator_Aggregator'(ReadVec(v, j), e)))); - - -function {:inline} $RangeVec'$1_aggregator_Aggregator'(v: Vec ($1_aggregator_Aggregator)): $Range { - $Range(0, LenVec(v)) -} - - -function {:inline} $EmptyVec'$1_aggregator_Aggregator'(): Vec ($1_aggregator_Aggregator) { - EmptyVec() -} - -procedure {:inline 1} $1_vector_empty'$1_aggregator_Aggregator'() returns (v: Vec ($1_aggregator_Aggregator)) { - v := EmptyVec(); -} - -function {:inline} $1_vector_$empty'$1_aggregator_Aggregator'(): Vec ($1_aggregator_Aggregator) { - EmptyVec() -} - -procedure {:inline 1} $1_vector_is_empty'$1_aggregator_Aggregator'(v: Vec ($1_aggregator_Aggregator)) returns (b: bool) { - b := IsEmptyVec(v); -} - -procedure {:inline 1} $1_vector_push_back'$1_aggregator_Aggregator'(m: $Mutation (Vec ($1_aggregator_Aggregator)), val: $1_aggregator_Aggregator) returns (m': $Mutation (Vec ($1_aggregator_Aggregator))) { - m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); -} - -function {:inline} $1_vector_$push_back'$1_aggregator_Aggregator'(v: Vec ($1_aggregator_Aggregator), val: $1_aggregator_Aggregator): Vec ($1_aggregator_Aggregator) { - ExtendVec(v, val) -} - -procedure {:inline 1} $1_vector_pop_back'$1_aggregator_Aggregator'(m: $Mutation (Vec ($1_aggregator_Aggregator))) returns (e: $1_aggregator_Aggregator, m': $Mutation (Vec ($1_aggregator_Aggregator))) { - var v: Vec ($1_aggregator_Aggregator); - var len: int; - v := $Dereference(m); - len := LenVec(v); - if (len == 0) { - call $ExecFailureAbort(); - return; - } - e := ReadVec(v, len-1); - m' := $UpdateMutation(m, RemoveVec(v)); -} - -procedure {:inline 1} $1_vector_append'$1_aggregator_Aggregator'(m: $Mutation (Vec ($1_aggregator_Aggregator)), other: Vec ($1_aggregator_Aggregator)) returns (m': $Mutation (Vec ($1_aggregator_Aggregator))) { - m' := $UpdateMutation(m, ConcatVec($Dereference(m), other)); -} - -procedure {:inline 1} $1_vector_reverse'$1_aggregator_Aggregator'(m: $Mutation (Vec ($1_aggregator_Aggregator))) returns (m': $Mutation (Vec ($1_aggregator_Aggregator))) { - m' := $UpdateMutation(m, ReverseVec($Dereference(m))); -} - -procedure {:inline 1} $1_vector_reverse_append'$1_aggregator_Aggregator'(m: $Mutation (Vec ($1_aggregator_Aggregator)), other: Vec ($1_aggregator_Aggregator)) returns (m': $Mutation (Vec ($1_aggregator_Aggregator))) { - m' := $UpdateMutation(m, ConcatVec($Dereference(m), ReverseVec(other))); -} - -procedure {:inline 1} $1_vector_trim_reverse'$1_aggregator_Aggregator'(m: $Mutation (Vec ($1_aggregator_Aggregator)), new_len: int) returns (v: (Vec ($1_aggregator_Aggregator)), m': $Mutation (Vec ($1_aggregator_Aggregator))) { - var len: int; - v := $Dereference(m); - if (LenVec(v) < new_len) { - call $ExecFailureAbort(); - return; - } - v := SliceVec(v, new_len, LenVec(v)); - v := ReverseVec(v); - m' := $UpdateMutation(m, SliceVec($Dereference(m), 0, new_len)); -} - -procedure {:inline 1} $1_vector_trim'$1_aggregator_Aggregator'(m: $Mutation (Vec ($1_aggregator_Aggregator)), new_len: int) returns (v: (Vec ($1_aggregator_Aggregator)), m': $Mutation (Vec ($1_aggregator_Aggregator))) { - var len: int; - v := $Dereference(m); - if (LenVec(v) < new_len) { - call $ExecFailureAbort(); - return; - } - v := SliceVec(v, new_len, LenVec(v)); - m' := $UpdateMutation(m, SliceVec($Dereference(m), 0, new_len)); -} - -procedure {:inline 1} $1_vector_reverse_slice'$1_aggregator_Aggregator'(m: $Mutation (Vec ($1_aggregator_Aggregator)), left: int, right: int) returns (m': $Mutation (Vec ($1_aggregator_Aggregator))) { - var left_vec: Vec ($1_aggregator_Aggregator); - var mid_vec: Vec ($1_aggregator_Aggregator); - var right_vec: Vec ($1_aggregator_Aggregator); - var v: Vec ($1_aggregator_Aggregator); - if (left > right) { - call $ExecFailureAbort(); - return; - } - if (left == right) { - m' := m; - return; - } - v := $Dereference(m); - if (!(right >= 0 && right <= LenVec(v))) { - call $ExecFailureAbort(); - return; - } - left_vec := SliceVec(v, 0, left); - right_vec := SliceVec(v, right, LenVec(v)); - mid_vec := ReverseVec(SliceVec(v, left, right)); - m' := $UpdateMutation(m, ConcatVec(left_vec, ConcatVec(mid_vec, right_vec))); -} - -procedure {:inline 1} $1_vector_rotate'$1_aggregator_Aggregator'(m: $Mutation (Vec ($1_aggregator_Aggregator)), rot: int) returns (n: int, m': $Mutation (Vec ($1_aggregator_Aggregator))) { - var v: Vec ($1_aggregator_Aggregator); - var len: int; - var left_vec: Vec ($1_aggregator_Aggregator); - var right_vec: Vec ($1_aggregator_Aggregator); - v := $Dereference(m); - if (!(rot >= 0 && rot <= LenVec(v))) { - call $ExecFailureAbort(); - return; - } - left_vec := SliceVec(v, 0, rot); - right_vec := SliceVec(v, rot, LenVec(v)); - m' := $UpdateMutation(m, ConcatVec(right_vec, left_vec)); - n := LenVec(v) - rot; -} - -procedure {:inline 1} $1_vector_rotate_slice'$1_aggregator_Aggregator'(m: $Mutation (Vec ($1_aggregator_Aggregator)), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec ($1_aggregator_Aggregator))) { - var left_vec: Vec ($1_aggregator_Aggregator); - var mid_vec: Vec ($1_aggregator_Aggregator); - var right_vec: Vec ($1_aggregator_Aggregator); - var mid_left_vec: Vec ($1_aggregator_Aggregator); - var mid_right_vec: Vec ($1_aggregator_Aggregator); - var v: Vec ($1_aggregator_Aggregator); - v := $Dereference(m); - if (!(left <= rot && rot <= right)) { - call $ExecFailureAbort(); - return; - } - if (!(right >= 0 && right <= LenVec(v))) { - call $ExecFailureAbort(); - return; - } - v := $Dereference(m); - left_vec := SliceVec(v, 0, left); - right_vec := SliceVec(v, right, LenVec(v)); - mid_left_vec := SliceVec(v, left, rot); - mid_right_vec := SliceVec(v, rot, right); - mid_vec := ConcatVec(mid_right_vec, mid_left_vec); - m' := $UpdateMutation(m, ConcatVec(left_vec, ConcatVec(mid_vec, right_vec))); - n := left + (right - rot); -} - -procedure {:inline 1} $1_vector_insert'$1_aggregator_Aggregator'(m: $Mutation (Vec ($1_aggregator_Aggregator)), i: int, e: $1_aggregator_Aggregator) returns (m': $Mutation (Vec ($1_aggregator_Aggregator))) { - var left_vec: Vec ($1_aggregator_Aggregator); - var right_vec: Vec ($1_aggregator_Aggregator); - var v: Vec ($1_aggregator_Aggregator); - v := $Dereference(m); - if (!(i >= 0 && i <= LenVec(v))) { - call $ExecFailureAbort(); - return; - } - if (i == LenVec(v)) { - m' := $UpdateMutation(m, ExtendVec(v, e)); - } else { - left_vec := ExtendVec(SliceVec(v, 0, i), e); - right_vec := SliceVec(v, i, LenVec(v)); - m' := $UpdateMutation(m, ConcatVec(left_vec, right_vec)); - } -} - -procedure {:inline 1} $1_vector_length'$1_aggregator_Aggregator'(v: Vec ($1_aggregator_Aggregator)) returns (l: int) { - l := LenVec(v); -} - -function {:inline} $1_vector_$length'$1_aggregator_Aggregator'(v: Vec ($1_aggregator_Aggregator)): int { - LenVec(v) -} - -procedure {:inline 1} $1_vector_borrow'$1_aggregator_Aggregator'(v: Vec ($1_aggregator_Aggregator), i: int) returns (dst: $1_aggregator_Aggregator) { - if (!InRangeVec(v, i)) { - call $ExecFailureAbort(); - return; - } - dst := ReadVec(v, i); -} - -function {:inline} $1_vector_$borrow'$1_aggregator_Aggregator'(v: Vec ($1_aggregator_Aggregator), i: int): $1_aggregator_Aggregator { - ReadVec(v, i) -} - -procedure {:inline 1} $1_vector_borrow_mut'$1_aggregator_Aggregator'(m: $Mutation (Vec ($1_aggregator_Aggregator)), index: int) -returns (dst: $Mutation ($1_aggregator_Aggregator), m': $Mutation (Vec ($1_aggregator_Aggregator))) -{ - var v: Vec ($1_aggregator_Aggregator); - v := $Dereference(m); - if (!InRangeVec(v, index)) { - call $ExecFailureAbort(); - return; - } - dst := $Mutation(l#$Mutation(m), ExtendVec(p#$Mutation(m), index), ReadVec(v, index)); - m' := m; -} - -function {:inline} $1_vector_$borrow_mut'$1_aggregator_Aggregator'(v: Vec ($1_aggregator_Aggregator), i: int): $1_aggregator_Aggregator { - ReadVec(v, i) -} - -procedure {:inline 1} $1_vector_destroy_empty'$1_aggregator_Aggregator'(v: Vec ($1_aggregator_Aggregator)) { - if (!IsEmptyVec(v)) { - call $ExecFailureAbort(); - } -} - -procedure {:inline 1} $1_vector_swap'$1_aggregator_Aggregator'(m: $Mutation (Vec ($1_aggregator_Aggregator)), i: int, j: int) returns (m': $Mutation (Vec ($1_aggregator_Aggregator))) -{ - var v: Vec ($1_aggregator_Aggregator); - v := $Dereference(m); - if (!InRangeVec(v, i) || !InRangeVec(v, j)) { - call $ExecFailureAbort(); - return; - } - m' := $UpdateMutation(m, SwapVec(v, i, j)); -} - -function {:inline} $1_vector_$swap'$1_aggregator_Aggregator'(v: Vec ($1_aggregator_Aggregator), i: int, j: int): Vec ($1_aggregator_Aggregator) { - SwapVec(v, i, j) -} - -procedure {:inline 1} $1_vector_remove'$1_aggregator_Aggregator'(m: $Mutation (Vec ($1_aggregator_Aggregator)), i: int) returns (e: $1_aggregator_Aggregator, m': $Mutation (Vec ($1_aggregator_Aggregator))) -{ - var v: Vec ($1_aggregator_Aggregator); - - v := $Dereference(m); - - if (!InRangeVec(v, i)) { - call $ExecFailureAbort(); - return; - } - e := ReadVec(v, i); - m' := $UpdateMutation(m, RemoveAtVec(v, i)); -} - -procedure {:inline 1} $1_vector_swap_remove'$1_aggregator_Aggregator'(m: $Mutation (Vec ($1_aggregator_Aggregator)), i: int) returns (e: $1_aggregator_Aggregator, m': $Mutation (Vec ($1_aggregator_Aggregator))) -{ - var len: int; - var v: Vec ($1_aggregator_Aggregator); - - v := $Dereference(m); - len := LenVec(v); - if (!InRangeVec(v, i)) { - call $ExecFailureAbort(); - return; - } - e := ReadVec(v, i); - m' := $UpdateMutation(m, RemoveVec(SwapVec(v, i, len-1))); -} - -procedure {:inline 1} $1_vector_contains'$1_aggregator_Aggregator'(v: Vec ($1_aggregator_Aggregator), e: $1_aggregator_Aggregator) returns (res: bool) { - res := $ContainsVec'$1_aggregator_Aggregator'(v, e); -} - -procedure {:inline 1} -$1_vector_index_of'$1_aggregator_Aggregator'(v: Vec ($1_aggregator_Aggregator), e: $1_aggregator_Aggregator) returns (res1: bool, res2: int) { - res2 := $IndexOfVec'$1_aggregator_Aggregator'(v, e); - if (res2 >= 0) { - res1 := true; - } else { - res1 := false; - res2 := 0; - } -} - - -// ---------------------------------------------------------------------------------- -// Native Vector implementation for element type `$1_fixed_point32_FixedPoint32` - -// Not inlined. It appears faster this way. -function $IsEqual'vec'$1_fixed_point32_FixedPoint32''(v1: Vec ($1_fixed_point32_FixedPoint32), v2: Vec ($1_fixed_point32_FixedPoint32)): bool { - LenVec(v1) == LenVec(v2) && - (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'$1_fixed_point32_FixedPoint32'(ReadVec(v1, i), ReadVec(v2, i))) -} - -// Not inlined. -function $IsPrefix'vec'$1_fixed_point32_FixedPoint32''(v: Vec ($1_fixed_point32_FixedPoint32), prefix: Vec ($1_fixed_point32_FixedPoint32)): bool { - LenVec(v) >= LenVec(prefix) && - (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'$1_fixed_point32_FixedPoint32'(ReadVec(v, i), ReadVec(prefix, i))) -} - -// Not inlined. -function $IsSuffix'vec'$1_fixed_point32_FixedPoint32''(v: Vec ($1_fixed_point32_FixedPoint32), suffix: Vec ($1_fixed_point32_FixedPoint32)): bool { - LenVec(v) >= LenVec(suffix) && - (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'$1_fixed_point32_FixedPoint32'(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) -} - -// Not inlined. -function $IsValid'vec'$1_fixed_point32_FixedPoint32''(v: Vec ($1_fixed_point32_FixedPoint32)): bool { - $IsValid'u64'(LenVec(v)) && - (forall i: int:: InRangeVec(v, i) ==> $IsValid'$1_fixed_point32_FixedPoint32'(ReadVec(v, i))) -} - - -function {:inline} $ContainsVec'$1_fixed_point32_FixedPoint32'(v: Vec ($1_fixed_point32_FixedPoint32), e: $1_fixed_point32_FixedPoint32): bool { - (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_fixed_point32_FixedPoint32'(ReadVec(v, i), e)) -} - -function $IndexOfVec'$1_fixed_point32_FixedPoint32'(v: Vec ($1_fixed_point32_FixedPoint32), e: $1_fixed_point32_FixedPoint32): int; -axiom (forall v: Vec ($1_fixed_point32_FixedPoint32), e: $1_fixed_point32_FixedPoint32:: {$IndexOfVec'$1_fixed_point32_FixedPoint32'(v, e)} - (var i := $IndexOfVec'$1_fixed_point32_FixedPoint32'(v, e); - if (!$ContainsVec'$1_fixed_point32_FixedPoint32'(v, e)) then i == -1 - else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_fixed_point32_FixedPoint32'(ReadVec(v, i), e) && - (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'$1_fixed_point32_FixedPoint32'(ReadVec(v, j), e)))); - - -function {:inline} $RangeVec'$1_fixed_point32_FixedPoint32'(v: Vec ($1_fixed_point32_FixedPoint32)): $Range { - $Range(0, LenVec(v)) -} - - -function {:inline} $EmptyVec'$1_fixed_point32_FixedPoint32'(): Vec ($1_fixed_point32_FixedPoint32) { - EmptyVec() -} - -procedure {:inline 1} $1_vector_empty'$1_fixed_point32_FixedPoint32'() returns (v: Vec ($1_fixed_point32_FixedPoint32)) { - v := EmptyVec(); -} - -function {:inline} $1_vector_$empty'$1_fixed_point32_FixedPoint32'(): Vec ($1_fixed_point32_FixedPoint32) { - EmptyVec() -} - -procedure {:inline 1} $1_vector_is_empty'$1_fixed_point32_FixedPoint32'(v: Vec ($1_fixed_point32_FixedPoint32)) returns (b: bool) { - b := IsEmptyVec(v); -} - -procedure {:inline 1} $1_vector_push_back'$1_fixed_point32_FixedPoint32'(m: $Mutation (Vec ($1_fixed_point32_FixedPoint32)), val: $1_fixed_point32_FixedPoint32) returns (m': $Mutation (Vec ($1_fixed_point32_FixedPoint32))) { - m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); -} - -function {:inline} $1_vector_$push_back'$1_fixed_point32_FixedPoint32'(v: Vec ($1_fixed_point32_FixedPoint32), val: $1_fixed_point32_FixedPoint32): Vec ($1_fixed_point32_FixedPoint32) { - ExtendVec(v, val) -} - -procedure {:inline 1} $1_vector_pop_back'$1_fixed_point32_FixedPoint32'(m: $Mutation (Vec ($1_fixed_point32_FixedPoint32))) returns (e: $1_fixed_point32_FixedPoint32, m': $Mutation (Vec ($1_fixed_point32_FixedPoint32))) { - var v: Vec ($1_fixed_point32_FixedPoint32); - var len: int; - v := $Dereference(m); - len := LenVec(v); - if (len == 0) { - call $ExecFailureAbort(); - return; - } - e := ReadVec(v, len-1); - m' := $UpdateMutation(m, RemoveVec(v)); -} - -procedure {:inline 1} $1_vector_append'$1_fixed_point32_FixedPoint32'(m: $Mutation (Vec ($1_fixed_point32_FixedPoint32)), other: Vec ($1_fixed_point32_FixedPoint32)) returns (m': $Mutation (Vec ($1_fixed_point32_FixedPoint32))) { - m' := $UpdateMutation(m, ConcatVec($Dereference(m), other)); -} - -procedure {:inline 1} $1_vector_reverse'$1_fixed_point32_FixedPoint32'(m: $Mutation (Vec ($1_fixed_point32_FixedPoint32))) returns (m': $Mutation (Vec ($1_fixed_point32_FixedPoint32))) { - m' := $UpdateMutation(m, ReverseVec($Dereference(m))); -} - -procedure {:inline 1} $1_vector_reverse_append'$1_fixed_point32_FixedPoint32'(m: $Mutation (Vec ($1_fixed_point32_FixedPoint32)), other: Vec ($1_fixed_point32_FixedPoint32)) returns (m': $Mutation (Vec ($1_fixed_point32_FixedPoint32))) { - m' := $UpdateMutation(m, ConcatVec($Dereference(m), ReverseVec(other))); -} - -procedure {:inline 1} $1_vector_trim_reverse'$1_fixed_point32_FixedPoint32'(m: $Mutation (Vec ($1_fixed_point32_FixedPoint32)), new_len: int) returns (v: (Vec ($1_fixed_point32_FixedPoint32)), m': $Mutation (Vec ($1_fixed_point32_FixedPoint32))) { - var len: int; - v := $Dereference(m); - if (LenVec(v) < new_len) { - call $ExecFailureAbort(); - return; - } - v := SliceVec(v, new_len, LenVec(v)); - v := ReverseVec(v); - m' := $UpdateMutation(m, SliceVec($Dereference(m), 0, new_len)); -} - -procedure {:inline 1} $1_vector_trim'$1_fixed_point32_FixedPoint32'(m: $Mutation (Vec ($1_fixed_point32_FixedPoint32)), new_len: int) returns (v: (Vec ($1_fixed_point32_FixedPoint32)), m': $Mutation (Vec ($1_fixed_point32_FixedPoint32))) { - var len: int; - v := $Dereference(m); - if (LenVec(v) < new_len) { - call $ExecFailureAbort(); - return; - } - v := SliceVec(v, new_len, LenVec(v)); - m' := $UpdateMutation(m, SliceVec($Dereference(m), 0, new_len)); -} - -procedure {:inline 1} $1_vector_reverse_slice'$1_fixed_point32_FixedPoint32'(m: $Mutation (Vec ($1_fixed_point32_FixedPoint32)), left: int, right: int) returns (m': $Mutation (Vec ($1_fixed_point32_FixedPoint32))) { - var left_vec: Vec ($1_fixed_point32_FixedPoint32); - var mid_vec: Vec ($1_fixed_point32_FixedPoint32); - var right_vec: Vec ($1_fixed_point32_FixedPoint32); - var v: Vec ($1_fixed_point32_FixedPoint32); - if (left > right) { - call $ExecFailureAbort(); - return; - } - if (left == right) { - m' := m; - return; - } - v := $Dereference(m); - if (!(right >= 0 && right <= LenVec(v))) { - call $ExecFailureAbort(); - return; - } - left_vec := SliceVec(v, 0, left); - right_vec := SliceVec(v, right, LenVec(v)); - mid_vec := ReverseVec(SliceVec(v, left, right)); - m' := $UpdateMutation(m, ConcatVec(left_vec, ConcatVec(mid_vec, right_vec))); -} - -procedure {:inline 1} $1_vector_rotate'$1_fixed_point32_FixedPoint32'(m: $Mutation (Vec ($1_fixed_point32_FixedPoint32)), rot: int) returns (n: int, m': $Mutation (Vec ($1_fixed_point32_FixedPoint32))) { - var v: Vec ($1_fixed_point32_FixedPoint32); - var len: int; - var left_vec: Vec ($1_fixed_point32_FixedPoint32); - var right_vec: Vec ($1_fixed_point32_FixedPoint32); - v := $Dereference(m); - if (!(rot >= 0 && rot <= LenVec(v))) { - call $ExecFailureAbort(); - return; - } - left_vec := SliceVec(v, 0, rot); - right_vec := SliceVec(v, rot, LenVec(v)); - m' := $UpdateMutation(m, ConcatVec(right_vec, left_vec)); - n := LenVec(v) - rot; -} - -procedure {:inline 1} $1_vector_rotate_slice'$1_fixed_point32_FixedPoint32'(m: $Mutation (Vec ($1_fixed_point32_FixedPoint32)), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec ($1_fixed_point32_FixedPoint32))) { - var left_vec: Vec ($1_fixed_point32_FixedPoint32); - var mid_vec: Vec ($1_fixed_point32_FixedPoint32); - var right_vec: Vec ($1_fixed_point32_FixedPoint32); - var mid_left_vec: Vec ($1_fixed_point32_FixedPoint32); - var mid_right_vec: Vec ($1_fixed_point32_FixedPoint32); - var v: Vec ($1_fixed_point32_FixedPoint32); - v := $Dereference(m); - if (!(left <= rot && rot <= right)) { - call $ExecFailureAbort(); - return; - } - if (!(right >= 0 && right <= LenVec(v))) { - call $ExecFailureAbort(); - return; - } - v := $Dereference(m); - left_vec := SliceVec(v, 0, left); - right_vec := SliceVec(v, right, LenVec(v)); - mid_left_vec := SliceVec(v, left, rot); - mid_right_vec := SliceVec(v, rot, right); - mid_vec := ConcatVec(mid_right_vec, mid_left_vec); - m' := $UpdateMutation(m, ConcatVec(left_vec, ConcatVec(mid_vec, right_vec))); - n := left + (right - rot); -} - -procedure {:inline 1} $1_vector_insert'$1_fixed_point32_FixedPoint32'(m: $Mutation (Vec ($1_fixed_point32_FixedPoint32)), i: int, e: $1_fixed_point32_FixedPoint32) returns (m': $Mutation (Vec ($1_fixed_point32_FixedPoint32))) { - var left_vec: Vec ($1_fixed_point32_FixedPoint32); - var right_vec: Vec ($1_fixed_point32_FixedPoint32); - var v: Vec ($1_fixed_point32_FixedPoint32); - v := $Dereference(m); - if (!(i >= 0 && i <= LenVec(v))) { - call $ExecFailureAbort(); - return; - } - if (i == LenVec(v)) { - m' := $UpdateMutation(m, ExtendVec(v, e)); - } else { - left_vec := ExtendVec(SliceVec(v, 0, i), e); - right_vec := SliceVec(v, i, LenVec(v)); - m' := $UpdateMutation(m, ConcatVec(left_vec, right_vec)); - } -} - -procedure {:inline 1} $1_vector_length'$1_fixed_point32_FixedPoint32'(v: Vec ($1_fixed_point32_FixedPoint32)) returns (l: int) { - l := LenVec(v); -} - -function {:inline} $1_vector_$length'$1_fixed_point32_FixedPoint32'(v: Vec ($1_fixed_point32_FixedPoint32)): int { - LenVec(v) -} - -procedure {:inline 1} $1_vector_borrow'$1_fixed_point32_FixedPoint32'(v: Vec ($1_fixed_point32_FixedPoint32), i: int) returns (dst: $1_fixed_point32_FixedPoint32) { - if (!InRangeVec(v, i)) { - call $ExecFailureAbort(); - return; - } - dst := ReadVec(v, i); -} - -function {:inline} $1_vector_$borrow'$1_fixed_point32_FixedPoint32'(v: Vec ($1_fixed_point32_FixedPoint32), i: int): $1_fixed_point32_FixedPoint32 { - ReadVec(v, i) -} - -procedure {:inline 1} $1_vector_borrow_mut'$1_fixed_point32_FixedPoint32'(m: $Mutation (Vec ($1_fixed_point32_FixedPoint32)), index: int) -returns (dst: $Mutation ($1_fixed_point32_FixedPoint32), m': $Mutation (Vec ($1_fixed_point32_FixedPoint32))) -{ - var v: Vec ($1_fixed_point32_FixedPoint32); - v := $Dereference(m); - if (!InRangeVec(v, index)) { - call $ExecFailureAbort(); - return; - } - dst := $Mutation(l#$Mutation(m), ExtendVec(p#$Mutation(m), index), ReadVec(v, index)); - m' := m; -} - -function {:inline} $1_vector_$borrow_mut'$1_fixed_point32_FixedPoint32'(v: Vec ($1_fixed_point32_FixedPoint32), i: int): $1_fixed_point32_FixedPoint32 { - ReadVec(v, i) -} - -procedure {:inline 1} $1_vector_destroy_empty'$1_fixed_point32_FixedPoint32'(v: Vec ($1_fixed_point32_FixedPoint32)) { - if (!IsEmptyVec(v)) { - call $ExecFailureAbort(); - } -} - -procedure {:inline 1} $1_vector_swap'$1_fixed_point32_FixedPoint32'(m: $Mutation (Vec ($1_fixed_point32_FixedPoint32)), i: int, j: int) returns (m': $Mutation (Vec ($1_fixed_point32_FixedPoint32))) -{ - var v: Vec ($1_fixed_point32_FixedPoint32); - v := $Dereference(m); - if (!InRangeVec(v, i) || !InRangeVec(v, j)) { - call $ExecFailureAbort(); - return; - } - m' := $UpdateMutation(m, SwapVec(v, i, j)); -} - -function {:inline} $1_vector_$swap'$1_fixed_point32_FixedPoint32'(v: Vec ($1_fixed_point32_FixedPoint32), i: int, j: int): Vec ($1_fixed_point32_FixedPoint32) { - SwapVec(v, i, j) -} - -procedure {:inline 1} $1_vector_remove'$1_fixed_point32_FixedPoint32'(m: $Mutation (Vec ($1_fixed_point32_FixedPoint32)), i: int) returns (e: $1_fixed_point32_FixedPoint32, m': $Mutation (Vec ($1_fixed_point32_FixedPoint32))) -{ - var v: Vec ($1_fixed_point32_FixedPoint32); - - v := $Dereference(m); - - if (!InRangeVec(v, i)) { - call $ExecFailureAbort(); - return; - } - e := ReadVec(v, i); - m' := $UpdateMutation(m, RemoveAtVec(v, i)); -} - -procedure {:inline 1} $1_vector_swap_remove'$1_fixed_point32_FixedPoint32'(m: $Mutation (Vec ($1_fixed_point32_FixedPoint32)), i: int) returns (e: $1_fixed_point32_FixedPoint32, m': $Mutation (Vec ($1_fixed_point32_FixedPoint32))) -{ - var len: int; - var v: Vec ($1_fixed_point32_FixedPoint32); - - v := $Dereference(m); - len := LenVec(v); - if (!InRangeVec(v, i)) { - call $ExecFailureAbort(); - return; - } - e := ReadVec(v, i); - m' := $UpdateMutation(m, RemoveVec(SwapVec(v, i, len-1))); -} - -procedure {:inline 1} $1_vector_contains'$1_fixed_point32_FixedPoint32'(v: Vec ($1_fixed_point32_FixedPoint32), e: $1_fixed_point32_FixedPoint32) returns (res: bool) { - res := $ContainsVec'$1_fixed_point32_FixedPoint32'(v, e); -} - -procedure {:inline 1} -$1_vector_index_of'$1_fixed_point32_FixedPoint32'(v: Vec ($1_fixed_point32_FixedPoint32), e: $1_fixed_point32_FixedPoint32) returns (res1: bool, res2: int) { - res2 := $IndexOfVec'$1_fixed_point32_FixedPoint32'(v, e); - if (res2 >= 0) { - res1 := true; - } else { - res1 := false; - res2 := 0; - } -} - - -// ---------------------------------------------------------------------------------- -// Native Vector implementation for element type `$1_optional_aggregator_Integer` - -// Not inlined. It appears faster this way. -function $IsEqual'vec'$1_optional_aggregator_Integer''(v1: Vec ($1_optional_aggregator_Integer), v2: Vec ($1_optional_aggregator_Integer)): bool { - LenVec(v1) == LenVec(v2) && - (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'$1_optional_aggregator_Integer'(ReadVec(v1, i), ReadVec(v2, i))) -} - -// Not inlined. -function $IsPrefix'vec'$1_optional_aggregator_Integer''(v: Vec ($1_optional_aggregator_Integer), prefix: Vec ($1_optional_aggregator_Integer)): bool { - LenVec(v) >= LenVec(prefix) && - (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'$1_optional_aggregator_Integer'(ReadVec(v, i), ReadVec(prefix, i))) -} - -// Not inlined. -function $IsSuffix'vec'$1_optional_aggregator_Integer''(v: Vec ($1_optional_aggregator_Integer), suffix: Vec ($1_optional_aggregator_Integer)): bool { - LenVec(v) >= LenVec(suffix) && - (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'$1_optional_aggregator_Integer'(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) -} - -// Not inlined. -function $IsValid'vec'$1_optional_aggregator_Integer''(v: Vec ($1_optional_aggregator_Integer)): bool { - $IsValid'u64'(LenVec(v)) && - (forall i: int:: InRangeVec(v, i) ==> $IsValid'$1_optional_aggregator_Integer'(ReadVec(v, i))) -} - - -function {:inline} $ContainsVec'$1_optional_aggregator_Integer'(v: Vec ($1_optional_aggregator_Integer), e: $1_optional_aggregator_Integer): bool { - (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_optional_aggregator_Integer'(ReadVec(v, i), e)) -} - -function $IndexOfVec'$1_optional_aggregator_Integer'(v: Vec ($1_optional_aggregator_Integer), e: $1_optional_aggregator_Integer): int; -axiom (forall v: Vec ($1_optional_aggregator_Integer), e: $1_optional_aggregator_Integer:: {$IndexOfVec'$1_optional_aggregator_Integer'(v, e)} - (var i := $IndexOfVec'$1_optional_aggregator_Integer'(v, e); - if (!$ContainsVec'$1_optional_aggregator_Integer'(v, e)) then i == -1 - else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_optional_aggregator_Integer'(ReadVec(v, i), e) && - (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'$1_optional_aggregator_Integer'(ReadVec(v, j), e)))); - - -function {:inline} $RangeVec'$1_optional_aggregator_Integer'(v: Vec ($1_optional_aggregator_Integer)): $Range { - $Range(0, LenVec(v)) -} - - -function {:inline} $EmptyVec'$1_optional_aggregator_Integer'(): Vec ($1_optional_aggregator_Integer) { - EmptyVec() -} - -procedure {:inline 1} $1_vector_empty'$1_optional_aggregator_Integer'() returns (v: Vec ($1_optional_aggregator_Integer)) { - v := EmptyVec(); -} - -function {:inline} $1_vector_$empty'$1_optional_aggregator_Integer'(): Vec ($1_optional_aggregator_Integer) { - EmptyVec() -} - -procedure {:inline 1} $1_vector_is_empty'$1_optional_aggregator_Integer'(v: Vec ($1_optional_aggregator_Integer)) returns (b: bool) { - b := IsEmptyVec(v); -} - -procedure {:inline 1} $1_vector_push_back'$1_optional_aggregator_Integer'(m: $Mutation (Vec ($1_optional_aggregator_Integer)), val: $1_optional_aggregator_Integer) returns (m': $Mutation (Vec ($1_optional_aggregator_Integer))) { - m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); -} - -function {:inline} $1_vector_$push_back'$1_optional_aggregator_Integer'(v: Vec ($1_optional_aggregator_Integer), val: $1_optional_aggregator_Integer): Vec ($1_optional_aggregator_Integer) { - ExtendVec(v, val) -} - -procedure {:inline 1} $1_vector_pop_back'$1_optional_aggregator_Integer'(m: $Mutation (Vec ($1_optional_aggregator_Integer))) returns (e: $1_optional_aggregator_Integer, m': $Mutation (Vec ($1_optional_aggregator_Integer))) { - var v: Vec ($1_optional_aggregator_Integer); - var len: int; - v := $Dereference(m); - len := LenVec(v); - if (len == 0) { - call $ExecFailureAbort(); - return; - } - e := ReadVec(v, len-1); - m' := $UpdateMutation(m, RemoveVec(v)); -} - -procedure {:inline 1} $1_vector_append'$1_optional_aggregator_Integer'(m: $Mutation (Vec ($1_optional_aggregator_Integer)), other: Vec ($1_optional_aggregator_Integer)) returns (m': $Mutation (Vec ($1_optional_aggregator_Integer))) { - m' := $UpdateMutation(m, ConcatVec($Dereference(m), other)); -} - -procedure {:inline 1} $1_vector_reverse'$1_optional_aggregator_Integer'(m: $Mutation (Vec ($1_optional_aggregator_Integer))) returns (m': $Mutation (Vec ($1_optional_aggregator_Integer))) { - m' := $UpdateMutation(m, ReverseVec($Dereference(m))); -} - -procedure {:inline 1} $1_vector_reverse_append'$1_optional_aggregator_Integer'(m: $Mutation (Vec ($1_optional_aggregator_Integer)), other: Vec ($1_optional_aggregator_Integer)) returns (m': $Mutation (Vec ($1_optional_aggregator_Integer))) { - m' := $UpdateMutation(m, ConcatVec($Dereference(m), ReverseVec(other))); -} - -procedure {:inline 1} $1_vector_trim_reverse'$1_optional_aggregator_Integer'(m: $Mutation (Vec ($1_optional_aggregator_Integer)), new_len: int) returns (v: (Vec ($1_optional_aggregator_Integer)), m': $Mutation (Vec ($1_optional_aggregator_Integer))) { - var len: int; - v := $Dereference(m); - if (LenVec(v) < new_len) { - call $ExecFailureAbort(); - return; - } - v := SliceVec(v, new_len, LenVec(v)); - v := ReverseVec(v); - m' := $UpdateMutation(m, SliceVec($Dereference(m), 0, new_len)); -} - -procedure {:inline 1} $1_vector_trim'$1_optional_aggregator_Integer'(m: $Mutation (Vec ($1_optional_aggregator_Integer)), new_len: int) returns (v: (Vec ($1_optional_aggregator_Integer)), m': $Mutation (Vec ($1_optional_aggregator_Integer))) { - var len: int; - v := $Dereference(m); - if (LenVec(v) < new_len) { - call $ExecFailureAbort(); - return; - } - v := SliceVec(v, new_len, LenVec(v)); - m' := $UpdateMutation(m, SliceVec($Dereference(m), 0, new_len)); -} - -procedure {:inline 1} $1_vector_reverse_slice'$1_optional_aggregator_Integer'(m: $Mutation (Vec ($1_optional_aggregator_Integer)), left: int, right: int) returns (m': $Mutation (Vec ($1_optional_aggregator_Integer))) { - var left_vec: Vec ($1_optional_aggregator_Integer); - var mid_vec: Vec ($1_optional_aggregator_Integer); - var right_vec: Vec ($1_optional_aggregator_Integer); - var v: Vec ($1_optional_aggregator_Integer); - if (left > right) { - call $ExecFailureAbort(); - return; - } - if (left == right) { - m' := m; - return; - } - v := $Dereference(m); - if (!(right >= 0 && right <= LenVec(v))) { - call $ExecFailureAbort(); - return; - } - left_vec := SliceVec(v, 0, left); - right_vec := SliceVec(v, right, LenVec(v)); - mid_vec := ReverseVec(SliceVec(v, left, right)); - m' := $UpdateMutation(m, ConcatVec(left_vec, ConcatVec(mid_vec, right_vec))); -} - -procedure {:inline 1} $1_vector_rotate'$1_optional_aggregator_Integer'(m: $Mutation (Vec ($1_optional_aggregator_Integer)), rot: int) returns (n: int, m': $Mutation (Vec ($1_optional_aggregator_Integer))) { - var v: Vec ($1_optional_aggregator_Integer); - var len: int; - var left_vec: Vec ($1_optional_aggregator_Integer); - var right_vec: Vec ($1_optional_aggregator_Integer); - v := $Dereference(m); - if (!(rot >= 0 && rot <= LenVec(v))) { - call $ExecFailureAbort(); - return; - } - left_vec := SliceVec(v, 0, rot); - right_vec := SliceVec(v, rot, LenVec(v)); - m' := $UpdateMutation(m, ConcatVec(right_vec, left_vec)); - n := LenVec(v) - rot; -} - -procedure {:inline 1} $1_vector_rotate_slice'$1_optional_aggregator_Integer'(m: $Mutation (Vec ($1_optional_aggregator_Integer)), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec ($1_optional_aggregator_Integer))) { - var left_vec: Vec ($1_optional_aggregator_Integer); - var mid_vec: Vec ($1_optional_aggregator_Integer); - var right_vec: Vec ($1_optional_aggregator_Integer); - var mid_left_vec: Vec ($1_optional_aggregator_Integer); - var mid_right_vec: Vec ($1_optional_aggregator_Integer); - var v: Vec ($1_optional_aggregator_Integer); - v := $Dereference(m); - if (!(left <= rot && rot <= right)) { - call $ExecFailureAbort(); - return; - } - if (!(right >= 0 && right <= LenVec(v))) { - call $ExecFailureAbort(); - return; - } - v := $Dereference(m); - left_vec := SliceVec(v, 0, left); - right_vec := SliceVec(v, right, LenVec(v)); - mid_left_vec := SliceVec(v, left, rot); - mid_right_vec := SliceVec(v, rot, right); - mid_vec := ConcatVec(mid_right_vec, mid_left_vec); - m' := $UpdateMutation(m, ConcatVec(left_vec, ConcatVec(mid_vec, right_vec))); - n := left + (right - rot); -} - -procedure {:inline 1} $1_vector_insert'$1_optional_aggregator_Integer'(m: $Mutation (Vec ($1_optional_aggregator_Integer)), i: int, e: $1_optional_aggregator_Integer) returns (m': $Mutation (Vec ($1_optional_aggregator_Integer))) { - var left_vec: Vec ($1_optional_aggregator_Integer); - var right_vec: Vec ($1_optional_aggregator_Integer); - var v: Vec ($1_optional_aggregator_Integer); - v := $Dereference(m); - if (!(i >= 0 && i <= LenVec(v))) { - call $ExecFailureAbort(); - return; - } - if (i == LenVec(v)) { - m' := $UpdateMutation(m, ExtendVec(v, e)); - } else { - left_vec := ExtendVec(SliceVec(v, 0, i), e); - right_vec := SliceVec(v, i, LenVec(v)); - m' := $UpdateMutation(m, ConcatVec(left_vec, right_vec)); - } -} - -procedure {:inline 1} $1_vector_length'$1_optional_aggregator_Integer'(v: Vec ($1_optional_aggregator_Integer)) returns (l: int) { - l := LenVec(v); -} - -function {:inline} $1_vector_$length'$1_optional_aggregator_Integer'(v: Vec ($1_optional_aggregator_Integer)): int { - LenVec(v) -} - -procedure {:inline 1} $1_vector_borrow'$1_optional_aggregator_Integer'(v: Vec ($1_optional_aggregator_Integer), i: int) returns (dst: $1_optional_aggregator_Integer) { - if (!InRangeVec(v, i)) { - call $ExecFailureAbort(); - return; - } - dst := ReadVec(v, i); -} - -function {:inline} $1_vector_$borrow'$1_optional_aggregator_Integer'(v: Vec ($1_optional_aggregator_Integer), i: int): $1_optional_aggregator_Integer { - ReadVec(v, i) -} - -procedure {:inline 1} $1_vector_borrow_mut'$1_optional_aggregator_Integer'(m: $Mutation (Vec ($1_optional_aggregator_Integer)), index: int) -returns (dst: $Mutation ($1_optional_aggregator_Integer), m': $Mutation (Vec ($1_optional_aggregator_Integer))) -{ - var v: Vec ($1_optional_aggregator_Integer); - v := $Dereference(m); - if (!InRangeVec(v, index)) { - call $ExecFailureAbort(); - return; - } - dst := $Mutation(l#$Mutation(m), ExtendVec(p#$Mutation(m), index), ReadVec(v, index)); - m' := m; -} - -function {:inline} $1_vector_$borrow_mut'$1_optional_aggregator_Integer'(v: Vec ($1_optional_aggregator_Integer), i: int): $1_optional_aggregator_Integer { - ReadVec(v, i) -} - -procedure {:inline 1} $1_vector_destroy_empty'$1_optional_aggregator_Integer'(v: Vec ($1_optional_aggregator_Integer)) { - if (!IsEmptyVec(v)) { - call $ExecFailureAbort(); - } -} - -procedure {:inline 1} $1_vector_swap'$1_optional_aggregator_Integer'(m: $Mutation (Vec ($1_optional_aggregator_Integer)), i: int, j: int) returns (m': $Mutation (Vec ($1_optional_aggregator_Integer))) -{ - var v: Vec ($1_optional_aggregator_Integer); - v := $Dereference(m); - if (!InRangeVec(v, i) || !InRangeVec(v, j)) { - call $ExecFailureAbort(); - return; - } - m' := $UpdateMutation(m, SwapVec(v, i, j)); -} - -function {:inline} $1_vector_$swap'$1_optional_aggregator_Integer'(v: Vec ($1_optional_aggregator_Integer), i: int, j: int): Vec ($1_optional_aggregator_Integer) { - SwapVec(v, i, j) -} - -procedure {:inline 1} $1_vector_remove'$1_optional_aggregator_Integer'(m: $Mutation (Vec ($1_optional_aggregator_Integer)), i: int) returns (e: $1_optional_aggregator_Integer, m': $Mutation (Vec ($1_optional_aggregator_Integer))) -{ - var v: Vec ($1_optional_aggregator_Integer); - - v := $Dereference(m); - - if (!InRangeVec(v, i)) { - call $ExecFailureAbort(); - return; - } - e := ReadVec(v, i); - m' := $UpdateMutation(m, RemoveAtVec(v, i)); -} - -procedure {:inline 1} $1_vector_swap_remove'$1_optional_aggregator_Integer'(m: $Mutation (Vec ($1_optional_aggregator_Integer)), i: int) returns (e: $1_optional_aggregator_Integer, m': $Mutation (Vec ($1_optional_aggregator_Integer))) -{ - var len: int; - var v: Vec ($1_optional_aggregator_Integer); - - v := $Dereference(m); - len := LenVec(v); - if (!InRangeVec(v, i)) { - call $ExecFailureAbort(); - return; - } - e := ReadVec(v, i); - m' := $UpdateMutation(m, RemoveVec(SwapVec(v, i, len-1))); -} - -procedure {:inline 1} $1_vector_contains'$1_optional_aggregator_Integer'(v: Vec ($1_optional_aggregator_Integer), e: $1_optional_aggregator_Integer) returns (res: bool) { - res := $ContainsVec'$1_optional_aggregator_Integer'(v, e); -} - -procedure {:inline 1} -$1_vector_index_of'$1_optional_aggregator_Integer'(v: Vec ($1_optional_aggregator_Integer), e: $1_optional_aggregator_Integer) returns (res1: bool, res2: int) { - res2 := $IndexOfVec'$1_optional_aggregator_Integer'(v, e); - if (res2 >= 0) { - res1 := true; - } else { - res1 := false; - res2 := 0; - } -} - - -// ---------------------------------------------------------------------------------- -// Native Vector implementation for element type `$1_optional_aggregator_OptionalAggregator` - -// Not inlined. It appears faster this way. -function $IsEqual'vec'$1_optional_aggregator_OptionalAggregator''(v1: Vec ($1_optional_aggregator_OptionalAggregator), v2: Vec ($1_optional_aggregator_OptionalAggregator)): bool { - LenVec(v1) == LenVec(v2) && - (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'$1_optional_aggregator_OptionalAggregator'(ReadVec(v1, i), ReadVec(v2, i))) -} - -// Not inlined. -function $IsPrefix'vec'$1_optional_aggregator_OptionalAggregator''(v: Vec ($1_optional_aggregator_OptionalAggregator), prefix: Vec ($1_optional_aggregator_OptionalAggregator)): bool { - LenVec(v) >= LenVec(prefix) && - (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'$1_optional_aggregator_OptionalAggregator'(ReadVec(v, i), ReadVec(prefix, i))) -} - -// Not inlined. -function $IsSuffix'vec'$1_optional_aggregator_OptionalAggregator''(v: Vec ($1_optional_aggregator_OptionalAggregator), suffix: Vec ($1_optional_aggregator_OptionalAggregator)): bool { - LenVec(v) >= LenVec(suffix) && - (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'$1_optional_aggregator_OptionalAggregator'(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) -} - -// Not inlined. -function $IsValid'vec'$1_optional_aggregator_OptionalAggregator''(v: Vec ($1_optional_aggregator_OptionalAggregator)): bool { - $IsValid'u64'(LenVec(v)) && - (forall i: int:: InRangeVec(v, i) ==> $IsValid'$1_optional_aggregator_OptionalAggregator'(ReadVec(v, i))) -} - - -function {:inline} $ContainsVec'$1_optional_aggregator_OptionalAggregator'(v: Vec ($1_optional_aggregator_OptionalAggregator), e: $1_optional_aggregator_OptionalAggregator): bool { - (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_optional_aggregator_OptionalAggregator'(ReadVec(v, i), e)) -} - -function $IndexOfVec'$1_optional_aggregator_OptionalAggregator'(v: Vec ($1_optional_aggregator_OptionalAggregator), e: $1_optional_aggregator_OptionalAggregator): int; -axiom (forall v: Vec ($1_optional_aggregator_OptionalAggregator), e: $1_optional_aggregator_OptionalAggregator:: {$IndexOfVec'$1_optional_aggregator_OptionalAggregator'(v, e)} - (var i := $IndexOfVec'$1_optional_aggregator_OptionalAggregator'(v, e); - if (!$ContainsVec'$1_optional_aggregator_OptionalAggregator'(v, e)) then i == -1 - else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_optional_aggregator_OptionalAggregator'(ReadVec(v, i), e) && - (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'$1_optional_aggregator_OptionalAggregator'(ReadVec(v, j), e)))); - - -function {:inline} $RangeVec'$1_optional_aggregator_OptionalAggregator'(v: Vec ($1_optional_aggregator_OptionalAggregator)): $Range { - $Range(0, LenVec(v)) -} - - -function {:inline} $EmptyVec'$1_optional_aggregator_OptionalAggregator'(): Vec ($1_optional_aggregator_OptionalAggregator) { - EmptyVec() -} - -procedure {:inline 1} $1_vector_empty'$1_optional_aggregator_OptionalAggregator'() returns (v: Vec ($1_optional_aggregator_OptionalAggregator)) { - v := EmptyVec(); -} - -function {:inline} $1_vector_$empty'$1_optional_aggregator_OptionalAggregator'(): Vec ($1_optional_aggregator_OptionalAggregator) { - EmptyVec() -} - -procedure {:inline 1} $1_vector_is_empty'$1_optional_aggregator_OptionalAggregator'(v: Vec ($1_optional_aggregator_OptionalAggregator)) returns (b: bool) { - b := IsEmptyVec(v); -} - -procedure {:inline 1} $1_vector_push_back'$1_optional_aggregator_OptionalAggregator'(m: $Mutation (Vec ($1_optional_aggregator_OptionalAggregator)), val: $1_optional_aggregator_OptionalAggregator) returns (m': $Mutation (Vec ($1_optional_aggregator_OptionalAggregator))) { - m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); -} - -function {:inline} $1_vector_$push_back'$1_optional_aggregator_OptionalAggregator'(v: Vec ($1_optional_aggregator_OptionalAggregator), val: $1_optional_aggregator_OptionalAggregator): Vec ($1_optional_aggregator_OptionalAggregator) { - ExtendVec(v, val) -} - -procedure {:inline 1} $1_vector_pop_back'$1_optional_aggregator_OptionalAggregator'(m: $Mutation (Vec ($1_optional_aggregator_OptionalAggregator))) returns (e: $1_optional_aggregator_OptionalAggregator, m': $Mutation (Vec ($1_optional_aggregator_OptionalAggregator))) { - var v: Vec ($1_optional_aggregator_OptionalAggregator); - var len: int; - v := $Dereference(m); - len := LenVec(v); - if (len == 0) { - call $ExecFailureAbort(); - return; - } - e := ReadVec(v, len-1); - m' := $UpdateMutation(m, RemoveVec(v)); -} - -procedure {:inline 1} $1_vector_append'$1_optional_aggregator_OptionalAggregator'(m: $Mutation (Vec ($1_optional_aggregator_OptionalAggregator)), other: Vec ($1_optional_aggregator_OptionalAggregator)) returns (m': $Mutation (Vec ($1_optional_aggregator_OptionalAggregator))) { - m' := $UpdateMutation(m, ConcatVec($Dereference(m), other)); -} - -procedure {:inline 1} $1_vector_reverse'$1_optional_aggregator_OptionalAggregator'(m: $Mutation (Vec ($1_optional_aggregator_OptionalAggregator))) returns (m': $Mutation (Vec ($1_optional_aggregator_OptionalAggregator))) { - m' := $UpdateMutation(m, ReverseVec($Dereference(m))); -} - -procedure {:inline 1} $1_vector_reverse_append'$1_optional_aggregator_OptionalAggregator'(m: $Mutation (Vec ($1_optional_aggregator_OptionalAggregator)), other: Vec ($1_optional_aggregator_OptionalAggregator)) returns (m': $Mutation (Vec ($1_optional_aggregator_OptionalAggregator))) { - m' := $UpdateMutation(m, ConcatVec($Dereference(m), ReverseVec(other))); -} - -procedure {:inline 1} $1_vector_trim_reverse'$1_optional_aggregator_OptionalAggregator'(m: $Mutation (Vec ($1_optional_aggregator_OptionalAggregator)), new_len: int) returns (v: (Vec ($1_optional_aggregator_OptionalAggregator)), m': $Mutation (Vec ($1_optional_aggregator_OptionalAggregator))) { - var len: int; - v := $Dereference(m); - if (LenVec(v) < new_len) { - call $ExecFailureAbort(); - return; - } - v := SliceVec(v, new_len, LenVec(v)); - v := ReverseVec(v); - m' := $UpdateMutation(m, SliceVec($Dereference(m), 0, new_len)); -} - -procedure {:inline 1} $1_vector_trim'$1_optional_aggregator_OptionalAggregator'(m: $Mutation (Vec ($1_optional_aggregator_OptionalAggregator)), new_len: int) returns (v: (Vec ($1_optional_aggregator_OptionalAggregator)), m': $Mutation (Vec ($1_optional_aggregator_OptionalAggregator))) { - var len: int; - v := $Dereference(m); - if (LenVec(v) < new_len) { - call $ExecFailureAbort(); - return; - } - v := SliceVec(v, new_len, LenVec(v)); - m' := $UpdateMutation(m, SliceVec($Dereference(m), 0, new_len)); -} - -procedure {:inline 1} $1_vector_reverse_slice'$1_optional_aggregator_OptionalAggregator'(m: $Mutation (Vec ($1_optional_aggregator_OptionalAggregator)), left: int, right: int) returns (m': $Mutation (Vec ($1_optional_aggregator_OptionalAggregator))) { - var left_vec: Vec ($1_optional_aggregator_OptionalAggregator); - var mid_vec: Vec ($1_optional_aggregator_OptionalAggregator); - var right_vec: Vec ($1_optional_aggregator_OptionalAggregator); - var v: Vec ($1_optional_aggregator_OptionalAggregator); - if (left > right) { - call $ExecFailureAbort(); - return; - } - if (left == right) { - m' := m; - return; - } - v := $Dereference(m); - if (!(right >= 0 && right <= LenVec(v))) { - call $ExecFailureAbort(); - return; - } - left_vec := SliceVec(v, 0, left); - right_vec := SliceVec(v, right, LenVec(v)); - mid_vec := ReverseVec(SliceVec(v, left, right)); - m' := $UpdateMutation(m, ConcatVec(left_vec, ConcatVec(mid_vec, right_vec))); -} - -procedure {:inline 1} $1_vector_rotate'$1_optional_aggregator_OptionalAggregator'(m: $Mutation (Vec ($1_optional_aggregator_OptionalAggregator)), rot: int) returns (n: int, m': $Mutation (Vec ($1_optional_aggregator_OptionalAggregator))) { - var v: Vec ($1_optional_aggregator_OptionalAggregator); - var len: int; - var left_vec: Vec ($1_optional_aggregator_OptionalAggregator); - var right_vec: Vec ($1_optional_aggregator_OptionalAggregator); - v := $Dereference(m); - if (!(rot >= 0 && rot <= LenVec(v))) { - call $ExecFailureAbort(); - return; - } - left_vec := SliceVec(v, 0, rot); - right_vec := SliceVec(v, rot, LenVec(v)); - m' := $UpdateMutation(m, ConcatVec(right_vec, left_vec)); - n := LenVec(v) - rot; -} - -procedure {:inline 1} $1_vector_rotate_slice'$1_optional_aggregator_OptionalAggregator'(m: $Mutation (Vec ($1_optional_aggregator_OptionalAggregator)), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec ($1_optional_aggregator_OptionalAggregator))) { - var left_vec: Vec ($1_optional_aggregator_OptionalAggregator); - var mid_vec: Vec ($1_optional_aggregator_OptionalAggregator); - var right_vec: Vec ($1_optional_aggregator_OptionalAggregator); - var mid_left_vec: Vec ($1_optional_aggregator_OptionalAggregator); - var mid_right_vec: Vec ($1_optional_aggregator_OptionalAggregator); - var v: Vec ($1_optional_aggregator_OptionalAggregator); - v := $Dereference(m); - if (!(left <= rot && rot <= right)) { - call $ExecFailureAbort(); - return; - } - if (!(right >= 0 && right <= LenVec(v))) { - call $ExecFailureAbort(); - return; - } - v := $Dereference(m); - left_vec := SliceVec(v, 0, left); - right_vec := SliceVec(v, right, LenVec(v)); - mid_left_vec := SliceVec(v, left, rot); - mid_right_vec := SliceVec(v, rot, right); - mid_vec := ConcatVec(mid_right_vec, mid_left_vec); - m' := $UpdateMutation(m, ConcatVec(left_vec, ConcatVec(mid_vec, right_vec))); - n := left + (right - rot); -} - -procedure {:inline 1} $1_vector_insert'$1_optional_aggregator_OptionalAggregator'(m: $Mutation (Vec ($1_optional_aggregator_OptionalAggregator)), i: int, e: $1_optional_aggregator_OptionalAggregator) returns (m': $Mutation (Vec ($1_optional_aggregator_OptionalAggregator))) { - var left_vec: Vec ($1_optional_aggregator_OptionalAggregator); - var right_vec: Vec ($1_optional_aggregator_OptionalAggregator); - var v: Vec ($1_optional_aggregator_OptionalAggregator); - v := $Dereference(m); - if (!(i >= 0 && i <= LenVec(v))) { - call $ExecFailureAbort(); - return; - } - if (i == LenVec(v)) { - m' := $UpdateMutation(m, ExtendVec(v, e)); - } else { - left_vec := ExtendVec(SliceVec(v, 0, i), e); - right_vec := SliceVec(v, i, LenVec(v)); - m' := $UpdateMutation(m, ConcatVec(left_vec, right_vec)); - } -} - -procedure {:inline 1} $1_vector_length'$1_optional_aggregator_OptionalAggregator'(v: Vec ($1_optional_aggregator_OptionalAggregator)) returns (l: int) { - l := LenVec(v); -} - -function {:inline} $1_vector_$length'$1_optional_aggregator_OptionalAggregator'(v: Vec ($1_optional_aggregator_OptionalAggregator)): int { - LenVec(v) -} - -procedure {:inline 1} $1_vector_borrow'$1_optional_aggregator_OptionalAggregator'(v: Vec ($1_optional_aggregator_OptionalAggregator), i: int) returns (dst: $1_optional_aggregator_OptionalAggregator) { - if (!InRangeVec(v, i)) { - call $ExecFailureAbort(); - return; - } - dst := ReadVec(v, i); -} - -function {:inline} $1_vector_$borrow'$1_optional_aggregator_OptionalAggregator'(v: Vec ($1_optional_aggregator_OptionalAggregator), i: int): $1_optional_aggregator_OptionalAggregator { - ReadVec(v, i) -} - -procedure {:inline 1} $1_vector_borrow_mut'$1_optional_aggregator_OptionalAggregator'(m: $Mutation (Vec ($1_optional_aggregator_OptionalAggregator)), index: int) -returns (dst: $Mutation ($1_optional_aggregator_OptionalAggregator), m': $Mutation (Vec ($1_optional_aggregator_OptionalAggregator))) -{ - var v: Vec ($1_optional_aggregator_OptionalAggregator); - v := $Dereference(m); - if (!InRangeVec(v, index)) { - call $ExecFailureAbort(); - return; - } - dst := $Mutation(l#$Mutation(m), ExtendVec(p#$Mutation(m), index), ReadVec(v, index)); - m' := m; -} - -function {:inline} $1_vector_$borrow_mut'$1_optional_aggregator_OptionalAggregator'(v: Vec ($1_optional_aggregator_OptionalAggregator), i: int): $1_optional_aggregator_OptionalAggregator { - ReadVec(v, i) -} - -procedure {:inline 1} $1_vector_destroy_empty'$1_optional_aggregator_OptionalAggregator'(v: Vec ($1_optional_aggregator_OptionalAggregator)) { - if (!IsEmptyVec(v)) { - call $ExecFailureAbort(); - } -} - -procedure {:inline 1} $1_vector_swap'$1_optional_aggregator_OptionalAggregator'(m: $Mutation (Vec ($1_optional_aggregator_OptionalAggregator)), i: int, j: int) returns (m': $Mutation (Vec ($1_optional_aggregator_OptionalAggregator))) -{ - var v: Vec ($1_optional_aggregator_OptionalAggregator); - v := $Dereference(m); - if (!InRangeVec(v, i) || !InRangeVec(v, j)) { - call $ExecFailureAbort(); - return; - } - m' := $UpdateMutation(m, SwapVec(v, i, j)); -} - -function {:inline} $1_vector_$swap'$1_optional_aggregator_OptionalAggregator'(v: Vec ($1_optional_aggregator_OptionalAggregator), i: int, j: int): Vec ($1_optional_aggregator_OptionalAggregator) { - SwapVec(v, i, j) -} - -procedure {:inline 1} $1_vector_remove'$1_optional_aggregator_OptionalAggregator'(m: $Mutation (Vec ($1_optional_aggregator_OptionalAggregator)), i: int) returns (e: $1_optional_aggregator_OptionalAggregator, m': $Mutation (Vec ($1_optional_aggregator_OptionalAggregator))) -{ - var v: Vec ($1_optional_aggregator_OptionalAggregator); - - v := $Dereference(m); - - if (!InRangeVec(v, i)) { - call $ExecFailureAbort(); - return; - } - e := ReadVec(v, i); - m' := $UpdateMutation(m, RemoveAtVec(v, i)); -} - -procedure {:inline 1} $1_vector_swap_remove'$1_optional_aggregator_OptionalAggregator'(m: $Mutation (Vec ($1_optional_aggregator_OptionalAggregator)), i: int) returns (e: $1_optional_aggregator_OptionalAggregator, m': $Mutation (Vec ($1_optional_aggregator_OptionalAggregator))) -{ - var len: int; - var v: Vec ($1_optional_aggregator_OptionalAggregator); - - v := $Dereference(m); - len := LenVec(v); - if (!InRangeVec(v, i)) { - call $ExecFailureAbort(); - return; - } - e := ReadVec(v, i); - m' := $UpdateMutation(m, RemoveVec(SwapVec(v, i, len-1))); -} - -procedure {:inline 1} $1_vector_contains'$1_optional_aggregator_OptionalAggregator'(v: Vec ($1_optional_aggregator_OptionalAggregator), e: $1_optional_aggregator_OptionalAggregator) returns (res: bool) { - res := $ContainsVec'$1_optional_aggregator_OptionalAggregator'(v, e); -} - -procedure {:inline 1} -$1_vector_index_of'$1_optional_aggregator_OptionalAggregator'(v: Vec ($1_optional_aggregator_OptionalAggregator), e: $1_optional_aggregator_OptionalAggregator) returns (res1: bool, res2: int) { - res2 := $IndexOfVec'$1_optional_aggregator_OptionalAggregator'(v, e); - if (res2 >= 0) { - res1 := true; - } else { - res1 := false; - res2 := 0; - } -} - - -// ---------------------------------------------------------------------------------- -// Native Vector implementation for element type `$1_stake_IndividualValidatorPerformance` - -// Not inlined. It appears faster this way. -function $IsEqual'vec'$1_stake_IndividualValidatorPerformance''(v1: Vec ($1_stake_IndividualValidatorPerformance), v2: Vec ($1_stake_IndividualValidatorPerformance)): bool { - LenVec(v1) == LenVec(v2) && - (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'$1_stake_IndividualValidatorPerformance'(ReadVec(v1, i), ReadVec(v2, i))) -} - -// Not inlined. -function $IsPrefix'vec'$1_stake_IndividualValidatorPerformance''(v: Vec ($1_stake_IndividualValidatorPerformance), prefix: Vec ($1_stake_IndividualValidatorPerformance)): bool { - LenVec(v) >= LenVec(prefix) && - (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'$1_stake_IndividualValidatorPerformance'(ReadVec(v, i), ReadVec(prefix, i))) -} - -// Not inlined. -function $IsSuffix'vec'$1_stake_IndividualValidatorPerformance''(v: Vec ($1_stake_IndividualValidatorPerformance), suffix: Vec ($1_stake_IndividualValidatorPerformance)): bool { - LenVec(v) >= LenVec(suffix) && - (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'$1_stake_IndividualValidatorPerformance'(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) -} - -// Not inlined. -function $IsValid'vec'$1_stake_IndividualValidatorPerformance''(v: Vec ($1_stake_IndividualValidatorPerformance)): bool { - $IsValid'u64'(LenVec(v)) && - (forall i: int:: InRangeVec(v, i) ==> $IsValid'$1_stake_IndividualValidatorPerformance'(ReadVec(v, i))) -} - - -function {:inline} $ContainsVec'$1_stake_IndividualValidatorPerformance'(v: Vec ($1_stake_IndividualValidatorPerformance), e: $1_stake_IndividualValidatorPerformance): bool { - (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_stake_IndividualValidatorPerformance'(ReadVec(v, i), e)) -} - -function $IndexOfVec'$1_stake_IndividualValidatorPerformance'(v: Vec ($1_stake_IndividualValidatorPerformance), e: $1_stake_IndividualValidatorPerformance): int; -axiom (forall v: Vec ($1_stake_IndividualValidatorPerformance), e: $1_stake_IndividualValidatorPerformance:: {$IndexOfVec'$1_stake_IndividualValidatorPerformance'(v, e)} - (var i := $IndexOfVec'$1_stake_IndividualValidatorPerformance'(v, e); - if (!$ContainsVec'$1_stake_IndividualValidatorPerformance'(v, e)) then i == -1 - else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_stake_IndividualValidatorPerformance'(ReadVec(v, i), e) && - (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'$1_stake_IndividualValidatorPerformance'(ReadVec(v, j), e)))); - - -function {:inline} $RangeVec'$1_stake_IndividualValidatorPerformance'(v: Vec ($1_stake_IndividualValidatorPerformance)): $Range { - $Range(0, LenVec(v)) -} - - -function {:inline} $EmptyVec'$1_stake_IndividualValidatorPerformance'(): Vec ($1_stake_IndividualValidatorPerformance) { - EmptyVec() -} - -procedure {:inline 1} $1_vector_empty'$1_stake_IndividualValidatorPerformance'() returns (v: Vec ($1_stake_IndividualValidatorPerformance)) { - v := EmptyVec(); -} - -function {:inline} $1_vector_$empty'$1_stake_IndividualValidatorPerformance'(): Vec ($1_stake_IndividualValidatorPerformance) { - EmptyVec() -} - -procedure {:inline 1} $1_vector_is_empty'$1_stake_IndividualValidatorPerformance'(v: Vec ($1_stake_IndividualValidatorPerformance)) returns (b: bool) { - b := IsEmptyVec(v); -} - -procedure {:inline 1} $1_vector_push_back'$1_stake_IndividualValidatorPerformance'(m: $Mutation (Vec ($1_stake_IndividualValidatorPerformance)), val: $1_stake_IndividualValidatorPerformance) returns (m': $Mutation (Vec ($1_stake_IndividualValidatorPerformance))) { - m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); -} - -function {:inline} $1_vector_$push_back'$1_stake_IndividualValidatorPerformance'(v: Vec ($1_stake_IndividualValidatorPerformance), val: $1_stake_IndividualValidatorPerformance): Vec ($1_stake_IndividualValidatorPerformance) { - ExtendVec(v, val) -} - -procedure {:inline 1} $1_vector_pop_back'$1_stake_IndividualValidatorPerformance'(m: $Mutation (Vec ($1_stake_IndividualValidatorPerformance))) returns (e: $1_stake_IndividualValidatorPerformance, m': $Mutation (Vec ($1_stake_IndividualValidatorPerformance))) { - var v: Vec ($1_stake_IndividualValidatorPerformance); - var len: int; - v := $Dereference(m); - len := LenVec(v); - if (len == 0) { - call $ExecFailureAbort(); - return; - } - e := ReadVec(v, len-1); - m' := $UpdateMutation(m, RemoveVec(v)); -} - -procedure {:inline 1} $1_vector_append'$1_stake_IndividualValidatorPerformance'(m: $Mutation (Vec ($1_stake_IndividualValidatorPerformance)), other: Vec ($1_stake_IndividualValidatorPerformance)) returns (m': $Mutation (Vec ($1_stake_IndividualValidatorPerformance))) { - m' := $UpdateMutation(m, ConcatVec($Dereference(m), other)); -} - -procedure {:inline 1} $1_vector_reverse'$1_stake_IndividualValidatorPerformance'(m: $Mutation (Vec ($1_stake_IndividualValidatorPerformance))) returns (m': $Mutation (Vec ($1_stake_IndividualValidatorPerformance))) { - m' := $UpdateMutation(m, ReverseVec($Dereference(m))); -} - -procedure {:inline 1} $1_vector_reverse_append'$1_stake_IndividualValidatorPerformance'(m: $Mutation (Vec ($1_stake_IndividualValidatorPerformance)), other: Vec ($1_stake_IndividualValidatorPerformance)) returns (m': $Mutation (Vec ($1_stake_IndividualValidatorPerformance))) { - m' := $UpdateMutation(m, ConcatVec($Dereference(m), ReverseVec(other))); -} - -procedure {:inline 1} $1_vector_trim_reverse'$1_stake_IndividualValidatorPerformance'(m: $Mutation (Vec ($1_stake_IndividualValidatorPerformance)), new_len: int) returns (v: (Vec ($1_stake_IndividualValidatorPerformance)), m': $Mutation (Vec ($1_stake_IndividualValidatorPerformance))) { - var len: int; - v := $Dereference(m); - if (LenVec(v) < new_len) { - call $ExecFailureAbort(); - return; - } - v := SliceVec(v, new_len, LenVec(v)); - v := ReverseVec(v); - m' := $UpdateMutation(m, SliceVec($Dereference(m), 0, new_len)); -} - -procedure {:inline 1} $1_vector_trim'$1_stake_IndividualValidatorPerformance'(m: $Mutation (Vec ($1_stake_IndividualValidatorPerformance)), new_len: int) returns (v: (Vec ($1_stake_IndividualValidatorPerformance)), m': $Mutation (Vec ($1_stake_IndividualValidatorPerformance))) { - var len: int; - v := $Dereference(m); - if (LenVec(v) < new_len) { - call $ExecFailureAbort(); - return; - } - v := SliceVec(v, new_len, LenVec(v)); - m' := $UpdateMutation(m, SliceVec($Dereference(m), 0, new_len)); -} - -procedure {:inline 1} $1_vector_reverse_slice'$1_stake_IndividualValidatorPerformance'(m: $Mutation (Vec ($1_stake_IndividualValidatorPerformance)), left: int, right: int) returns (m': $Mutation (Vec ($1_stake_IndividualValidatorPerformance))) { - var left_vec: Vec ($1_stake_IndividualValidatorPerformance); - var mid_vec: Vec ($1_stake_IndividualValidatorPerformance); - var right_vec: Vec ($1_stake_IndividualValidatorPerformance); - var v: Vec ($1_stake_IndividualValidatorPerformance); - if (left > right) { - call $ExecFailureAbort(); - return; - } - if (left == right) { - m' := m; - return; - } - v := $Dereference(m); - if (!(right >= 0 && right <= LenVec(v))) { - call $ExecFailureAbort(); - return; - } - left_vec := SliceVec(v, 0, left); - right_vec := SliceVec(v, right, LenVec(v)); - mid_vec := ReverseVec(SliceVec(v, left, right)); - m' := $UpdateMutation(m, ConcatVec(left_vec, ConcatVec(mid_vec, right_vec))); -} - -procedure {:inline 1} $1_vector_rotate'$1_stake_IndividualValidatorPerformance'(m: $Mutation (Vec ($1_stake_IndividualValidatorPerformance)), rot: int) returns (n: int, m': $Mutation (Vec ($1_stake_IndividualValidatorPerformance))) { - var v: Vec ($1_stake_IndividualValidatorPerformance); - var len: int; - var left_vec: Vec ($1_stake_IndividualValidatorPerformance); - var right_vec: Vec ($1_stake_IndividualValidatorPerformance); - v := $Dereference(m); - if (!(rot >= 0 && rot <= LenVec(v))) { - call $ExecFailureAbort(); - return; - } - left_vec := SliceVec(v, 0, rot); - right_vec := SliceVec(v, rot, LenVec(v)); - m' := $UpdateMutation(m, ConcatVec(right_vec, left_vec)); - n := LenVec(v) - rot; -} - -procedure {:inline 1} $1_vector_rotate_slice'$1_stake_IndividualValidatorPerformance'(m: $Mutation (Vec ($1_stake_IndividualValidatorPerformance)), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec ($1_stake_IndividualValidatorPerformance))) { - var left_vec: Vec ($1_stake_IndividualValidatorPerformance); - var mid_vec: Vec ($1_stake_IndividualValidatorPerformance); - var right_vec: Vec ($1_stake_IndividualValidatorPerformance); - var mid_left_vec: Vec ($1_stake_IndividualValidatorPerformance); - var mid_right_vec: Vec ($1_stake_IndividualValidatorPerformance); - var v: Vec ($1_stake_IndividualValidatorPerformance); - v := $Dereference(m); - if (!(left <= rot && rot <= right)) { - call $ExecFailureAbort(); - return; - } - if (!(right >= 0 && right <= LenVec(v))) { - call $ExecFailureAbort(); - return; - } - v := $Dereference(m); - left_vec := SliceVec(v, 0, left); - right_vec := SliceVec(v, right, LenVec(v)); - mid_left_vec := SliceVec(v, left, rot); - mid_right_vec := SliceVec(v, rot, right); - mid_vec := ConcatVec(mid_right_vec, mid_left_vec); - m' := $UpdateMutation(m, ConcatVec(left_vec, ConcatVec(mid_vec, right_vec))); - n := left + (right - rot); -} - -procedure {:inline 1} $1_vector_insert'$1_stake_IndividualValidatorPerformance'(m: $Mutation (Vec ($1_stake_IndividualValidatorPerformance)), i: int, e: $1_stake_IndividualValidatorPerformance) returns (m': $Mutation (Vec ($1_stake_IndividualValidatorPerformance))) { - var left_vec: Vec ($1_stake_IndividualValidatorPerformance); - var right_vec: Vec ($1_stake_IndividualValidatorPerformance); - var v: Vec ($1_stake_IndividualValidatorPerformance); - v := $Dereference(m); - if (!(i >= 0 && i <= LenVec(v))) { - call $ExecFailureAbort(); - return; - } - if (i == LenVec(v)) { - m' := $UpdateMutation(m, ExtendVec(v, e)); - } else { - left_vec := ExtendVec(SliceVec(v, 0, i), e); - right_vec := SliceVec(v, i, LenVec(v)); - m' := $UpdateMutation(m, ConcatVec(left_vec, right_vec)); - } -} - -procedure {:inline 1} $1_vector_length'$1_stake_IndividualValidatorPerformance'(v: Vec ($1_stake_IndividualValidatorPerformance)) returns (l: int) { - l := LenVec(v); -} - -function {:inline} $1_vector_$length'$1_stake_IndividualValidatorPerformance'(v: Vec ($1_stake_IndividualValidatorPerformance)): int { - LenVec(v) -} - -procedure {:inline 1} $1_vector_borrow'$1_stake_IndividualValidatorPerformance'(v: Vec ($1_stake_IndividualValidatorPerformance), i: int) returns (dst: $1_stake_IndividualValidatorPerformance) { - if (!InRangeVec(v, i)) { - call $ExecFailureAbort(); - return; - } - dst := ReadVec(v, i); -} - -function {:inline} $1_vector_$borrow'$1_stake_IndividualValidatorPerformance'(v: Vec ($1_stake_IndividualValidatorPerformance), i: int): $1_stake_IndividualValidatorPerformance { - ReadVec(v, i) -} - -procedure {:inline 1} $1_vector_borrow_mut'$1_stake_IndividualValidatorPerformance'(m: $Mutation (Vec ($1_stake_IndividualValidatorPerformance)), index: int) -returns (dst: $Mutation ($1_stake_IndividualValidatorPerformance), m': $Mutation (Vec ($1_stake_IndividualValidatorPerformance))) -{ - var v: Vec ($1_stake_IndividualValidatorPerformance); - v := $Dereference(m); - if (!InRangeVec(v, index)) { - call $ExecFailureAbort(); - return; - } - dst := $Mutation(l#$Mutation(m), ExtendVec(p#$Mutation(m), index), ReadVec(v, index)); - m' := m; -} - -function {:inline} $1_vector_$borrow_mut'$1_stake_IndividualValidatorPerformance'(v: Vec ($1_stake_IndividualValidatorPerformance), i: int): $1_stake_IndividualValidatorPerformance { - ReadVec(v, i) -} - -procedure {:inline 1} $1_vector_destroy_empty'$1_stake_IndividualValidatorPerformance'(v: Vec ($1_stake_IndividualValidatorPerformance)) { - if (!IsEmptyVec(v)) { - call $ExecFailureAbort(); - } -} - -procedure {:inline 1} $1_vector_swap'$1_stake_IndividualValidatorPerformance'(m: $Mutation (Vec ($1_stake_IndividualValidatorPerformance)), i: int, j: int) returns (m': $Mutation (Vec ($1_stake_IndividualValidatorPerformance))) -{ - var v: Vec ($1_stake_IndividualValidatorPerformance); - v := $Dereference(m); - if (!InRangeVec(v, i) || !InRangeVec(v, j)) { - call $ExecFailureAbort(); - return; - } - m' := $UpdateMutation(m, SwapVec(v, i, j)); -} - -function {:inline} $1_vector_$swap'$1_stake_IndividualValidatorPerformance'(v: Vec ($1_stake_IndividualValidatorPerformance), i: int, j: int): Vec ($1_stake_IndividualValidatorPerformance) { - SwapVec(v, i, j) -} - -procedure {:inline 1} $1_vector_remove'$1_stake_IndividualValidatorPerformance'(m: $Mutation (Vec ($1_stake_IndividualValidatorPerformance)), i: int) returns (e: $1_stake_IndividualValidatorPerformance, m': $Mutation (Vec ($1_stake_IndividualValidatorPerformance))) -{ - var v: Vec ($1_stake_IndividualValidatorPerformance); - - v := $Dereference(m); - - if (!InRangeVec(v, i)) { - call $ExecFailureAbort(); - return; - } - e := ReadVec(v, i); - m' := $UpdateMutation(m, RemoveAtVec(v, i)); -} - -procedure {:inline 1} $1_vector_swap_remove'$1_stake_IndividualValidatorPerformance'(m: $Mutation (Vec ($1_stake_IndividualValidatorPerformance)), i: int) returns (e: $1_stake_IndividualValidatorPerformance, m': $Mutation (Vec ($1_stake_IndividualValidatorPerformance))) -{ - var len: int; - var v: Vec ($1_stake_IndividualValidatorPerformance); - - v := $Dereference(m); - len := LenVec(v); - if (!InRangeVec(v, i)) { - call $ExecFailureAbort(); - return; - } - e := ReadVec(v, i); - m' := $UpdateMutation(m, RemoveVec(SwapVec(v, i, len-1))); -} - -procedure {:inline 1} $1_vector_contains'$1_stake_IndividualValidatorPerformance'(v: Vec ($1_stake_IndividualValidatorPerformance), e: $1_stake_IndividualValidatorPerformance) returns (res: bool) { - res := $ContainsVec'$1_stake_IndividualValidatorPerformance'(v, e); -} - -procedure {:inline 1} -$1_vector_index_of'$1_stake_IndividualValidatorPerformance'(v: Vec ($1_stake_IndividualValidatorPerformance), e: $1_stake_IndividualValidatorPerformance) returns (res1: bool, res2: int) { - res2 := $IndexOfVec'$1_stake_IndividualValidatorPerformance'(v, e); - if (res2 >= 0) { - res1 := true; - } else { - res1 := false; - res2 := 0; - } -} - - -// ---------------------------------------------------------------------------------- -// Native Vector implementation for element type `$1_stake_ValidatorInfo` - -// Not inlined. It appears faster this way. -function $IsEqual'vec'$1_stake_ValidatorInfo''(v1: Vec ($1_stake_ValidatorInfo), v2: Vec ($1_stake_ValidatorInfo)): bool { - LenVec(v1) == LenVec(v2) && - (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'$1_stake_ValidatorInfo'(ReadVec(v1, i), ReadVec(v2, i))) -} - -// Not inlined. -function $IsPrefix'vec'$1_stake_ValidatorInfo''(v: Vec ($1_stake_ValidatorInfo), prefix: Vec ($1_stake_ValidatorInfo)): bool { - LenVec(v) >= LenVec(prefix) && - (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'$1_stake_ValidatorInfo'(ReadVec(v, i), ReadVec(prefix, i))) -} - -// Not inlined. -function $IsSuffix'vec'$1_stake_ValidatorInfo''(v: Vec ($1_stake_ValidatorInfo), suffix: Vec ($1_stake_ValidatorInfo)): bool { - LenVec(v) >= LenVec(suffix) && - (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'$1_stake_ValidatorInfo'(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) -} - -// Not inlined. -function $IsValid'vec'$1_stake_ValidatorInfo''(v: Vec ($1_stake_ValidatorInfo)): bool { - $IsValid'u64'(LenVec(v)) && - (forall i: int:: InRangeVec(v, i) ==> $IsValid'$1_stake_ValidatorInfo'(ReadVec(v, i))) -} - - -function {:inline} $ContainsVec'$1_stake_ValidatorInfo'(v: Vec ($1_stake_ValidatorInfo), e: $1_stake_ValidatorInfo): bool { - (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_stake_ValidatorInfo'(ReadVec(v, i), e)) -} - -function $IndexOfVec'$1_stake_ValidatorInfo'(v: Vec ($1_stake_ValidatorInfo), e: $1_stake_ValidatorInfo): int; -axiom (forall v: Vec ($1_stake_ValidatorInfo), e: $1_stake_ValidatorInfo:: {$IndexOfVec'$1_stake_ValidatorInfo'(v, e)} - (var i := $IndexOfVec'$1_stake_ValidatorInfo'(v, e); - if (!$ContainsVec'$1_stake_ValidatorInfo'(v, e)) then i == -1 - else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_stake_ValidatorInfo'(ReadVec(v, i), e) && - (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'$1_stake_ValidatorInfo'(ReadVec(v, j), e)))); - - -function {:inline} $RangeVec'$1_stake_ValidatorInfo'(v: Vec ($1_stake_ValidatorInfo)): $Range { - $Range(0, LenVec(v)) -} - - -function {:inline} $EmptyVec'$1_stake_ValidatorInfo'(): Vec ($1_stake_ValidatorInfo) { - EmptyVec() -} - -procedure {:inline 1} $1_vector_empty'$1_stake_ValidatorInfo'() returns (v: Vec ($1_stake_ValidatorInfo)) { - v := EmptyVec(); -} - -function {:inline} $1_vector_$empty'$1_stake_ValidatorInfo'(): Vec ($1_stake_ValidatorInfo) { - EmptyVec() -} - -procedure {:inline 1} $1_vector_is_empty'$1_stake_ValidatorInfo'(v: Vec ($1_stake_ValidatorInfo)) returns (b: bool) { - b := IsEmptyVec(v); -} - -procedure {:inline 1} $1_vector_push_back'$1_stake_ValidatorInfo'(m: $Mutation (Vec ($1_stake_ValidatorInfo)), val: $1_stake_ValidatorInfo) returns (m': $Mutation (Vec ($1_stake_ValidatorInfo))) { - m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); -} - -function {:inline} $1_vector_$push_back'$1_stake_ValidatorInfo'(v: Vec ($1_stake_ValidatorInfo), val: $1_stake_ValidatorInfo): Vec ($1_stake_ValidatorInfo) { - ExtendVec(v, val) -} - -procedure {:inline 1} $1_vector_pop_back'$1_stake_ValidatorInfo'(m: $Mutation (Vec ($1_stake_ValidatorInfo))) returns (e: $1_stake_ValidatorInfo, m': $Mutation (Vec ($1_stake_ValidatorInfo))) { - var v: Vec ($1_stake_ValidatorInfo); - var len: int; - v := $Dereference(m); - len := LenVec(v); - if (len == 0) { - call $ExecFailureAbort(); - return; - } - e := ReadVec(v, len-1); - m' := $UpdateMutation(m, RemoveVec(v)); -} - -procedure {:inline 1} $1_vector_append'$1_stake_ValidatorInfo'(m: $Mutation (Vec ($1_stake_ValidatorInfo)), other: Vec ($1_stake_ValidatorInfo)) returns (m': $Mutation (Vec ($1_stake_ValidatorInfo))) { - m' := $UpdateMutation(m, ConcatVec($Dereference(m), other)); -} - -procedure {:inline 1} $1_vector_reverse'$1_stake_ValidatorInfo'(m: $Mutation (Vec ($1_stake_ValidatorInfo))) returns (m': $Mutation (Vec ($1_stake_ValidatorInfo))) { - m' := $UpdateMutation(m, ReverseVec($Dereference(m))); -} - -procedure {:inline 1} $1_vector_reverse_append'$1_stake_ValidatorInfo'(m: $Mutation (Vec ($1_stake_ValidatorInfo)), other: Vec ($1_stake_ValidatorInfo)) returns (m': $Mutation (Vec ($1_stake_ValidatorInfo))) { - m' := $UpdateMutation(m, ConcatVec($Dereference(m), ReverseVec(other))); -} - -procedure {:inline 1} $1_vector_trim_reverse'$1_stake_ValidatorInfo'(m: $Mutation (Vec ($1_stake_ValidatorInfo)), new_len: int) returns (v: (Vec ($1_stake_ValidatorInfo)), m': $Mutation (Vec ($1_stake_ValidatorInfo))) { - var len: int; - v := $Dereference(m); - if (LenVec(v) < new_len) { - call $ExecFailureAbort(); - return; - } - v := SliceVec(v, new_len, LenVec(v)); - v := ReverseVec(v); - m' := $UpdateMutation(m, SliceVec($Dereference(m), 0, new_len)); -} - -procedure {:inline 1} $1_vector_trim'$1_stake_ValidatorInfo'(m: $Mutation (Vec ($1_stake_ValidatorInfo)), new_len: int) returns (v: (Vec ($1_stake_ValidatorInfo)), m': $Mutation (Vec ($1_stake_ValidatorInfo))) { - var len: int; - v := $Dereference(m); - if (LenVec(v) < new_len) { - call $ExecFailureAbort(); - return; - } - v := SliceVec(v, new_len, LenVec(v)); - m' := $UpdateMutation(m, SliceVec($Dereference(m), 0, new_len)); -} - -procedure {:inline 1} $1_vector_reverse_slice'$1_stake_ValidatorInfo'(m: $Mutation (Vec ($1_stake_ValidatorInfo)), left: int, right: int) returns (m': $Mutation (Vec ($1_stake_ValidatorInfo))) { - var left_vec: Vec ($1_stake_ValidatorInfo); - var mid_vec: Vec ($1_stake_ValidatorInfo); - var right_vec: Vec ($1_stake_ValidatorInfo); - var v: Vec ($1_stake_ValidatorInfo); - if (left > right) { - call $ExecFailureAbort(); - return; - } - if (left == right) { - m' := m; - return; - } - v := $Dereference(m); - if (!(right >= 0 && right <= LenVec(v))) { - call $ExecFailureAbort(); - return; - } - left_vec := SliceVec(v, 0, left); - right_vec := SliceVec(v, right, LenVec(v)); - mid_vec := ReverseVec(SliceVec(v, left, right)); - m' := $UpdateMutation(m, ConcatVec(left_vec, ConcatVec(mid_vec, right_vec))); -} - -procedure {:inline 1} $1_vector_rotate'$1_stake_ValidatorInfo'(m: $Mutation (Vec ($1_stake_ValidatorInfo)), rot: int) returns (n: int, m': $Mutation (Vec ($1_stake_ValidatorInfo))) { - var v: Vec ($1_stake_ValidatorInfo); - var len: int; - var left_vec: Vec ($1_stake_ValidatorInfo); - var right_vec: Vec ($1_stake_ValidatorInfo); - v := $Dereference(m); - if (!(rot >= 0 && rot <= LenVec(v))) { - call $ExecFailureAbort(); - return; - } - left_vec := SliceVec(v, 0, rot); - right_vec := SliceVec(v, rot, LenVec(v)); - m' := $UpdateMutation(m, ConcatVec(right_vec, left_vec)); - n := LenVec(v) - rot; -} - -procedure {:inline 1} $1_vector_rotate_slice'$1_stake_ValidatorInfo'(m: $Mutation (Vec ($1_stake_ValidatorInfo)), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec ($1_stake_ValidatorInfo))) { - var left_vec: Vec ($1_stake_ValidatorInfo); - var mid_vec: Vec ($1_stake_ValidatorInfo); - var right_vec: Vec ($1_stake_ValidatorInfo); - var mid_left_vec: Vec ($1_stake_ValidatorInfo); - var mid_right_vec: Vec ($1_stake_ValidatorInfo); - var v: Vec ($1_stake_ValidatorInfo); - v := $Dereference(m); - if (!(left <= rot && rot <= right)) { - call $ExecFailureAbort(); - return; - } - if (!(right >= 0 && right <= LenVec(v))) { - call $ExecFailureAbort(); - return; - } - v := $Dereference(m); - left_vec := SliceVec(v, 0, left); - right_vec := SliceVec(v, right, LenVec(v)); - mid_left_vec := SliceVec(v, left, rot); - mid_right_vec := SliceVec(v, rot, right); - mid_vec := ConcatVec(mid_right_vec, mid_left_vec); - m' := $UpdateMutation(m, ConcatVec(left_vec, ConcatVec(mid_vec, right_vec))); - n := left + (right - rot); -} - -procedure {:inline 1} $1_vector_insert'$1_stake_ValidatorInfo'(m: $Mutation (Vec ($1_stake_ValidatorInfo)), i: int, e: $1_stake_ValidatorInfo) returns (m': $Mutation (Vec ($1_stake_ValidatorInfo))) { - var left_vec: Vec ($1_stake_ValidatorInfo); - var right_vec: Vec ($1_stake_ValidatorInfo); - var v: Vec ($1_stake_ValidatorInfo); - v := $Dereference(m); - if (!(i >= 0 && i <= LenVec(v))) { - call $ExecFailureAbort(); - return; - } - if (i == LenVec(v)) { - m' := $UpdateMutation(m, ExtendVec(v, e)); - } else { - left_vec := ExtendVec(SliceVec(v, 0, i), e); - right_vec := SliceVec(v, i, LenVec(v)); - m' := $UpdateMutation(m, ConcatVec(left_vec, right_vec)); - } -} - -procedure {:inline 1} $1_vector_length'$1_stake_ValidatorInfo'(v: Vec ($1_stake_ValidatorInfo)) returns (l: int) { - l := LenVec(v); -} - -function {:inline} $1_vector_$length'$1_stake_ValidatorInfo'(v: Vec ($1_stake_ValidatorInfo)): int { - LenVec(v) -} - -procedure {:inline 1} $1_vector_borrow'$1_stake_ValidatorInfo'(v: Vec ($1_stake_ValidatorInfo), i: int) returns (dst: $1_stake_ValidatorInfo) { - if (!InRangeVec(v, i)) { - call $ExecFailureAbort(); - return; - } - dst := ReadVec(v, i); -} - -function {:inline} $1_vector_$borrow'$1_stake_ValidatorInfo'(v: Vec ($1_stake_ValidatorInfo), i: int): $1_stake_ValidatorInfo { - ReadVec(v, i) -} - -procedure {:inline 1} $1_vector_borrow_mut'$1_stake_ValidatorInfo'(m: $Mutation (Vec ($1_stake_ValidatorInfo)), index: int) -returns (dst: $Mutation ($1_stake_ValidatorInfo), m': $Mutation (Vec ($1_stake_ValidatorInfo))) -{ - var v: Vec ($1_stake_ValidatorInfo); - v := $Dereference(m); - if (!InRangeVec(v, index)) { - call $ExecFailureAbort(); - return; - } - dst := $Mutation(l#$Mutation(m), ExtendVec(p#$Mutation(m), index), ReadVec(v, index)); - m' := m; -} - -function {:inline} $1_vector_$borrow_mut'$1_stake_ValidatorInfo'(v: Vec ($1_stake_ValidatorInfo), i: int): $1_stake_ValidatorInfo { - ReadVec(v, i) -} - -procedure {:inline 1} $1_vector_destroy_empty'$1_stake_ValidatorInfo'(v: Vec ($1_stake_ValidatorInfo)) { - if (!IsEmptyVec(v)) { - call $ExecFailureAbort(); - } -} - -procedure {:inline 1} $1_vector_swap'$1_stake_ValidatorInfo'(m: $Mutation (Vec ($1_stake_ValidatorInfo)), i: int, j: int) returns (m': $Mutation (Vec ($1_stake_ValidatorInfo))) -{ - var v: Vec ($1_stake_ValidatorInfo); - v := $Dereference(m); - if (!InRangeVec(v, i) || !InRangeVec(v, j)) { - call $ExecFailureAbort(); - return; - } - m' := $UpdateMutation(m, SwapVec(v, i, j)); -} - -function {:inline} $1_vector_$swap'$1_stake_ValidatorInfo'(v: Vec ($1_stake_ValidatorInfo), i: int, j: int): Vec ($1_stake_ValidatorInfo) { - SwapVec(v, i, j) -} - -procedure {:inline 1} $1_vector_remove'$1_stake_ValidatorInfo'(m: $Mutation (Vec ($1_stake_ValidatorInfo)), i: int) returns (e: $1_stake_ValidatorInfo, m': $Mutation (Vec ($1_stake_ValidatorInfo))) -{ - var v: Vec ($1_stake_ValidatorInfo); - - v := $Dereference(m); - - if (!InRangeVec(v, i)) { - call $ExecFailureAbort(); - return; - } - e := ReadVec(v, i); - m' := $UpdateMutation(m, RemoveAtVec(v, i)); -} - -procedure {:inline 1} $1_vector_swap_remove'$1_stake_ValidatorInfo'(m: $Mutation (Vec ($1_stake_ValidatorInfo)), i: int) returns (e: $1_stake_ValidatorInfo, m': $Mutation (Vec ($1_stake_ValidatorInfo))) -{ - var len: int; - var v: Vec ($1_stake_ValidatorInfo); - - v := $Dereference(m); - len := LenVec(v); - if (!InRangeVec(v, i)) { - call $ExecFailureAbort(); - return; - } - e := ReadVec(v, i); - m' := $UpdateMutation(m, RemoveVec(SwapVec(v, i, len-1))); -} - -procedure {:inline 1} $1_vector_contains'$1_stake_ValidatorInfo'(v: Vec ($1_stake_ValidatorInfo), e: $1_stake_ValidatorInfo) returns (res: bool) { - res := $ContainsVec'$1_stake_ValidatorInfo'(v, e); -} - -procedure {:inline 1} -$1_vector_index_of'$1_stake_ValidatorInfo'(v: Vec ($1_stake_ValidatorInfo), e: $1_stake_ValidatorInfo) returns (res1: bool, res2: int) { - res2 := $IndexOfVec'$1_stake_ValidatorInfo'(v, e); - if (res2 >= 0) { - res1 := true; - } else { - res1 := false; - res2 := 0; - } -} - - -// ---------------------------------------------------------------------------------- -// Native Vector implementation for element type `address` - -// Not inlined. It appears faster this way. -function $IsEqual'vec'address''(v1: Vec (int), v2: Vec (int)): bool { - LenVec(v1) == LenVec(v2) && - (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'address'(ReadVec(v1, i), ReadVec(v2, i))) -} - -// Not inlined. -function $IsPrefix'vec'address''(v: Vec (int), prefix: Vec (int)): bool { - LenVec(v) >= LenVec(prefix) && - (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'address'(ReadVec(v, i), ReadVec(prefix, i))) -} - -// Not inlined. -function $IsSuffix'vec'address''(v: Vec (int), suffix: Vec (int)): bool { - LenVec(v) >= LenVec(suffix) && - (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'address'(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) -} - -// Not inlined. -function $IsValid'vec'address''(v: Vec (int)): bool { - $IsValid'u64'(LenVec(v)) && - (forall i: int:: InRangeVec(v, i) ==> $IsValid'address'(ReadVec(v, i))) -} - - -function {:inline} $ContainsVec'address'(v: Vec (int), e: int): bool { - (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'address'(ReadVec(v, i), e)) -} - -function $IndexOfVec'address'(v: Vec (int), e: int): int; -axiom (forall v: Vec (int), e: int:: {$IndexOfVec'address'(v, e)} - (var i := $IndexOfVec'address'(v, e); - if (!$ContainsVec'address'(v, e)) then i == -1 - else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'address'(ReadVec(v, i), e) && - (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'address'(ReadVec(v, j), e)))); - - -function {:inline} $RangeVec'address'(v: Vec (int)): $Range { - $Range(0, LenVec(v)) -} - - -function {:inline} $EmptyVec'address'(): Vec (int) { - EmptyVec() -} - -procedure {:inline 1} $1_vector_empty'address'() returns (v: Vec (int)) { - v := EmptyVec(); -} - -function {:inline} $1_vector_$empty'address'(): Vec (int) { - EmptyVec() -} - -procedure {:inline 1} $1_vector_is_empty'address'(v: Vec (int)) returns (b: bool) { - b := IsEmptyVec(v); -} - -procedure {:inline 1} $1_vector_push_back'address'(m: $Mutation (Vec (int)), val: int) returns (m': $Mutation (Vec (int))) { - m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); -} - -function {:inline} $1_vector_$push_back'address'(v: Vec (int), val: int): Vec (int) { - ExtendVec(v, val) -} - -procedure {:inline 1} $1_vector_pop_back'address'(m: $Mutation (Vec (int))) returns (e: int, m': $Mutation (Vec (int))) { - var v: Vec (int); - var len: int; - v := $Dereference(m); - len := LenVec(v); - if (len == 0) { - call $ExecFailureAbort(); - return; - } - e := ReadVec(v, len-1); - m' := $UpdateMutation(m, RemoveVec(v)); -} - -procedure {:inline 1} $1_vector_append'address'(m: $Mutation (Vec (int)), other: Vec (int)) returns (m': $Mutation (Vec (int))) { - m' := $UpdateMutation(m, ConcatVec($Dereference(m), other)); -} - -procedure {:inline 1} $1_vector_reverse'address'(m: $Mutation (Vec (int))) returns (m': $Mutation (Vec (int))) { - m' := $UpdateMutation(m, ReverseVec($Dereference(m))); -} - -procedure {:inline 1} $1_vector_reverse_append'address'(m: $Mutation (Vec (int)), other: Vec (int)) returns (m': $Mutation (Vec (int))) { - m' := $UpdateMutation(m, ConcatVec($Dereference(m), ReverseVec(other))); -} - -procedure {:inline 1} $1_vector_trim_reverse'address'(m: $Mutation (Vec (int)), new_len: int) returns (v: (Vec (int)), m': $Mutation (Vec (int))) { - var len: int; - v := $Dereference(m); - if (LenVec(v) < new_len) { - call $ExecFailureAbort(); - return; - } - v := SliceVec(v, new_len, LenVec(v)); - v := ReverseVec(v); - m' := $UpdateMutation(m, SliceVec($Dereference(m), 0, new_len)); -} - -procedure {:inline 1} $1_vector_trim'address'(m: $Mutation (Vec (int)), new_len: int) returns (v: (Vec (int)), m': $Mutation (Vec (int))) { - var len: int; - v := $Dereference(m); - if (LenVec(v) < new_len) { - call $ExecFailureAbort(); - return; - } - v := SliceVec(v, new_len, LenVec(v)); - m' := $UpdateMutation(m, SliceVec($Dereference(m), 0, new_len)); -} - -procedure {:inline 1} $1_vector_reverse_slice'address'(m: $Mutation (Vec (int)), left: int, right: int) returns (m': $Mutation (Vec (int))) { - var left_vec: Vec (int); - var mid_vec: Vec (int); - var right_vec: Vec (int); - var v: Vec (int); - if (left > right) { - call $ExecFailureAbort(); - return; - } - if (left == right) { - m' := m; - return; - } - v := $Dereference(m); - if (!(right >= 0 && right <= LenVec(v))) { - call $ExecFailureAbort(); - return; - } - left_vec := SliceVec(v, 0, left); - right_vec := SliceVec(v, right, LenVec(v)); - mid_vec := ReverseVec(SliceVec(v, left, right)); - m' := $UpdateMutation(m, ConcatVec(left_vec, ConcatVec(mid_vec, right_vec))); -} - -procedure {:inline 1} $1_vector_rotate'address'(m: $Mutation (Vec (int)), rot: int) returns (n: int, m': $Mutation (Vec (int))) { - var v: Vec (int); - var len: int; - var left_vec: Vec (int); - var right_vec: Vec (int); - v := $Dereference(m); - if (!(rot >= 0 && rot <= LenVec(v))) { - call $ExecFailureAbort(); - return; - } - left_vec := SliceVec(v, 0, rot); - right_vec := SliceVec(v, rot, LenVec(v)); - m' := $UpdateMutation(m, ConcatVec(right_vec, left_vec)); - n := LenVec(v) - rot; -} - -procedure {:inline 1} $1_vector_rotate_slice'address'(m: $Mutation (Vec (int)), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec (int))) { - var left_vec: Vec (int); - var mid_vec: Vec (int); - var right_vec: Vec (int); - var mid_left_vec: Vec (int); - var mid_right_vec: Vec (int); - var v: Vec (int); - v := $Dereference(m); - if (!(left <= rot && rot <= right)) { - call $ExecFailureAbort(); - return; - } - if (!(right >= 0 && right <= LenVec(v))) { - call $ExecFailureAbort(); - return; - } - v := $Dereference(m); - left_vec := SliceVec(v, 0, left); - right_vec := SliceVec(v, right, LenVec(v)); - mid_left_vec := SliceVec(v, left, rot); - mid_right_vec := SliceVec(v, rot, right); - mid_vec := ConcatVec(mid_right_vec, mid_left_vec); - m' := $UpdateMutation(m, ConcatVec(left_vec, ConcatVec(mid_vec, right_vec))); - n := left + (right - rot); -} - -procedure {:inline 1} $1_vector_insert'address'(m: $Mutation (Vec (int)), i: int, e: int) returns (m': $Mutation (Vec (int))) { - var left_vec: Vec (int); - var right_vec: Vec (int); - var v: Vec (int); - v := $Dereference(m); - if (!(i >= 0 && i <= LenVec(v))) { - call $ExecFailureAbort(); - return; - } - if (i == LenVec(v)) { - m' := $UpdateMutation(m, ExtendVec(v, e)); - } else { - left_vec := ExtendVec(SliceVec(v, 0, i), e); - right_vec := SliceVec(v, i, LenVec(v)); - m' := $UpdateMutation(m, ConcatVec(left_vec, right_vec)); - } -} - -procedure {:inline 1} $1_vector_length'address'(v: Vec (int)) returns (l: int) { - l := LenVec(v); -} - -function {:inline} $1_vector_$length'address'(v: Vec (int)): int { - LenVec(v) -} - -procedure {:inline 1} $1_vector_borrow'address'(v: Vec (int), i: int) returns (dst: int) { - if (!InRangeVec(v, i)) { - call $ExecFailureAbort(); - return; - } - dst := ReadVec(v, i); -} - -function {:inline} $1_vector_$borrow'address'(v: Vec (int), i: int): int { - ReadVec(v, i) -} - -procedure {:inline 1} $1_vector_borrow_mut'address'(m: $Mutation (Vec (int)), index: int) -returns (dst: $Mutation (int), m': $Mutation (Vec (int))) -{ - var v: Vec (int); - v := $Dereference(m); - if (!InRangeVec(v, index)) { - call $ExecFailureAbort(); - return; - } - dst := $Mutation(l#$Mutation(m), ExtendVec(p#$Mutation(m), index), ReadVec(v, index)); - m' := m; -} - -function {:inline} $1_vector_$borrow_mut'address'(v: Vec (int), i: int): int { - ReadVec(v, i) -} - -procedure {:inline 1} $1_vector_destroy_empty'address'(v: Vec (int)) { - if (!IsEmptyVec(v)) { - call $ExecFailureAbort(); - } -} - -procedure {:inline 1} $1_vector_swap'address'(m: $Mutation (Vec (int)), i: int, j: int) returns (m': $Mutation (Vec (int))) -{ - var v: Vec (int); - v := $Dereference(m); - if (!InRangeVec(v, i) || !InRangeVec(v, j)) { - call $ExecFailureAbort(); - return; - } - m' := $UpdateMutation(m, SwapVec(v, i, j)); -} - -function {:inline} $1_vector_$swap'address'(v: Vec (int), i: int, j: int): Vec (int) { - SwapVec(v, i, j) -} - -procedure {:inline 1} $1_vector_remove'address'(m: $Mutation (Vec (int)), i: int) returns (e: int, m': $Mutation (Vec (int))) -{ - var v: Vec (int); - - v := $Dereference(m); - - if (!InRangeVec(v, i)) { - call $ExecFailureAbort(); - return; - } - e := ReadVec(v, i); - m' := $UpdateMutation(m, RemoveAtVec(v, i)); -} - -procedure {:inline 1} $1_vector_swap_remove'address'(m: $Mutation (Vec (int)), i: int) returns (e: int, m': $Mutation (Vec (int))) -{ - var len: int; - var v: Vec (int); - - v := $Dereference(m); - len := LenVec(v); - if (!InRangeVec(v, i)) { - call $ExecFailureAbort(); - return; - } - e := ReadVec(v, i); - m' := $UpdateMutation(m, RemoveVec(SwapVec(v, i, len-1))); -} - -procedure {:inline 1} $1_vector_contains'address'(v: Vec (int), e: int) returns (res: bool) { - res := $ContainsVec'address'(v, e); -} - -procedure {:inline 1} -$1_vector_index_of'address'(v: Vec (int), e: int) returns (res1: bool, res2: int) { - res2 := $IndexOfVec'address'(v, e); - if (res2 >= 0) { - res1 := true; - } else { - res1 := false; - res2 := 0; - } -} - - -// ---------------------------------------------------------------------------------- -// Native Vector implementation for element type `u8` - -// Not inlined. It appears faster this way. -function $IsEqual'vec'u8''(v1: Vec (int), v2: Vec (int)): bool { - LenVec(v1) == LenVec(v2) && - (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'u8'(ReadVec(v1, i), ReadVec(v2, i))) -} - -// Not inlined. -function $IsPrefix'vec'u8''(v: Vec (int), prefix: Vec (int)): bool { - LenVec(v) >= LenVec(prefix) && - (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'u8'(ReadVec(v, i), ReadVec(prefix, i))) -} - -// Not inlined. -function $IsSuffix'vec'u8''(v: Vec (int), suffix: Vec (int)): bool { - LenVec(v) >= LenVec(suffix) && - (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'u8'(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) -} - -// Not inlined. -function $IsValid'vec'u8''(v: Vec (int)): bool { - $IsValid'u64'(LenVec(v)) && - (forall i: int:: InRangeVec(v, i) ==> $IsValid'u8'(ReadVec(v, i))) -} - - -function {:inline} $ContainsVec'u8'(v: Vec (int), e: int): bool { - (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'u8'(ReadVec(v, i), e)) -} - -function $IndexOfVec'u8'(v: Vec (int), e: int): int; -axiom (forall v: Vec (int), e: int:: {$IndexOfVec'u8'(v, e)} - (var i := $IndexOfVec'u8'(v, e); - if (!$ContainsVec'u8'(v, e)) then i == -1 - else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'u8'(ReadVec(v, i), e) && - (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'u8'(ReadVec(v, j), e)))); - - -function {:inline} $RangeVec'u8'(v: Vec (int)): $Range { - $Range(0, LenVec(v)) -} - - -function {:inline} $EmptyVec'u8'(): Vec (int) { - EmptyVec() -} - -procedure {:inline 1} $1_vector_empty'u8'() returns (v: Vec (int)) { - v := EmptyVec(); -} - -function {:inline} $1_vector_$empty'u8'(): Vec (int) { - EmptyVec() -} - -procedure {:inline 1} $1_vector_is_empty'u8'(v: Vec (int)) returns (b: bool) { - b := IsEmptyVec(v); -} - -procedure {:inline 1} $1_vector_push_back'u8'(m: $Mutation (Vec (int)), val: int) returns (m': $Mutation (Vec (int))) { - m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); -} - -function {:inline} $1_vector_$push_back'u8'(v: Vec (int), val: int): Vec (int) { - ExtendVec(v, val) -} - -procedure {:inline 1} $1_vector_pop_back'u8'(m: $Mutation (Vec (int))) returns (e: int, m': $Mutation (Vec (int))) { - var v: Vec (int); - var len: int; - v := $Dereference(m); - len := LenVec(v); - if (len == 0) { - call $ExecFailureAbort(); - return; - } - e := ReadVec(v, len-1); - m' := $UpdateMutation(m, RemoveVec(v)); -} - -procedure {:inline 1} $1_vector_append'u8'(m: $Mutation (Vec (int)), other: Vec (int)) returns (m': $Mutation (Vec (int))) { - m' := $UpdateMutation(m, ConcatVec($Dereference(m), other)); -} - -procedure {:inline 1} $1_vector_reverse'u8'(m: $Mutation (Vec (int))) returns (m': $Mutation (Vec (int))) { - m' := $UpdateMutation(m, ReverseVec($Dereference(m))); -} - -procedure {:inline 1} $1_vector_reverse_append'u8'(m: $Mutation (Vec (int)), other: Vec (int)) returns (m': $Mutation (Vec (int))) { - m' := $UpdateMutation(m, ConcatVec($Dereference(m), ReverseVec(other))); -} - -procedure {:inline 1} $1_vector_trim_reverse'u8'(m: $Mutation (Vec (int)), new_len: int) returns (v: (Vec (int)), m': $Mutation (Vec (int))) { - var len: int; - v := $Dereference(m); - if (LenVec(v) < new_len) { - call $ExecFailureAbort(); - return; - } - v := SliceVec(v, new_len, LenVec(v)); - v := ReverseVec(v); - m' := $UpdateMutation(m, SliceVec($Dereference(m), 0, new_len)); -} - -procedure {:inline 1} $1_vector_trim'u8'(m: $Mutation (Vec (int)), new_len: int) returns (v: (Vec (int)), m': $Mutation (Vec (int))) { - var len: int; - v := $Dereference(m); - if (LenVec(v) < new_len) { - call $ExecFailureAbort(); - return; - } - v := SliceVec(v, new_len, LenVec(v)); - m' := $UpdateMutation(m, SliceVec($Dereference(m), 0, new_len)); -} - -procedure {:inline 1} $1_vector_reverse_slice'u8'(m: $Mutation (Vec (int)), left: int, right: int) returns (m': $Mutation (Vec (int))) { - var left_vec: Vec (int); - var mid_vec: Vec (int); - var right_vec: Vec (int); - var v: Vec (int); - if (left > right) { - call $ExecFailureAbort(); - return; - } - if (left == right) { - m' := m; - return; - } - v := $Dereference(m); - if (!(right >= 0 && right <= LenVec(v))) { - call $ExecFailureAbort(); - return; - } - left_vec := SliceVec(v, 0, left); - right_vec := SliceVec(v, right, LenVec(v)); - mid_vec := ReverseVec(SliceVec(v, left, right)); - m' := $UpdateMutation(m, ConcatVec(left_vec, ConcatVec(mid_vec, right_vec))); -} - -procedure {:inline 1} $1_vector_rotate'u8'(m: $Mutation (Vec (int)), rot: int) returns (n: int, m': $Mutation (Vec (int))) { - var v: Vec (int); - var len: int; - var left_vec: Vec (int); - var right_vec: Vec (int); - v := $Dereference(m); - if (!(rot >= 0 && rot <= LenVec(v))) { - call $ExecFailureAbort(); - return; - } - left_vec := SliceVec(v, 0, rot); - right_vec := SliceVec(v, rot, LenVec(v)); - m' := $UpdateMutation(m, ConcatVec(right_vec, left_vec)); - n := LenVec(v) - rot; -} - -procedure {:inline 1} $1_vector_rotate_slice'u8'(m: $Mutation (Vec (int)), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec (int))) { - var left_vec: Vec (int); - var mid_vec: Vec (int); - var right_vec: Vec (int); - var mid_left_vec: Vec (int); - var mid_right_vec: Vec (int); - var v: Vec (int); - v := $Dereference(m); - if (!(left <= rot && rot <= right)) { - call $ExecFailureAbort(); - return; - } - if (!(right >= 0 && right <= LenVec(v))) { - call $ExecFailureAbort(); - return; - } - v := $Dereference(m); - left_vec := SliceVec(v, 0, left); - right_vec := SliceVec(v, right, LenVec(v)); - mid_left_vec := SliceVec(v, left, rot); - mid_right_vec := SliceVec(v, rot, right); - mid_vec := ConcatVec(mid_right_vec, mid_left_vec); - m' := $UpdateMutation(m, ConcatVec(left_vec, ConcatVec(mid_vec, right_vec))); - n := left + (right - rot); -} - -procedure {:inline 1} $1_vector_insert'u8'(m: $Mutation (Vec (int)), i: int, e: int) returns (m': $Mutation (Vec (int))) { - var left_vec: Vec (int); - var right_vec: Vec (int); - var v: Vec (int); - v := $Dereference(m); - if (!(i >= 0 && i <= LenVec(v))) { - call $ExecFailureAbort(); - return; - } - if (i == LenVec(v)) { - m' := $UpdateMutation(m, ExtendVec(v, e)); - } else { - left_vec := ExtendVec(SliceVec(v, 0, i), e); - right_vec := SliceVec(v, i, LenVec(v)); - m' := $UpdateMutation(m, ConcatVec(left_vec, right_vec)); - } -} - -procedure {:inline 1} $1_vector_length'u8'(v: Vec (int)) returns (l: int) { - l := LenVec(v); -} - -function {:inline} $1_vector_$length'u8'(v: Vec (int)): int { - LenVec(v) -} - -procedure {:inline 1} $1_vector_borrow'u8'(v: Vec (int), i: int) returns (dst: int) { - if (!InRangeVec(v, i)) { - call $ExecFailureAbort(); - return; - } - dst := ReadVec(v, i); -} - -function {:inline} $1_vector_$borrow'u8'(v: Vec (int), i: int): int { - ReadVec(v, i) -} - -procedure {:inline 1} $1_vector_borrow_mut'u8'(m: $Mutation (Vec (int)), index: int) -returns (dst: $Mutation (int), m': $Mutation (Vec (int))) -{ - var v: Vec (int); - v := $Dereference(m); - if (!InRangeVec(v, index)) { - call $ExecFailureAbort(); - return; - } - dst := $Mutation(l#$Mutation(m), ExtendVec(p#$Mutation(m), index), ReadVec(v, index)); - m' := m; -} - -function {:inline} $1_vector_$borrow_mut'u8'(v: Vec (int), i: int): int { - ReadVec(v, i) -} - -procedure {:inline 1} $1_vector_destroy_empty'u8'(v: Vec (int)) { - if (!IsEmptyVec(v)) { - call $ExecFailureAbort(); - } -} - -procedure {:inline 1} $1_vector_swap'u8'(m: $Mutation (Vec (int)), i: int, j: int) returns (m': $Mutation (Vec (int))) -{ - var v: Vec (int); - v := $Dereference(m); - if (!InRangeVec(v, i) || !InRangeVec(v, j)) { - call $ExecFailureAbort(); - return; - } - m' := $UpdateMutation(m, SwapVec(v, i, j)); -} - -function {:inline} $1_vector_$swap'u8'(v: Vec (int), i: int, j: int): Vec (int) { - SwapVec(v, i, j) -} - -procedure {:inline 1} $1_vector_remove'u8'(m: $Mutation (Vec (int)), i: int) returns (e: int, m': $Mutation (Vec (int))) -{ - var v: Vec (int); - - v := $Dereference(m); - - if (!InRangeVec(v, i)) { - call $ExecFailureAbort(); - return; - } - e := ReadVec(v, i); - m' := $UpdateMutation(m, RemoveAtVec(v, i)); -} - -procedure {:inline 1} $1_vector_swap_remove'u8'(m: $Mutation (Vec (int)), i: int) returns (e: int, m': $Mutation (Vec (int))) -{ - var len: int; - var v: Vec (int); - - v := $Dereference(m); - len := LenVec(v); - if (!InRangeVec(v, i)) { - call $ExecFailureAbort(); - return; - } - e := ReadVec(v, i); - m' := $UpdateMutation(m, RemoveVec(SwapVec(v, i, len-1))); -} - -procedure {:inline 1} $1_vector_contains'u8'(v: Vec (int), e: int) returns (res: bool) { - res := $ContainsVec'u8'(v, e); -} - -procedure {:inline 1} -$1_vector_index_of'u8'(v: Vec (int), e: int) returns (res1: bool, res2: int) { - res2 := $IndexOfVec'u8'(v, e); - if (res2 >= 0) { - res1 := true; - } else { - res1 := false; - res2 := 0; - } -} - - -// ---------------------------------------------------------------------------------- -// Native Vector implementation for element type `bv8` - -// Not inlined. It appears faster this way. -function $IsEqual'vec'bv8''(v1: Vec (bv8), v2: Vec (bv8)): bool { - LenVec(v1) == LenVec(v2) && - (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'bv8'(ReadVec(v1, i), ReadVec(v2, i))) -} - -// Not inlined. -function $IsPrefix'vec'bv8''(v: Vec (bv8), prefix: Vec (bv8)): bool { - LenVec(v) >= LenVec(prefix) && - (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'bv8'(ReadVec(v, i), ReadVec(prefix, i))) -} - -// Not inlined. -function $IsSuffix'vec'bv8''(v: Vec (bv8), suffix: Vec (bv8)): bool { - LenVec(v) >= LenVec(suffix) && - (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'bv8'(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) -} - -// Not inlined. -function $IsValid'vec'bv8''(v: Vec (bv8)): bool { - $IsValid'u64'(LenVec(v)) && - (forall i: int:: InRangeVec(v, i) ==> $IsValid'bv8'(ReadVec(v, i))) -} - - -function {:inline} $ContainsVec'bv8'(v: Vec (bv8), e: bv8): bool { - (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'bv8'(ReadVec(v, i), e)) -} - -function $IndexOfVec'bv8'(v: Vec (bv8), e: bv8): int; -axiom (forall v: Vec (bv8), e: bv8:: {$IndexOfVec'bv8'(v, e)} - (var i := $IndexOfVec'bv8'(v, e); - if (!$ContainsVec'bv8'(v, e)) then i == -1 - else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'bv8'(ReadVec(v, i), e) && - (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'bv8'(ReadVec(v, j), e)))); - - -function {:inline} $RangeVec'bv8'(v: Vec (bv8)): $Range { - $Range(0, LenVec(v)) -} - - -function {:inline} $EmptyVec'bv8'(): Vec (bv8) { - EmptyVec() -} - -procedure {:inline 1} $1_vector_empty'bv8'() returns (v: Vec (bv8)) { - v := EmptyVec(); -} - -function {:inline} $1_vector_$empty'bv8'(): Vec (bv8) { - EmptyVec() -} - -procedure {:inline 1} $1_vector_is_empty'bv8'(v: Vec (bv8)) returns (b: bool) { - b := IsEmptyVec(v); -} - -procedure {:inline 1} $1_vector_push_back'bv8'(m: $Mutation (Vec (bv8)), val: bv8) returns (m': $Mutation (Vec (bv8))) { - m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); -} - -function {:inline} $1_vector_$push_back'bv8'(v: Vec (bv8), val: bv8): Vec (bv8) { - ExtendVec(v, val) -} - -procedure {:inline 1} $1_vector_pop_back'bv8'(m: $Mutation (Vec (bv8))) returns (e: bv8, m': $Mutation (Vec (bv8))) { - var v: Vec (bv8); - var len: int; - v := $Dereference(m); - len := LenVec(v); - if (len == 0) { - call $ExecFailureAbort(); - return; - } - e := ReadVec(v, len-1); - m' := $UpdateMutation(m, RemoveVec(v)); -} - -procedure {:inline 1} $1_vector_append'bv8'(m: $Mutation (Vec (bv8)), other: Vec (bv8)) returns (m': $Mutation (Vec (bv8))) { - m' := $UpdateMutation(m, ConcatVec($Dereference(m), other)); -} - -procedure {:inline 1} $1_vector_reverse'bv8'(m: $Mutation (Vec (bv8))) returns (m': $Mutation (Vec (bv8))) { - m' := $UpdateMutation(m, ReverseVec($Dereference(m))); -} - -procedure {:inline 1} $1_vector_reverse_append'bv8'(m: $Mutation (Vec (bv8)), other: Vec (bv8)) returns (m': $Mutation (Vec (bv8))) { - m' := $UpdateMutation(m, ConcatVec($Dereference(m), ReverseVec(other))); -} - -procedure {:inline 1} $1_vector_trim_reverse'bv8'(m: $Mutation (Vec (bv8)), new_len: int) returns (v: (Vec (bv8)), m': $Mutation (Vec (bv8))) { - var len: int; - v := $Dereference(m); - if (LenVec(v) < new_len) { - call $ExecFailureAbort(); - return; - } - v := SliceVec(v, new_len, LenVec(v)); - v := ReverseVec(v); - m' := $UpdateMutation(m, SliceVec($Dereference(m), 0, new_len)); -} - -procedure {:inline 1} $1_vector_trim'bv8'(m: $Mutation (Vec (bv8)), new_len: int) returns (v: (Vec (bv8)), m': $Mutation (Vec (bv8))) { - var len: int; - v := $Dereference(m); - if (LenVec(v) < new_len) { - call $ExecFailureAbort(); - return; - } - v := SliceVec(v, new_len, LenVec(v)); - m' := $UpdateMutation(m, SliceVec($Dereference(m), 0, new_len)); -} - -procedure {:inline 1} $1_vector_reverse_slice'bv8'(m: $Mutation (Vec (bv8)), left: int, right: int) returns (m': $Mutation (Vec (bv8))) { - var left_vec: Vec (bv8); - var mid_vec: Vec (bv8); - var right_vec: Vec (bv8); - var v: Vec (bv8); - if (left > right) { - call $ExecFailureAbort(); - return; - } - if (left == right) { - m' := m; - return; - } - v := $Dereference(m); - if (!(right >= 0 && right <= LenVec(v))) { - call $ExecFailureAbort(); - return; - } - left_vec := SliceVec(v, 0, left); - right_vec := SliceVec(v, right, LenVec(v)); - mid_vec := ReverseVec(SliceVec(v, left, right)); - m' := $UpdateMutation(m, ConcatVec(left_vec, ConcatVec(mid_vec, right_vec))); -} - -procedure {:inline 1} $1_vector_rotate'bv8'(m: $Mutation (Vec (bv8)), rot: int) returns (n: int, m': $Mutation (Vec (bv8))) { - var v: Vec (bv8); - var len: int; - var left_vec: Vec (bv8); - var right_vec: Vec (bv8); - v := $Dereference(m); - if (!(rot >= 0 && rot <= LenVec(v))) { - call $ExecFailureAbort(); - return; - } - left_vec := SliceVec(v, 0, rot); - right_vec := SliceVec(v, rot, LenVec(v)); - m' := $UpdateMutation(m, ConcatVec(right_vec, left_vec)); - n := LenVec(v) - rot; -} - -procedure {:inline 1} $1_vector_rotate_slice'bv8'(m: $Mutation (Vec (bv8)), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec (bv8))) { - var left_vec: Vec (bv8); - var mid_vec: Vec (bv8); - var right_vec: Vec (bv8); - var mid_left_vec: Vec (bv8); - var mid_right_vec: Vec (bv8); - var v: Vec (bv8); - v := $Dereference(m); - if (!(left <= rot && rot <= right)) { - call $ExecFailureAbort(); - return; - } - if (!(right >= 0 && right <= LenVec(v))) { - call $ExecFailureAbort(); - return; - } - v := $Dereference(m); - left_vec := SliceVec(v, 0, left); - right_vec := SliceVec(v, right, LenVec(v)); - mid_left_vec := SliceVec(v, left, rot); - mid_right_vec := SliceVec(v, rot, right); - mid_vec := ConcatVec(mid_right_vec, mid_left_vec); - m' := $UpdateMutation(m, ConcatVec(left_vec, ConcatVec(mid_vec, right_vec))); - n := left + (right - rot); -} - -procedure {:inline 1} $1_vector_insert'bv8'(m: $Mutation (Vec (bv8)), i: int, e: bv8) returns (m': $Mutation (Vec (bv8))) { - var left_vec: Vec (bv8); - var right_vec: Vec (bv8); - var v: Vec (bv8); - v := $Dereference(m); - if (!(i >= 0 && i <= LenVec(v))) { - call $ExecFailureAbort(); - return; - } - if (i == LenVec(v)) { - m' := $UpdateMutation(m, ExtendVec(v, e)); - } else { - left_vec := ExtendVec(SliceVec(v, 0, i), e); - right_vec := SliceVec(v, i, LenVec(v)); - m' := $UpdateMutation(m, ConcatVec(left_vec, right_vec)); - } -} - -procedure {:inline 1} $1_vector_length'bv8'(v: Vec (bv8)) returns (l: int) { - l := LenVec(v); -} - -function {:inline} $1_vector_$length'bv8'(v: Vec (bv8)): int { - LenVec(v) -} - -procedure {:inline 1} $1_vector_borrow'bv8'(v: Vec (bv8), i: int) returns (dst: bv8) { - if (!InRangeVec(v, i)) { - call $ExecFailureAbort(); - return; - } - dst := ReadVec(v, i); -} - -function {:inline} $1_vector_$borrow'bv8'(v: Vec (bv8), i: int): bv8 { - ReadVec(v, i) -} - -procedure {:inline 1} $1_vector_borrow_mut'bv8'(m: $Mutation (Vec (bv8)), index: int) -returns (dst: $Mutation (bv8), m': $Mutation (Vec (bv8))) -{ - var v: Vec (bv8); - v := $Dereference(m); - if (!InRangeVec(v, index)) { - call $ExecFailureAbort(); - return; - } - dst := $Mutation(l#$Mutation(m), ExtendVec(p#$Mutation(m), index), ReadVec(v, index)); - m' := m; -} - -function {:inline} $1_vector_$borrow_mut'bv8'(v: Vec (bv8), i: int): bv8 { - ReadVec(v, i) -} - -procedure {:inline 1} $1_vector_destroy_empty'bv8'(v: Vec (bv8)) { - if (!IsEmptyVec(v)) { - call $ExecFailureAbort(); - } -} - -procedure {:inline 1} $1_vector_swap'bv8'(m: $Mutation (Vec (bv8)), i: int, j: int) returns (m': $Mutation (Vec (bv8))) -{ - var v: Vec (bv8); - v := $Dereference(m); - if (!InRangeVec(v, i) || !InRangeVec(v, j)) { - call $ExecFailureAbort(); - return; - } - m' := $UpdateMutation(m, SwapVec(v, i, j)); -} - -function {:inline} $1_vector_$swap'bv8'(v: Vec (bv8), i: int, j: int): Vec (bv8) { - SwapVec(v, i, j) -} - -procedure {:inline 1} $1_vector_remove'bv8'(m: $Mutation (Vec (bv8)), i: int) returns (e: bv8, m': $Mutation (Vec (bv8))) -{ - var v: Vec (bv8); - - v := $Dereference(m); - - if (!InRangeVec(v, i)) { - call $ExecFailureAbort(); - return; - } - e := ReadVec(v, i); - m' := $UpdateMutation(m, RemoveAtVec(v, i)); -} - -procedure {:inline 1} $1_vector_swap_remove'bv8'(m: $Mutation (Vec (bv8)), i: int) returns (e: bv8, m': $Mutation (Vec (bv8))) -{ - var len: int; - var v: Vec (bv8); - - v := $Dereference(m); - len := LenVec(v); - if (!InRangeVec(v, i)) { - call $ExecFailureAbort(); - return; - } - e := ReadVec(v, i); - m' := $UpdateMutation(m, RemoveVec(SwapVec(v, i, len-1))); -} - -procedure {:inline 1} $1_vector_contains'bv8'(v: Vec (bv8), e: bv8) returns (res: bool) { - res := $ContainsVec'bv8'(v, e); -} - -procedure {:inline 1} -$1_vector_index_of'bv8'(v: Vec (bv8), e: bv8) returns (res1: bool, res2: int) { - res2 := $IndexOfVec'bv8'(v, e); - if (res2 >= 0) { - res1 := true; - } else { - res1 := false; - res2 := 0; - } -} - - -// ================================================================================== -// Native Table - -// ---------------------------------------------------------------------------------- -// Native Table key encoding for type `address` - -function $EncodeKey'address'(k: int): int; -axiom ( - forall k1, k2: int :: {$EncodeKey'address'(k1), $EncodeKey'address'(k2)} - $IsEqual'address'(k1, k2) <==> $EncodeKey'address'(k1) == $EncodeKey'address'(k2) -); - - -// ---------------------------------------------------------------------------------- -// Native Table key encoding for type `$1_string_String` - -function $EncodeKey'$1_string_String'(k: $1_string_String): int; -axiom ( - forall k1, k2: $1_string_String :: {$EncodeKey'$1_string_String'(k1), $EncodeKey'$1_string_String'(k2)} - $IsEqual'$1_string_String'(k1, k2) <==> $EncodeKey'$1_string_String'(k1) == $EncodeKey'$1_string_String'(k2) -); - - -// ---------------------------------------------------------------------------------- -// Native Table implementation for type `(address,u64)` - -function $IsEqual'$1_simple_map_SimpleMap'address_u64''(t1: Table int (int), t2: Table int (int)): bool { - LenTable(t1) == LenTable(t2) && - (forall k: int :: ContainsTable(t1, k) <==> ContainsTable(t2, k)) && - (forall k: int :: ContainsTable(t1, k) ==> GetTable(t1, k) == GetTable(t2, k)) && - (forall k: int :: ContainsTable(t2, k) ==> GetTable(t1, k) == GetTable(t2, k)) -} - -// Not inlined. -function $IsValid'$1_simple_map_SimpleMap'address_u64''(t: Table int (int)): bool { - $IsValid'u64'(LenTable(t)) && - (forall i: int:: ContainsTable(t, i) ==> $IsValid'u64'(GetTable(t, i))) -} -procedure {:inline 2} $1_simple_map_create'address_u64'() returns (v: Table int (int)) { - v := EmptyTable(); -} -procedure {:inline 2} $1_simple_map_destroy_empty'address_u64'(t: Table int (int)) { - if (LenTable(t) != 0) { - call $Abort($StdError(1/*INVALID_STATE*/, 102/*ENOT_EMPTY*/)); - } -} -procedure {:inline 2} $1_simple_map_length'address_u64'(t: (Table int (int))) returns (l: int) { - l := LenTable(t); -} -procedure {:inline 2} $1_simple_map_contains_key'address_u64'(t: (Table int (int)), k: int) returns (r: bool) { - r := ContainsTable(t, $EncodeKey'address'(k)); -} -procedure {:inline 2} $1_simple_map_add'address_u64'(m: $Mutation (Table int (int)), k: int, v: int) returns (m': $Mutation(Table int (int))) { - var enc_k: int; - var t: Table int (int); - enc_k := $EncodeKey'address'(k); - t := $Dereference(m); - if (ContainsTable(t, enc_k)) { - call $Abort($StdError(7/*INVALID_ARGUMENTS*/, 100/*EALREADY_EXISTS*/)); - } else { - m' := $UpdateMutation(m, AddTable(t, enc_k, v)); - } -} -procedure {:inline 2} $1_simple_map_remove'address_u64'(m: $Mutation (Table int (int)), k: int) -returns (k': int, v: int, m': $Mutation(Table int (int))) { - var enc_k: int; - var t: Table int (int); - enc_k := $EncodeKey'address'(k); - t := $Dereference(m); - if (!ContainsTable(t, enc_k)) { - call $Abort($StdError(7/*INVALID_ARGUMENTS*/, 101/*ENOT_FOUND*/)); - } else { - k' := k; - v := GetTable(t, enc_k); - m' := $UpdateMutation(m, RemoveTable(t, enc_k)); - } -} -procedure {:inline 2} $1_simple_map_borrow'address_u64'(t: Table int (int), k: int) returns (v: int) { - var enc_k: int; - enc_k := $EncodeKey'address'(k); - if (!ContainsTable(t, enc_k)) { - call $Abort($StdError(7/*INVALID_ARGUMENTS*/, 101/*ENOT_FOUND*/)); - } else { - v := GetTable(t, $EncodeKey'address'(k)); - } -} -procedure {:inline 2} $1_simple_map_borrow_mut'address_u64'(m: $Mutation (Table int (int)), k: int) -returns (dst: $Mutation (int), m': $Mutation (Table int (int))) { - var enc_k: int; - var t: Table int (int); - enc_k := $EncodeKey'address'(k); - t := $Dereference(m); - if (!ContainsTable(t, enc_k)) { - call $Abort($StdError(7/*INVALID_ARGUMENTS*/, 101/*ENOT_FOUND*/)); - } else { - dst := $Mutation(l#$Mutation(m), ExtendVec(p#$Mutation(m), enc_k), GetTable(t, enc_k)); - m' := m; - } -} -function {:inline} $1_simple_map_spec_len'address_u64'(t: (Table int (int))): int { - LenTable(t) -} -function {:inline} $1_simple_map_spec_contains_key'address_u64'(t: (Table int (int)), k: int): bool { - ContainsTable(t, $EncodeKey'address'(k)) -} -function {:inline} $1_simple_map_spec_set'address_u64'(t: Table int (int), k: int, v: int): Table int (int) { - (var enc_k := $EncodeKey'address'(k); - if (ContainsTable(t, enc_k)) then - UpdateTable(t, enc_k, v) - else - AddTable(t, enc_k, v)) -} -function {:inline} $1_simple_map_spec_remove'address_u64'(t: Table int (int), k: int): Table int (int) { - RemoveTable(t, $EncodeKey'address'(k)) -} -function {:inline} $1_simple_map_spec_get'address_u64'(t: Table int (int), k: int): int { - GetTable(t, $EncodeKey'address'(k)) -} - - - -// ---------------------------------------------------------------------------------- -// Native Table implementation for type `(address,address)` - -function $IsEqual'$1_simple_map_SimpleMap'address_address''(t1: Table int (int), t2: Table int (int)): bool { - LenTable(t1) == LenTable(t2) && - (forall k: int :: ContainsTable(t1, k) <==> ContainsTable(t2, k)) && - (forall k: int :: ContainsTable(t1, k) ==> GetTable(t1, k) == GetTable(t2, k)) && - (forall k: int :: ContainsTable(t2, k) ==> GetTable(t1, k) == GetTable(t2, k)) -} - -// Not inlined. -function $IsValid'$1_simple_map_SimpleMap'address_address''(t: Table int (int)): bool { - $IsValid'u64'(LenTable(t)) && - (forall i: int:: ContainsTable(t, i) ==> $IsValid'address'(GetTable(t, i))) -} -procedure {:inline 2} $1_simple_map_create'address_address'() returns (v: Table int (int)) { - v := EmptyTable(); -} -procedure {:inline 2} $1_simple_map_destroy_empty'address_address'(t: Table int (int)) { - if (LenTable(t) != 0) { - call $Abort($StdError(1/*INVALID_STATE*/, 102/*ENOT_EMPTY*/)); - } -} -procedure {:inline 2} $1_simple_map_length'address_address'(t: (Table int (int))) returns (l: int) { - l := LenTable(t); -} -procedure {:inline 2} $1_simple_map_contains_key'address_address'(t: (Table int (int)), k: int) returns (r: bool) { - r := ContainsTable(t, $EncodeKey'address'(k)); -} -procedure {:inline 2} $1_simple_map_add'address_address'(m: $Mutation (Table int (int)), k: int, v: int) returns (m': $Mutation(Table int (int))) { - var enc_k: int; - var t: Table int (int); - enc_k := $EncodeKey'address'(k); - t := $Dereference(m); - if (ContainsTable(t, enc_k)) { - call $Abort($StdError(7/*INVALID_ARGUMENTS*/, 100/*EALREADY_EXISTS*/)); - } else { - m' := $UpdateMutation(m, AddTable(t, enc_k, v)); - } -} -procedure {:inline 2} $1_simple_map_remove'address_address'(m: $Mutation (Table int (int)), k: int) -returns (k': int, v: int, m': $Mutation(Table int (int))) { - var enc_k: int; - var t: Table int (int); - enc_k := $EncodeKey'address'(k); - t := $Dereference(m); - if (!ContainsTable(t, enc_k)) { - call $Abort($StdError(7/*INVALID_ARGUMENTS*/, 101/*ENOT_FOUND*/)); - } else { - k' := k; - v := GetTable(t, enc_k); - m' := $UpdateMutation(m, RemoveTable(t, enc_k)); - } -} -procedure {:inline 2} $1_simple_map_borrow'address_address'(t: Table int (int), k: int) returns (v: int) { - var enc_k: int; - enc_k := $EncodeKey'address'(k); - if (!ContainsTable(t, enc_k)) { - call $Abort($StdError(7/*INVALID_ARGUMENTS*/, 101/*ENOT_FOUND*/)); - } else { - v := GetTable(t, $EncodeKey'address'(k)); - } -} -procedure {:inline 2} $1_simple_map_borrow_mut'address_address'(m: $Mutation (Table int (int)), k: int) -returns (dst: $Mutation (int), m': $Mutation (Table int (int))) { - var enc_k: int; - var t: Table int (int); - enc_k := $EncodeKey'address'(k); - t := $Dereference(m); - if (!ContainsTable(t, enc_k)) { - call $Abort($StdError(7/*INVALID_ARGUMENTS*/, 101/*ENOT_FOUND*/)); - } else { - dst := $Mutation(l#$Mutation(m), ExtendVec(p#$Mutation(m), enc_k), GetTable(t, enc_k)); - m' := m; - } -} -function {:inline} $1_simple_map_spec_len'address_address'(t: (Table int (int))): int { - LenTable(t) -} -function {:inline} $1_simple_map_spec_contains_key'address_address'(t: (Table int (int)), k: int): bool { - ContainsTable(t, $EncodeKey'address'(k)) -} -function {:inline} $1_simple_map_spec_set'address_address'(t: Table int (int), k: int, v: int): Table int (int) { - (var enc_k := $EncodeKey'address'(k); - if (ContainsTable(t, enc_k)) then - UpdateTable(t, enc_k, v) - else - AddTable(t, enc_k, v)) -} -function {:inline} $1_simple_map_spec_remove'address_address'(t: Table int (int), k: int): Table int (int) { - RemoveTable(t, $EncodeKey'address'(k)) -} -function {:inline} $1_simple_map_spec_get'address_address'(t: Table int (int), k: int): int { - GetTable(t, $EncodeKey'address'(k)) -} - - - -// ---------------------------------------------------------------------------------- -// Native Table implementation for type `(address,$1_staking_contract_StakingContract)` - -function $IsEqual'$1_simple_map_SimpleMap'address_$1_staking_contract_StakingContract''(t1: Table int ($1_staking_contract_StakingContract), t2: Table int ($1_staking_contract_StakingContract)): bool { - LenTable(t1) == LenTable(t2) && - (forall k: int :: ContainsTable(t1, k) <==> ContainsTable(t2, k)) && - (forall k: int :: ContainsTable(t1, k) ==> GetTable(t1, k) == GetTable(t2, k)) && - (forall k: int :: ContainsTable(t2, k) ==> GetTable(t1, k) == GetTable(t2, k)) -} - -// Not inlined. -function $IsValid'$1_simple_map_SimpleMap'address_$1_staking_contract_StakingContract''(t: Table int ($1_staking_contract_StakingContract)): bool { - $IsValid'u64'(LenTable(t)) && - (forall i: int:: ContainsTable(t, i) ==> $IsValid'$1_staking_contract_StakingContract'(GetTable(t, i))) -} -procedure {:inline 2} $1_simple_map_create'address_$1_staking_contract_StakingContract'() returns (v: Table int ($1_staking_contract_StakingContract)) { - v := EmptyTable(); -} -procedure {:inline 2} $1_simple_map_destroy_empty'address_$1_staking_contract_StakingContract'(t: Table int ($1_staking_contract_StakingContract)) { - if (LenTable(t) != 0) { - call $Abort($StdError(1/*INVALID_STATE*/, 102/*ENOT_EMPTY*/)); - } -} -procedure {:inline 2} $1_simple_map_length'address_$1_staking_contract_StakingContract'(t: (Table int ($1_staking_contract_StakingContract))) returns (l: int) { - l := LenTable(t); -} -procedure {:inline 2} $1_simple_map_contains_key'address_$1_staking_contract_StakingContract'(t: (Table int ($1_staking_contract_StakingContract)), k: int) returns (r: bool) { - r := ContainsTable(t, $EncodeKey'address'(k)); -} -procedure {:inline 2} $1_simple_map_add'address_$1_staking_contract_StakingContract'(m: $Mutation (Table int ($1_staking_contract_StakingContract)), k: int, v: $1_staking_contract_StakingContract) returns (m': $Mutation(Table int ($1_staking_contract_StakingContract))) { - var enc_k: int; - var t: Table int ($1_staking_contract_StakingContract); - enc_k := $EncodeKey'address'(k); - t := $Dereference(m); - if (ContainsTable(t, enc_k)) { - call $Abort($StdError(7/*INVALID_ARGUMENTS*/, 100/*EALREADY_EXISTS*/)); - } else { - m' := $UpdateMutation(m, AddTable(t, enc_k, v)); - } -} -procedure {:inline 2} $1_simple_map_remove'address_$1_staking_contract_StakingContract'(m: $Mutation (Table int ($1_staking_contract_StakingContract)), k: int) -returns (k': int, v: $1_staking_contract_StakingContract, m': $Mutation(Table int ($1_staking_contract_StakingContract))) { - var enc_k: int; - var t: Table int ($1_staking_contract_StakingContract); - enc_k := $EncodeKey'address'(k); - t := $Dereference(m); - if (!ContainsTable(t, enc_k)) { - call $Abort($StdError(7/*INVALID_ARGUMENTS*/, 101/*ENOT_FOUND*/)); - } else { - k' := k; - v := GetTable(t, enc_k); - m' := $UpdateMutation(m, RemoveTable(t, enc_k)); - } -} -procedure {:inline 2} $1_simple_map_borrow'address_$1_staking_contract_StakingContract'(t: Table int ($1_staking_contract_StakingContract), k: int) returns (v: $1_staking_contract_StakingContract) { - var enc_k: int; - enc_k := $EncodeKey'address'(k); - if (!ContainsTable(t, enc_k)) { - call $Abort($StdError(7/*INVALID_ARGUMENTS*/, 101/*ENOT_FOUND*/)); - } else { - v := GetTable(t, $EncodeKey'address'(k)); - } -} -procedure {:inline 2} $1_simple_map_borrow_mut'address_$1_staking_contract_StakingContract'(m: $Mutation (Table int ($1_staking_contract_StakingContract)), k: int) -returns (dst: $Mutation ($1_staking_contract_StakingContract), m': $Mutation (Table int ($1_staking_contract_StakingContract))) { - var enc_k: int; - var t: Table int ($1_staking_contract_StakingContract); - enc_k := $EncodeKey'address'(k); - t := $Dereference(m); - if (!ContainsTable(t, enc_k)) { - call $Abort($StdError(7/*INVALID_ARGUMENTS*/, 101/*ENOT_FOUND*/)); - } else { - dst := $Mutation(l#$Mutation(m), ExtendVec(p#$Mutation(m), enc_k), GetTable(t, enc_k)); - m' := m; - } -} -function {:inline} $1_simple_map_spec_len'address_$1_staking_contract_StakingContract'(t: (Table int ($1_staking_contract_StakingContract))): int { - LenTable(t) -} -function {:inline} $1_simple_map_spec_contains_key'address_$1_staking_contract_StakingContract'(t: (Table int ($1_staking_contract_StakingContract)), k: int): bool { - ContainsTable(t, $EncodeKey'address'(k)) -} -function {:inline} $1_simple_map_spec_set'address_$1_staking_contract_StakingContract'(t: Table int ($1_staking_contract_StakingContract), k: int, v: $1_staking_contract_StakingContract): Table int ($1_staking_contract_StakingContract) { - (var enc_k := $EncodeKey'address'(k); - if (ContainsTable(t, enc_k)) then - UpdateTable(t, enc_k, v) - else - AddTable(t, enc_k, v)) -} -function {:inline} $1_simple_map_spec_remove'address_$1_staking_contract_StakingContract'(t: Table int ($1_staking_contract_StakingContract), k: int): Table int ($1_staking_contract_StakingContract) { - RemoveTable(t, $EncodeKey'address'(k)) -} -function {:inline} $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'(t: Table int ($1_staking_contract_StakingContract), k: int): $1_staking_contract_StakingContract { - GetTable(t, $EncodeKey'address'(k)) -} - - - -// ---------------------------------------------------------------------------------- -// Native Table implementation for type `($1_string_String,address)` - -function $IsEqual'$1_simple_map_SimpleMap'$1_string_String_address''(t1: Table int (int), t2: Table int (int)): bool { - LenTable(t1) == LenTable(t2) && - (forall k: int :: ContainsTable(t1, k) <==> ContainsTable(t2, k)) && - (forall k: int :: ContainsTable(t1, k) ==> GetTable(t1, k) == GetTable(t2, k)) && - (forall k: int :: ContainsTable(t2, k) ==> GetTable(t1, k) == GetTable(t2, k)) -} - -// Not inlined. -function $IsValid'$1_simple_map_SimpleMap'$1_string_String_address''(t: Table int (int)): bool { - $IsValid'u64'(LenTable(t)) && - (forall i: int:: ContainsTable(t, i) ==> $IsValid'address'(GetTable(t, i))) -} -procedure {:inline 2} $1_simple_map_create'$1_string_String_address'() returns (v: Table int (int)) { - v := EmptyTable(); -} -procedure {:inline 2} $1_simple_map_destroy_empty'$1_string_String_address'(t: Table int (int)) { - if (LenTable(t) != 0) { - call $Abort($StdError(1/*INVALID_STATE*/, 102/*ENOT_EMPTY*/)); - } -} -procedure {:inline 2} $1_simple_map_length'$1_string_String_address'(t: (Table int (int))) returns (l: int) { - l := LenTable(t); -} -procedure {:inline 2} $1_simple_map_contains_key'$1_string_String_address'(t: (Table int (int)), k: $1_string_String) returns (r: bool) { - r := ContainsTable(t, $EncodeKey'$1_string_String'(k)); -} -procedure {:inline 2} $1_simple_map_add'$1_string_String_address'(m: $Mutation (Table int (int)), k: $1_string_String, v: int) returns (m': $Mutation(Table int (int))) { - var enc_k: int; - var t: Table int (int); - enc_k := $EncodeKey'$1_string_String'(k); - t := $Dereference(m); - if (ContainsTable(t, enc_k)) { - call $Abort($StdError(7/*INVALID_ARGUMENTS*/, 100/*EALREADY_EXISTS*/)); - } else { - m' := $UpdateMutation(m, AddTable(t, enc_k, v)); - } -} -procedure {:inline 2} $1_simple_map_remove'$1_string_String_address'(m: $Mutation (Table int (int)), k: $1_string_String) -returns (k': $1_string_String, v: int, m': $Mutation(Table int (int))) { - var enc_k: int; - var t: Table int (int); - enc_k := $EncodeKey'$1_string_String'(k); - t := $Dereference(m); - if (!ContainsTable(t, enc_k)) { - call $Abort($StdError(7/*INVALID_ARGUMENTS*/, 101/*ENOT_FOUND*/)); - } else { - k' := k; - v := GetTable(t, enc_k); - m' := $UpdateMutation(m, RemoveTable(t, enc_k)); - } -} -procedure {:inline 2} $1_simple_map_borrow'$1_string_String_address'(t: Table int (int), k: $1_string_String) returns (v: int) { - var enc_k: int; - enc_k := $EncodeKey'$1_string_String'(k); - if (!ContainsTable(t, enc_k)) { - call $Abort($StdError(7/*INVALID_ARGUMENTS*/, 101/*ENOT_FOUND*/)); - } else { - v := GetTable(t, $EncodeKey'$1_string_String'(k)); - } -} -procedure {:inline 2} $1_simple_map_borrow_mut'$1_string_String_address'(m: $Mutation (Table int (int)), k: $1_string_String) -returns (dst: $Mutation (int), m': $Mutation (Table int (int))) { - var enc_k: int; - var t: Table int (int); - enc_k := $EncodeKey'$1_string_String'(k); - t := $Dereference(m); - if (!ContainsTable(t, enc_k)) { - call $Abort($StdError(7/*INVALID_ARGUMENTS*/, 101/*ENOT_FOUND*/)); - } else { - dst := $Mutation(l#$Mutation(m), ExtendVec(p#$Mutation(m), enc_k), GetTable(t, enc_k)); - m' := m; - } -} -function {:inline} $1_simple_map_spec_len'$1_string_String_address'(t: (Table int (int))): int { - LenTable(t) -} -function {:inline} $1_simple_map_spec_contains_key'$1_string_String_address'(t: (Table int (int)), k: $1_string_String): bool { - ContainsTable(t, $EncodeKey'$1_string_String'(k)) -} -function {:inline} $1_simple_map_spec_set'$1_string_String_address'(t: Table int (int), k: $1_string_String, v: int): Table int (int) { - (var enc_k := $EncodeKey'$1_string_String'(k); - if (ContainsTable(t, enc_k)) then - UpdateTable(t, enc_k, v) - else - AddTable(t, enc_k, v)) -} -function {:inline} $1_simple_map_spec_remove'$1_string_String_address'(t: Table int (int), k: $1_string_String): Table int (int) { - RemoveTable(t, $EncodeKey'$1_string_String'(k)) -} -function {:inline} $1_simple_map_spec_get'$1_string_String_address'(t: Table int (int), k: $1_string_String): int { - GetTable(t, $EncodeKey'$1_string_String'(k)) -} - - - -// ================================================================================== -// Native Hash - -// Hash is modeled as an otherwise uninterpreted injection. -// In truth, it is not an injection since the domain has greater cardinality -// (arbitrary length vectors) than the co-domain (vectors of length 32). But it is -// common to assume in code there are no hash collisions in practice. Fortunately, -// Boogie is not smart enough to recognized that there is an inconsistency. -// FIXME: If we were using a reliable extensional theory of arrays, and if we could use == -// instead of $IsEqual, we might be able to avoid so many quantified formulas by -// using a sha2_inverse function in the ensures conditions of Hash_sha2_256 to -// assert that sha2/3 are injections without using global quantified axioms. - - -function $1_hash_sha2(val: Vec int): Vec int; - -// This says that Hash_sha2 is bijective. -axiom (forall v1,v2: Vec int :: {$1_hash_sha2(v1), $1_hash_sha2(v2)} - $IsEqual'vec'u8''(v1, v2) <==> $IsEqual'vec'u8''($1_hash_sha2(v1), $1_hash_sha2(v2))); - -procedure $1_hash_sha2_256(val: Vec int) returns (res: Vec int); -ensures res == $1_hash_sha2(val); // returns Hash_sha2 Value -ensures $IsValid'vec'u8''(res); // result is a legal vector of U8s. -ensures LenVec(res) == 32; // result is 32 bytes. - -// Spec version of Move native function. -function {:inline} $1_hash_$sha2_256(val: Vec int): Vec int { - $1_hash_sha2(val) -} - -// similarly for Hash_sha3 -function $1_hash_sha3(val: Vec int): Vec int; - -axiom (forall v1,v2: Vec int :: {$1_hash_sha3(v1), $1_hash_sha3(v2)} - $IsEqual'vec'u8''(v1, v2) <==> $IsEqual'vec'u8''($1_hash_sha3(v1), $1_hash_sha3(v2))); - -procedure $1_hash_sha3_256(val: Vec int) returns (res: Vec int); -ensures res == $1_hash_sha3(val); // returns Hash_sha3 Value -ensures $IsValid'vec'u8''(res); // result is a legal vector of U8s. -ensures LenVec(res) == 32; // result is 32 bytes. - -// Spec version of Move native function. -function {:inline} $1_hash_$sha3_256(val: Vec int): Vec int { - $1_hash_sha3(val) -} - -// ================================================================================== -// Native string - -// TODO: correct implementation of strings - -procedure {:inline 1} $1_string_internal_check_utf8(x: Vec int) returns (r: bool) { -} - -procedure {:inline 1} $1_string_internal_sub_string(x: Vec int, i: int, j: int) returns (r: Vec int) { -} - -procedure {:inline 1} $1_string_internal_index_of(x: Vec int, y: Vec int) returns (r: int) { -} - -procedure {:inline 1} $1_string_internal_is_char_boundary(x: Vec int, i: int) returns (r: bool) { -} - - - - -// ================================================================================== -// Native diem_account - -procedure {:inline 1} $1_DiemAccount_create_signer( - addr: int -) returns (signer: $signer) { - // A signer is currently identical to an address. - signer := $signer(addr); -} - -procedure {:inline 1} $1_DiemAccount_destroy_signer( - signer: $signer -) { - return; -} - -// ================================================================================== -// Native account - -procedure {:inline 1} $1_Account_create_signer( - addr: int -) returns (signer: $signer) { - // A signer is currently identical to an address. - signer := $signer(addr); -} - -// ================================================================================== -// Native Signer - -type {:datatype} $signer; -function {:constructor} $signer($addr: int): $signer; -function {:inline} $IsValid'signer'(s: $signer): bool { - $IsValid'address'($addr#$signer(s)) -} -function {:inline} $IsEqual'signer'(s1: $signer, s2: $signer): bool { - s1 == s2 -} - -procedure {:inline 1} $1_signer_borrow_address(signer: $signer) returns (res: int) { - res := $addr#$signer(signer); -} - -function {:inline} $1_signer_$borrow_address(signer: $signer): int -{ - $addr#$signer(signer) -} - -function $1_signer_is_txn_signer(s: $signer): bool; - -function $1_signer_is_txn_signer_addr(a: int): bool; - - -// ================================================================================== -// Native signature - -// Signature related functionality is handled via uninterpreted functions. This is sound -// currently because we verify every code path based on signature verification with -// an arbitrary interpretation. - -function $1_Signature_$ed25519_validate_pubkey(public_key: Vec int): bool; -function $1_Signature_$ed25519_verify(signature: Vec int, public_key: Vec int, message: Vec int): bool; - -// Needed because we do not have extensional equality: -axiom (forall k1, k2: Vec int :: - {$1_Signature_$ed25519_validate_pubkey(k1), $1_Signature_$ed25519_validate_pubkey(k2)} - $IsEqual'vec'u8''(k1, k2) ==> $1_Signature_$ed25519_validate_pubkey(k1) == $1_Signature_$ed25519_validate_pubkey(k2)); -axiom (forall s1, s2, k1, k2, m1, m2: Vec int :: - {$1_Signature_$ed25519_verify(s1, k1, m1), $1_Signature_$ed25519_verify(s2, k2, m2)} - $IsEqual'vec'u8''(s1, s2) && $IsEqual'vec'u8''(k1, k2) && $IsEqual'vec'u8''(m1, m2) - ==> $1_Signature_$ed25519_verify(s1, k1, m1) == $1_Signature_$ed25519_verify(s2, k2, m2)); - - -procedure {:inline 1} $1_Signature_ed25519_validate_pubkey(public_key: Vec int) returns (res: bool) { - res := $1_Signature_$ed25519_validate_pubkey(public_key); -} - -procedure {:inline 1} $1_Signature_ed25519_verify( - signature: Vec int, public_key: Vec int, message: Vec int) returns (res: bool) { - res := $1_Signature_$ed25519_verify(signature, public_key, message); -} - - -// ================================================================================== -// Native bcs::serialize - -// ---------------------------------------------------------------------------------- -// Native BCS implementation for element type `address` - -// Serialize is modeled as an uninterpreted function, with an additional -// axiom to say it's an injection. - -function $1_bcs_serialize'address'(v: int): Vec int; - -axiom (forall v1, v2: int :: {$1_bcs_serialize'address'(v1), $1_bcs_serialize'address'(v2)} - $IsEqual'address'(v1, v2) <==> $IsEqual'vec'u8''($1_bcs_serialize'address'(v1), $1_bcs_serialize'address'(v2))); - -// This says that serialize returns a non-empty vec - -axiom (forall v: int :: {$1_bcs_serialize'address'(v)} - ( var r := $1_bcs_serialize'address'(v); $IsValid'vec'u8''(r) && LenVec(r) > 0 )); - - -procedure $1_bcs_to_bytes'address'(v: int) returns (res: Vec int); -ensures res == $1_bcs_serialize'address'(v); - -function {:inline} $1_bcs_$to_bytes'address'(v: int): Vec int { - $1_bcs_serialize'address'(v) -} - -// Serialized addresses should have the same length. -const $serialized_address_len: int; -// Serialized addresses should have the same length -axiom (forall v: int :: {$1_bcs_serialize'address'(v)} - ( var r := $1_bcs_serialize'address'(v); LenVec(r) == $serialized_address_len)); - - - -// ---------------------------------------------------------------------------------- -// Native BCS implementation for element type `u64` - -// Serialize is modeled as an uninterpreted function, with an additional -// axiom to say it's an injection. - -function $1_bcs_serialize'u64'(v: int): Vec int; - -axiom (forall v1, v2: int :: {$1_bcs_serialize'u64'(v1), $1_bcs_serialize'u64'(v2)} - $IsEqual'u64'(v1, v2) <==> $IsEqual'vec'u8''($1_bcs_serialize'u64'(v1), $1_bcs_serialize'u64'(v2))); - -// This says that serialize returns a non-empty vec - -axiom (forall v: int :: {$1_bcs_serialize'u64'(v)} - ( var r := $1_bcs_serialize'u64'(v); $IsValid'vec'u8''(r) && LenVec(r) > 0 )); - - -procedure $1_bcs_to_bytes'u64'(v: int) returns (res: Vec int); -ensures res == $1_bcs_serialize'u64'(v); - -function {:inline} $1_bcs_$to_bytes'u64'(v: int): Vec int { - $1_bcs_serialize'u64'(v) -} - - - - - -// ================================================================================== -// Native Event module - - - -procedure {:inline 1} $InitEventStore() { -} - -// ============================================================================================ -// Type Reflection on Type Parameters - -type {:datatype} $TypeParamInfo; - -function {:constructor} $TypeParamBool(): $TypeParamInfo; -function {:constructor} $TypeParamU8(): $TypeParamInfo; -function {:constructor} $TypeParamU16(): $TypeParamInfo; -function {:constructor} $TypeParamU32(): $TypeParamInfo; -function {:constructor} $TypeParamU64(): $TypeParamInfo; -function {:constructor} $TypeParamU128(): $TypeParamInfo; -function {:constructor} $TypeParamU256(): $TypeParamInfo; -function {:constructor} $TypeParamAddress(): $TypeParamInfo; -function {:constructor} $TypeParamSigner(): $TypeParamInfo; -function {:constructor} $TypeParamVector(e: $TypeParamInfo): $TypeParamInfo; -function {:constructor} $TypeParamStruct(a: int, m: Vec int, s: Vec int): $TypeParamInfo; - - - -//================================== -// Begin Translation - -function $TypeName(t: $TypeParamInfo): Vec int; -axiom (forall t: $TypeParamInfo :: {$TypeName(t)} is#$TypeParamBool(t) ==> $IsEqual'vec'u8''($TypeName(t), Vec(DefaultVecMap()[0 := 98][1 := 111][2 := 111][3 := 108], 4))); -axiom (forall t: $TypeParamInfo :: {$TypeName(t)} $IsEqual'vec'u8''($TypeName(t), Vec(DefaultVecMap()[0 := 98][1 := 111][2 := 111][3 := 108], 4)) ==> is#$TypeParamBool(t)); -axiom (forall t: $TypeParamInfo :: {$TypeName(t)} is#$TypeParamU8(t) ==> $IsEqual'vec'u8''($TypeName(t), Vec(DefaultVecMap()[0 := 117][1 := 56], 2))); -axiom (forall t: $TypeParamInfo :: {$TypeName(t)} $IsEqual'vec'u8''($TypeName(t), Vec(DefaultVecMap()[0 := 117][1 := 56], 2)) ==> is#$TypeParamU8(t)); -axiom (forall t: $TypeParamInfo :: {$TypeName(t)} is#$TypeParamU16(t) ==> $IsEqual'vec'u8''($TypeName(t), Vec(DefaultVecMap()[0 := 117][1 := 49][2 := 54], 3))); -axiom (forall t: $TypeParamInfo :: {$TypeName(t)} $IsEqual'vec'u8''($TypeName(t), Vec(DefaultVecMap()[0 := 117][1 := 49][2 := 54], 3)) ==> is#$TypeParamU16(t)); -axiom (forall t: $TypeParamInfo :: {$TypeName(t)} is#$TypeParamU32(t) ==> $IsEqual'vec'u8''($TypeName(t), Vec(DefaultVecMap()[0 := 117][1 := 51][2 := 50], 3))); -axiom (forall t: $TypeParamInfo :: {$TypeName(t)} $IsEqual'vec'u8''($TypeName(t), Vec(DefaultVecMap()[0 := 117][1 := 51][2 := 50], 3)) ==> is#$TypeParamU32(t)); -axiom (forall t: $TypeParamInfo :: {$TypeName(t)} is#$TypeParamU64(t) ==> $IsEqual'vec'u8''($TypeName(t), Vec(DefaultVecMap()[0 := 117][1 := 54][2 := 52], 3))); -axiom (forall t: $TypeParamInfo :: {$TypeName(t)} $IsEqual'vec'u8''($TypeName(t), Vec(DefaultVecMap()[0 := 117][1 := 54][2 := 52], 3)) ==> is#$TypeParamU64(t)); -axiom (forall t: $TypeParamInfo :: {$TypeName(t)} is#$TypeParamU128(t) ==> $IsEqual'vec'u8''($TypeName(t), Vec(DefaultVecMap()[0 := 117][1 := 49][2 := 50][3 := 56], 4))); -axiom (forall t: $TypeParamInfo :: {$TypeName(t)} $IsEqual'vec'u8''($TypeName(t), Vec(DefaultVecMap()[0 := 117][1 := 49][2 := 50][3 := 56], 4)) ==> is#$TypeParamU128(t)); -axiom (forall t: $TypeParamInfo :: {$TypeName(t)} is#$TypeParamU256(t) ==> $IsEqual'vec'u8''($TypeName(t), Vec(DefaultVecMap()[0 := 117][1 := 50][2 := 53][3 := 54], 4))); -axiom (forall t: $TypeParamInfo :: {$TypeName(t)} $IsEqual'vec'u8''($TypeName(t), Vec(DefaultVecMap()[0 := 117][1 := 50][2 := 53][3 := 54], 4)) ==> is#$TypeParamU256(t)); -axiom (forall t: $TypeParamInfo :: {$TypeName(t)} is#$TypeParamAddress(t) ==> $IsEqual'vec'u8''($TypeName(t), Vec(DefaultVecMap()[0 := 97][1 := 100][2 := 100][3 := 114][4 := 101][5 := 115][6 := 115], 7))); -axiom (forall t: $TypeParamInfo :: {$TypeName(t)} $IsEqual'vec'u8''($TypeName(t), Vec(DefaultVecMap()[0 := 97][1 := 100][2 := 100][3 := 114][4 := 101][5 := 115][6 := 115], 7)) ==> is#$TypeParamAddress(t)); -axiom (forall t: $TypeParamInfo :: {$TypeName(t)} is#$TypeParamSigner(t) ==> $IsEqual'vec'u8''($TypeName(t), Vec(DefaultVecMap()[0 := 115][1 := 105][2 := 103][3 := 110][4 := 101][5 := 114], 6))); -axiom (forall t: $TypeParamInfo :: {$TypeName(t)} $IsEqual'vec'u8''($TypeName(t), Vec(DefaultVecMap()[0 := 115][1 := 105][2 := 103][3 := 110][4 := 101][5 := 114], 6)) ==> is#$TypeParamSigner(t)); -axiom (forall t: $TypeParamInfo :: {$TypeName(t)} is#$TypeParamVector(t) ==> $IsEqual'vec'u8''($TypeName(t), ConcatVec(ConcatVec(Vec(DefaultVecMap()[0 := 118][1 := 101][2 := 99][3 := 116][4 := 111][5 := 114][6 := 60], 7), $TypeName(e#$TypeParamVector(t))), Vec(DefaultVecMap()[0 := 62], 1)))); -axiom (forall t: $TypeParamInfo :: {$TypeName(t)} ($IsPrefix'vec'u8''($TypeName(t), Vec(DefaultVecMap()[0 := 118][1 := 101][2 := 99][3 := 116][4 := 111][5 := 114][6 := 60], 7)) && $IsSuffix'vec'u8''($TypeName(t), Vec(DefaultVecMap()[0 := 62], 1))) ==> is#$TypeParamVector(t)); -axiom (forall t: $TypeParamInfo :: {$TypeName(t)} is#$TypeParamStruct(t) ==> $IsEqual'vec'u8''($TypeName(t), ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(Vec(DefaultVecMap()[0 := 48][1 := 120], 2), MakeVec1(a#$TypeParamStruct(t))), Vec(DefaultVecMap()[0 := 58][1 := 58], 2)), m#$TypeParamStruct(t)), Vec(DefaultVecMap()[0 := 58][1 := 58], 2)), s#$TypeParamStruct(t)))); -axiom (forall t: $TypeParamInfo :: {$TypeName(t)} $IsPrefix'vec'u8''($TypeName(t), Vec(DefaultVecMap()[0 := 48][1 := 120], 2)) ==> is#$TypeParamVector(t)); - - -// Given Types for Type Parameters - -type #0; -function {:inline} $IsEqual'#0'(x1: #0, x2: #0): bool { x1 == x2 } -function {:inline} $IsValid'#0'(x: #0): bool { true } -var #0_info: $TypeParamInfo; -var #0_$memory: $Memory #0; - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'bool'($1_from_bcs_deserialize'bool'(b1), $1_from_bcs_deserialize'bool'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'u8'($1_from_bcs_deserialize'u8'(b1), $1_from_bcs_deserialize'u8'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'u64'($1_from_bcs_deserialize'u64'(b1), $1_from_bcs_deserialize'u64'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'u128'($1_from_bcs_deserialize'u128'(b1), $1_from_bcs_deserialize'u128'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'u256'($1_from_bcs_deserialize'u256'(b1), $1_from_bcs_deserialize'u256'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance
-axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'address'($1_from_bcs_deserialize'address'(b1), $1_from_bcs_deserialize'address'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'signer'($1_from_bcs_deserialize'signer'(b1), $1_from_bcs_deserialize'signer'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''($1_from_bcs_deserialize'vec'u8''(b1), $1_from_bcs_deserialize'vec'u8''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'address''($1_from_bcs_deserialize'vec'address''(b1), $1_from_bcs_deserialize'vec'address''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'$1_aggregator_Aggregator''($1_from_bcs_deserialize'vec'$1_aggregator_Aggregator''(b1), $1_from_bcs_deserialize'vec'$1_aggregator_Aggregator''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'$1_optional_aggregator_Integer''($1_from_bcs_deserialize'vec'$1_optional_aggregator_Integer''(b1), $1_from_bcs_deserialize'vec'$1_optional_aggregator_Integer''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'$1_optional_aggregator_OptionalAggregator''($1_from_bcs_deserialize'vec'$1_optional_aggregator_OptionalAggregator''(b1), $1_from_bcs_deserialize'vec'$1_optional_aggregator_OptionalAggregator''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'$1_fixed_point32_FixedPoint32''($1_from_bcs_deserialize'vec'$1_fixed_point32_FixedPoint32''(b1), $1_from_bcs_deserialize'vec'$1_fixed_point32_FixedPoint32''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'$1_stake_IndividualValidatorPerformance''($1_from_bcs_deserialize'vec'$1_stake_IndividualValidatorPerformance''(b1), $1_from_bcs_deserialize'vec'$1_stake_IndividualValidatorPerformance''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'$1_stake_ValidatorInfo''($1_from_bcs_deserialize'vec'$1_stake_ValidatorInfo''(b1), $1_from_bcs_deserialize'vec'$1_stake_ValidatorInfo''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'#0''($1_from_bcs_deserialize'vec'#0''(b1), $1_from_bcs_deserialize'vec'#0''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_option_Option'address''($1_from_bcs_deserialize'$1_option_Option'address''(b1), $1_from_bcs_deserialize'$1_option_Option'address''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_option_Option'$1_aggregator_Aggregator''($1_from_bcs_deserialize'$1_option_Option'$1_aggregator_Aggregator''(b1), $1_from_bcs_deserialize'$1_option_Option'$1_aggregator_Aggregator''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_option_Option'$1_optional_aggregator_Integer''($1_from_bcs_deserialize'$1_option_Option'$1_optional_aggregator_Integer''(b1), $1_from_bcs_deserialize'$1_option_Option'$1_optional_aggregator_Integer''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_option_Option'$1_optional_aggregator_OptionalAggregator''($1_from_bcs_deserialize'$1_option_Option'$1_optional_aggregator_OptionalAggregator''(b1), $1_from_bcs_deserialize'$1_option_Option'$1_optional_aggregator_OptionalAggregator''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_string_String'($1_from_bcs_deserialize'$1_string_String'(b1), $1_from_bcs_deserialize'$1_string_String'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_type_info_TypeInfo'($1_from_bcs_deserialize'$1_type_info_TypeInfo'(b1), $1_from_bcs_deserialize'$1_type_info_TypeInfo'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_guid_GUID'($1_from_bcs_deserialize'$1_guid_GUID'(b1), $1_from_bcs_deserialize'$1_guid_GUID'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_guid_ID'($1_from_bcs_deserialize'$1_guid_ID'(b1), $1_from_bcs_deserialize'$1_guid_ID'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_event_EventHandle'$1_account_CoinRegisterEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_account_CoinRegisterEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_account_CoinRegisterEvent''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_event_EventHandle'$1_account_KeyRotationEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_account_KeyRotationEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_account_KeyRotationEvent''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_event_EventHandle'$1_coin_DepositEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_coin_DepositEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_coin_DepositEvent''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_event_EventHandle'$1_coin_WithdrawEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_coin_WithdrawEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_coin_WithdrawEvent''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_event_EventHandle'$1_stake_AddStakeEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_AddStakeEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_AddStakeEvent''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_event_EventHandle'$1_stake_DistributeRewardsEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_DistributeRewardsEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_DistributeRewardsEvent''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_event_EventHandle'$1_stake_IncreaseLockupEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_IncreaseLockupEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_IncreaseLockupEvent''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_event_EventHandle'$1_stake_JoinValidatorSetEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_JoinValidatorSetEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_JoinValidatorSetEvent''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_event_EventHandle'$1_stake_LeaveValidatorSetEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_LeaveValidatorSetEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_LeaveValidatorSetEvent''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_event_EventHandle'$1_stake_ReactivateStakeEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_ReactivateStakeEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_ReactivateStakeEvent''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_event_EventHandle'$1_stake_RegisterValidatorCandidateEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_RegisterValidatorCandidateEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_RegisterValidatorCandidateEvent''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_event_EventHandle'$1_stake_RotateConsensusKeyEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_RotateConsensusKeyEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_RotateConsensusKeyEvent''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_event_EventHandle'$1_stake_SetOperatorEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_SetOperatorEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_SetOperatorEvent''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_event_EventHandle'$1_stake_UnlockStakeEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_UnlockStakeEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_UnlockStakeEvent''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_event_EventHandle'$1_stake_UpdateNetworkAndFullnodeAddressesEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_UpdateNetworkAndFullnodeAddressesEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_UpdateNetworkAndFullnodeAddressesEvent''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_event_EventHandle'$1_stake_WithdrawStakeEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_WithdrawStakeEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_WithdrawStakeEvent''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_event_EventHandle'$1_reconfiguration_NewEpochEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_reconfiguration_NewEpochEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_reconfiguration_NewEpochEvent''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_event_EventHandle'$1_staking_contract_AddStakeEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_AddStakeEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_AddStakeEvent''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_event_EventHandle'$1_staking_contract_UnlockStakeEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_UnlockStakeEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_UnlockStakeEvent''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_event_EventHandle'$1_staking_contract_DistributeEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_DistributeEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_DistributeEvent''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_event_EventHandle'$1_staking_contract_RequestCommissionEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_RequestCommissionEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_RequestCommissionEvent''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_event_EventHandle'$1_staking_contract_ResetLockupEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_ResetLockupEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_ResetLockupEvent''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_event_EventHandle'$1_staking_contract_UpdateVoterEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_UpdateVoterEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_UpdateVoterEvent''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_event_EventHandle'$1_vesting_DistributeEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_DistributeEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_DistributeEvent''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_event_EventHandle'$1_vesting_ResetLockupEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_ResetLockupEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_ResetLockupEvent''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_event_EventHandle'$1_vesting_UpdateVoterEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_UpdateVoterEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_UpdateVoterEvent''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_event_EventHandle'$1_vesting_AdminWithdrawEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_AdminWithdrawEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_AdminWithdrawEvent''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_event_EventHandle'$1_vesting_CreateVestingContractEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_CreateVestingContractEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_CreateVestingContractEvent''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_event_EventHandle'$1_vesting_SetBeneficiaryEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_SetBeneficiaryEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_SetBeneficiaryEvent''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_event_EventHandle'$1_vesting_TerminateEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_TerminateEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_TerminateEvent''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_event_EventHandle'$1_vesting_UnlockRewardsEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_UnlockRewardsEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_UnlockRewardsEvent''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_event_EventHandle'$1_vesting_UpdateOperatorEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_UpdateOperatorEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_UpdateOperatorEvent''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_event_EventHandle'$1_vesting_VestEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_VestEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_VestEvent''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_account_Account'($1_from_bcs_deserialize'$1_account_Account'(b1), $1_from_bcs_deserialize'$1_account_Account'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_account_CapabilityOffer'$1_account_RotationCapability''($1_from_bcs_deserialize'$1_account_CapabilityOffer'$1_account_RotationCapability''(b1), $1_from_bcs_deserialize'$1_account_CapabilityOffer'$1_account_RotationCapability''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_account_CapabilityOffer'$1_account_SignerCapability''($1_from_bcs_deserialize'$1_account_CapabilityOffer'$1_account_SignerCapability''(b1), $1_from_bcs_deserialize'$1_account_CapabilityOffer'$1_account_SignerCapability''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_account_CoinRegisterEvent'($1_from_bcs_deserialize'$1_account_CoinRegisterEvent'(b1), $1_from_bcs_deserialize'$1_account_CoinRegisterEvent'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_account_SignerCapability'($1_from_bcs_deserialize'$1_account_SignerCapability'(b1), $1_from_bcs_deserialize'$1_account_SignerCapability'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_aggregator_Aggregator'($1_from_bcs_deserialize'$1_aggregator_Aggregator'(b1), $1_from_bcs_deserialize'$1_aggregator_Aggregator'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_optional_aggregator_Integer'($1_from_bcs_deserialize'$1_optional_aggregator_Integer'(b1), $1_from_bcs_deserialize'$1_optional_aggregator_Integer'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_optional_aggregator_OptionalAggregator'($1_from_bcs_deserialize'$1_optional_aggregator_OptionalAggregator'(b1), $1_from_bcs_deserialize'$1_optional_aggregator_OptionalAggregator'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_coin_Coin'$1_aptos_coin_AptosCoin''($1_from_bcs_deserialize'$1_coin_Coin'$1_aptos_coin_AptosCoin''(b1), $1_from_bcs_deserialize'$1_coin_Coin'$1_aptos_coin_AptosCoin''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_coin_CoinInfo'$1_aptos_coin_AptosCoin''($1_from_bcs_deserialize'$1_coin_CoinInfo'$1_aptos_coin_AptosCoin''(b1), $1_from_bcs_deserialize'$1_coin_CoinInfo'$1_aptos_coin_AptosCoin''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''($1_from_bcs_deserialize'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''(b1), $1_from_bcs_deserialize'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin''($1_from_bcs_deserialize'$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin''(b1), $1_from_bcs_deserialize'$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin''($1_from_bcs_deserialize'$1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin''(b1), $1_from_bcs_deserialize'$1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_aptos_coin_AptosCoin'($1_from_bcs_deserialize'$1_aptos_coin_AptosCoin'(b1), $1_from_bcs_deserialize'$1_aptos_coin_AptosCoin'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_chain_status_GenesisEndMarker'($1_from_bcs_deserialize'$1_chain_status_GenesisEndMarker'(b1), $1_from_bcs_deserialize'$1_chain_status_GenesisEndMarker'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_timestamp_CurrentTimeMicroseconds'($1_from_bcs_deserialize'$1_timestamp_CurrentTimeMicroseconds'(b1), $1_from_bcs_deserialize'$1_timestamp_CurrentTimeMicroseconds'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_simple_map_SimpleMap'address_u64''($1_from_bcs_deserialize'$1_simple_map_SimpleMap'address_u64''(b1), $1_from_bcs_deserialize'$1_simple_map_SimpleMap'address_u64''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_simple_map_SimpleMap'address_address''($1_from_bcs_deserialize'$1_simple_map_SimpleMap'address_address''(b1), $1_from_bcs_deserialize'$1_simple_map_SimpleMap'address_address''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_simple_map_SimpleMap'address_$1_staking_contract_StakingContract''($1_from_bcs_deserialize'$1_simple_map_SimpleMap'address_$1_staking_contract_StakingContract''(b1), $1_from_bcs_deserialize'$1_simple_map_SimpleMap'address_$1_staking_contract_StakingContract''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_simple_map_SimpleMap'$1_string_String_address''($1_from_bcs_deserialize'$1_simple_map_SimpleMap'$1_string_String_address''(b1), $1_from_bcs_deserialize'$1_simple_map_SimpleMap'$1_string_String_address''(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_fixed_point32_FixedPoint32'($1_from_bcs_deserialize'$1_fixed_point32_FixedPoint32'(b1), $1_from_bcs_deserialize'$1_fixed_point32_FixedPoint32'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_staking_config_StakingConfig'($1_from_bcs_deserialize'$1_staking_config_StakingConfig'(b1), $1_from_bcs_deserialize'$1_staking_config_StakingConfig'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_stake_IncreaseLockupEvent'($1_from_bcs_deserialize'$1_stake_IncreaseLockupEvent'(b1), $1_from_bcs_deserialize'$1_stake_IncreaseLockupEvent'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_stake_OwnerCapability'($1_from_bcs_deserialize'$1_stake_OwnerCapability'(b1), $1_from_bcs_deserialize'$1_stake_OwnerCapability'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_stake_StakePool'($1_from_bcs_deserialize'$1_stake_StakePool'(b1), $1_from_bcs_deserialize'$1_stake_StakePool'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_stake_ValidatorConfig'($1_from_bcs_deserialize'$1_stake_ValidatorConfig'(b1), $1_from_bcs_deserialize'$1_stake_ValidatorConfig'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_stake_ValidatorPerformance'($1_from_bcs_deserialize'$1_stake_ValidatorPerformance'(b1), $1_from_bcs_deserialize'$1_stake_ValidatorPerformance'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_stake_ValidatorSet'($1_from_bcs_deserialize'$1_stake_ValidatorSet'(b1), $1_from_bcs_deserialize'$1_stake_ValidatorSet'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_reconfiguration_Configuration'($1_from_bcs_deserialize'$1_reconfiguration_Configuration'(b1), $1_from_bcs_deserialize'$1_reconfiguration_Configuration'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_pool_u64_Pool'($1_from_bcs_deserialize'$1_pool_u64_Pool'(b1), $1_from_bcs_deserialize'$1_pool_u64_Pool'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_staking_contract_ResetLockupEvent'($1_from_bcs_deserialize'$1_staking_contract_ResetLockupEvent'(b1), $1_from_bcs_deserialize'$1_staking_contract_ResetLockupEvent'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_staking_contract_StakingContract'($1_from_bcs_deserialize'$1_staking_contract_StakingContract'(b1), $1_from_bcs_deserialize'$1_staking_contract_StakingContract'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_staking_contract_Store'($1_from_bcs_deserialize'$1_staking_contract_Store'(b1), $1_from_bcs_deserialize'$1_staking_contract_Store'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_staking_contract_UpdateVoterEvent'($1_from_bcs_deserialize'$1_staking_contract_UpdateVoterEvent'(b1), $1_from_bcs_deserialize'$1_staking_contract_UpdateVoterEvent'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_vesting_ResetLockupEvent'($1_from_bcs_deserialize'$1_vesting_ResetLockupEvent'(b1), $1_from_bcs_deserialize'$1_vesting_ResetLockupEvent'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_vesting_UpdateVoterEvent'($1_from_bcs_deserialize'$1_vesting_UpdateVoterEvent'(b1), $1_from_bcs_deserialize'$1_vesting_UpdateVoterEvent'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_vesting_AdminStore'($1_from_bcs_deserialize'$1_vesting_AdminStore'(b1), $1_from_bcs_deserialize'$1_vesting_AdminStore'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_vesting_SetBeneficiaryEvent'($1_from_bcs_deserialize'$1_vesting_SetBeneficiaryEvent'(b1), $1_from_bcs_deserialize'$1_vesting_SetBeneficiaryEvent'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_vesting_StakingInfo'($1_from_bcs_deserialize'$1_vesting_StakingInfo'(b1), $1_from_bcs_deserialize'$1_vesting_StakingInfo'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_vesting_VestingAccountManagement'($1_from_bcs_deserialize'$1_vesting_VestingAccountManagement'(b1), $1_from_bcs_deserialize'$1_vesting_VestingAccountManagement'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_vesting_VestingContract'($1_from_bcs_deserialize'$1_vesting_VestingContract'(b1), $1_from_bcs_deserialize'$1_vesting_VestingContract'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'$1_vesting_VestingSchedule'($1_from_bcs_deserialize'$1_vesting_VestingSchedule'(b1), $1_from_bcs_deserialize'$1_vesting_VestingSchedule'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:14:9+116, instance <#0> -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'#0'($1_from_bcs_deserialize'#0'(b1), $1_from_bcs_deserialize'#0'(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'bool'(b1), $1_from_bcs_deserializable'bool'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'u8'(b1), $1_from_bcs_deserializable'u8'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'u64'(b1), $1_from_bcs_deserializable'u64'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'u128'(b1), $1_from_bcs_deserializable'u128'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'u256'(b1), $1_from_bcs_deserializable'u256'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance
-axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'address'(b1), $1_from_bcs_deserializable'address'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'signer'(b1), $1_from_bcs_deserializable'signer'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'vec'u8''(b1), $1_from_bcs_deserializable'vec'u8''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'vec'address''(b1), $1_from_bcs_deserializable'vec'address''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'vec'$1_aggregator_Aggregator''(b1), $1_from_bcs_deserializable'vec'$1_aggregator_Aggregator''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'vec'$1_optional_aggregator_Integer''(b1), $1_from_bcs_deserializable'vec'$1_optional_aggregator_Integer''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'vec'$1_optional_aggregator_OptionalAggregator''(b1), $1_from_bcs_deserializable'vec'$1_optional_aggregator_OptionalAggregator''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'vec'$1_fixed_point32_FixedPoint32''(b1), $1_from_bcs_deserializable'vec'$1_fixed_point32_FixedPoint32''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'vec'$1_stake_IndividualValidatorPerformance''(b1), $1_from_bcs_deserializable'vec'$1_stake_IndividualValidatorPerformance''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'vec'$1_stake_ValidatorInfo''(b1), $1_from_bcs_deserializable'vec'$1_stake_ValidatorInfo''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'vec'#0''(b1), $1_from_bcs_deserializable'vec'#0''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_option_Option'address''(b1), $1_from_bcs_deserializable'$1_option_Option'address''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_option_Option'$1_aggregator_Aggregator''(b1), $1_from_bcs_deserializable'$1_option_Option'$1_aggregator_Aggregator''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_option_Option'$1_optional_aggregator_Integer''(b1), $1_from_bcs_deserializable'$1_option_Option'$1_optional_aggregator_Integer''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_option_Option'$1_optional_aggregator_OptionalAggregator''(b1), $1_from_bcs_deserializable'$1_option_Option'$1_optional_aggregator_OptionalAggregator''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_string_String'(b1), $1_from_bcs_deserializable'$1_string_String'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_type_info_TypeInfo'(b1), $1_from_bcs_deserializable'$1_type_info_TypeInfo'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_guid_GUID'(b1), $1_from_bcs_deserializable'$1_guid_GUID'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_guid_ID'(b1), $1_from_bcs_deserializable'$1_guid_ID'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_event_EventHandle'$1_account_CoinRegisterEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_account_CoinRegisterEvent''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_event_EventHandle'$1_account_KeyRotationEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_account_KeyRotationEvent''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_event_EventHandle'$1_coin_DepositEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_coin_DepositEvent''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_event_EventHandle'$1_coin_WithdrawEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_coin_WithdrawEvent''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_AddStakeEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_AddStakeEvent''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_DistributeRewardsEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_DistributeRewardsEvent''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_IncreaseLockupEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_IncreaseLockupEvent''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_JoinValidatorSetEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_JoinValidatorSetEvent''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_LeaveValidatorSetEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_LeaveValidatorSetEvent''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_ReactivateStakeEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_ReactivateStakeEvent''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_RegisterValidatorCandidateEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_RegisterValidatorCandidateEvent''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_RotateConsensusKeyEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_RotateConsensusKeyEvent''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_SetOperatorEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_SetOperatorEvent''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_UnlockStakeEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_UnlockStakeEvent''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_UpdateNetworkAndFullnodeAddressesEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_UpdateNetworkAndFullnodeAddressesEvent''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_WithdrawStakeEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_WithdrawStakeEvent''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_event_EventHandle'$1_reconfiguration_NewEpochEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_reconfiguration_NewEpochEvent''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_event_EventHandle'$1_staking_contract_AddStakeEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_staking_contract_AddStakeEvent''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_event_EventHandle'$1_staking_contract_UnlockStakeEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_staking_contract_UnlockStakeEvent''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_event_EventHandle'$1_staking_contract_DistributeEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_staking_contract_DistributeEvent''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_event_EventHandle'$1_staking_contract_RequestCommissionEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_staking_contract_RequestCommissionEvent''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_event_EventHandle'$1_staking_contract_ResetLockupEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_staking_contract_ResetLockupEvent''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_event_EventHandle'$1_staking_contract_UpdateVoterEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_staking_contract_UpdateVoterEvent''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_event_EventHandle'$1_vesting_DistributeEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_vesting_DistributeEvent''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_event_EventHandle'$1_vesting_ResetLockupEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_vesting_ResetLockupEvent''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_event_EventHandle'$1_vesting_UpdateVoterEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_vesting_UpdateVoterEvent''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_event_EventHandle'$1_vesting_AdminWithdrawEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_vesting_AdminWithdrawEvent''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_event_EventHandle'$1_vesting_CreateVestingContractEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_vesting_CreateVestingContractEvent''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_event_EventHandle'$1_vesting_SetBeneficiaryEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_vesting_SetBeneficiaryEvent''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_event_EventHandle'$1_vesting_TerminateEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_vesting_TerminateEvent''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_event_EventHandle'$1_vesting_UnlockRewardsEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_vesting_UnlockRewardsEvent''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_event_EventHandle'$1_vesting_UpdateOperatorEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_vesting_UpdateOperatorEvent''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_event_EventHandle'$1_vesting_VestEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_vesting_VestEvent''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_account_Account'(b1), $1_from_bcs_deserializable'$1_account_Account'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_account_CapabilityOffer'$1_account_RotationCapability''(b1), $1_from_bcs_deserializable'$1_account_CapabilityOffer'$1_account_RotationCapability''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_account_CapabilityOffer'$1_account_SignerCapability''(b1), $1_from_bcs_deserializable'$1_account_CapabilityOffer'$1_account_SignerCapability''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_account_CoinRegisterEvent'(b1), $1_from_bcs_deserializable'$1_account_CoinRegisterEvent'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_account_SignerCapability'(b1), $1_from_bcs_deserializable'$1_account_SignerCapability'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_aggregator_Aggregator'(b1), $1_from_bcs_deserializable'$1_aggregator_Aggregator'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_optional_aggregator_Integer'(b1), $1_from_bcs_deserializable'$1_optional_aggregator_Integer'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_optional_aggregator_OptionalAggregator'(b1), $1_from_bcs_deserializable'$1_optional_aggregator_OptionalAggregator'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_coin_Coin'$1_aptos_coin_AptosCoin''(b1), $1_from_bcs_deserializable'$1_coin_Coin'$1_aptos_coin_AptosCoin''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_coin_CoinInfo'$1_aptos_coin_AptosCoin''(b1), $1_from_bcs_deserializable'$1_coin_CoinInfo'$1_aptos_coin_AptosCoin''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''(b1), $1_from_bcs_deserializable'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin''(b1), $1_from_bcs_deserializable'$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin''(b1), $1_from_bcs_deserializable'$1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_aptos_coin_AptosCoin'(b1), $1_from_bcs_deserializable'$1_aptos_coin_AptosCoin'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_chain_status_GenesisEndMarker'(b1), $1_from_bcs_deserializable'$1_chain_status_GenesisEndMarker'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_timestamp_CurrentTimeMicroseconds'(b1), $1_from_bcs_deserializable'$1_timestamp_CurrentTimeMicroseconds'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_simple_map_SimpleMap'address_u64''(b1), $1_from_bcs_deserializable'$1_simple_map_SimpleMap'address_u64''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_simple_map_SimpleMap'address_address''(b1), $1_from_bcs_deserializable'$1_simple_map_SimpleMap'address_address''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_simple_map_SimpleMap'address_$1_staking_contract_StakingContract''(b1), $1_from_bcs_deserializable'$1_simple_map_SimpleMap'address_$1_staking_contract_StakingContract''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_simple_map_SimpleMap'$1_string_String_address''(b1), $1_from_bcs_deserializable'$1_simple_map_SimpleMap'$1_string_String_address''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_fixed_point32_FixedPoint32'(b1), $1_from_bcs_deserializable'$1_fixed_point32_FixedPoint32'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_staking_config_StakingConfig'(b1), $1_from_bcs_deserializable'$1_staking_config_StakingConfig'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_stake_IncreaseLockupEvent'(b1), $1_from_bcs_deserializable'$1_stake_IncreaseLockupEvent'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_stake_OwnerCapability'(b1), $1_from_bcs_deserializable'$1_stake_OwnerCapability'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_stake_StakePool'(b1), $1_from_bcs_deserializable'$1_stake_StakePool'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_stake_ValidatorConfig'(b1), $1_from_bcs_deserializable'$1_stake_ValidatorConfig'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_stake_ValidatorPerformance'(b1), $1_from_bcs_deserializable'$1_stake_ValidatorPerformance'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_stake_ValidatorSet'(b1), $1_from_bcs_deserializable'$1_stake_ValidatorSet'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_reconfiguration_Configuration'(b1), $1_from_bcs_deserializable'$1_reconfiguration_Configuration'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_pool_u64_Pool'(b1), $1_from_bcs_deserializable'$1_pool_u64_Pool'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_staking_contract_ResetLockupEvent'(b1), $1_from_bcs_deserializable'$1_staking_contract_ResetLockupEvent'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_staking_contract_StakingContract'(b1), $1_from_bcs_deserializable'$1_staking_contract_StakingContract'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_staking_contract_Store'(b1), $1_from_bcs_deserializable'$1_staking_contract_Store'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_staking_contract_UpdateVoterEvent'(b1), $1_from_bcs_deserializable'$1_staking_contract_UpdateVoterEvent'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_vesting_ResetLockupEvent'(b1), $1_from_bcs_deserializable'$1_vesting_ResetLockupEvent'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_vesting_UpdateVoterEvent'(b1), $1_from_bcs_deserializable'$1_vesting_UpdateVoterEvent'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_vesting_AdminStore'(b1), $1_from_bcs_deserializable'$1_vesting_AdminStore'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_vesting_SetBeneficiaryEvent'(b1), $1_from_bcs_deserializable'$1_vesting_SetBeneficiaryEvent'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_vesting_StakingInfo'(b1), $1_from_bcs_deserializable'$1_vesting_StakingInfo'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_vesting_VestingAccountManagement'(b1), $1_from_bcs_deserializable'$1_vesting_VestingAccountManagement'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_vesting_VestingContract'(b1), $1_from_bcs_deserializable'$1_vesting_VestingContract'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'$1_vesting_VestingSchedule'(b1), $1_from_bcs_deserializable'$1_vesting_VestingSchedule'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:18:9+124, instance <#0> -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'#0'(b1), $1_from_bcs_deserializable'#0'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserialize'bool'(b1), $1_from_bcs_deserialize'bool'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'u8'($1_from_bcs_deserialize'u8'(b1), $1_from_bcs_deserialize'u8'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'u64'($1_from_bcs_deserialize'u64'(b1), $1_from_bcs_deserialize'u64'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'u128'($1_from_bcs_deserialize'u128'(b1), $1_from_bcs_deserialize'u128'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'u256'($1_from_bcs_deserialize'u256'(b1), $1_from_bcs_deserialize'u256'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance
-axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'address'($1_from_bcs_deserialize'address'(b1), $1_from_bcs_deserialize'address'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'signer'($1_from_bcs_deserialize'signer'(b1), $1_from_bcs_deserialize'signer'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'vec'u8''($1_from_bcs_deserialize'vec'u8''(b1), $1_from_bcs_deserialize'vec'u8''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'vec'address''($1_from_bcs_deserialize'vec'address''(b1), $1_from_bcs_deserialize'vec'address''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'vec'$1_aggregator_Aggregator''($1_from_bcs_deserialize'vec'$1_aggregator_Aggregator''(b1), $1_from_bcs_deserialize'vec'$1_aggregator_Aggregator''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'vec'$1_optional_aggregator_Integer''($1_from_bcs_deserialize'vec'$1_optional_aggregator_Integer''(b1), $1_from_bcs_deserialize'vec'$1_optional_aggregator_Integer''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'vec'$1_optional_aggregator_OptionalAggregator''($1_from_bcs_deserialize'vec'$1_optional_aggregator_OptionalAggregator''(b1), $1_from_bcs_deserialize'vec'$1_optional_aggregator_OptionalAggregator''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'vec'$1_fixed_point32_FixedPoint32''($1_from_bcs_deserialize'vec'$1_fixed_point32_FixedPoint32''(b1), $1_from_bcs_deserialize'vec'$1_fixed_point32_FixedPoint32''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'vec'$1_stake_IndividualValidatorPerformance''($1_from_bcs_deserialize'vec'$1_stake_IndividualValidatorPerformance''(b1), $1_from_bcs_deserialize'vec'$1_stake_IndividualValidatorPerformance''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'vec'$1_stake_ValidatorInfo''($1_from_bcs_deserialize'vec'$1_stake_ValidatorInfo''(b1), $1_from_bcs_deserialize'vec'$1_stake_ValidatorInfo''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'vec'#0''($1_from_bcs_deserialize'vec'#0''(b1), $1_from_bcs_deserialize'vec'#0''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_option_Option'address''($1_from_bcs_deserialize'$1_option_Option'address''(b1), $1_from_bcs_deserialize'$1_option_Option'address''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_option_Option'$1_aggregator_Aggregator''($1_from_bcs_deserialize'$1_option_Option'$1_aggregator_Aggregator''(b1), $1_from_bcs_deserialize'$1_option_Option'$1_aggregator_Aggregator''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_option_Option'$1_optional_aggregator_Integer''($1_from_bcs_deserialize'$1_option_Option'$1_optional_aggregator_Integer''(b1), $1_from_bcs_deserialize'$1_option_Option'$1_optional_aggregator_Integer''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_option_Option'$1_optional_aggregator_OptionalAggregator''($1_from_bcs_deserialize'$1_option_Option'$1_optional_aggregator_OptionalAggregator''(b1), $1_from_bcs_deserialize'$1_option_Option'$1_optional_aggregator_OptionalAggregator''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_string_String'($1_from_bcs_deserialize'$1_string_String'(b1), $1_from_bcs_deserialize'$1_string_String'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_type_info_TypeInfo'($1_from_bcs_deserialize'$1_type_info_TypeInfo'(b1), $1_from_bcs_deserialize'$1_type_info_TypeInfo'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_guid_GUID'($1_from_bcs_deserialize'$1_guid_GUID'(b1), $1_from_bcs_deserialize'$1_guid_GUID'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_guid_ID'($1_from_bcs_deserialize'$1_guid_ID'(b1), $1_from_bcs_deserialize'$1_guid_ID'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_event_EventHandle'$1_account_CoinRegisterEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_account_CoinRegisterEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_account_CoinRegisterEvent''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_event_EventHandle'$1_account_KeyRotationEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_account_KeyRotationEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_account_KeyRotationEvent''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_event_EventHandle'$1_coin_DepositEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_coin_DepositEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_coin_DepositEvent''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_event_EventHandle'$1_coin_WithdrawEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_coin_WithdrawEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_coin_WithdrawEvent''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_event_EventHandle'$1_stake_AddStakeEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_AddStakeEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_AddStakeEvent''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_event_EventHandle'$1_stake_DistributeRewardsEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_DistributeRewardsEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_DistributeRewardsEvent''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_event_EventHandle'$1_stake_IncreaseLockupEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_IncreaseLockupEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_IncreaseLockupEvent''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_event_EventHandle'$1_stake_JoinValidatorSetEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_JoinValidatorSetEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_JoinValidatorSetEvent''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_event_EventHandle'$1_stake_LeaveValidatorSetEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_LeaveValidatorSetEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_LeaveValidatorSetEvent''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_event_EventHandle'$1_stake_ReactivateStakeEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_ReactivateStakeEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_ReactivateStakeEvent''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_event_EventHandle'$1_stake_RegisterValidatorCandidateEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_RegisterValidatorCandidateEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_RegisterValidatorCandidateEvent''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_event_EventHandle'$1_stake_RotateConsensusKeyEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_RotateConsensusKeyEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_RotateConsensusKeyEvent''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_event_EventHandle'$1_stake_SetOperatorEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_SetOperatorEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_SetOperatorEvent''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_event_EventHandle'$1_stake_UnlockStakeEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_UnlockStakeEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_UnlockStakeEvent''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_event_EventHandle'$1_stake_UpdateNetworkAndFullnodeAddressesEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_UpdateNetworkAndFullnodeAddressesEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_UpdateNetworkAndFullnodeAddressesEvent''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_event_EventHandle'$1_stake_WithdrawStakeEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_WithdrawStakeEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_WithdrawStakeEvent''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_event_EventHandle'$1_reconfiguration_NewEpochEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_reconfiguration_NewEpochEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_reconfiguration_NewEpochEvent''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_event_EventHandle'$1_staking_contract_AddStakeEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_AddStakeEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_AddStakeEvent''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_event_EventHandle'$1_staking_contract_UnlockStakeEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_UnlockStakeEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_UnlockStakeEvent''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_event_EventHandle'$1_staking_contract_DistributeEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_DistributeEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_DistributeEvent''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_event_EventHandle'$1_staking_contract_RequestCommissionEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_RequestCommissionEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_RequestCommissionEvent''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_event_EventHandle'$1_staking_contract_ResetLockupEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_ResetLockupEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_ResetLockupEvent''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_event_EventHandle'$1_staking_contract_UpdateVoterEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_UpdateVoterEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_UpdateVoterEvent''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_event_EventHandle'$1_vesting_DistributeEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_DistributeEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_DistributeEvent''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_event_EventHandle'$1_vesting_ResetLockupEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_ResetLockupEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_ResetLockupEvent''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_event_EventHandle'$1_vesting_UpdateVoterEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_UpdateVoterEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_UpdateVoterEvent''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_event_EventHandle'$1_vesting_AdminWithdrawEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_AdminWithdrawEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_AdminWithdrawEvent''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_event_EventHandle'$1_vesting_CreateVestingContractEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_CreateVestingContractEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_CreateVestingContractEvent''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_event_EventHandle'$1_vesting_SetBeneficiaryEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_SetBeneficiaryEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_SetBeneficiaryEvent''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_event_EventHandle'$1_vesting_TerminateEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_TerminateEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_TerminateEvent''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_event_EventHandle'$1_vesting_UnlockRewardsEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_UnlockRewardsEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_UnlockRewardsEvent''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_event_EventHandle'$1_vesting_UpdateOperatorEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_UpdateOperatorEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_UpdateOperatorEvent''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_event_EventHandle'$1_vesting_VestEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_VestEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_VestEvent''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_account_Account'($1_from_bcs_deserialize'$1_account_Account'(b1), $1_from_bcs_deserialize'$1_account_Account'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_account_CapabilityOffer'$1_account_RotationCapability''($1_from_bcs_deserialize'$1_account_CapabilityOffer'$1_account_RotationCapability''(b1), $1_from_bcs_deserialize'$1_account_CapabilityOffer'$1_account_RotationCapability''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_account_CapabilityOffer'$1_account_SignerCapability''($1_from_bcs_deserialize'$1_account_CapabilityOffer'$1_account_SignerCapability''(b1), $1_from_bcs_deserialize'$1_account_CapabilityOffer'$1_account_SignerCapability''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_account_CoinRegisterEvent'($1_from_bcs_deserialize'$1_account_CoinRegisterEvent'(b1), $1_from_bcs_deserialize'$1_account_CoinRegisterEvent'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_account_SignerCapability'($1_from_bcs_deserialize'$1_account_SignerCapability'(b1), $1_from_bcs_deserialize'$1_account_SignerCapability'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_aggregator_Aggregator'($1_from_bcs_deserialize'$1_aggregator_Aggregator'(b1), $1_from_bcs_deserialize'$1_aggregator_Aggregator'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_optional_aggregator_Integer'($1_from_bcs_deserialize'$1_optional_aggregator_Integer'(b1), $1_from_bcs_deserialize'$1_optional_aggregator_Integer'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_optional_aggregator_OptionalAggregator'($1_from_bcs_deserialize'$1_optional_aggregator_OptionalAggregator'(b1), $1_from_bcs_deserialize'$1_optional_aggregator_OptionalAggregator'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_coin_Coin'$1_aptos_coin_AptosCoin''($1_from_bcs_deserialize'$1_coin_Coin'$1_aptos_coin_AptosCoin''(b1), $1_from_bcs_deserialize'$1_coin_Coin'$1_aptos_coin_AptosCoin''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_coin_CoinInfo'$1_aptos_coin_AptosCoin''($1_from_bcs_deserialize'$1_coin_CoinInfo'$1_aptos_coin_AptosCoin''(b1), $1_from_bcs_deserialize'$1_coin_CoinInfo'$1_aptos_coin_AptosCoin''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''($1_from_bcs_deserialize'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''(b1), $1_from_bcs_deserialize'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin''($1_from_bcs_deserialize'$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin''(b1), $1_from_bcs_deserialize'$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin''($1_from_bcs_deserialize'$1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin''(b1), $1_from_bcs_deserialize'$1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_aptos_coin_AptosCoin'($1_from_bcs_deserialize'$1_aptos_coin_AptosCoin'(b1), $1_from_bcs_deserialize'$1_aptos_coin_AptosCoin'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_chain_status_GenesisEndMarker'($1_from_bcs_deserialize'$1_chain_status_GenesisEndMarker'(b1), $1_from_bcs_deserialize'$1_chain_status_GenesisEndMarker'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_timestamp_CurrentTimeMicroseconds'($1_from_bcs_deserialize'$1_timestamp_CurrentTimeMicroseconds'(b1), $1_from_bcs_deserialize'$1_timestamp_CurrentTimeMicroseconds'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_simple_map_SimpleMap'address_u64''($1_from_bcs_deserialize'$1_simple_map_SimpleMap'address_u64''(b1), $1_from_bcs_deserialize'$1_simple_map_SimpleMap'address_u64''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_simple_map_SimpleMap'address_address''($1_from_bcs_deserialize'$1_simple_map_SimpleMap'address_address''(b1), $1_from_bcs_deserialize'$1_simple_map_SimpleMap'address_address''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_simple_map_SimpleMap'address_$1_staking_contract_StakingContract''($1_from_bcs_deserialize'$1_simple_map_SimpleMap'address_$1_staking_contract_StakingContract''(b1), $1_from_bcs_deserialize'$1_simple_map_SimpleMap'address_$1_staking_contract_StakingContract''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance > -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_simple_map_SimpleMap'$1_string_String_address''($1_from_bcs_deserialize'$1_simple_map_SimpleMap'$1_string_String_address''(b1), $1_from_bcs_deserialize'$1_simple_map_SimpleMap'$1_string_String_address''(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_fixed_point32_FixedPoint32'($1_from_bcs_deserialize'$1_fixed_point32_FixedPoint32'(b1), $1_from_bcs_deserialize'$1_fixed_point32_FixedPoint32'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_staking_config_StakingConfig'($1_from_bcs_deserialize'$1_staking_config_StakingConfig'(b1), $1_from_bcs_deserialize'$1_staking_config_StakingConfig'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_stake_IncreaseLockupEvent'($1_from_bcs_deserialize'$1_stake_IncreaseLockupEvent'(b1), $1_from_bcs_deserialize'$1_stake_IncreaseLockupEvent'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_stake_OwnerCapability'($1_from_bcs_deserialize'$1_stake_OwnerCapability'(b1), $1_from_bcs_deserialize'$1_stake_OwnerCapability'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_stake_StakePool'($1_from_bcs_deserialize'$1_stake_StakePool'(b1), $1_from_bcs_deserialize'$1_stake_StakePool'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_stake_ValidatorConfig'($1_from_bcs_deserialize'$1_stake_ValidatorConfig'(b1), $1_from_bcs_deserialize'$1_stake_ValidatorConfig'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_stake_ValidatorPerformance'($1_from_bcs_deserialize'$1_stake_ValidatorPerformance'(b1), $1_from_bcs_deserialize'$1_stake_ValidatorPerformance'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_stake_ValidatorSet'($1_from_bcs_deserialize'$1_stake_ValidatorSet'(b1), $1_from_bcs_deserialize'$1_stake_ValidatorSet'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_reconfiguration_Configuration'($1_from_bcs_deserialize'$1_reconfiguration_Configuration'(b1), $1_from_bcs_deserialize'$1_reconfiguration_Configuration'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_pool_u64_Pool'($1_from_bcs_deserialize'$1_pool_u64_Pool'(b1), $1_from_bcs_deserialize'$1_pool_u64_Pool'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_staking_contract_ResetLockupEvent'($1_from_bcs_deserialize'$1_staking_contract_ResetLockupEvent'(b1), $1_from_bcs_deserialize'$1_staking_contract_ResetLockupEvent'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_staking_contract_StakingContract'($1_from_bcs_deserialize'$1_staking_contract_StakingContract'(b1), $1_from_bcs_deserialize'$1_staking_contract_StakingContract'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_staking_contract_Store'($1_from_bcs_deserialize'$1_staking_contract_Store'(b1), $1_from_bcs_deserialize'$1_staking_contract_Store'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_staking_contract_UpdateVoterEvent'($1_from_bcs_deserialize'$1_staking_contract_UpdateVoterEvent'(b1), $1_from_bcs_deserialize'$1_staking_contract_UpdateVoterEvent'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_vesting_ResetLockupEvent'($1_from_bcs_deserialize'$1_vesting_ResetLockupEvent'(b1), $1_from_bcs_deserialize'$1_vesting_ResetLockupEvent'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_vesting_UpdateVoterEvent'($1_from_bcs_deserialize'$1_vesting_UpdateVoterEvent'(b1), $1_from_bcs_deserialize'$1_vesting_UpdateVoterEvent'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_vesting_AdminStore'($1_from_bcs_deserialize'$1_vesting_AdminStore'(b1), $1_from_bcs_deserialize'$1_vesting_AdminStore'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_vesting_SetBeneficiaryEvent'($1_from_bcs_deserialize'$1_vesting_SetBeneficiaryEvent'(b1), $1_from_bcs_deserialize'$1_vesting_SetBeneficiaryEvent'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_vesting_StakingInfo'($1_from_bcs_deserialize'$1_vesting_StakingInfo'(b1), $1_from_bcs_deserialize'$1_vesting_StakingInfo'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_vesting_VestingAccountManagement'($1_from_bcs_deserialize'$1_vesting_VestingAccountManagement'(b1), $1_from_bcs_deserialize'$1_vesting_VestingAccountManagement'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_vesting_VestingContract'($1_from_bcs_deserialize'$1_vesting_VestingContract'(b1), $1_from_bcs_deserialize'$1_vesting_VestingContract'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_vesting_VestingSchedule'($1_from_bcs_deserialize'$1_vesting_VestingSchedule'(b1), $1_from_bcs_deserialize'$1_vesting_VestingSchedule'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:21:9+118, instance <#0> -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'#0'($1_from_bcs_deserialize'#0'(b1), $1_from_bcs_deserialize'#0'(b2))))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/hash.spec.move:8:9+113 -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''($1_aptos_hash_spec_keccak256(b1), $1_aptos_hash_spec_keccak256(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/hash.spec.move:13:9+129 -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''($1_aptos_hash_spec_sha2_512_internal(b1), $1_aptos_hash_spec_sha2_512_internal(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/hash.spec.move:18:9+129 -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''($1_aptos_hash_spec_sha3_512_internal(b1), $1_aptos_hash_spec_sha3_512_internal(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/hash.spec.move:23:9+131 -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''($1_aptos_hash_spec_ripemd160_internal(b1), $1_aptos_hash_spec_ripemd160_internal(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// axiom at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/hash.spec.move:28:9+135 -axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''($1_aptos_hash_spec_blake2b_256_internal(b1), $1_aptos_hash_spec_blake2b_256_internal(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:146:5+86 -function {:inline} $1_vector_$is_empty'address'(v: Vec (int)): bool { - $IsEqual'u64'($1_vector_$length'address'(v), 0) -} - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:146:5+86 -function {:inline} $1_vector_$is_empty'$1_aggregator_Aggregator'(v: Vec ($1_aggregator_Aggregator)): bool { - $IsEqual'u64'($1_vector_$length'$1_aggregator_Aggregator'(v), 0) -} - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:146:5+86 -function {:inline} $1_vector_$is_empty'$1_optional_aggregator_Integer'(v: Vec ($1_optional_aggregator_Integer)): bool { - $IsEqual'u64'($1_vector_$length'$1_optional_aggregator_Integer'(v), 0) -} - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:628:9+110 -function {:inline} $1_vector_spec_contains'address'(v: Vec (int), e: int): bool { - (var $range_0 := v; (exists $i_1: int :: InRangeVec($range_0, $i_1) && (var x := ReadVec($range_0, $i_1); - ($IsEqual'address'(x, e))))) -} - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/option.move:102:5+145 -function {:inline} $1_option_$borrow'$1_aggregator_Aggregator'(t: $1_option_Option'$1_aggregator_Aggregator'): $1_aggregator_Aggregator { - $1_vector_$borrow'$1_aggregator_Aggregator'($vec#$1_option_Option'$1_aggregator_Aggregator'(t), 0) -} - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/option.move:102:5+145 -function {:inline} $1_option_$borrow'$1_optional_aggregator_Integer'(t: $1_option_Option'$1_optional_aggregator_Integer'): $1_optional_aggregator_Integer { - $1_vector_$borrow'$1_optional_aggregator_Integer'($vec#$1_option_Option'$1_optional_aggregator_Integer'(t), 0) -} - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/option.move:61:5+95 -function {:inline} $1_option_$is_none'$1_aggregator_Aggregator'(t: $1_option_Option'$1_aggregator_Aggregator'): bool { - $1_vector_$is_empty'$1_aggregator_Aggregator'($vec#$1_option_Option'$1_aggregator_Aggregator'(t)) -} - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/option.move:61:5+95 -function {:inline} $1_option_$is_none'$1_optional_aggregator_Integer'(t: $1_option_Option'$1_optional_aggregator_Integer'): bool { - $1_vector_$is_empty'$1_optional_aggregator_Integer'($vec#$1_option_Option'$1_optional_aggregator_Integer'(t)) -} - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/option.move:74:5+96 -function {:inline} $1_option_$is_some'$1_aggregator_Aggregator'(t: $1_option_Option'$1_aggregator_Aggregator'): bool { - !$1_vector_$is_empty'$1_aggregator_Aggregator'($vec#$1_option_Option'$1_aggregator_Aggregator'(t)) -} - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/option.move:74:5+96 -function {:inline} $1_option_$is_some'$1_optional_aggregator_Integer'(t: $1_option_Option'$1_optional_aggregator_Integer'): bool { - !$1_vector_$is_empty'$1_optional_aggregator_Integer'($vec#$1_option_Option'$1_optional_aggregator_Integer'(t)) -} - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/option.move:34:10+78 -function {:inline} $1_option_spec_none'address'(): $1_option_Option'address' { - $1_option_Option'address'($EmptyVec'address'()) -} - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/option.move:47:10+89 -function {:inline} $1_option_spec_some'address'(e: int): $1_option_Option'address' { - $1_option_Option'address'(MakeVec1(e)) -} - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/option.move:69:10+91 -function {:inline} $1_option_spec_is_none'address'(t: $1_option_Option'address'): bool { - $1_vector_$is_empty'address'($vec#$1_option_Option'address'(t)) -} - -// struct option::Option
at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/option.move:7:5+81 -type {:datatype} $1_option_Option'address'; -function {:constructor} $1_option_Option'address'($vec: Vec (int)): $1_option_Option'address'; -function {:inline} $Update'$1_option_Option'address''_vec(s: $1_option_Option'address', x: Vec (int)): $1_option_Option'address' { - $1_option_Option'address'(x) -} -function $IsValid'$1_option_Option'address''(s: $1_option_Option'address'): bool { - $IsValid'vec'address''($vec#$1_option_Option'address'(s)) -} -function {:inline} $IsEqual'$1_option_Option'address''(s1: $1_option_Option'address', s2: $1_option_Option'address'): bool { - $IsEqual'vec'address''($vec#$1_option_Option'address'(s1), $vec#$1_option_Option'address'(s2))} - -// struct option::Option at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/option.move:7:5+81 -type {:datatype} $1_option_Option'$1_aggregator_Aggregator'; -function {:constructor} $1_option_Option'$1_aggregator_Aggregator'($vec: Vec ($1_aggregator_Aggregator)): $1_option_Option'$1_aggregator_Aggregator'; -function {:inline} $Update'$1_option_Option'$1_aggregator_Aggregator''_vec(s: $1_option_Option'$1_aggregator_Aggregator', x: Vec ($1_aggregator_Aggregator)): $1_option_Option'$1_aggregator_Aggregator' { - $1_option_Option'$1_aggregator_Aggregator'(x) -} -function $IsValid'$1_option_Option'$1_aggregator_Aggregator''(s: $1_option_Option'$1_aggregator_Aggregator'): bool { - $IsValid'vec'$1_aggregator_Aggregator''($vec#$1_option_Option'$1_aggregator_Aggregator'(s)) -} -function {:inline} $IsEqual'$1_option_Option'$1_aggregator_Aggregator''(s1: $1_option_Option'$1_aggregator_Aggregator', s2: $1_option_Option'$1_aggregator_Aggregator'): bool { - $IsEqual'vec'$1_aggregator_Aggregator''($vec#$1_option_Option'$1_aggregator_Aggregator'(s1), $vec#$1_option_Option'$1_aggregator_Aggregator'(s2))} - -// struct option::Option at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/option.move:7:5+81 -type {:datatype} $1_option_Option'$1_optional_aggregator_Integer'; -function {:constructor} $1_option_Option'$1_optional_aggregator_Integer'($vec: Vec ($1_optional_aggregator_Integer)): $1_option_Option'$1_optional_aggregator_Integer'; -function {:inline} $Update'$1_option_Option'$1_optional_aggregator_Integer''_vec(s: $1_option_Option'$1_optional_aggregator_Integer', x: Vec ($1_optional_aggregator_Integer)): $1_option_Option'$1_optional_aggregator_Integer' { - $1_option_Option'$1_optional_aggregator_Integer'(x) -} -function $IsValid'$1_option_Option'$1_optional_aggregator_Integer''(s: $1_option_Option'$1_optional_aggregator_Integer'): bool { - $IsValid'vec'$1_optional_aggregator_Integer''($vec#$1_option_Option'$1_optional_aggregator_Integer'(s)) -} -function {:inline} $IsEqual'$1_option_Option'$1_optional_aggregator_Integer''(s1: $1_option_Option'$1_optional_aggregator_Integer', s2: $1_option_Option'$1_optional_aggregator_Integer'): bool { - $IsEqual'vec'$1_optional_aggregator_Integer''($vec#$1_option_Option'$1_optional_aggregator_Integer'(s1), $vec#$1_option_Option'$1_optional_aggregator_Integer'(s2))} - -// struct option::Option at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/option.move:7:5+81 -type {:datatype} $1_option_Option'$1_optional_aggregator_OptionalAggregator'; -function {:constructor} $1_option_Option'$1_optional_aggregator_OptionalAggregator'($vec: Vec ($1_optional_aggregator_OptionalAggregator)): $1_option_Option'$1_optional_aggregator_OptionalAggregator'; -function {:inline} $Update'$1_option_Option'$1_optional_aggregator_OptionalAggregator''_vec(s: $1_option_Option'$1_optional_aggregator_OptionalAggregator', x: Vec ($1_optional_aggregator_OptionalAggregator)): $1_option_Option'$1_optional_aggregator_OptionalAggregator' { - $1_option_Option'$1_optional_aggregator_OptionalAggregator'(x) -} -function $IsValid'$1_option_Option'$1_optional_aggregator_OptionalAggregator''(s: $1_option_Option'$1_optional_aggregator_OptionalAggregator'): bool { - $IsValid'vec'$1_optional_aggregator_OptionalAggregator''($vec#$1_option_Option'$1_optional_aggregator_OptionalAggregator'(s)) -} -function {:inline} $IsEqual'$1_option_Option'$1_optional_aggregator_OptionalAggregator''(s1: $1_option_Option'$1_optional_aggregator_OptionalAggregator', s2: $1_option_Option'$1_optional_aggregator_OptionalAggregator'): bool { - $IsEqual'vec'$1_optional_aggregator_OptionalAggregator''($vec#$1_option_Option'$1_optional_aggregator_OptionalAggregator'(s1), $vec#$1_option_Option'$1_optional_aggregator_OptionalAggregator'(s2))} - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/string.spec.move:23:10+70 -function {:inline} $1_string_spec_utf8(bytes: Vec (int)): $1_string_String { - $1_string_String(bytes) -} - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/string.spec.move:28:9+50 -function $1_string_spec_internal_check_utf8(v: Vec (int)): bool; -axiom (forall v: Vec (int) :: -(var $$res := $1_string_spec_internal_check_utf8(v); -$IsValid'bool'($$res))); - -// struct string::String at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/string.move:13:5+70 -type {:datatype} $1_string_String; -function {:constructor} $1_string_String($bytes: Vec (int)): $1_string_String; -function {:inline} $Update'$1_string_String'_bytes(s: $1_string_String, x: Vec (int)): $1_string_String { - $1_string_String(x) -} -function $IsValid'$1_string_String'(s: $1_string_String): bool { - $IsValid'vec'u8''($bytes#$1_string_String(s)) -} -function {:inline} $IsEqual'$1_string_String'(s1: $1_string_String, s2: $1_string_String): bool { - $IsEqual'vec'u8''($bytes#$1_string_String(s1), $bytes#$1_string_String(s2))} - -// fun string::utf8 [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/string.move:18:5+133 -procedure {:inline 1} $1_string_utf8(_$t0: Vec (int)) returns ($ret0: $1_string_String) -{ - // declare local variables - var $t1: bool; - var $t2: int; - var $t3: $1_string_String; - var $t0: Vec (int); - var $temp_0'$1_string_String': $1_string_String; - var $temp_0'vec'u8'': Vec (int); - $t0 := _$t0; - - // bytecode translation starts here - // trace_local[bytes]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/string.move:18:5+1 - assume {:print "$at(15,573,574)"} true; - assume {:print "$track_local(2,13,0):", $t0} $t0 == $t0; - - // $t1 := opaque begin: string::internal_check_utf8($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/string.move:19:17+27 - assume {:print "$at(15,634,661)"} true; - - // assume WellFormed($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/string.move:19:17+27 - assume $IsValid'bool'($t1); - - // assume Eq($t1, string::spec_internal_check_utf8($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/string.move:19:17+27 - assume $IsEqual'bool'($t1, $1_string_spec_internal_check_utf8($t0)); - - // $t1 := opaque end: string::internal_check_utf8($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/string.move:19:17+27 - - // if ($t1) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/string.move:19:9+51 - if ($t1) { goto L1; } else { goto L0; } - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/string.move:19:9+51 -L1: - - // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/string.move:19:9+51 - assume {:print "$at(15,626,677)"} true; - goto L2; - - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/string.move:19:46+13 -L0: - - // $t2 := 1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/string.move:19:46+13 - assume {:print "$at(15,663,676)"} true; - $t2 := 1; - assume $IsValid'u64'($t2); - - // trace_abort($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/string.move:19:9+51 - assume {:print "$at(15,626,677)"} true; - assume {:print "$track_abort(2,13):", $t2} $t2 == $t2; - - // goto L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/string.move:19:9+51 - goto L4; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/string.move:20:16+5 - assume {:print "$at(15,694,699)"} true; -L2: - - // $t3 := pack string::String($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/string.move:20:9+13 - assume {:print "$at(15,687,700)"} true; - $t3 := $1_string_String($t0); - - // trace_return[0]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/string.move:20:9+13 - assume {:print "$track_return(2,13,0):", $t3} $t3 == $t3; - - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/string.move:21:5+1 - assume {:print "$at(15,705,706)"} true; -L3: - - // return $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/string.move:21:5+1 - assume {:print "$at(15,705,706)"} true; - $ret0 := $t3; - return; - - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/string.move:21:5+1 -L4: - - // abort($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/string.move:21:5+1 - assume {:print "$at(15,705,706)"} true; - $abort_code := $t2; - $abort_flag := true; - return; - -} - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/signer.move:12:5+77 -function {:inline} $1_signer_$address_of(s: $signer): int { - $1_signer_$borrow_address(s) -} - -// fun signer::address_of [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/signer.move:12:5+77 -procedure {:inline 1} $1_signer_address_of(_$t0: $signer) returns ($ret0: int) -{ - // declare local variables - var $t1: int; - var $t2: int; - var $t0: $signer; - var $temp_0'address': int; - var $temp_0'signer': $signer; - $t0 := _$t0; - - // bytecode translation starts here - // trace_local[s]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/signer.move:12:5+1 - assume {:print "$at(14,396,397)"} true; - assume {:print "$track_local(3,0,0):", $t0} $t0 == $t0; - - // $t1 := signer::borrow_address($t0) on_abort goto L2 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/signer.move:13:10+17 - assume {:print "$at(14,450,467)"} true; - call $t1 := $1_signer_borrow_address($t0); - if ($abort_flag) { - assume {:print "$at(14,450,467)"} true; - $t2 := $abort_code; - assume {:print "$track_abort(3,0):", $t2} $t2 == $t2; - goto L2; - } - - // trace_return[0]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/signer.move:13:9+18 - assume {:print "$track_return(3,0,0):", $t1} $t1 == $t1; - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/signer.move:14:5+1 - assume {:print "$at(14,472,473)"} true; -L1: - - // return $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/signer.move:14:5+1 - assume {:print "$at(14,472,473)"} true; - $ret0 := $t1; - return; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/signer.move:14:5+1 -L2: - - // abort($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/signer.move:14:5+1 - assume {:print "$at(14,472,473)"} true; - $abort_code := $t2; - $abort_flag := true; - return; - -} - -// fun error::already_exists [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:83:3+71 -procedure {:inline 1} $1_error_already_exists(_$t0: int) returns ($ret0: int) -{ - // declare local variables - var $t1: int; - var $t2: int; - var $t3: int; - var $t0: int; - var $temp_0'u64': int; - $t0 := _$t0; - - // bytecode translation starts here - // trace_local[r]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:83:3+1 - assume {:print "$at(10,3585,3586)"} true; - assume {:print "$track_local(4,1,0):", $t0} $t0 == $t0; - - // $t1 := 8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:83:54+14 - $t1 := 8; - assume $IsValid'u64'($t1); - - // assume Identical($t2, Shl($t1, 16)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:69:5+29 - assume {:print "$at(10,2844,2873)"} true; - assume ($t2 == $shlU64($t1, 16)); - - // $t3 := opaque begin: error::canonical($t1, $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:83:44+28 - assume {:print "$at(10,3626,3654)"} true; - - // assume WellFormed($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:83:44+28 - assume $IsValid'u64'($t3); - - // assume Eq($t3, $t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:83:44+28 - assume $IsEqual'u64'($t3, $t1); - - // $t3 := opaque end: error::canonical($t1, $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:83:44+28 - - // trace_return[0]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:83:44+28 - assume {:print "$track_return(4,1,0):", $t3} $t3 == $t3; - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:83:73+1 -L1: - - // return $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:83:73+1 - assume {:print "$at(10,3655,3656)"} true; - $ret0 := $t3; - return; - -} - -// fun error::invalid_argument [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:76:3+76 -procedure {:inline 1} $1_error_invalid_argument(_$t0: int) returns ($ret0: int) -{ - // declare local variables - var $t1: int; - var $t2: int; - var $t3: int; - var $t0: int; - var $temp_0'u64': int; - $t0 := _$t0; - - // bytecode translation starts here - // trace_local[r]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:76:3+1 - assume {:print "$at(10,3082,3083)"} true; - assume {:print "$track_local(4,4,0):", $t0} $t0 == $t0; - - // $t1 := 1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:76:57+16 - $t1 := 1; - assume $IsValid'u64'($t1); - - // assume Identical($t2, Shl($t1, 16)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:69:5+29 - assume {:print "$at(10,2844,2873)"} true; - assume ($t2 == $shlU64($t1, 16)); - - // $t3 := opaque begin: error::canonical($t1, $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:76:47+30 - assume {:print "$at(10,3126,3156)"} true; - - // assume WellFormed($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:76:47+30 - assume $IsValid'u64'($t3); - - // assume Eq($t3, $t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:76:47+30 - assume $IsEqual'u64'($t3, $t1); - - // $t3 := opaque end: error::canonical($t1, $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:76:47+30 - - // trace_return[0]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:76:47+30 - assume {:print "$track_return(4,4,0):", $t3} $t3 == $t3; - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:76:78+1 -L1: - - // return $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:76:78+1 - assume {:print "$at(10,3157,3158)"} true; - $ret0 := $t3; - return; - -} - -// fun error::invalid_state [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:78:3+70 -procedure {:inline 1} $1_error_invalid_state(_$t0: int) returns ($ret0: int) -{ - // declare local variables - var $t1: int; - var $t2: int; - var $t3: int; - var $t0: int; - var $temp_0'u64': int; - $t0 := _$t0; - - // bytecode translation starts here - // trace_local[r]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:78:3+1 - assume {:print "$at(10,3232,3233)"} true; - assume {:print "$track_local(4,5,0):", $t0} $t0 == $t0; - - // $t1 := 3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:78:54+13 - $t1 := 3; - assume $IsValid'u64'($t1); - - // assume Identical($t2, Shl($t1, 16)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:69:5+29 - assume {:print "$at(10,2844,2873)"} true; - assume ($t2 == $shlU64($t1, 16)); - - // $t3 := opaque begin: error::canonical($t1, $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:78:44+27 - assume {:print "$at(10,3273,3300)"} true; - - // assume WellFormed($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:78:44+27 - assume $IsValid'u64'($t3); - - // assume Eq($t3, $t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:78:44+27 - assume $IsEqual'u64'($t3, $t1); - - // $t3 := opaque end: error::canonical($t1, $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:78:44+27 - - // trace_return[0]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:78:44+27 - assume {:print "$track_return(4,5,0):", $t3} $t3 == $t3; - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:78:72+1 -L1: - - // return $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:78:72+1 - assume {:print "$at(10,3301,3302)"} true; - $ret0 := $t3; - return; - -} - -// fun error::not_found [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:81:3+61 -procedure {:inline 1} $1_error_not_found(_$t0: int) returns ($ret0: int) -{ - // declare local variables - var $t1: int; - var $t2: int; - var $t3: int; - var $t0: int; - var $temp_0'u64': int; - $t0 := _$t0; - - // bytecode translation starts here - // trace_local[r]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:81:3+1 - assume {:print "$at(10,3461,3462)"} true; - assume {:print "$track_local(4,6,0):", $t0} $t0 == $t0; - - // $t1 := 6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:81:49+9 - $t1 := 6; - assume $IsValid'u64'($t1); - - // assume Identical($t2, Shl($t1, 16)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:69:5+29 - assume {:print "$at(10,2844,2873)"} true; - assume ($t2 == $shlU64($t1, 16)); - - // $t3 := opaque begin: error::canonical($t1, $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:81:39+23 - assume {:print "$at(10,3497,3520)"} true; - - // assume WellFormed($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:81:39+23 - assume $IsValid'u64'($t3); - - // assume Eq($t3, $t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:81:39+23 - assume $IsEqual'u64'($t3, $t1); - - // $t3 := opaque end: error::canonical($t1, $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:81:39+23 - - // trace_return[0]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:81:39+23 - assume {:print "$track_return(4,6,0):", $t3} $t3 == $t3; - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:81:63+1 -L1: - - // return $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:81:63+1 - assume {:print "$at(10,3521,3522)"} true; - $ret0 := $t3; - return; - -} - -// fun error::out_of_range [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:77:3+68 -procedure {:inline 1} $1_error_out_of_range(_$t0: int) returns ($ret0: int) -{ - // declare local variables - var $t1: int; - var $t2: int; - var $t3: int; - var $t0: int; - var $temp_0'u64': int; - $t0 := _$t0; - - // bytecode translation starts here - // trace_local[r]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:77:3+1 - assume {:print "$at(10,3161,3162)"} true; - assume {:print "$track_local(4,8,0):", $t0} $t0 == $t0; - - // $t1 := 2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:77:53+12 - $t1 := 2; - assume $IsValid'u64'($t1); - - // assume Identical($t2, Shl($t1, 16)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:69:5+29 - assume {:print "$at(10,2844,2873)"} true; - assume ($t2 == $shlU64($t1, 16)); - - // $t3 := opaque begin: error::canonical($t1, $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:77:43+26 - assume {:print "$at(10,3201,3227)"} true; - - // assume WellFormed($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:77:43+26 - assume $IsValid'u64'($t3); - - // assume Eq($t3, $t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:77:43+26 - assume $IsEqual'u64'($t3, $t1); - - // $t3 := opaque end: error::canonical($t1, $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:77:43+26 - - // trace_return[0]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:77:43+26 - assume {:print "$track_return(4,8,0):", $t3} $t3 == $t3; - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:77:70+1 -L1: - - // return $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:77:70+1 - assume {:print "$at(10,3228,3229)"} true; - $ret0 := $t3; - return; - -} - -// fun error::permission_denied [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:80:3+77 -procedure {:inline 1} $1_error_permission_denied(_$t0: int) returns ($ret0: int) -{ - // declare local variables - var $t1: int; - var $t2: int; - var $t3: int; - var $t0: int; - var $temp_0'u64': int; - $t0 := _$t0; - - // bytecode translation starts here - // trace_local[r]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:80:3+1 - assume {:print "$at(10,3381,3382)"} true; - assume {:print "$track_local(4,9,0):", $t0} $t0 == $t0; - - // $t1 := 5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:80:57+17 - $t1 := 5; - assume $IsValid'u64'($t1); - - // assume Identical($t2, Shl($t1, 16)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:69:5+29 - assume {:print "$at(10,2844,2873)"} true; - assume ($t2 == $shlU64($t1, 16)); - - // $t3 := opaque begin: error::canonical($t1, $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:80:47+31 - assume {:print "$at(10,3425,3456)"} true; - - // assume WellFormed($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:80:47+31 - assume $IsValid'u64'($t3); - - // assume Eq($t3, $t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:80:47+31 - assume $IsEqual'u64'($t3, $t1); - - // $t3 := opaque end: error::canonical($t1, $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:80:47+31 - - // trace_return[0]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:80:47+31 - assume {:print "$track_return(4,9,0):", $t3} $t3 == $t3; - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:80:79+1 -L1: - - // return $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:80:79+1 - assume {:print "$at(10,3457,3458)"} true; - $ret0 := $t3; - return; - -} - -// fun error::unauthenticated [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:79:3+73 -procedure {:inline 1} $1_error_unauthenticated(_$t0: int) returns ($ret0: int) -{ - // declare local variables - var $t1: int; - var $t2: int; - var $t3: int; - var $t0: int; - var $temp_0'u64': int; - $t0 := _$t0; - - // bytecode translation starts here - // trace_local[r]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:79:3+1 - assume {:print "$at(10,3305,3306)"} true; - assume {:print "$track_local(4,11,0):", $t0} $t0 == $t0; - - // $t1 := 4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:79:55+15 - $t1 := 4; - assume $IsValid'u64'($t1); - - // assume Identical($t2, Shl($t1, 16)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:69:5+29 - assume {:print "$at(10,2844,2873)"} true; - assume ($t2 == $shlU64($t1, 16)); - - // $t3 := opaque begin: error::canonical($t1, $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:79:45+29 - assume {:print "$at(10,3347,3376)"} true; - - // assume WellFormed($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:79:45+29 - assume $IsValid'u64'($t3); - - // assume Eq($t3, $t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:79:45+29 - assume $IsEqual'u64'($t3, $t1); - - // $t3 := opaque end: error::canonical($t1, $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:79:45+29 - - // trace_return[0]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:79:45+29 - assume {:print "$track_return(4,11,0):", $t3} $t3 == $t3; - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:79:75+1 -L1: - - // return $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/error.move:79:75+1 - assume {:print "$at(10,3377,3378)"} true; - $ret0 := $t3; - return; - -} - -// struct type_info::TypeInfo at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/type_info.move:17:5+145 -type {:datatype} $1_type_info_TypeInfo; -function {:constructor} $1_type_info_TypeInfo($account_address: int, $module_name: Vec (int), $struct_name: Vec (int)): $1_type_info_TypeInfo; -function {:inline} $Update'$1_type_info_TypeInfo'_account_address(s: $1_type_info_TypeInfo, x: int): $1_type_info_TypeInfo { - $1_type_info_TypeInfo(x, $module_name#$1_type_info_TypeInfo(s), $struct_name#$1_type_info_TypeInfo(s)) -} -function {:inline} $Update'$1_type_info_TypeInfo'_module_name(s: $1_type_info_TypeInfo, x: Vec (int)): $1_type_info_TypeInfo { - $1_type_info_TypeInfo($account_address#$1_type_info_TypeInfo(s), x, $struct_name#$1_type_info_TypeInfo(s)) -} -function {:inline} $Update'$1_type_info_TypeInfo'_struct_name(s: $1_type_info_TypeInfo, x: Vec (int)): $1_type_info_TypeInfo { - $1_type_info_TypeInfo($account_address#$1_type_info_TypeInfo(s), $module_name#$1_type_info_TypeInfo(s), x) -} -function $IsValid'$1_type_info_TypeInfo'(s: $1_type_info_TypeInfo): bool { - $IsValid'address'($account_address#$1_type_info_TypeInfo(s)) - && $IsValid'vec'u8''($module_name#$1_type_info_TypeInfo(s)) - && $IsValid'vec'u8''($struct_name#$1_type_info_TypeInfo(s)) -} -function {:inline} $IsEqual'$1_type_info_TypeInfo'(s1: $1_type_info_TypeInfo, s2: $1_type_info_TypeInfo): bool { - $IsEqual'address'($account_address#$1_type_info_TypeInfo(s1), $account_address#$1_type_info_TypeInfo(s2)) - && $IsEqual'vec'u8''($module_name#$1_type_info_TypeInfo(s1), $module_name#$1_type_info_TypeInfo(s2)) - && $IsEqual'vec'u8''($struct_name#$1_type_info_TypeInfo(s1), $struct_name#$1_type_info_TypeInfo(s2))} - -// struct guid::GUID at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/guid.move:7:5+50 -type {:datatype} $1_guid_GUID; -function {:constructor} $1_guid_GUID($id: $1_guid_ID): $1_guid_GUID; -function {:inline} $Update'$1_guid_GUID'_id(s: $1_guid_GUID, x: $1_guid_ID): $1_guid_GUID { - $1_guid_GUID(x) -} -function $IsValid'$1_guid_GUID'(s: $1_guid_GUID): bool { - $IsValid'$1_guid_ID'($id#$1_guid_GUID(s)) -} -function {:inline} $IsEqual'$1_guid_GUID'(s1: $1_guid_GUID, s2: $1_guid_GUID): bool { - s1 == s2 -} - -// struct guid::ID at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/guid.move:12:5+209 -type {:datatype} $1_guid_ID; -function {:constructor} $1_guid_ID($creation_num: int, $addr: int): $1_guid_ID; -function {:inline} $Update'$1_guid_ID'_creation_num(s: $1_guid_ID, x: int): $1_guid_ID { - $1_guid_ID(x, $addr#$1_guid_ID(s)) -} -function {:inline} $Update'$1_guid_ID'_addr(s: $1_guid_ID, x: int): $1_guid_ID { - $1_guid_ID($creation_num#$1_guid_ID(s), x) -} -function $IsValid'$1_guid_ID'(s: $1_guid_ID): bool { - $IsValid'u64'($creation_num#$1_guid_ID(s)) - && $IsValid'address'($addr#$1_guid_ID(s)) -} -function {:inline} $IsEqual'$1_guid_ID'(s1: $1_guid_ID, s2: $1_guid_ID): bool { - s1 == s2 -} - -// fun guid::create [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/guid.move:23:5+286 -procedure {:inline 1} $1_guid_create(_$t0: int, _$t1: $Mutation (int)) returns ($ret0: $1_guid_GUID, $ret1: $Mutation (int)) -{ - // declare local variables - var $t2: int; - var $t3: int; - var $t4: int; - var $t5: int; - var $t6: int; - var $t7: $1_guid_ID; - var $t8: $1_guid_GUID; - var $t0: int; - var $t1: $Mutation (int); - var $temp_0'$1_guid_GUID': $1_guid_GUID; - var $temp_0'address': int; - var $temp_0'u64': int; - $t0 := _$t0; - $t1 := _$t1; - - // bytecode translation starts here - // trace_local[addr]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/guid.move:23:5+1 - assume {:print "$at(125,836,837)"} true; - assume {:print "$track_local(13,0,0):", $t0} $t0 == $t0; - - // trace_local[creation_num_ref]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/guid.move:23:5+1 - $temp_0'u64' := $Dereference($t1); - assume {:print "$track_local(13,0,1):", $temp_0'u64'} $temp_0'u64' == $temp_0'u64'; - - // $t3 := read_ref($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/guid.move:24:28+17 - assume {:print "$at(125,940,957)"} true; - $t3 := $Dereference($t1); - - // trace_local[creation_num]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/guid.move:24:13+12 - assume {:print "$track_local(13,0,2):", $t3} $t3 == $t3; - - // $t4 := 1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/guid.move:25:44+1 - assume {:print "$at(125,1002,1003)"} true; - $t4 := 1; - assume $IsValid'u64'($t4); - - // $t5 := +($t3, $t4) on_abort goto L2 with $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/guid.move:25:42+1 - call $t5 := $AddU64($t3, $t4); - if ($abort_flag) { - assume {:print "$at(125,1000,1001)"} true; - $t6 := $abort_code; - assume {:print "$track_abort(13,0):", $t6} $t6 == $t6; - goto L2; - } - - // write_ref($t1, $t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/guid.move:25:9+36 - $t1 := $UpdateMutation($t1, $t5); - - // $t7 := pack guid::ID($t3, $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/guid.move:27:17+70 - assume {:print "$at(125,1036,1106)"} true; - $t7 := $1_guid_ID($t3, $t0); - - // $t8 := pack guid::GUID($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/guid.move:26:9+103 - assume {:print "$at(125,1013,1116)"} true; - $t8 := $1_guid_GUID($t7); - - // trace_return[0]($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/guid.move:26:9+103 - assume {:print "$track_return(13,0,0):", $t8} $t8 == $t8; - - // trace_local[creation_num_ref]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/guid.move:26:9+103 - $temp_0'u64' := $Dereference($t1); - assume {:print "$track_local(13,0,1):", $temp_0'u64'} $temp_0'u64' == $temp_0'u64'; - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/guid.move:32:5+1 - assume {:print "$at(125,1121,1122)"} true; -L1: - - // return $t8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/guid.move:32:5+1 - assume {:print "$at(125,1121,1122)"} true; - $ret0 := $t8; - $ret1 := $t1; - return; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/guid.move:32:5+1 -L2: - - // abort($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/guid.move:32:5+1 - assume {:print "$at(125,1121,1122)"} true; - $abort_code := $t6; - $abort_flag := true; - return; - -} - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'bool'(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'bool'(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'u8'(bytes: Vec (int)): int; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'u8'(bytes); -$IsValid'u8'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'u64'(bytes: Vec (int)): int; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'u64'(bytes); -$IsValid'u64'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'u128'(bytes: Vec (int)): int; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'u128'(bytes); -$IsValid'u128'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'u256'(bytes: Vec (int)): int; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'u256'(bytes); -$IsValid'u256'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'address'(bytes: Vec (int)): int; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'address'(bytes); -$IsValid'address'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'signer'(bytes: Vec (int)): $signer; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'signer'(bytes); -$IsValid'signer'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'vec'u8''(bytes: Vec (int)): Vec (int); -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'vec'u8''(bytes); -$IsValid'vec'u8''($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'vec'address''(bytes: Vec (int)): Vec (int); -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'vec'address''(bytes); -$IsValid'vec'address''($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'vec'$1_aggregator_Aggregator''(bytes: Vec (int)): Vec ($1_aggregator_Aggregator); -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'vec'$1_aggregator_Aggregator''(bytes); -$IsValid'vec'$1_aggregator_Aggregator''($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'vec'$1_optional_aggregator_Integer''(bytes: Vec (int)): Vec ($1_optional_aggregator_Integer); -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'vec'$1_optional_aggregator_Integer''(bytes); -$IsValid'vec'$1_optional_aggregator_Integer''($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'vec'$1_optional_aggregator_OptionalAggregator''(bytes: Vec (int)): Vec ($1_optional_aggregator_OptionalAggregator); -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'vec'$1_optional_aggregator_OptionalAggregator''(bytes); -$IsValid'vec'$1_optional_aggregator_OptionalAggregator''($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'vec'$1_fixed_point32_FixedPoint32''(bytes: Vec (int)): Vec ($1_fixed_point32_FixedPoint32); -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'vec'$1_fixed_point32_FixedPoint32''(bytes); -$IsValid'vec'$1_fixed_point32_FixedPoint32''($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'vec'$1_stake_IndividualValidatorPerformance''(bytes: Vec (int)): Vec ($1_stake_IndividualValidatorPerformance); -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'vec'$1_stake_IndividualValidatorPerformance''(bytes); -$IsValid'vec'$1_stake_IndividualValidatorPerformance''($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'vec'$1_stake_ValidatorInfo''(bytes: Vec (int)): Vec ($1_stake_ValidatorInfo); -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'vec'$1_stake_ValidatorInfo''(bytes); -$IsValid'vec'$1_stake_ValidatorInfo''($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'vec'#0''(bytes: Vec (int)): Vec (#0); -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'vec'#0''(bytes); -$IsValid'vec'#0''($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_option_Option'address''(bytes: Vec (int)): $1_option_Option'address'; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_option_Option'address''(bytes); -$IsValid'$1_option_Option'address''($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_option_Option'$1_aggregator_Aggregator''(bytes: Vec (int)): $1_option_Option'$1_aggregator_Aggregator'; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_option_Option'$1_aggregator_Aggregator''(bytes); -$IsValid'$1_option_Option'$1_aggregator_Aggregator''($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_option_Option'$1_optional_aggregator_Integer''(bytes: Vec (int)): $1_option_Option'$1_optional_aggregator_Integer'; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_option_Option'$1_optional_aggregator_Integer''(bytes); -$IsValid'$1_option_Option'$1_optional_aggregator_Integer''($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_option_Option'$1_optional_aggregator_OptionalAggregator''(bytes: Vec (int)): $1_option_Option'$1_optional_aggregator_OptionalAggregator'; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_option_Option'$1_optional_aggregator_OptionalAggregator''(bytes); -$IsValid'$1_option_Option'$1_optional_aggregator_OptionalAggregator''($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_string_String'(bytes: Vec (int)): $1_string_String; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_string_String'(bytes); -$IsValid'$1_string_String'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_type_info_TypeInfo'(bytes: Vec (int)): $1_type_info_TypeInfo; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_type_info_TypeInfo'(bytes); -$IsValid'$1_type_info_TypeInfo'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_guid_GUID'(bytes: Vec (int)): $1_guid_GUID; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_guid_GUID'(bytes); -$IsValid'$1_guid_GUID'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_guid_ID'(bytes: Vec (int)): $1_guid_ID; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_guid_ID'(bytes); -$IsValid'$1_guid_ID'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_event_EventHandle'$1_account_CoinRegisterEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_account_CoinRegisterEvent'; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_account_CoinRegisterEvent''(bytes); -$IsValid'$1_event_EventHandle'$1_account_CoinRegisterEvent''($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_event_EventHandle'$1_account_KeyRotationEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_account_KeyRotationEvent'; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_account_KeyRotationEvent''(bytes); -$IsValid'$1_event_EventHandle'$1_account_KeyRotationEvent''($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_event_EventHandle'$1_coin_DepositEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_coin_DepositEvent'; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_coin_DepositEvent''(bytes); -$IsValid'$1_event_EventHandle'$1_coin_DepositEvent''($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_event_EventHandle'$1_coin_WithdrawEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_coin_WithdrawEvent'; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_coin_WithdrawEvent''(bytes); -$IsValid'$1_event_EventHandle'$1_coin_WithdrawEvent''($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_AddStakeEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_stake_AddStakeEvent'; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_AddStakeEvent''(bytes); -$IsValid'$1_event_EventHandle'$1_stake_AddStakeEvent''($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_DistributeRewardsEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_stake_DistributeRewardsEvent'; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_DistributeRewardsEvent''(bytes); -$IsValid'$1_event_EventHandle'$1_stake_DistributeRewardsEvent''($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_IncreaseLockupEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_stake_IncreaseLockupEvent'; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_IncreaseLockupEvent''(bytes); -$IsValid'$1_event_EventHandle'$1_stake_IncreaseLockupEvent''($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_JoinValidatorSetEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_stake_JoinValidatorSetEvent'; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_JoinValidatorSetEvent''(bytes); -$IsValid'$1_event_EventHandle'$1_stake_JoinValidatorSetEvent''($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_LeaveValidatorSetEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_stake_LeaveValidatorSetEvent'; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_LeaveValidatorSetEvent''(bytes); -$IsValid'$1_event_EventHandle'$1_stake_LeaveValidatorSetEvent''($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_ReactivateStakeEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_stake_ReactivateStakeEvent'; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_ReactivateStakeEvent''(bytes); -$IsValid'$1_event_EventHandle'$1_stake_ReactivateStakeEvent''($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_RegisterValidatorCandidateEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_stake_RegisterValidatorCandidateEvent'; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_RegisterValidatorCandidateEvent''(bytes); -$IsValid'$1_event_EventHandle'$1_stake_RegisterValidatorCandidateEvent''($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_RotateConsensusKeyEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_stake_RotateConsensusKeyEvent'; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_RotateConsensusKeyEvent''(bytes); -$IsValid'$1_event_EventHandle'$1_stake_RotateConsensusKeyEvent''($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_SetOperatorEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_stake_SetOperatorEvent'; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_SetOperatorEvent''(bytes); -$IsValid'$1_event_EventHandle'$1_stake_SetOperatorEvent''($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_UnlockStakeEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_stake_UnlockStakeEvent'; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_UnlockStakeEvent''(bytes); -$IsValid'$1_event_EventHandle'$1_stake_UnlockStakeEvent''($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_UpdateNetworkAndFullnodeAddressesEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_stake_UpdateNetworkAndFullnodeAddressesEvent'; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_UpdateNetworkAndFullnodeAddressesEvent''(bytes); -$IsValid'$1_event_EventHandle'$1_stake_UpdateNetworkAndFullnodeAddressesEvent''($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_WithdrawStakeEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_stake_WithdrawStakeEvent'; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_stake_WithdrawStakeEvent''(bytes); -$IsValid'$1_event_EventHandle'$1_stake_WithdrawStakeEvent''($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_event_EventHandle'$1_reconfiguration_NewEpochEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_reconfiguration_NewEpochEvent'; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_reconfiguration_NewEpochEvent''(bytes); -$IsValid'$1_event_EventHandle'$1_reconfiguration_NewEpochEvent''($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_AddStakeEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_staking_contract_AddStakeEvent'; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_AddStakeEvent''(bytes); -$IsValid'$1_event_EventHandle'$1_staking_contract_AddStakeEvent''($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_UnlockStakeEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_staking_contract_UnlockStakeEvent'; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_UnlockStakeEvent''(bytes); -$IsValid'$1_event_EventHandle'$1_staking_contract_UnlockStakeEvent''($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_staking_contract_AddDistributionEvent'; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent''(bytes); -$IsValid'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent''($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent'; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent''(bytes); -$IsValid'$1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent''($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_DistributeEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_staking_contract_DistributeEvent'; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_DistributeEvent''(bytes); -$IsValid'$1_event_EventHandle'$1_staking_contract_DistributeEvent''($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_RequestCommissionEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_staking_contract_RequestCommissionEvent'; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_RequestCommissionEvent''(bytes); -$IsValid'$1_event_EventHandle'$1_staking_contract_RequestCommissionEvent''($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_ResetLockupEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_staking_contract_ResetLockupEvent'; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_ResetLockupEvent''(bytes); -$IsValid'$1_event_EventHandle'$1_staking_contract_ResetLockupEvent''($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent'; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent''(bytes); -$IsValid'$1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent''($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_UpdateVoterEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_staking_contract_UpdateVoterEvent'; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_staking_contract_UpdateVoterEvent''(bytes); -$IsValid'$1_event_EventHandle'$1_staking_contract_UpdateVoterEvent''($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_DistributeEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_vesting_DistributeEvent'; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_DistributeEvent''(bytes); -$IsValid'$1_event_EventHandle'$1_vesting_DistributeEvent''($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_ResetLockupEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_vesting_ResetLockupEvent'; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_ResetLockupEvent''(bytes); -$IsValid'$1_event_EventHandle'$1_vesting_ResetLockupEvent''($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_UpdateVoterEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_vesting_UpdateVoterEvent'; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_UpdateVoterEvent''(bytes); -$IsValid'$1_event_EventHandle'$1_vesting_UpdateVoterEvent''($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_AdminWithdrawEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_vesting_AdminWithdrawEvent'; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_AdminWithdrawEvent''(bytes); -$IsValid'$1_event_EventHandle'$1_vesting_AdminWithdrawEvent''($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_CreateVestingContractEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_vesting_CreateVestingContractEvent'; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_CreateVestingContractEvent''(bytes); -$IsValid'$1_event_EventHandle'$1_vesting_CreateVestingContractEvent''($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_SetBeneficiaryEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_vesting_SetBeneficiaryEvent'; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_SetBeneficiaryEvent''(bytes); -$IsValid'$1_event_EventHandle'$1_vesting_SetBeneficiaryEvent''($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_TerminateEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_vesting_TerminateEvent'; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_TerminateEvent''(bytes); -$IsValid'$1_event_EventHandle'$1_vesting_TerminateEvent''($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_UnlockRewardsEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_vesting_UnlockRewardsEvent'; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_UnlockRewardsEvent''(bytes); -$IsValid'$1_event_EventHandle'$1_vesting_UnlockRewardsEvent''($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_UpdateOperatorEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_vesting_UpdateOperatorEvent'; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_UpdateOperatorEvent''(bytes); -$IsValid'$1_event_EventHandle'$1_vesting_UpdateOperatorEvent''($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_VestEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_vesting_VestEvent'; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_vesting_VestEvent''(bytes); -$IsValid'$1_event_EventHandle'$1_vesting_VestEvent''($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_account_Account'(bytes: Vec (int)): $1_account_Account; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_account_Account'(bytes); -$IsValid'$1_account_Account'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_account_CapabilityOffer'$1_account_RotationCapability''(bytes: Vec (int)): $1_account_CapabilityOffer'$1_account_RotationCapability'; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_account_CapabilityOffer'$1_account_RotationCapability''(bytes); -$IsValid'$1_account_CapabilityOffer'$1_account_RotationCapability''($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_account_CapabilityOffer'$1_account_SignerCapability''(bytes: Vec (int)): $1_account_CapabilityOffer'$1_account_SignerCapability'; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_account_CapabilityOffer'$1_account_SignerCapability''(bytes); -$IsValid'$1_account_CapabilityOffer'$1_account_SignerCapability''($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_account_CoinRegisterEvent'(bytes: Vec (int)): $1_account_CoinRegisterEvent; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_account_CoinRegisterEvent'(bytes); -$IsValid'$1_account_CoinRegisterEvent'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_account_SignerCapability'(bytes: Vec (int)): $1_account_SignerCapability; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_account_SignerCapability'(bytes); -$IsValid'$1_account_SignerCapability'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_aggregator_Aggregator'(bytes: Vec (int)): $1_aggregator_Aggregator; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_aggregator_Aggregator'(bytes); -$IsValid'$1_aggregator_Aggregator'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_optional_aggregator_Integer'(bytes: Vec (int)): $1_optional_aggregator_Integer; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_optional_aggregator_Integer'(bytes); -$IsValid'$1_optional_aggregator_Integer'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_optional_aggregator_OptionalAggregator'(bytes: Vec (int)): $1_optional_aggregator_OptionalAggregator; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_optional_aggregator_OptionalAggregator'(bytes); -$IsValid'$1_optional_aggregator_OptionalAggregator'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_coin_Coin'$1_aptos_coin_AptosCoin''(bytes: Vec (int)): $1_coin_Coin'$1_aptos_coin_AptosCoin'; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_coin_Coin'$1_aptos_coin_AptosCoin''(bytes); -$IsValid'$1_coin_Coin'$1_aptos_coin_AptosCoin''($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_coin_CoinInfo'$1_aptos_coin_AptosCoin''(bytes: Vec (int)): $1_coin_CoinInfo'$1_aptos_coin_AptosCoin'; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_coin_CoinInfo'$1_aptos_coin_AptosCoin''(bytes); -$IsValid'$1_coin_CoinInfo'$1_aptos_coin_AptosCoin''($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''(bytes: Vec (int)): $1_coin_CoinStore'$1_aptos_coin_AptosCoin'; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''(bytes); -$IsValid'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin''(bytes: Vec (int)): $1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin''(bytes); -$IsValid'$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin''($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin''(bytes: Vec (int)): $1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin''(bytes); -$IsValid'$1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin''($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_aptos_coin_AptosCoin'(bytes: Vec (int)): $1_aptos_coin_AptosCoin; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_aptos_coin_AptosCoin'(bytes); -$IsValid'$1_aptos_coin_AptosCoin'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_chain_status_GenesisEndMarker'(bytes: Vec (int)): $1_chain_status_GenesisEndMarker; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_chain_status_GenesisEndMarker'(bytes); -$IsValid'$1_chain_status_GenesisEndMarker'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_timestamp_CurrentTimeMicroseconds'(bytes: Vec (int)): $1_timestamp_CurrentTimeMicroseconds; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_timestamp_CurrentTimeMicroseconds'(bytes); -$IsValid'$1_timestamp_CurrentTimeMicroseconds'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_simple_map_SimpleMap'address_u64''(bytes: Vec (int)): Table int (int); -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_simple_map_SimpleMap'address_u64''(bytes); -$IsValid'$1_simple_map_SimpleMap'address_u64''($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_simple_map_SimpleMap'address_address''(bytes: Vec (int)): Table int (int); -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_simple_map_SimpleMap'address_address''(bytes); -$IsValid'$1_simple_map_SimpleMap'address_address''($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_simple_map_SimpleMap'address_$1_staking_contract_StakingContract''(bytes: Vec (int)): Table int ($1_staking_contract_StakingContract); -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_simple_map_SimpleMap'address_$1_staking_contract_StakingContract''(bytes); -$IsValid'$1_simple_map_SimpleMap'address_$1_staking_contract_StakingContract''($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_simple_map_SimpleMap'$1_string_String_address''(bytes: Vec (int)): Table int (int); -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_simple_map_SimpleMap'$1_string_String_address''(bytes); -$IsValid'$1_simple_map_SimpleMap'$1_string_String_address''($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_fixed_point32_FixedPoint32'(bytes: Vec (int)): $1_fixed_point32_FixedPoint32; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_fixed_point32_FixedPoint32'(bytes); -$IsValid'$1_fixed_point32_FixedPoint32'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_staking_config_StakingConfig'(bytes: Vec (int)): $1_staking_config_StakingConfig; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_staking_config_StakingConfig'(bytes); -$IsValid'$1_staking_config_StakingConfig'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_stake_IncreaseLockupEvent'(bytes: Vec (int)): $1_stake_IncreaseLockupEvent; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_stake_IncreaseLockupEvent'(bytes); -$IsValid'$1_stake_IncreaseLockupEvent'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_stake_OwnerCapability'(bytes: Vec (int)): $1_stake_OwnerCapability; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_stake_OwnerCapability'(bytes); -$IsValid'$1_stake_OwnerCapability'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_stake_StakePool'(bytes: Vec (int)): $1_stake_StakePool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_stake_StakePool'(bytes); -$IsValid'$1_stake_StakePool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_stake_ValidatorConfig'(bytes: Vec (int)): $1_stake_ValidatorConfig; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_stake_ValidatorConfig'(bytes); -$IsValid'$1_stake_ValidatorConfig'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_stake_ValidatorPerformance'(bytes: Vec (int)): $1_stake_ValidatorPerformance; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_stake_ValidatorPerformance'(bytes); -$IsValid'$1_stake_ValidatorPerformance'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_stake_ValidatorSet'(bytes: Vec (int)): $1_stake_ValidatorSet; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_stake_ValidatorSet'(bytes); -$IsValid'$1_stake_ValidatorSet'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_reconfiguration_Configuration'(bytes: Vec (int)): $1_reconfiguration_Configuration; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_reconfiguration_Configuration'(bytes); -$IsValid'$1_reconfiguration_Configuration'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_pool_u64_Pool'(bytes: Vec (int)): $1_pool_u64_Pool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_pool_u64_Pool'(bytes); -$IsValid'$1_pool_u64_Pool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_staking_contract_ResetLockupEvent'(bytes: Vec (int)): $1_staking_contract_ResetLockupEvent; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_staking_contract_ResetLockupEvent'(bytes); -$IsValid'$1_staking_contract_ResetLockupEvent'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_staking_contract_StakingContract'(bytes: Vec (int)): $1_staking_contract_StakingContract; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_staking_contract_StakingContract'(bytes); -$IsValid'$1_staking_contract_StakingContract'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_staking_contract_Store'(bytes: Vec (int)): $1_staking_contract_Store; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_staking_contract_Store'(bytes); -$IsValid'$1_staking_contract_Store'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_staking_contract_UpdateVoterEvent'(bytes: Vec (int)): $1_staking_contract_UpdateVoterEvent; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_staking_contract_UpdateVoterEvent'(bytes); -$IsValid'$1_staking_contract_UpdateVoterEvent'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_vesting_ResetLockupEvent'(bytes: Vec (int)): $1_vesting_ResetLockupEvent; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_vesting_ResetLockupEvent'(bytes); -$IsValid'$1_vesting_ResetLockupEvent'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_vesting_UpdateVoterEvent'(bytes: Vec (int)): $1_vesting_UpdateVoterEvent; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_vesting_UpdateVoterEvent'(bytes); -$IsValid'$1_vesting_UpdateVoterEvent'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_vesting_AdminStore'(bytes: Vec (int)): $1_vesting_AdminStore; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_vesting_AdminStore'(bytes); -$IsValid'$1_vesting_AdminStore'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_vesting_SetBeneficiaryEvent'(bytes: Vec (int)): $1_vesting_SetBeneficiaryEvent; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_vesting_SetBeneficiaryEvent'(bytes); -$IsValid'$1_vesting_SetBeneficiaryEvent'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_vesting_StakingInfo'(bytes: Vec (int)): $1_vesting_StakingInfo; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_vesting_StakingInfo'(bytes); -$IsValid'$1_vesting_StakingInfo'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_vesting_VestingAccountManagement'(bytes: Vec (int)): $1_vesting_VestingAccountManagement; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_vesting_VestingAccountManagement'(bytes); -$IsValid'$1_vesting_VestingAccountManagement'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_vesting_VestingContract'(bytes: Vec (int)): $1_vesting_VestingContract; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_vesting_VestingContract'(bytes); -$IsValid'$1_vesting_VestingContract'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'$1_vesting_VestingSchedule'(bytes: Vec (int)): $1_vesting_VestingSchedule; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'$1_vesting_VestingSchedule'(bytes); -$IsValid'$1_vesting_VestingSchedule'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:7:9+41 -function $1_from_bcs_deserialize'#0'(bytes: Vec (int)): #0; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserialize'#0'(bytes); -$IsValid'#0'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'bool'(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'bool'(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'u8'(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'u8'(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'u64'(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'u64'(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'u128'(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'u128'(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'u256'(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'u256'(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'address'(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'address'(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'signer'(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'signer'(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'vec'u8''(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'vec'u8''(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'vec'address''(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'vec'address''(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'vec'$1_aggregator_Aggregator''(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'vec'$1_aggregator_Aggregator''(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'vec'$1_optional_aggregator_Integer''(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'vec'$1_optional_aggregator_Integer''(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'vec'$1_optional_aggregator_OptionalAggregator''(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'vec'$1_optional_aggregator_OptionalAggregator''(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'vec'$1_fixed_point32_FixedPoint32''(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'vec'$1_fixed_point32_FixedPoint32''(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'vec'$1_stake_IndividualValidatorPerformance''(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'vec'$1_stake_IndividualValidatorPerformance''(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'vec'$1_stake_ValidatorInfo''(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'vec'$1_stake_ValidatorInfo''(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'vec'#0''(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'vec'#0''(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_option_Option'address''(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_option_Option'address''(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_option_Option'$1_aggregator_Aggregator''(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_option_Option'$1_aggregator_Aggregator''(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_option_Option'$1_optional_aggregator_Integer''(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_option_Option'$1_optional_aggregator_Integer''(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_option_Option'$1_optional_aggregator_OptionalAggregator''(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_option_Option'$1_optional_aggregator_OptionalAggregator''(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_string_String'(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_string_String'(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_type_info_TypeInfo'(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_type_info_TypeInfo'(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_guid_GUID'(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_guid_GUID'(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_guid_ID'(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_guid_ID'(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_event_EventHandle'$1_account_CoinRegisterEvent''(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_account_CoinRegisterEvent''(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_event_EventHandle'$1_account_KeyRotationEvent''(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_account_KeyRotationEvent''(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_event_EventHandle'$1_coin_DepositEvent''(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_coin_DepositEvent''(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_event_EventHandle'$1_coin_WithdrawEvent''(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_coin_WithdrawEvent''(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_AddStakeEvent''(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_AddStakeEvent''(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_DistributeRewardsEvent''(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_DistributeRewardsEvent''(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_IncreaseLockupEvent''(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_IncreaseLockupEvent''(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_JoinValidatorSetEvent''(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_JoinValidatorSetEvent''(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_LeaveValidatorSetEvent''(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_LeaveValidatorSetEvent''(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_ReactivateStakeEvent''(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_ReactivateStakeEvent''(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_RegisterValidatorCandidateEvent''(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_RegisterValidatorCandidateEvent''(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_RotateConsensusKeyEvent''(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_RotateConsensusKeyEvent''(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_SetOperatorEvent''(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_SetOperatorEvent''(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_UnlockStakeEvent''(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_UnlockStakeEvent''(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_UpdateNetworkAndFullnodeAddressesEvent''(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_UpdateNetworkAndFullnodeAddressesEvent''(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_WithdrawStakeEvent''(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_stake_WithdrawStakeEvent''(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_event_EventHandle'$1_reconfiguration_NewEpochEvent''(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_reconfiguration_NewEpochEvent''(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_event_EventHandle'$1_staking_contract_AddStakeEvent''(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_staking_contract_AddStakeEvent''(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_event_EventHandle'$1_staking_contract_UnlockStakeEvent''(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_staking_contract_UnlockStakeEvent''(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent''(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent''(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent''(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent''(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_event_EventHandle'$1_staking_contract_DistributeEvent''(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_staking_contract_DistributeEvent''(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_event_EventHandle'$1_staking_contract_RequestCommissionEvent''(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_staking_contract_RequestCommissionEvent''(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_event_EventHandle'$1_staking_contract_ResetLockupEvent''(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_staking_contract_ResetLockupEvent''(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent''(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent''(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_event_EventHandle'$1_staking_contract_UpdateVoterEvent''(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_staking_contract_UpdateVoterEvent''(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_event_EventHandle'$1_vesting_DistributeEvent''(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_vesting_DistributeEvent''(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_event_EventHandle'$1_vesting_ResetLockupEvent''(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_vesting_ResetLockupEvent''(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_event_EventHandle'$1_vesting_UpdateVoterEvent''(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_vesting_UpdateVoterEvent''(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_event_EventHandle'$1_vesting_AdminWithdrawEvent''(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_vesting_AdminWithdrawEvent''(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_event_EventHandle'$1_vesting_CreateVestingContractEvent''(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_vesting_CreateVestingContractEvent''(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_event_EventHandle'$1_vesting_SetBeneficiaryEvent''(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_vesting_SetBeneficiaryEvent''(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_event_EventHandle'$1_vesting_TerminateEvent''(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_vesting_TerminateEvent''(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_event_EventHandle'$1_vesting_UnlockRewardsEvent''(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_vesting_UnlockRewardsEvent''(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_event_EventHandle'$1_vesting_UpdateOperatorEvent''(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_vesting_UpdateOperatorEvent''(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_event_EventHandle'$1_vesting_VestEvent''(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_vesting_VestEvent''(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_account_Account'(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_account_Account'(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_account_CapabilityOffer'$1_account_RotationCapability''(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_account_CapabilityOffer'$1_account_RotationCapability''(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_account_CapabilityOffer'$1_account_SignerCapability''(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_account_CapabilityOffer'$1_account_SignerCapability''(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_account_CoinRegisterEvent'(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_account_CoinRegisterEvent'(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_account_SignerCapability'(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_account_SignerCapability'(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_aggregator_Aggregator'(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_aggregator_Aggregator'(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_optional_aggregator_Integer'(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_optional_aggregator_Integer'(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_optional_aggregator_OptionalAggregator'(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_optional_aggregator_OptionalAggregator'(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_coin_Coin'$1_aptos_coin_AptosCoin''(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_coin_Coin'$1_aptos_coin_AptosCoin''(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_coin_CoinInfo'$1_aptos_coin_AptosCoin''(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_coin_CoinInfo'$1_aptos_coin_AptosCoin''(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin''(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin''(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin''(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin''(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_aptos_coin_AptosCoin'(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_aptos_coin_AptosCoin'(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_chain_status_GenesisEndMarker'(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_chain_status_GenesisEndMarker'(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_timestamp_CurrentTimeMicroseconds'(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_timestamp_CurrentTimeMicroseconds'(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_simple_map_SimpleMap'address_u64''(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_simple_map_SimpleMap'address_u64''(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_simple_map_SimpleMap'address_address''(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_simple_map_SimpleMap'address_address''(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_simple_map_SimpleMap'address_$1_staking_contract_StakingContract''(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_simple_map_SimpleMap'address_$1_staking_contract_StakingContract''(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_simple_map_SimpleMap'$1_string_String_address''(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_simple_map_SimpleMap'$1_string_String_address''(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_fixed_point32_FixedPoint32'(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_fixed_point32_FixedPoint32'(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_staking_config_StakingConfig'(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_staking_config_StakingConfig'(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_stake_IncreaseLockupEvent'(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_stake_IncreaseLockupEvent'(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_stake_OwnerCapability'(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_stake_OwnerCapability'(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_stake_StakePool'(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_stake_StakePool'(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_stake_ValidatorConfig'(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_stake_ValidatorConfig'(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_stake_ValidatorPerformance'(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_stake_ValidatorPerformance'(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_stake_ValidatorSet'(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_stake_ValidatorSet'(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_reconfiguration_Configuration'(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_reconfiguration_Configuration'(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_pool_u64_Pool'(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_pool_u64_Pool'(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_staking_contract_ResetLockupEvent'(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_staking_contract_ResetLockupEvent'(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_staking_contract_StakingContract'(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_staking_contract_StakingContract'(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_staking_contract_Store'(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_staking_contract_Store'(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_staking_contract_UpdateVoterEvent'(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_staking_contract_UpdateVoterEvent'(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_vesting_ResetLockupEvent'(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_vesting_ResetLockupEvent'(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_vesting_UpdateVoterEvent'(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_vesting_UpdateVoterEvent'(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_vesting_AdminStore'(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_vesting_AdminStore'(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_vesting_SetBeneficiaryEvent'(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_vesting_SetBeneficiaryEvent'(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_vesting_StakingInfo'(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_vesting_StakingInfo'(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_vesting_VestingAccountManagement'(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_vesting_VestingAccountManagement'(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_vesting_VestingContract'(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_vesting_VestingContract'(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'$1_vesting_VestingSchedule'(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'$1_vesting_VestingSchedule'(bytes); -$IsValid'bool'($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/from_bcs.spec.move:11:9+47 -function $1_from_bcs_deserializable'#0'(bytes: Vec (int)): bool; -axiom (forall bytes: Vec (int) :: -(var $$res := $1_from_bcs_deserializable'#0'(bytes); -$IsValid'bool'($$res))); - -// struct event::EventHandle at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:16:5+224 -type {:datatype} $1_event_EventHandle'$1_account_CoinRegisterEvent'; -function {:constructor} $1_event_EventHandle'$1_account_CoinRegisterEvent'($counter: int, $guid: $1_guid_GUID): $1_event_EventHandle'$1_account_CoinRegisterEvent'; -function {:inline} $Update'$1_event_EventHandle'$1_account_CoinRegisterEvent''_counter(s: $1_event_EventHandle'$1_account_CoinRegisterEvent', x: int): $1_event_EventHandle'$1_account_CoinRegisterEvent' { - $1_event_EventHandle'$1_account_CoinRegisterEvent'(x, $guid#$1_event_EventHandle'$1_account_CoinRegisterEvent'(s)) -} -function {:inline} $Update'$1_event_EventHandle'$1_account_CoinRegisterEvent''_guid(s: $1_event_EventHandle'$1_account_CoinRegisterEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_account_CoinRegisterEvent' { - $1_event_EventHandle'$1_account_CoinRegisterEvent'($counter#$1_event_EventHandle'$1_account_CoinRegisterEvent'(s), x) -} -function $IsValid'$1_event_EventHandle'$1_account_CoinRegisterEvent''(s: $1_event_EventHandle'$1_account_CoinRegisterEvent'): bool { - $IsValid'u64'($counter#$1_event_EventHandle'$1_account_CoinRegisterEvent'(s)) - && $IsValid'$1_guid_GUID'($guid#$1_event_EventHandle'$1_account_CoinRegisterEvent'(s)) -} -function {:inline} $IsEqual'$1_event_EventHandle'$1_account_CoinRegisterEvent''(s1: $1_event_EventHandle'$1_account_CoinRegisterEvent', s2: $1_event_EventHandle'$1_account_CoinRegisterEvent'): bool { - s1 == s2 -} - -// struct event::EventHandle at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:16:5+224 -type {:datatype} $1_event_EventHandle'$1_account_KeyRotationEvent'; -function {:constructor} $1_event_EventHandle'$1_account_KeyRotationEvent'($counter: int, $guid: $1_guid_GUID): $1_event_EventHandle'$1_account_KeyRotationEvent'; -function {:inline} $Update'$1_event_EventHandle'$1_account_KeyRotationEvent''_counter(s: $1_event_EventHandle'$1_account_KeyRotationEvent', x: int): $1_event_EventHandle'$1_account_KeyRotationEvent' { - $1_event_EventHandle'$1_account_KeyRotationEvent'(x, $guid#$1_event_EventHandle'$1_account_KeyRotationEvent'(s)) -} -function {:inline} $Update'$1_event_EventHandle'$1_account_KeyRotationEvent''_guid(s: $1_event_EventHandle'$1_account_KeyRotationEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_account_KeyRotationEvent' { - $1_event_EventHandle'$1_account_KeyRotationEvent'($counter#$1_event_EventHandle'$1_account_KeyRotationEvent'(s), x) -} -function $IsValid'$1_event_EventHandle'$1_account_KeyRotationEvent''(s: $1_event_EventHandle'$1_account_KeyRotationEvent'): bool { - $IsValid'u64'($counter#$1_event_EventHandle'$1_account_KeyRotationEvent'(s)) - && $IsValid'$1_guid_GUID'($guid#$1_event_EventHandle'$1_account_KeyRotationEvent'(s)) -} -function {:inline} $IsEqual'$1_event_EventHandle'$1_account_KeyRotationEvent''(s1: $1_event_EventHandle'$1_account_KeyRotationEvent', s2: $1_event_EventHandle'$1_account_KeyRotationEvent'): bool { - s1 == s2 -} - -// struct event::EventHandle at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:16:5+224 -type {:datatype} $1_event_EventHandle'$1_coin_DepositEvent'; -function {:constructor} $1_event_EventHandle'$1_coin_DepositEvent'($counter: int, $guid: $1_guid_GUID): $1_event_EventHandle'$1_coin_DepositEvent'; -function {:inline} $Update'$1_event_EventHandle'$1_coin_DepositEvent''_counter(s: $1_event_EventHandle'$1_coin_DepositEvent', x: int): $1_event_EventHandle'$1_coin_DepositEvent' { - $1_event_EventHandle'$1_coin_DepositEvent'(x, $guid#$1_event_EventHandle'$1_coin_DepositEvent'(s)) -} -function {:inline} $Update'$1_event_EventHandle'$1_coin_DepositEvent''_guid(s: $1_event_EventHandle'$1_coin_DepositEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_coin_DepositEvent' { - $1_event_EventHandle'$1_coin_DepositEvent'($counter#$1_event_EventHandle'$1_coin_DepositEvent'(s), x) -} -function $IsValid'$1_event_EventHandle'$1_coin_DepositEvent''(s: $1_event_EventHandle'$1_coin_DepositEvent'): bool { - $IsValid'u64'($counter#$1_event_EventHandle'$1_coin_DepositEvent'(s)) - && $IsValid'$1_guid_GUID'($guid#$1_event_EventHandle'$1_coin_DepositEvent'(s)) -} -function {:inline} $IsEqual'$1_event_EventHandle'$1_coin_DepositEvent''(s1: $1_event_EventHandle'$1_coin_DepositEvent', s2: $1_event_EventHandle'$1_coin_DepositEvent'): bool { - s1 == s2 -} - -// struct event::EventHandle at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:16:5+224 -type {:datatype} $1_event_EventHandle'$1_coin_WithdrawEvent'; -function {:constructor} $1_event_EventHandle'$1_coin_WithdrawEvent'($counter: int, $guid: $1_guid_GUID): $1_event_EventHandle'$1_coin_WithdrawEvent'; -function {:inline} $Update'$1_event_EventHandle'$1_coin_WithdrawEvent''_counter(s: $1_event_EventHandle'$1_coin_WithdrawEvent', x: int): $1_event_EventHandle'$1_coin_WithdrawEvent' { - $1_event_EventHandle'$1_coin_WithdrawEvent'(x, $guid#$1_event_EventHandle'$1_coin_WithdrawEvent'(s)) -} -function {:inline} $Update'$1_event_EventHandle'$1_coin_WithdrawEvent''_guid(s: $1_event_EventHandle'$1_coin_WithdrawEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_coin_WithdrawEvent' { - $1_event_EventHandle'$1_coin_WithdrawEvent'($counter#$1_event_EventHandle'$1_coin_WithdrawEvent'(s), x) -} -function $IsValid'$1_event_EventHandle'$1_coin_WithdrawEvent''(s: $1_event_EventHandle'$1_coin_WithdrawEvent'): bool { - $IsValid'u64'($counter#$1_event_EventHandle'$1_coin_WithdrawEvent'(s)) - && $IsValid'$1_guid_GUID'($guid#$1_event_EventHandle'$1_coin_WithdrawEvent'(s)) -} -function {:inline} $IsEqual'$1_event_EventHandle'$1_coin_WithdrawEvent''(s1: $1_event_EventHandle'$1_coin_WithdrawEvent', s2: $1_event_EventHandle'$1_coin_WithdrawEvent'): bool { - s1 == s2 -} - -// struct event::EventHandle at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:16:5+224 -type {:datatype} $1_event_EventHandle'$1_stake_AddStakeEvent'; -function {:constructor} $1_event_EventHandle'$1_stake_AddStakeEvent'($counter: int, $guid: $1_guid_GUID): $1_event_EventHandle'$1_stake_AddStakeEvent'; -function {:inline} $Update'$1_event_EventHandle'$1_stake_AddStakeEvent''_counter(s: $1_event_EventHandle'$1_stake_AddStakeEvent', x: int): $1_event_EventHandle'$1_stake_AddStakeEvent' { - $1_event_EventHandle'$1_stake_AddStakeEvent'(x, $guid#$1_event_EventHandle'$1_stake_AddStakeEvent'(s)) -} -function {:inline} $Update'$1_event_EventHandle'$1_stake_AddStakeEvent''_guid(s: $1_event_EventHandle'$1_stake_AddStakeEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_stake_AddStakeEvent' { - $1_event_EventHandle'$1_stake_AddStakeEvent'($counter#$1_event_EventHandle'$1_stake_AddStakeEvent'(s), x) -} -function $IsValid'$1_event_EventHandle'$1_stake_AddStakeEvent''(s: $1_event_EventHandle'$1_stake_AddStakeEvent'): bool { - $IsValid'u64'($counter#$1_event_EventHandle'$1_stake_AddStakeEvent'(s)) - && $IsValid'$1_guid_GUID'($guid#$1_event_EventHandle'$1_stake_AddStakeEvent'(s)) -} -function {:inline} $IsEqual'$1_event_EventHandle'$1_stake_AddStakeEvent''(s1: $1_event_EventHandle'$1_stake_AddStakeEvent', s2: $1_event_EventHandle'$1_stake_AddStakeEvent'): bool { - s1 == s2 -} - -// struct event::EventHandle at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:16:5+224 -type {:datatype} $1_event_EventHandle'$1_stake_DistributeRewardsEvent'; -function {:constructor} $1_event_EventHandle'$1_stake_DistributeRewardsEvent'($counter: int, $guid: $1_guid_GUID): $1_event_EventHandle'$1_stake_DistributeRewardsEvent'; -function {:inline} $Update'$1_event_EventHandle'$1_stake_DistributeRewardsEvent''_counter(s: $1_event_EventHandle'$1_stake_DistributeRewardsEvent', x: int): $1_event_EventHandle'$1_stake_DistributeRewardsEvent' { - $1_event_EventHandle'$1_stake_DistributeRewardsEvent'(x, $guid#$1_event_EventHandle'$1_stake_DistributeRewardsEvent'(s)) -} -function {:inline} $Update'$1_event_EventHandle'$1_stake_DistributeRewardsEvent''_guid(s: $1_event_EventHandle'$1_stake_DistributeRewardsEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_stake_DistributeRewardsEvent' { - $1_event_EventHandle'$1_stake_DistributeRewardsEvent'($counter#$1_event_EventHandle'$1_stake_DistributeRewardsEvent'(s), x) -} -function $IsValid'$1_event_EventHandle'$1_stake_DistributeRewardsEvent''(s: $1_event_EventHandle'$1_stake_DistributeRewardsEvent'): bool { - $IsValid'u64'($counter#$1_event_EventHandle'$1_stake_DistributeRewardsEvent'(s)) - && $IsValid'$1_guid_GUID'($guid#$1_event_EventHandle'$1_stake_DistributeRewardsEvent'(s)) -} -function {:inline} $IsEqual'$1_event_EventHandle'$1_stake_DistributeRewardsEvent''(s1: $1_event_EventHandle'$1_stake_DistributeRewardsEvent', s2: $1_event_EventHandle'$1_stake_DistributeRewardsEvent'): bool { - s1 == s2 -} - -// struct event::EventHandle at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:16:5+224 -type {:datatype} $1_event_EventHandle'$1_stake_IncreaseLockupEvent'; -function {:constructor} $1_event_EventHandle'$1_stake_IncreaseLockupEvent'($counter: int, $guid: $1_guid_GUID): $1_event_EventHandle'$1_stake_IncreaseLockupEvent'; -function {:inline} $Update'$1_event_EventHandle'$1_stake_IncreaseLockupEvent''_counter(s: $1_event_EventHandle'$1_stake_IncreaseLockupEvent', x: int): $1_event_EventHandle'$1_stake_IncreaseLockupEvent' { - $1_event_EventHandle'$1_stake_IncreaseLockupEvent'(x, $guid#$1_event_EventHandle'$1_stake_IncreaseLockupEvent'(s)) -} -function {:inline} $Update'$1_event_EventHandle'$1_stake_IncreaseLockupEvent''_guid(s: $1_event_EventHandle'$1_stake_IncreaseLockupEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_stake_IncreaseLockupEvent' { - $1_event_EventHandle'$1_stake_IncreaseLockupEvent'($counter#$1_event_EventHandle'$1_stake_IncreaseLockupEvent'(s), x) -} -function $IsValid'$1_event_EventHandle'$1_stake_IncreaseLockupEvent''(s: $1_event_EventHandle'$1_stake_IncreaseLockupEvent'): bool { - $IsValid'u64'($counter#$1_event_EventHandle'$1_stake_IncreaseLockupEvent'(s)) - && $IsValid'$1_guid_GUID'($guid#$1_event_EventHandle'$1_stake_IncreaseLockupEvent'(s)) -} -function {:inline} $IsEqual'$1_event_EventHandle'$1_stake_IncreaseLockupEvent''(s1: $1_event_EventHandle'$1_stake_IncreaseLockupEvent', s2: $1_event_EventHandle'$1_stake_IncreaseLockupEvent'): bool { - s1 == s2 -} - -// struct event::EventHandle at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:16:5+224 -type {:datatype} $1_event_EventHandle'$1_stake_JoinValidatorSetEvent'; -function {:constructor} $1_event_EventHandle'$1_stake_JoinValidatorSetEvent'($counter: int, $guid: $1_guid_GUID): $1_event_EventHandle'$1_stake_JoinValidatorSetEvent'; -function {:inline} $Update'$1_event_EventHandle'$1_stake_JoinValidatorSetEvent''_counter(s: $1_event_EventHandle'$1_stake_JoinValidatorSetEvent', x: int): $1_event_EventHandle'$1_stake_JoinValidatorSetEvent' { - $1_event_EventHandle'$1_stake_JoinValidatorSetEvent'(x, $guid#$1_event_EventHandle'$1_stake_JoinValidatorSetEvent'(s)) -} -function {:inline} $Update'$1_event_EventHandle'$1_stake_JoinValidatorSetEvent''_guid(s: $1_event_EventHandle'$1_stake_JoinValidatorSetEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_stake_JoinValidatorSetEvent' { - $1_event_EventHandle'$1_stake_JoinValidatorSetEvent'($counter#$1_event_EventHandle'$1_stake_JoinValidatorSetEvent'(s), x) -} -function $IsValid'$1_event_EventHandle'$1_stake_JoinValidatorSetEvent''(s: $1_event_EventHandle'$1_stake_JoinValidatorSetEvent'): bool { - $IsValid'u64'($counter#$1_event_EventHandle'$1_stake_JoinValidatorSetEvent'(s)) - && $IsValid'$1_guid_GUID'($guid#$1_event_EventHandle'$1_stake_JoinValidatorSetEvent'(s)) -} -function {:inline} $IsEqual'$1_event_EventHandle'$1_stake_JoinValidatorSetEvent''(s1: $1_event_EventHandle'$1_stake_JoinValidatorSetEvent', s2: $1_event_EventHandle'$1_stake_JoinValidatorSetEvent'): bool { - s1 == s2 -} - -// struct event::EventHandle at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:16:5+224 -type {:datatype} $1_event_EventHandle'$1_stake_LeaveValidatorSetEvent'; -function {:constructor} $1_event_EventHandle'$1_stake_LeaveValidatorSetEvent'($counter: int, $guid: $1_guid_GUID): $1_event_EventHandle'$1_stake_LeaveValidatorSetEvent'; -function {:inline} $Update'$1_event_EventHandle'$1_stake_LeaveValidatorSetEvent''_counter(s: $1_event_EventHandle'$1_stake_LeaveValidatorSetEvent', x: int): $1_event_EventHandle'$1_stake_LeaveValidatorSetEvent' { - $1_event_EventHandle'$1_stake_LeaveValidatorSetEvent'(x, $guid#$1_event_EventHandle'$1_stake_LeaveValidatorSetEvent'(s)) -} -function {:inline} $Update'$1_event_EventHandle'$1_stake_LeaveValidatorSetEvent''_guid(s: $1_event_EventHandle'$1_stake_LeaveValidatorSetEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_stake_LeaveValidatorSetEvent' { - $1_event_EventHandle'$1_stake_LeaveValidatorSetEvent'($counter#$1_event_EventHandle'$1_stake_LeaveValidatorSetEvent'(s), x) -} -function $IsValid'$1_event_EventHandle'$1_stake_LeaveValidatorSetEvent''(s: $1_event_EventHandle'$1_stake_LeaveValidatorSetEvent'): bool { - $IsValid'u64'($counter#$1_event_EventHandle'$1_stake_LeaveValidatorSetEvent'(s)) - && $IsValid'$1_guid_GUID'($guid#$1_event_EventHandle'$1_stake_LeaveValidatorSetEvent'(s)) -} -function {:inline} $IsEqual'$1_event_EventHandle'$1_stake_LeaveValidatorSetEvent''(s1: $1_event_EventHandle'$1_stake_LeaveValidatorSetEvent', s2: $1_event_EventHandle'$1_stake_LeaveValidatorSetEvent'): bool { - s1 == s2 -} - -// struct event::EventHandle at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:16:5+224 -type {:datatype} $1_event_EventHandle'$1_stake_ReactivateStakeEvent'; -function {:constructor} $1_event_EventHandle'$1_stake_ReactivateStakeEvent'($counter: int, $guid: $1_guid_GUID): $1_event_EventHandle'$1_stake_ReactivateStakeEvent'; -function {:inline} $Update'$1_event_EventHandle'$1_stake_ReactivateStakeEvent''_counter(s: $1_event_EventHandle'$1_stake_ReactivateStakeEvent', x: int): $1_event_EventHandle'$1_stake_ReactivateStakeEvent' { - $1_event_EventHandle'$1_stake_ReactivateStakeEvent'(x, $guid#$1_event_EventHandle'$1_stake_ReactivateStakeEvent'(s)) -} -function {:inline} $Update'$1_event_EventHandle'$1_stake_ReactivateStakeEvent''_guid(s: $1_event_EventHandle'$1_stake_ReactivateStakeEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_stake_ReactivateStakeEvent' { - $1_event_EventHandle'$1_stake_ReactivateStakeEvent'($counter#$1_event_EventHandle'$1_stake_ReactivateStakeEvent'(s), x) -} -function $IsValid'$1_event_EventHandle'$1_stake_ReactivateStakeEvent''(s: $1_event_EventHandle'$1_stake_ReactivateStakeEvent'): bool { - $IsValid'u64'($counter#$1_event_EventHandle'$1_stake_ReactivateStakeEvent'(s)) - && $IsValid'$1_guid_GUID'($guid#$1_event_EventHandle'$1_stake_ReactivateStakeEvent'(s)) -} -function {:inline} $IsEqual'$1_event_EventHandle'$1_stake_ReactivateStakeEvent''(s1: $1_event_EventHandle'$1_stake_ReactivateStakeEvent', s2: $1_event_EventHandle'$1_stake_ReactivateStakeEvent'): bool { - s1 == s2 -} - -// struct event::EventHandle at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:16:5+224 -type {:datatype} $1_event_EventHandle'$1_stake_RegisterValidatorCandidateEvent'; -function {:constructor} $1_event_EventHandle'$1_stake_RegisterValidatorCandidateEvent'($counter: int, $guid: $1_guid_GUID): $1_event_EventHandle'$1_stake_RegisterValidatorCandidateEvent'; -function {:inline} $Update'$1_event_EventHandle'$1_stake_RegisterValidatorCandidateEvent''_counter(s: $1_event_EventHandle'$1_stake_RegisterValidatorCandidateEvent', x: int): $1_event_EventHandle'$1_stake_RegisterValidatorCandidateEvent' { - $1_event_EventHandle'$1_stake_RegisterValidatorCandidateEvent'(x, $guid#$1_event_EventHandle'$1_stake_RegisterValidatorCandidateEvent'(s)) -} -function {:inline} $Update'$1_event_EventHandle'$1_stake_RegisterValidatorCandidateEvent''_guid(s: $1_event_EventHandle'$1_stake_RegisterValidatorCandidateEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_stake_RegisterValidatorCandidateEvent' { - $1_event_EventHandle'$1_stake_RegisterValidatorCandidateEvent'($counter#$1_event_EventHandle'$1_stake_RegisterValidatorCandidateEvent'(s), x) -} -function $IsValid'$1_event_EventHandle'$1_stake_RegisterValidatorCandidateEvent''(s: $1_event_EventHandle'$1_stake_RegisterValidatorCandidateEvent'): bool { - $IsValid'u64'($counter#$1_event_EventHandle'$1_stake_RegisterValidatorCandidateEvent'(s)) - && $IsValid'$1_guid_GUID'($guid#$1_event_EventHandle'$1_stake_RegisterValidatorCandidateEvent'(s)) -} -function {:inline} $IsEqual'$1_event_EventHandle'$1_stake_RegisterValidatorCandidateEvent''(s1: $1_event_EventHandle'$1_stake_RegisterValidatorCandidateEvent', s2: $1_event_EventHandle'$1_stake_RegisterValidatorCandidateEvent'): bool { - s1 == s2 -} - -// struct event::EventHandle at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:16:5+224 -type {:datatype} $1_event_EventHandle'$1_stake_RotateConsensusKeyEvent'; -function {:constructor} $1_event_EventHandle'$1_stake_RotateConsensusKeyEvent'($counter: int, $guid: $1_guid_GUID): $1_event_EventHandle'$1_stake_RotateConsensusKeyEvent'; -function {:inline} $Update'$1_event_EventHandle'$1_stake_RotateConsensusKeyEvent''_counter(s: $1_event_EventHandle'$1_stake_RotateConsensusKeyEvent', x: int): $1_event_EventHandle'$1_stake_RotateConsensusKeyEvent' { - $1_event_EventHandle'$1_stake_RotateConsensusKeyEvent'(x, $guid#$1_event_EventHandle'$1_stake_RotateConsensusKeyEvent'(s)) -} -function {:inline} $Update'$1_event_EventHandle'$1_stake_RotateConsensusKeyEvent''_guid(s: $1_event_EventHandle'$1_stake_RotateConsensusKeyEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_stake_RotateConsensusKeyEvent' { - $1_event_EventHandle'$1_stake_RotateConsensusKeyEvent'($counter#$1_event_EventHandle'$1_stake_RotateConsensusKeyEvent'(s), x) -} -function $IsValid'$1_event_EventHandle'$1_stake_RotateConsensusKeyEvent''(s: $1_event_EventHandle'$1_stake_RotateConsensusKeyEvent'): bool { - $IsValid'u64'($counter#$1_event_EventHandle'$1_stake_RotateConsensusKeyEvent'(s)) - && $IsValid'$1_guid_GUID'($guid#$1_event_EventHandle'$1_stake_RotateConsensusKeyEvent'(s)) -} -function {:inline} $IsEqual'$1_event_EventHandle'$1_stake_RotateConsensusKeyEvent''(s1: $1_event_EventHandle'$1_stake_RotateConsensusKeyEvent', s2: $1_event_EventHandle'$1_stake_RotateConsensusKeyEvent'): bool { - s1 == s2 -} - -// struct event::EventHandle at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:16:5+224 -type {:datatype} $1_event_EventHandle'$1_stake_SetOperatorEvent'; -function {:constructor} $1_event_EventHandle'$1_stake_SetOperatorEvent'($counter: int, $guid: $1_guid_GUID): $1_event_EventHandle'$1_stake_SetOperatorEvent'; -function {:inline} $Update'$1_event_EventHandle'$1_stake_SetOperatorEvent''_counter(s: $1_event_EventHandle'$1_stake_SetOperatorEvent', x: int): $1_event_EventHandle'$1_stake_SetOperatorEvent' { - $1_event_EventHandle'$1_stake_SetOperatorEvent'(x, $guid#$1_event_EventHandle'$1_stake_SetOperatorEvent'(s)) -} -function {:inline} $Update'$1_event_EventHandle'$1_stake_SetOperatorEvent''_guid(s: $1_event_EventHandle'$1_stake_SetOperatorEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_stake_SetOperatorEvent' { - $1_event_EventHandle'$1_stake_SetOperatorEvent'($counter#$1_event_EventHandle'$1_stake_SetOperatorEvent'(s), x) -} -function $IsValid'$1_event_EventHandle'$1_stake_SetOperatorEvent''(s: $1_event_EventHandle'$1_stake_SetOperatorEvent'): bool { - $IsValid'u64'($counter#$1_event_EventHandle'$1_stake_SetOperatorEvent'(s)) - && $IsValid'$1_guid_GUID'($guid#$1_event_EventHandle'$1_stake_SetOperatorEvent'(s)) -} -function {:inline} $IsEqual'$1_event_EventHandle'$1_stake_SetOperatorEvent''(s1: $1_event_EventHandle'$1_stake_SetOperatorEvent', s2: $1_event_EventHandle'$1_stake_SetOperatorEvent'): bool { - s1 == s2 -} - -// struct event::EventHandle at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:16:5+224 -type {:datatype} $1_event_EventHandle'$1_stake_UnlockStakeEvent'; -function {:constructor} $1_event_EventHandle'$1_stake_UnlockStakeEvent'($counter: int, $guid: $1_guid_GUID): $1_event_EventHandle'$1_stake_UnlockStakeEvent'; -function {:inline} $Update'$1_event_EventHandle'$1_stake_UnlockStakeEvent''_counter(s: $1_event_EventHandle'$1_stake_UnlockStakeEvent', x: int): $1_event_EventHandle'$1_stake_UnlockStakeEvent' { - $1_event_EventHandle'$1_stake_UnlockStakeEvent'(x, $guid#$1_event_EventHandle'$1_stake_UnlockStakeEvent'(s)) -} -function {:inline} $Update'$1_event_EventHandle'$1_stake_UnlockStakeEvent''_guid(s: $1_event_EventHandle'$1_stake_UnlockStakeEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_stake_UnlockStakeEvent' { - $1_event_EventHandle'$1_stake_UnlockStakeEvent'($counter#$1_event_EventHandle'$1_stake_UnlockStakeEvent'(s), x) -} -function $IsValid'$1_event_EventHandle'$1_stake_UnlockStakeEvent''(s: $1_event_EventHandle'$1_stake_UnlockStakeEvent'): bool { - $IsValid'u64'($counter#$1_event_EventHandle'$1_stake_UnlockStakeEvent'(s)) - && $IsValid'$1_guid_GUID'($guid#$1_event_EventHandle'$1_stake_UnlockStakeEvent'(s)) -} -function {:inline} $IsEqual'$1_event_EventHandle'$1_stake_UnlockStakeEvent''(s1: $1_event_EventHandle'$1_stake_UnlockStakeEvent', s2: $1_event_EventHandle'$1_stake_UnlockStakeEvent'): bool { - s1 == s2 -} - -// struct event::EventHandle at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:16:5+224 -type {:datatype} $1_event_EventHandle'$1_stake_UpdateNetworkAndFullnodeAddressesEvent'; -function {:constructor} $1_event_EventHandle'$1_stake_UpdateNetworkAndFullnodeAddressesEvent'($counter: int, $guid: $1_guid_GUID): $1_event_EventHandle'$1_stake_UpdateNetworkAndFullnodeAddressesEvent'; -function {:inline} $Update'$1_event_EventHandle'$1_stake_UpdateNetworkAndFullnodeAddressesEvent''_counter(s: $1_event_EventHandle'$1_stake_UpdateNetworkAndFullnodeAddressesEvent', x: int): $1_event_EventHandle'$1_stake_UpdateNetworkAndFullnodeAddressesEvent' { - $1_event_EventHandle'$1_stake_UpdateNetworkAndFullnodeAddressesEvent'(x, $guid#$1_event_EventHandle'$1_stake_UpdateNetworkAndFullnodeAddressesEvent'(s)) -} -function {:inline} $Update'$1_event_EventHandle'$1_stake_UpdateNetworkAndFullnodeAddressesEvent''_guid(s: $1_event_EventHandle'$1_stake_UpdateNetworkAndFullnodeAddressesEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_stake_UpdateNetworkAndFullnodeAddressesEvent' { - $1_event_EventHandle'$1_stake_UpdateNetworkAndFullnodeAddressesEvent'($counter#$1_event_EventHandle'$1_stake_UpdateNetworkAndFullnodeAddressesEvent'(s), x) -} -function $IsValid'$1_event_EventHandle'$1_stake_UpdateNetworkAndFullnodeAddressesEvent''(s: $1_event_EventHandle'$1_stake_UpdateNetworkAndFullnodeAddressesEvent'): bool { - $IsValid'u64'($counter#$1_event_EventHandle'$1_stake_UpdateNetworkAndFullnodeAddressesEvent'(s)) - && $IsValid'$1_guid_GUID'($guid#$1_event_EventHandle'$1_stake_UpdateNetworkAndFullnodeAddressesEvent'(s)) -} -function {:inline} $IsEqual'$1_event_EventHandle'$1_stake_UpdateNetworkAndFullnodeAddressesEvent''(s1: $1_event_EventHandle'$1_stake_UpdateNetworkAndFullnodeAddressesEvent', s2: $1_event_EventHandle'$1_stake_UpdateNetworkAndFullnodeAddressesEvent'): bool { - s1 == s2 -} - -// struct event::EventHandle at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:16:5+224 -type {:datatype} $1_event_EventHandle'$1_stake_WithdrawStakeEvent'; -function {:constructor} $1_event_EventHandle'$1_stake_WithdrawStakeEvent'($counter: int, $guid: $1_guid_GUID): $1_event_EventHandle'$1_stake_WithdrawStakeEvent'; -function {:inline} $Update'$1_event_EventHandle'$1_stake_WithdrawStakeEvent''_counter(s: $1_event_EventHandle'$1_stake_WithdrawStakeEvent', x: int): $1_event_EventHandle'$1_stake_WithdrawStakeEvent' { - $1_event_EventHandle'$1_stake_WithdrawStakeEvent'(x, $guid#$1_event_EventHandle'$1_stake_WithdrawStakeEvent'(s)) -} -function {:inline} $Update'$1_event_EventHandle'$1_stake_WithdrawStakeEvent''_guid(s: $1_event_EventHandle'$1_stake_WithdrawStakeEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_stake_WithdrawStakeEvent' { - $1_event_EventHandle'$1_stake_WithdrawStakeEvent'($counter#$1_event_EventHandle'$1_stake_WithdrawStakeEvent'(s), x) -} -function $IsValid'$1_event_EventHandle'$1_stake_WithdrawStakeEvent''(s: $1_event_EventHandle'$1_stake_WithdrawStakeEvent'): bool { - $IsValid'u64'($counter#$1_event_EventHandle'$1_stake_WithdrawStakeEvent'(s)) - && $IsValid'$1_guid_GUID'($guid#$1_event_EventHandle'$1_stake_WithdrawStakeEvent'(s)) -} -function {:inline} $IsEqual'$1_event_EventHandle'$1_stake_WithdrawStakeEvent''(s1: $1_event_EventHandle'$1_stake_WithdrawStakeEvent', s2: $1_event_EventHandle'$1_stake_WithdrawStakeEvent'): bool { - s1 == s2 -} - -// struct event::EventHandle at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:16:5+224 -type {:datatype} $1_event_EventHandle'$1_reconfiguration_NewEpochEvent'; -function {:constructor} $1_event_EventHandle'$1_reconfiguration_NewEpochEvent'($counter: int, $guid: $1_guid_GUID): $1_event_EventHandle'$1_reconfiguration_NewEpochEvent'; -function {:inline} $Update'$1_event_EventHandle'$1_reconfiguration_NewEpochEvent''_counter(s: $1_event_EventHandle'$1_reconfiguration_NewEpochEvent', x: int): $1_event_EventHandle'$1_reconfiguration_NewEpochEvent' { - $1_event_EventHandle'$1_reconfiguration_NewEpochEvent'(x, $guid#$1_event_EventHandle'$1_reconfiguration_NewEpochEvent'(s)) -} -function {:inline} $Update'$1_event_EventHandle'$1_reconfiguration_NewEpochEvent''_guid(s: $1_event_EventHandle'$1_reconfiguration_NewEpochEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_reconfiguration_NewEpochEvent' { - $1_event_EventHandle'$1_reconfiguration_NewEpochEvent'($counter#$1_event_EventHandle'$1_reconfiguration_NewEpochEvent'(s), x) -} -function $IsValid'$1_event_EventHandle'$1_reconfiguration_NewEpochEvent''(s: $1_event_EventHandle'$1_reconfiguration_NewEpochEvent'): bool { - $IsValid'u64'($counter#$1_event_EventHandle'$1_reconfiguration_NewEpochEvent'(s)) - && $IsValid'$1_guid_GUID'($guid#$1_event_EventHandle'$1_reconfiguration_NewEpochEvent'(s)) -} -function {:inline} $IsEqual'$1_event_EventHandle'$1_reconfiguration_NewEpochEvent''(s1: $1_event_EventHandle'$1_reconfiguration_NewEpochEvent', s2: $1_event_EventHandle'$1_reconfiguration_NewEpochEvent'): bool { - s1 == s2 -} - -// struct event::EventHandle at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:16:5+224 -type {:datatype} $1_event_EventHandle'$1_staking_contract_AddStakeEvent'; -function {:constructor} $1_event_EventHandle'$1_staking_contract_AddStakeEvent'($counter: int, $guid: $1_guid_GUID): $1_event_EventHandle'$1_staking_contract_AddStakeEvent'; -function {:inline} $Update'$1_event_EventHandle'$1_staking_contract_AddStakeEvent''_counter(s: $1_event_EventHandle'$1_staking_contract_AddStakeEvent', x: int): $1_event_EventHandle'$1_staking_contract_AddStakeEvent' { - $1_event_EventHandle'$1_staking_contract_AddStakeEvent'(x, $guid#$1_event_EventHandle'$1_staking_contract_AddStakeEvent'(s)) -} -function {:inline} $Update'$1_event_EventHandle'$1_staking_contract_AddStakeEvent''_guid(s: $1_event_EventHandle'$1_staking_contract_AddStakeEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_staking_contract_AddStakeEvent' { - $1_event_EventHandle'$1_staking_contract_AddStakeEvent'($counter#$1_event_EventHandle'$1_staking_contract_AddStakeEvent'(s), x) -} -function $IsValid'$1_event_EventHandle'$1_staking_contract_AddStakeEvent''(s: $1_event_EventHandle'$1_staking_contract_AddStakeEvent'): bool { - $IsValid'u64'($counter#$1_event_EventHandle'$1_staking_contract_AddStakeEvent'(s)) - && $IsValid'$1_guid_GUID'($guid#$1_event_EventHandle'$1_staking_contract_AddStakeEvent'(s)) -} -function {:inline} $IsEqual'$1_event_EventHandle'$1_staking_contract_AddStakeEvent''(s1: $1_event_EventHandle'$1_staking_contract_AddStakeEvent', s2: $1_event_EventHandle'$1_staking_contract_AddStakeEvent'): bool { - s1 == s2 -} - -// struct event::EventHandle at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:16:5+224 -type {:datatype} $1_event_EventHandle'$1_staking_contract_UnlockStakeEvent'; -function {:constructor} $1_event_EventHandle'$1_staking_contract_UnlockStakeEvent'($counter: int, $guid: $1_guid_GUID): $1_event_EventHandle'$1_staking_contract_UnlockStakeEvent'; -function {:inline} $Update'$1_event_EventHandle'$1_staking_contract_UnlockStakeEvent''_counter(s: $1_event_EventHandle'$1_staking_contract_UnlockStakeEvent', x: int): $1_event_EventHandle'$1_staking_contract_UnlockStakeEvent' { - $1_event_EventHandle'$1_staking_contract_UnlockStakeEvent'(x, $guid#$1_event_EventHandle'$1_staking_contract_UnlockStakeEvent'(s)) -} -function {:inline} $Update'$1_event_EventHandle'$1_staking_contract_UnlockStakeEvent''_guid(s: $1_event_EventHandle'$1_staking_contract_UnlockStakeEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_staking_contract_UnlockStakeEvent' { - $1_event_EventHandle'$1_staking_contract_UnlockStakeEvent'($counter#$1_event_EventHandle'$1_staking_contract_UnlockStakeEvent'(s), x) -} -function $IsValid'$1_event_EventHandle'$1_staking_contract_UnlockStakeEvent''(s: $1_event_EventHandle'$1_staking_contract_UnlockStakeEvent'): bool { - $IsValid'u64'($counter#$1_event_EventHandle'$1_staking_contract_UnlockStakeEvent'(s)) - && $IsValid'$1_guid_GUID'($guid#$1_event_EventHandle'$1_staking_contract_UnlockStakeEvent'(s)) -} -function {:inline} $IsEqual'$1_event_EventHandle'$1_staking_contract_UnlockStakeEvent''(s1: $1_event_EventHandle'$1_staking_contract_UnlockStakeEvent', s2: $1_event_EventHandle'$1_staking_contract_UnlockStakeEvent'): bool { - s1 == s2 -} - -// struct event::EventHandle at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:16:5+224 -type {:datatype} $1_event_EventHandle'$1_staking_contract_AddDistributionEvent'; -function {:constructor} $1_event_EventHandle'$1_staking_contract_AddDistributionEvent'($counter: int, $guid: $1_guid_GUID): $1_event_EventHandle'$1_staking_contract_AddDistributionEvent'; -function {:inline} $Update'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent''_counter(s: $1_event_EventHandle'$1_staking_contract_AddDistributionEvent', x: int): $1_event_EventHandle'$1_staking_contract_AddDistributionEvent' { - $1_event_EventHandle'$1_staking_contract_AddDistributionEvent'(x, $guid#$1_event_EventHandle'$1_staking_contract_AddDistributionEvent'(s)) -} -function {:inline} $Update'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent''_guid(s: $1_event_EventHandle'$1_staking_contract_AddDistributionEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_staking_contract_AddDistributionEvent' { - $1_event_EventHandle'$1_staking_contract_AddDistributionEvent'($counter#$1_event_EventHandle'$1_staking_contract_AddDistributionEvent'(s), x) -} -function $IsValid'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent''(s: $1_event_EventHandle'$1_staking_contract_AddDistributionEvent'): bool { - $IsValid'u64'($counter#$1_event_EventHandle'$1_staking_contract_AddDistributionEvent'(s)) - && $IsValid'$1_guid_GUID'($guid#$1_event_EventHandle'$1_staking_contract_AddDistributionEvent'(s)) -} -function {:inline} $IsEqual'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent''(s1: $1_event_EventHandle'$1_staking_contract_AddDistributionEvent', s2: $1_event_EventHandle'$1_staking_contract_AddDistributionEvent'): bool { - s1 == s2 -} - -// struct event::EventHandle at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:16:5+224 -type {:datatype} $1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent'; -function {:constructor} $1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent'($counter: int, $guid: $1_guid_GUID): $1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent'; -function {:inline} $Update'$1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent''_counter(s: $1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent', x: int): $1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent' { - $1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent'(x, $guid#$1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent'(s)) -} -function {:inline} $Update'$1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent''_guid(s: $1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent' { - $1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent'($counter#$1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent'(s), x) -} -function $IsValid'$1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent''(s: $1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent'): bool { - $IsValid'u64'($counter#$1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent'(s)) - && $IsValid'$1_guid_GUID'($guid#$1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent'(s)) -} -function {:inline} $IsEqual'$1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent''(s1: $1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent', s2: $1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent'): bool { - s1 == s2 -} - -// struct event::EventHandle at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:16:5+224 -type {:datatype} $1_event_EventHandle'$1_staking_contract_DistributeEvent'; -function {:constructor} $1_event_EventHandle'$1_staking_contract_DistributeEvent'($counter: int, $guid: $1_guid_GUID): $1_event_EventHandle'$1_staking_contract_DistributeEvent'; -function {:inline} $Update'$1_event_EventHandle'$1_staking_contract_DistributeEvent''_counter(s: $1_event_EventHandle'$1_staking_contract_DistributeEvent', x: int): $1_event_EventHandle'$1_staking_contract_DistributeEvent' { - $1_event_EventHandle'$1_staking_contract_DistributeEvent'(x, $guid#$1_event_EventHandle'$1_staking_contract_DistributeEvent'(s)) -} -function {:inline} $Update'$1_event_EventHandle'$1_staking_contract_DistributeEvent''_guid(s: $1_event_EventHandle'$1_staking_contract_DistributeEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_staking_contract_DistributeEvent' { - $1_event_EventHandle'$1_staking_contract_DistributeEvent'($counter#$1_event_EventHandle'$1_staking_contract_DistributeEvent'(s), x) -} -function $IsValid'$1_event_EventHandle'$1_staking_contract_DistributeEvent''(s: $1_event_EventHandle'$1_staking_contract_DistributeEvent'): bool { - $IsValid'u64'($counter#$1_event_EventHandle'$1_staking_contract_DistributeEvent'(s)) - && $IsValid'$1_guid_GUID'($guid#$1_event_EventHandle'$1_staking_contract_DistributeEvent'(s)) -} -function {:inline} $IsEqual'$1_event_EventHandle'$1_staking_contract_DistributeEvent''(s1: $1_event_EventHandle'$1_staking_contract_DistributeEvent', s2: $1_event_EventHandle'$1_staking_contract_DistributeEvent'): bool { - s1 == s2 -} - -// struct event::EventHandle at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:16:5+224 -type {:datatype} $1_event_EventHandle'$1_staking_contract_RequestCommissionEvent'; -function {:constructor} $1_event_EventHandle'$1_staking_contract_RequestCommissionEvent'($counter: int, $guid: $1_guid_GUID): $1_event_EventHandle'$1_staking_contract_RequestCommissionEvent'; -function {:inline} $Update'$1_event_EventHandle'$1_staking_contract_RequestCommissionEvent''_counter(s: $1_event_EventHandle'$1_staking_contract_RequestCommissionEvent', x: int): $1_event_EventHandle'$1_staking_contract_RequestCommissionEvent' { - $1_event_EventHandle'$1_staking_contract_RequestCommissionEvent'(x, $guid#$1_event_EventHandle'$1_staking_contract_RequestCommissionEvent'(s)) -} -function {:inline} $Update'$1_event_EventHandle'$1_staking_contract_RequestCommissionEvent''_guid(s: $1_event_EventHandle'$1_staking_contract_RequestCommissionEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_staking_contract_RequestCommissionEvent' { - $1_event_EventHandle'$1_staking_contract_RequestCommissionEvent'($counter#$1_event_EventHandle'$1_staking_contract_RequestCommissionEvent'(s), x) -} -function $IsValid'$1_event_EventHandle'$1_staking_contract_RequestCommissionEvent''(s: $1_event_EventHandle'$1_staking_contract_RequestCommissionEvent'): bool { - $IsValid'u64'($counter#$1_event_EventHandle'$1_staking_contract_RequestCommissionEvent'(s)) - && $IsValid'$1_guid_GUID'($guid#$1_event_EventHandle'$1_staking_contract_RequestCommissionEvent'(s)) -} -function {:inline} $IsEqual'$1_event_EventHandle'$1_staking_contract_RequestCommissionEvent''(s1: $1_event_EventHandle'$1_staking_contract_RequestCommissionEvent', s2: $1_event_EventHandle'$1_staking_contract_RequestCommissionEvent'): bool { - s1 == s2 -} - -// struct event::EventHandle at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:16:5+224 -type {:datatype} $1_event_EventHandle'$1_staking_contract_ResetLockupEvent'; -function {:constructor} $1_event_EventHandle'$1_staking_contract_ResetLockupEvent'($counter: int, $guid: $1_guid_GUID): $1_event_EventHandle'$1_staking_contract_ResetLockupEvent'; -function {:inline} $Update'$1_event_EventHandle'$1_staking_contract_ResetLockupEvent''_counter(s: $1_event_EventHandle'$1_staking_contract_ResetLockupEvent', x: int): $1_event_EventHandle'$1_staking_contract_ResetLockupEvent' { - $1_event_EventHandle'$1_staking_contract_ResetLockupEvent'(x, $guid#$1_event_EventHandle'$1_staking_contract_ResetLockupEvent'(s)) -} -function {:inline} $Update'$1_event_EventHandle'$1_staking_contract_ResetLockupEvent''_guid(s: $1_event_EventHandle'$1_staking_contract_ResetLockupEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_staking_contract_ResetLockupEvent' { - $1_event_EventHandle'$1_staking_contract_ResetLockupEvent'($counter#$1_event_EventHandle'$1_staking_contract_ResetLockupEvent'(s), x) -} -function $IsValid'$1_event_EventHandle'$1_staking_contract_ResetLockupEvent''(s: $1_event_EventHandle'$1_staking_contract_ResetLockupEvent'): bool { - $IsValid'u64'($counter#$1_event_EventHandle'$1_staking_contract_ResetLockupEvent'(s)) - && $IsValid'$1_guid_GUID'($guid#$1_event_EventHandle'$1_staking_contract_ResetLockupEvent'(s)) -} -function {:inline} $IsEqual'$1_event_EventHandle'$1_staking_contract_ResetLockupEvent''(s1: $1_event_EventHandle'$1_staking_contract_ResetLockupEvent', s2: $1_event_EventHandle'$1_staking_contract_ResetLockupEvent'): bool { - s1 == s2 -} - -// struct event::EventHandle at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:16:5+224 -type {:datatype} $1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent'; -function {:constructor} $1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent'($counter: int, $guid: $1_guid_GUID): $1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent'; -function {:inline} $Update'$1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent''_counter(s: $1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent', x: int): $1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent' { - $1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent'(x, $guid#$1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent'(s)) -} -function {:inline} $Update'$1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent''_guid(s: $1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent' { - $1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent'($counter#$1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent'(s), x) -} -function $IsValid'$1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent''(s: $1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent'): bool { - $IsValid'u64'($counter#$1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent'(s)) - && $IsValid'$1_guid_GUID'($guid#$1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent'(s)) -} -function {:inline} $IsEqual'$1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent''(s1: $1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent', s2: $1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent'): bool { - s1 == s2 -} - -// struct event::EventHandle at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:16:5+224 -type {:datatype} $1_event_EventHandle'$1_staking_contract_UpdateVoterEvent'; -function {:constructor} $1_event_EventHandle'$1_staking_contract_UpdateVoterEvent'($counter: int, $guid: $1_guid_GUID): $1_event_EventHandle'$1_staking_contract_UpdateVoterEvent'; -function {:inline} $Update'$1_event_EventHandle'$1_staking_contract_UpdateVoterEvent''_counter(s: $1_event_EventHandle'$1_staking_contract_UpdateVoterEvent', x: int): $1_event_EventHandle'$1_staking_contract_UpdateVoterEvent' { - $1_event_EventHandle'$1_staking_contract_UpdateVoterEvent'(x, $guid#$1_event_EventHandle'$1_staking_contract_UpdateVoterEvent'(s)) -} -function {:inline} $Update'$1_event_EventHandle'$1_staking_contract_UpdateVoterEvent''_guid(s: $1_event_EventHandle'$1_staking_contract_UpdateVoterEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_staking_contract_UpdateVoterEvent' { - $1_event_EventHandle'$1_staking_contract_UpdateVoterEvent'($counter#$1_event_EventHandle'$1_staking_contract_UpdateVoterEvent'(s), x) -} -function $IsValid'$1_event_EventHandle'$1_staking_contract_UpdateVoterEvent''(s: $1_event_EventHandle'$1_staking_contract_UpdateVoterEvent'): bool { - $IsValid'u64'($counter#$1_event_EventHandle'$1_staking_contract_UpdateVoterEvent'(s)) - && $IsValid'$1_guid_GUID'($guid#$1_event_EventHandle'$1_staking_contract_UpdateVoterEvent'(s)) -} -function {:inline} $IsEqual'$1_event_EventHandle'$1_staking_contract_UpdateVoterEvent''(s1: $1_event_EventHandle'$1_staking_contract_UpdateVoterEvent', s2: $1_event_EventHandle'$1_staking_contract_UpdateVoterEvent'): bool { - s1 == s2 -} - -// struct event::EventHandle at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:16:5+224 -type {:datatype} $1_event_EventHandle'$1_vesting_DistributeEvent'; -function {:constructor} $1_event_EventHandle'$1_vesting_DistributeEvent'($counter: int, $guid: $1_guid_GUID): $1_event_EventHandle'$1_vesting_DistributeEvent'; -function {:inline} $Update'$1_event_EventHandle'$1_vesting_DistributeEvent''_counter(s: $1_event_EventHandle'$1_vesting_DistributeEvent', x: int): $1_event_EventHandle'$1_vesting_DistributeEvent' { - $1_event_EventHandle'$1_vesting_DistributeEvent'(x, $guid#$1_event_EventHandle'$1_vesting_DistributeEvent'(s)) -} -function {:inline} $Update'$1_event_EventHandle'$1_vesting_DistributeEvent''_guid(s: $1_event_EventHandle'$1_vesting_DistributeEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_vesting_DistributeEvent' { - $1_event_EventHandle'$1_vesting_DistributeEvent'($counter#$1_event_EventHandle'$1_vesting_DistributeEvent'(s), x) -} -function $IsValid'$1_event_EventHandle'$1_vesting_DistributeEvent''(s: $1_event_EventHandle'$1_vesting_DistributeEvent'): bool { - $IsValid'u64'($counter#$1_event_EventHandle'$1_vesting_DistributeEvent'(s)) - && $IsValid'$1_guid_GUID'($guid#$1_event_EventHandle'$1_vesting_DistributeEvent'(s)) -} -function {:inline} $IsEqual'$1_event_EventHandle'$1_vesting_DistributeEvent''(s1: $1_event_EventHandle'$1_vesting_DistributeEvent', s2: $1_event_EventHandle'$1_vesting_DistributeEvent'): bool { - s1 == s2 -} - -// struct event::EventHandle at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:16:5+224 -type {:datatype} $1_event_EventHandle'$1_vesting_ResetLockupEvent'; -function {:constructor} $1_event_EventHandle'$1_vesting_ResetLockupEvent'($counter: int, $guid: $1_guid_GUID): $1_event_EventHandle'$1_vesting_ResetLockupEvent'; -function {:inline} $Update'$1_event_EventHandle'$1_vesting_ResetLockupEvent''_counter(s: $1_event_EventHandle'$1_vesting_ResetLockupEvent', x: int): $1_event_EventHandle'$1_vesting_ResetLockupEvent' { - $1_event_EventHandle'$1_vesting_ResetLockupEvent'(x, $guid#$1_event_EventHandle'$1_vesting_ResetLockupEvent'(s)) -} -function {:inline} $Update'$1_event_EventHandle'$1_vesting_ResetLockupEvent''_guid(s: $1_event_EventHandle'$1_vesting_ResetLockupEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_vesting_ResetLockupEvent' { - $1_event_EventHandle'$1_vesting_ResetLockupEvent'($counter#$1_event_EventHandle'$1_vesting_ResetLockupEvent'(s), x) -} -function $IsValid'$1_event_EventHandle'$1_vesting_ResetLockupEvent''(s: $1_event_EventHandle'$1_vesting_ResetLockupEvent'): bool { - $IsValid'u64'($counter#$1_event_EventHandle'$1_vesting_ResetLockupEvent'(s)) - && $IsValid'$1_guid_GUID'($guid#$1_event_EventHandle'$1_vesting_ResetLockupEvent'(s)) -} -function {:inline} $IsEqual'$1_event_EventHandle'$1_vesting_ResetLockupEvent''(s1: $1_event_EventHandle'$1_vesting_ResetLockupEvent', s2: $1_event_EventHandle'$1_vesting_ResetLockupEvent'): bool { - s1 == s2 -} - -// struct event::EventHandle at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:16:5+224 -type {:datatype} $1_event_EventHandle'$1_vesting_UpdateVoterEvent'; -function {:constructor} $1_event_EventHandle'$1_vesting_UpdateVoterEvent'($counter: int, $guid: $1_guid_GUID): $1_event_EventHandle'$1_vesting_UpdateVoterEvent'; -function {:inline} $Update'$1_event_EventHandle'$1_vesting_UpdateVoterEvent''_counter(s: $1_event_EventHandle'$1_vesting_UpdateVoterEvent', x: int): $1_event_EventHandle'$1_vesting_UpdateVoterEvent' { - $1_event_EventHandle'$1_vesting_UpdateVoterEvent'(x, $guid#$1_event_EventHandle'$1_vesting_UpdateVoterEvent'(s)) -} -function {:inline} $Update'$1_event_EventHandle'$1_vesting_UpdateVoterEvent''_guid(s: $1_event_EventHandle'$1_vesting_UpdateVoterEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_vesting_UpdateVoterEvent' { - $1_event_EventHandle'$1_vesting_UpdateVoterEvent'($counter#$1_event_EventHandle'$1_vesting_UpdateVoterEvent'(s), x) -} -function $IsValid'$1_event_EventHandle'$1_vesting_UpdateVoterEvent''(s: $1_event_EventHandle'$1_vesting_UpdateVoterEvent'): bool { - $IsValid'u64'($counter#$1_event_EventHandle'$1_vesting_UpdateVoterEvent'(s)) - && $IsValid'$1_guid_GUID'($guid#$1_event_EventHandle'$1_vesting_UpdateVoterEvent'(s)) -} -function {:inline} $IsEqual'$1_event_EventHandle'$1_vesting_UpdateVoterEvent''(s1: $1_event_EventHandle'$1_vesting_UpdateVoterEvent', s2: $1_event_EventHandle'$1_vesting_UpdateVoterEvent'): bool { - s1 == s2 -} - -// struct event::EventHandle at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:16:5+224 -type {:datatype} $1_event_EventHandle'$1_vesting_AdminWithdrawEvent'; -function {:constructor} $1_event_EventHandle'$1_vesting_AdminWithdrawEvent'($counter: int, $guid: $1_guid_GUID): $1_event_EventHandle'$1_vesting_AdminWithdrawEvent'; -function {:inline} $Update'$1_event_EventHandle'$1_vesting_AdminWithdrawEvent''_counter(s: $1_event_EventHandle'$1_vesting_AdminWithdrawEvent', x: int): $1_event_EventHandle'$1_vesting_AdminWithdrawEvent' { - $1_event_EventHandle'$1_vesting_AdminWithdrawEvent'(x, $guid#$1_event_EventHandle'$1_vesting_AdminWithdrawEvent'(s)) -} -function {:inline} $Update'$1_event_EventHandle'$1_vesting_AdminWithdrawEvent''_guid(s: $1_event_EventHandle'$1_vesting_AdminWithdrawEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_vesting_AdminWithdrawEvent' { - $1_event_EventHandle'$1_vesting_AdminWithdrawEvent'($counter#$1_event_EventHandle'$1_vesting_AdminWithdrawEvent'(s), x) -} -function $IsValid'$1_event_EventHandle'$1_vesting_AdminWithdrawEvent''(s: $1_event_EventHandle'$1_vesting_AdminWithdrawEvent'): bool { - $IsValid'u64'($counter#$1_event_EventHandle'$1_vesting_AdminWithdrawEvent'(s)) - && $IsValid'$1_guid_GUID'($guid#$1_event_EventHandle'$1_vesting_AdminWithdrawEvent'(s)) -} -function {:inline} $IsEqual'$1_event_EventHandle'$1_vesting_AdminWithdrawEvent''(s1: $1_event_EventHandle'$1_vesting_AdminWithdrawEvent', s2: $1_event_EventHandle'$1_vesting_AdminWithdrawEvent'): bool { - s1 == s2 -} - -// struct event::EventHandle at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:16:5+224 -type {:datatype} $1_event_EventHandle'$1_vesting_CreateVestingContractEvent'; -function {:constructor} $1_event_EventHandle'$1_vesting_CreateVestingContractEvent'($counter: int, $guid: $1_guid_GUID): $1_event_EventHandle'$1_vesting_CreateVestingContractEvent'; -function {:inline} $Update'$1_event_EventHandle'$1_vesting_CreateVestingContractEvent''_counter(s: $1_event_EventHandle'$1_vesting_CreateVestingContractEvent', x: int): $1_event_EventHandle'$1_vesting_CreateVestingContractEvent' { - $1_event_EventHandle'$1_vesting_CreateVestingContractEvent'(x, $guid#$1_event_EventHandle'$1_vesting_CreateVestingContractEvent'(s)) -} -function {:inline} $Update'$1_event_EventHandle'$1_vesting_CreateVestingContractEvent''_guid(s: $1_event_EventHandle'$1_vesting_CreateVestingContractEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_vesting_CreateVestingContractEvent' { - $1_event_EventHandle'$1_vesting_CreateVestingContractEvent'($counter#$1_event_EventHandle'$1_vesting_CreateVestingContractEvent'(s), x) -} -function $IsValid'$1_event_EventHandle'$1_vesting_CreateVestingContractEvent''(s: $1_event_EventHandle'$1_vesting_CreateVestingContractEvent'): bool { - $IsValid'u64'($counter#$1_event_EventHandle'$1_vesting_CreateVestingContractEvent'(s)) - && $IsValid'$1_guid_GUID'($guid#$1_event_EventHandle'$1_vesting_CreateVestingContractEvent'(s)) -} -function {:inline} $IsEqual'$1_event_EventHandle'$1_vesting_CreateVestingContractEvent''(s1: $1_event_EventHandle'$1_vesting_CreateVestingContractEvent', s2: $1_event_EventHandle'$1_vesting_CreateVestingContractEvent'): bool { - s1 == s2 -} - -// struct event::EventHandle at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:16:5+224 -type {:datatype} $1_event_EventHandle'$1_vesting_SetBeneficiaryEvent'; -function {:constructor} $1_event_EventHandle'$1_vesting_SetBeneficiaryEvent'($counter: int, $guid: $1_guid_GUID): $1_event_EventHandle'$1_vesting_SetBeneficiaryEvent'; -function {:inline} $Update'$1_event_EventHandle'$1_vesting_SetBeneficiaryEvent''_counter(s: $1_event_EventHandle'$1_vesting_SetBeneficiaryEvent', x: int): $1_event_EventHandle'$1_vesting_SetBeneficiaryEvent' { - $1_event_EventHandle'$1_vesting_SetBeneficiaryEvent'(x, $guid#$1_event_EventHandle'$1_vesting_SetBeneficiaryEvent'(s)) -} -function {:inline} $Update'$1_event_EventHandle'$1_vesting_SetBeneficiaryEvent''_guid(s: $1_event_EventHandle'$1_vesting_SetBeneficiaryEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_vesting_SetBeneficiaryEvent' { - $1_event_EventHandle'$1_vesting_SetBeneficiaryEvent'($counter#$1_event_EventHandle'$1_vesting_SetBeneficiaryEvent'(s), x) -} -function $IsValid'$1_event_EventHandle'$1_vesting_SetBeneficiaryEvent''(s: $1_event_EventHandle'$1_vesting_SetBeneficiaryEvent'): bool { - $IsValid'u64'($counter#$1_event_EventHandle'$1_vesting_SetBeneficiaryEvent'(s)) - && $IsValid'$1_guid_GUID'($guid#$1_event_EventHandle'$1_vesting_SetBeneficiaryEvent'(s)) -} -function {:inline} $IsEqual'$1_event_EventHandle'$1_vesting_SetBeneficiaryEvent''(s1: $1_event_EventHandle'$1_vesting_SetBeneficiaryEvent', s2: $1_event_EventHandle'$1_vesting_SetBeneficiaryEvent'): bool { - s1 == s2 -} - -// struct event::EventHandle at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:16:5+224 -type {:datatype} $1_event_EventHandle'$1_vesting_TerminateEvent'; -function {:constructor} $1_event_EventHandle'$1_vesting_TerminateEvent'($counter: int, $guid: $1_guid_GUID): $1_event_EventHandle'$1_vesting_TerminateEvent'; -function {:inline} $Update'$1_event_EventHandle'$1_vesting_TerminateEvent''_counter(s: $1_event_EventHandle'$1_vesting_TerminateEvent', x: int): $1_event_EventHandle'$1_vesting_TerminateEvent' { - $1_event_EventHandle'$1_vesting_TerminateEvent'(x, $guid#$1_event_EventHandle'$1_vesting_TerminateEvent'(s)) -} -function {:inline} $Update'$1_event_EventHandle'$1_vesting_TerminateEvent''_guid(s: $1_event_EventHandle'$1_vesting_TerminateEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_vesting_TerminateEvent' { - $1_event_EventHandle'$1_vesting_TerminateEvent'($counter#$1_event_EventHandle'$1_vesting_TerminateEvent'(s), x) -} -function $IsValid'$1_event_EventHandle'$1_vesting_TerminateEvent''(s: $1_event_EventHandle'$1_vesting_TerminateEvent'): bool { - $IsValid'u64'($counter#$1_event_EventHandle'$1_vesting_TerminateEvent'(s)) - && $IsValid'$1_guid_GUID'($guid#$1_event_EventHandle'$1_vesting_TerminateEvent'(s)) -} -function {:inline} $IsEqual'$1_event_EventHandle'$1_vesting_TerminateEvent''(s1: $1_event_EventHandle'$1_vesting_TerminateEvent', s2: $1_event_EventHandle'$1_vesting_TerminateEvent'): bool { - s1 == s2 -} - -// struct event::EventHandle at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:16:5+224 -type {:datatype} $1_event_EventHandle'$1_vesting_UnlockRewardsEvent'; -function {:constructor} $1_event_EventHandle'$1_vesting_UnlockRewardsEvent'($counter: int, $guid: $1_guid_GUID): $1_event_EventHandle'$1_vesting_UnlockRewardsEvent'; -function {:inline} $Update'$1_event_EventHandle'$1_vesting_UnlockRewardsEvent''_counter(s: $1_event_EventHandle'$1_vesting_UnlockRewardsEvent', x: int): $1_event_EventHandle'$1_vesting_UnlockRewardsEvent' { - $1_event_EventHandle'$1_vesting_UnlockRewardsEvent'(x, $guid#$1_event_EventHandle'$1_vesting_UnlockRewardsEvent'(s)) -} -function {:inline} $Update'$1_event_EventHandle'$1_vesting_UnlockRewardsEvent''_guid(s: $1_event_EventHandle'$1_vesting_UnlockRewardsEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_vesting_UnlockRewardsEvent' { - $1_event_EventHandle'$1_vesting_UnlockRewardsEvent'($counter#$1_event_EventHandle'$1_vesting_UnlockRewardsEvent'(s), x) -} -function $IsValid'$1_event_EventHandle'$1_vesting_UnlockRewardsEvent''(s: $1_event_EventHandle'$1_vesting_UnlockRewardsEvent'): bool { - $IsValid'u64'($counter#$1_event_EventHandle'$1_vesting_UnlockRewardsEvent'(s)) - && $IsValid'$1_guid_GUID'($guid#$1_event_EventHandle'$1_vesting_UnlockRewardsEvent'(s)) -} -function {:inline} $IsEqual'$1_event_EventHandle'$1_vesting_UnlockRewardsEvent''(s1: $1_event_EventHandle'$1_vesting_UnlockRewardsEvent', s2: $1_event_EventHandle'$1_vesting_UnlockRewardsEvent'): bool { - s1 == s2 -} - -// struct event::EventHandle at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:16:5+224 -type {:datatype} $1_event_EventHandle'$1_vesting_UpdateOperatorEvent'; -function {:constructor} $1_event_EventHandle'$1_vesting_UpdateOperatorEvent'($counter: int, $guid: $1_guid_GUID): $1_event_EventHandle'$1_vesting_UpdateOperatorEvent'; -function {:inline} $Update'$1_event_EventHandle'$1_vesting_UpdateOperatorEvent''_counter(s: $1_event_EventHandle'$1_vesting_UpdateOperatorEvent', x: int): $1_event_EventHandle'$1_vesting_UpdateOperatorEvent' { - $1_event_EventHandle'$1_vesting_UpdateOperatorEvent'(x, $guid#$1_event_EventHandle'$1_vesting_UpdateOperatorEvent'(s)) -} -function {:inline} $Update'$1_event_EventHandle'$1_vesting_UpdateOperatorEvent''_guid(s: $1_event_EventHandle'$1_vesting_UpdateOperatorEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_vesting_UpdateOperatorEvent' { - $1_event_EventHandle'$1_vesting_UpdateOperatorEvent'($counter#$1_event_EventHandle'$1_vesting_UpdateOperatorEvent'(s), x) -} -function $IsValid'$1_event_EventHandle'$1_vesting_UpdateOperatorEvent''(s: $1_event_EventHandle'$1_vesting_UpdateOperatorEvent'): bool { - $IsValid'u64'($counter#$1_event_EventHandle'$1_vesting_UpdateOperatorEvent'(s)) - && $IsValid'$1_guid_GUID'($guid#$1_event_EventHandle'$1_vesting_UpdateOperatorEvent'(s)) -} -function {:inline} $IsEqual'$1_event_EventHandle'$1_vesting_UpdateOperatorEvent''(s1: $1_event_EventHandle'$1_vesting_UpdateOperatorEvent', s2: $1_event_EventHandle'$1_vesting_UpdateOperatorEvent'): bool { - s1 == s2 -} - -// struct event::EventHandle at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:16:5+224 -type {:datatype} $1_event_EventHandle'$1_vesting_VestEvent'; -function {:constructor} $1_event_EventHandle'$1_vesting_VestEvent'($counter: int, $guid: $1_guid_GUID): $1_event_EventHandle'$1_vesting_VestEvent'; -function {:inline} $Update'$1_event_EventHandle'$1_vesting_VestEvent''_counter(s: $1_event_EventHandle'$1_vesting_VestEvent', x: int): $1_event_EventHandle'$1_vesting_VestEvent' { - $1_event_EventHandle'$1_vesting_VestEvent'(x, $guid#$1_event_EventHandle'$1_vesting_VestEvent'(s)) -} -function {:inline} $Update'$1_event_EventHandle'$1_vesting_VestEvent''_guid(s: $1_event_EventHandle'$1_vesting_VestEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_vesting_VestEvent' { - $1_event_EventHandle'$1_vesting_VestEvent'($counter#$1_event_EventHandle'$1_vesting_VestEvent'(s), x) -} -function $IsValid'$1_event_EventHandle'$1_vesting_VestEvent''(s: $1_event_EventHandle'$1_vesting_VestEvent'): bool { - $IsValid'u64'($counter#$1_event_EventHandle'$1_vesting_VestEvent'(s)) - && $IsValid'$1_guid_GUID'($guid#$1_event_EventHandle'$1_vesting_VestEvent'(s)) -} -function {:inline} $IsEqual'$1_event_EventHandle'$1_vesting_VestEvent''(s1: $1_event_EventHandle'$1_vesting_VestEvent', s2: $1_event_EventHandle'$1_vesting_VestEvent'): bool { - s1 == s2 -} - -// fun event::new_event_handle [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:24:5+165 -procedure {:inline 1} $1_event_new_event_handle'$1_account_CoinRegisterEvent'(_$t0: $1_guid_GUID) returns ($ret0: $1_event_EventHandle'$1_account_CoinRegisterEvent') -{ - // declare local variables - var $t1: int; - var $t2: $1_event_EventHandle'$1_account_CoinRegisterEvent'; - var $t0: $1_guid_GUID; - var $temp_0'$1_event_EventHandle'$1_account_CoinRegisterEvent'': $1_event_EventHandle'$1_account_CoinRegisterEvent'; - var $temp_0'$1_guid_GUID': $1_guid_GUID; - $t0 := _$t0; - - // bytecode translation starts here - // trace_local[guid]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:24:5+1 - assume {:print "$at(117,978,979)"} true; - assume {:print "$track_local(15,4,0):", $t0} $t0 == $t0; - - // $t1 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:26:22+1 - assume {:print "$at(117,1107,1108)"} true; - $t1 := 0; - assume $IsValid'u64'($t1); - - // $t2 := pack event::EventHandle<#0>($t1, $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:25:9+68 - assume {:print "$at(117,1069,1137)"} true; - $t2 := $1_event_EventHandle'$1_account_CoinRegisterEvent'($t1, $t0); - - // trace_return[0]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:25:9+68 - assume {:print "$track_return(15,4,0):", $t2} $t2 == $t2; - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:29:5+1 - assume {:print "$at(117,1142,1143)"} true; -L1: - - // return $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:29:5+1 - assume {:print "$at(117,1142,1143)"} true; - $ret0 := $t2; - return; - -} - -// fun event::new_event_handle [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:24:5+165 -procedure {:inline 1} $1_event_new_event_handle'$1_account_KeyRotationEvent'(_$t0: $1_guid_GUID) returns ($ret0: $1_event_EventHandle'$1_account_KeyRotationEvent') -{ - // declare local variables - var $t1: int; - var $t2: $1_event_EventHandle'$1_account_KeyRotationEvent'; - var $t0: $1_guid_GUID; - var $temp_0'$1_event_EventHandle'$1_account_KeyRotationEvent'': $1_event_EventHandle'$1_account_KeyRotationEvent'; - var $temp_0'$1_guid_GUID': $1_guid_GUID; - $t0 := _$t0; - - // bytecode translation starts here - // trace_local[guid]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:24:5+1 - assume {:print "$at(117,978,979)"} true; - assume {:print "$track_local(15,4,0):", $t0} $t0 == $t0; - - // $t1 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:26:22+1 - assume {:print "$at(117,1107,1108)"} true; - $t1 := 0; - assume $IsValid'u64'($t1); - - // $t2 := pack event::EventHandle<#0>($t1, $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:25:9+68 - assume {:print "$at(117,1069,1137)"} true; - $t2 := $1_event_EventHandle'$1_account_KeyRotationEvent'($t1, $t0); - - // trace_return[0]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:25:9+68 - assume {:print "$track_return(15,4,0):", $t2} $t2 == $t2; - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:29:5+1 - assume {:print "$at(117,1142,1143)"} true; -L1: - - // return $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:29:5+1 - assume {:print "$at(117,1142,1143)"} true; - $ret0 := $t2; - return; - -} - -// fun event::new_event_handle [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:24:5+165 -procedure {:inline 1} $1_event_new_event_handle'$1_coin_DepositEvent'(_$t0: $1_guid_GUID) returns ($ret0: $1_event_EventHandle'$1_coin_DepositEvent') -{ - // declare local variables - var $t1: int; - var $t2: $1_event_EventHandle'$1_coin_DepositEvent'; - var $t0: $1_guid_GUID; - var $temp_0'$1_event_EventHandle'$1_coin_DepositEvent'': $1_event_EventHandle'$1_coin_DepositEvent'; - var $temp_0'$1_guid_GUID': $1_guid_GUID; - $t0 := _$t0; - - // bytecode translation starts here - // trace_local[guid]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:24:5+1 - assume {:print "$at(117,978,979)"} true; - assume {:print "$track_local(15,4,0):", $t0} $t0 == $t0; - - // $t1 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:26:22+1 - assume {:print "$at(117,1107,1108)"} true; - $t1 := 0; - assume $IsValid'u64'($t1); - - // $t2 := pack event::EventHandle<#0>($t1, $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:25:9+68 - assume {:print "$at(117,1069,1137)"} true; - $t2 := $1_event_EventHandle'$1_coin_DepositEvent'($t1, $t0); - - // trace_return[0]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:25:9+68 - assume {:print "$track_return(15,4,0):", $t2} $t2 == $t2; - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:29:5+1 - assume {:print "$at(117,1142,1143)"} true; -L1: - - // return $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:29:5+1 - assume {:print "$at(117,1142,1143)"} true; - $ret0 := $t2; - return; - -} - -// fun event::new_event_handle [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:24:5+165 -procedure {:inline 1} $1_event_new_event_handle'$1_coin_WithdrawEvent'(_$t0: $1_guid_GUID) returns ($ret0: $1_event_EventHandle'$1_coin_WithdrawEvent') -{ - // declare local variables - var $t1: int; - var $t2: $1_event_EventHandle'$1_coin_WithdrawEvent'; - var $t0: $1_guid_GUID; - var $temp_0'$1_event_EventHandle'$1_coin_WithdrawEvent'': $1_event_EventHandle'$1_coin_WithdrawEvent'; - var $temp_0'$1_guid_GUID': $1_guid_GUID; - $t0 := _$t0; - - // bytecode translation starts here - // trace_local[guid]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:24:5+1 - assume {:print "$at(117,978,979)"} true; - assume {:print "$track_local(15,4,0):", $t0} $t0 == $t0; - - // $t1 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:26:22+1 - assume {:print "$at(117,1107,1108)"} true; - $t1 := 0; - assume $IsValid'u64'($t1); - - // $t2 := pack event::EventHandle<#0>($t1, $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:25:9+68 - assume {:print "$at(117,1069,1137)"} true; - $t2 := $1_event_EventHandle'$1_coin_WithdrawEvent'($t1, $t0); - - // trace_return[0]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:25:9+68 - assume {:print "$track_return(15,4,0):", $t2} $t2 == $t2; - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:29:5+1 - assume {:print "$at(117,1142,1143)"} true; -L1: - - // return $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/event.move:29:5+1 - assume {:print "$at(117,1142,1143)"} true; - $ret0 := $t2; - return; - -} - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:225:5+79 -function {:inline} $1_account_$exists_at($1_account_Account_$memory: $Memory $1_account_Account, addr: int): bool { - $ResourceExists($1_account_Account_$memory, addr) -} - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:409:10+77 -function $1_account_spec_create_resource_address(source: int, seed: Vec (int)): int; -axiom (forall source: int, seed: Vec (int) :: -(var $$res := $1_account_spec_create_resource_address(source, seed); -$IsValid'address'($$res))); - -// struct account::Account at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:27:5+401 -type {:datatype} $1_account_Account; -function {:constructor} $1_account_Account($authentication_key: Vec (int), $sequence_number: int, $guid_creation_num: int, $coin_register_events: $1_event_EventHandle'$1_account_CoinRegisterEvent', $key_rotation_events: $1_event_EventHandle'$1_account_KeyRotationEvent', $rotation_capability_offer: $1_account_CapabilityOffer'$1_account_RotationCapability', $signer_capability_offer: $1_account_CapabilityOffer'$1_account_SignerCapability'): $1_account_Account; -function {:inline} $Update'$1_account_Account'_authentication_key(s: $1_account_Account, x: Vec (int)): $1_account_Account { - $1_account_Account(x, $sequence_number#$1_account_Account(s), $guid_creation_num#$1_account_Account(s), $coin_register_events#$1_account_Account(s), $key_rotation_events#$1_account_Account(s), $rotation_capability_offer#$1_account_Account(s), $signer_capability_offer#$1_account_Account(s)) -} -function {:inline} $Update'$1_account_Account'_sequence_number(s: $1_account_Account, x: int): $1_account_Account { - $1_account_Account($authentication_key#$1_account_Account(s), x, $guid_creation_num#$1_account_Account(s), $coin_register_events#$1_account_Account(s), $key_rotation_events#$1_account_Account(s), $rotation_capability_offer#$1_account_Account(s), $signer_capability_offer#$1_account_Account(s)) -} -function {:inline} $Update'$1_account_Account'_guid_creation_num(s: $1_account_Account, x: int): $1_account_Account { - $1_account_Account($authentication_key#$1_account_Account(s), $sequence_number#$1_account_Account(s), x, $coin_register_events#$1_account_Account(s), $key_rotation_events#$1_account_Account(s), $rotation_capability_offer#$1_account_Account(s), $signer_capability_offer#$1_account_Account(s)) -} -function {:inline} $Update'$1_account_Account'_coin_register_events(s: $1_account_Account, x: $1_event_EventHandle'$1_account_CoinRegisterEvent'): $1_account_Account { - $1_account_Account($authentication_key#$1_account_Account(s), $sequence_number#$1_account_Account(s), $guid_creation_num#$1_account_Account(s), x, $key_rotation_events#$1_account_Account(s), $rotation_capability_offer#$1_account_Account(s), $signer_capability_offer#$1_account_Account(s)) -} -function {:inline} $Update'$1_account_Account'_key_rotation_events(s: $1_account_Account, x: $1_event_EventHandle'$1_account_KeyRotationEvent'): $1_account_Account { - $1_account_Account($authentication_key#$1_account_Account(s), $sequence_number#$1_account_Account(s), $guid_creation_num#$1_account_Account(s), $coin_register_events#$1_account_Account(s), x, $rotation_capability_offer#$1_account_Account(s), $signer_capability_offer#$1_account_Account(s)) -} -function {:inline} $Update'$1_account_Account'_rotation_capability_offer(s: $1_account_Account, x: $1_account_CapabilityOffer'$1_account_RotationCapability'): $1_account_Account { - $1_account_Account($authentication_key#$1_account_Account(s), $sequence_number#$1_account_Account(s), $guid_creation_num#$1_account_Account(s), $coin_register_events#$1_account_Account(s), $key_rotation_events#$1_account_Account(s), x, $signer_capability_offer#$1_account_Account(s)) -} -function {:inline} $Update'$1_account_Account'_signer_capability_offer(s: $1_account_Account, x: $1_account_CapabilityOffer'$1_account_SignerCapability'): $1_account_Account { - $1_account_Account($authentication_key#$1_account_Account(s), $sequence_number#$1_account_Account(s), $guid_creation_num#$1_account_Account(s), $coin_register_events#$1_account_Account(s), $key_rotation_events#$1_account_Account(s), $rotation_capability_offer#$1_account_Account(s), x) -} -function $IsValid'$1_account_Account'(s: $1_account_Account): bool { - $IsValid'vec'u8''($authentication_key#$1_account_Account(s)) - && $IsValid'u64'($sequence_number#$1_account_Account(s)) - && $IsValid'u64'($guid_creation_num#$1_account_Account(s)) - && $IsValid'$1_event_EventHandle'$1_account_CoinRegisterEvent''($coin_register_events#$1_account_Account(s)) - && $IsValid'$1_event_EventHandle'$1_account_KeyRotationEvent''($key_rotation_events#$1_account_Account(s)) - && $IsValid'$1_account_CapabilityOffer'$1_account_RotationCapability''($rotation_capability_offer#$1_account_Account(s)) - && $IsValid'$1_account_CapabilityOffer'$1_account_SignerCapability''($signer_capability_offer#$1_account_Account(s)) -} -function {:inline} $IsEqual'$1_account_Account'(s1: $1_account_Account, s2: $1_account_Account): bool { - $IsEqual'vec'u8''($authentication_key#$1_account_Account(s1), $authentication_key#$1_account_Account(s2)) - && $IsEqual'u64'($sequence_number#$1_account_Account(s1), $sequence_number#$1_account_Account(s2)) - && $IsEqual'u64'($guid_creation_num#$1_account_Account(s1), $guid_creation_num#$1_account_Account(s2)) - && $IsEqual'$1_event_EventHandle'$1_account_CoinRegisterEvent''($coin_register_events#$1_account_Account(s1), $coin_register_events#$1_account_Account(s2)) - && $IsEqual'$1_event_EventHandle'$1_account_KeyRotationEvent''($key_rotation_events#$1_account_Account(s1), $key_rotation_events#$1_account_Account(s2)) - && $IsEqual'$1_account_CapabilityOffer'$1_account_RotationCapability''($rotation_capability_offer#$1_account_Account(s1), $rotation_capability_offer#$1_account_Account(s2)) - && $IsEqual'$1_account_CapabilityOffer'$1_account_SignerCapability''($signer_capability_offer#$1_account_Account(s1), $signer_capability_offer#$1_account_Account(s2))} -var $1_account_Account_$memory: $Memory $1_account_Account; - -// struct account::CapabilityOffer at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:46:5+68 -type {:datatype} $1_account_CapabilityOffer'$1_account_RotationCapability'; -function {:constructor} $1_account_CapabilityOffer'$1_account_RotationCapability'($for: $1_option_Option'address'): $1_account_CapabilityOffer'$1_account_RotationCapability'; -function {:inline} $Update'$1_account_CapabilityOffer'$1_account_RotationCapability''_for(s: $1_account_CapabilityOffer'$1_account_RotationCapability', x: $1_option_Option'address'): $1_account_CapabilityOffer'$1_account_RotationCapability' { - $1_account_CapabilityOffer'$1_account_RotationCapability'(x) -} -function $IsValid'$1_account_CapabilityOffer'$1_account_RotationCapability''(s: $1_account_CapabilityOffer'$1_account_RotationCapability'): bool { - $IsValid'$1_option_Option'address''($for#$1_account_CapabilityOffer'$1_account_RotationCapability'(s)) -} -function {:inline} $IsEqual'$1_account_CapabilityOffer'$1_account_RotationCapability''(s1: $1_account_CapabilityOffer'$1_account_RotationCapability', s2: $1_account_CapabilityOffer'$1_account_RotationCapability'): bool { - $IsEqual'$1_option_Option'address''($for#$1_account_CapabilityOffer'$1_account_RotationCapability'(s1), $for#$1_account_CapabilityOffer'$1_account_RotationCapability'(s2))} - -// struct account::CapabilityOffer at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:46:5+68 -type {:datatype} $1_account_CapabilityOffer'$1_account_SignerCapability'; -function {:constructor} $1_account_CapabilityOffer'$1_account_SignerCapability'($for: $1_option_Option'address'): $1_account_CapabilityOffer'$1_account_SignerCapability'; -function {:inline} $Update'$1_account_CapabilityOffer'$1_account_SignerCapability''_for(s: $1_account_CapabilityOffer'$1_account_SignerCapability', x: $1_option_Option'address'): $1_account_CapabilityOffer'$1_account_SignerCapability' { - $1_account_CapabilityOffer'$1_account_SignerCapability'(x) -} -function $IsValid'$1_account_CapabilityOffer'$1_account_SignerCapability''(s: $1_account_CapabilityOffer'$1_account_SignerCapability'): bool { - $IsValid'$1_option_Option'address''($for#$1_account_CapabilityOffer'$1_account_SignerCapability'(s)) -} -function {:inline} $IsEqual'$1_account_CapabilityOffer'$1_account_SignerCapability''(s1: $1_account_CapabilityOffer'$1_account_SignerCapability', s2: $1_account_CapabilityOffer'$1_account_SignerCapability'): bool { - $IsEqual'$1_option_Option'address''($for#$1_account_CapabilityOffer'$1_account_SignerCapability'(s1), $for#$1_account_CapabilityOffer'$1_account_SignerCapability'(s2))} - -// struct account::CoinRegisterEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:42:5+77 -type {:datatype} $1_account_CoinRegisterEvent; -function {:constructor} $1_account_CoinRegisterEvent($type_info: $1_type_info_TypeInfo): $1_account_CoinRegisterEvent; -function {:inline} $Update'$1_account_CoinRegisterEvent'_type_info(s: $1_account_CoinRegisterEvent, x: $1_type_info_TypeInfo): $1_account_CoinRegisterEvent { - $1_account_CoinRegisterEvent(x) -} -function $IsValid'$1_account_CoinRegisterEvent'(s: $1_account_CoinRegisterEvent): bool { - $IsValid'$1_type_info_TypeInfo'($type_info#$1_account_CoinRegisterEvent(s)) -} -function {:inline} $IsEqual'$1_account_CoinRegisterEvent'(s1: $1_account_CoinRegisterEvent, s2: $1_account_CoinRegisterEvent): bool { - $IsEqual'$1_type_info_TypeInfo'($type_info#$1_account_CoinRegisterEvent(s1), $type_info#$1_account_CoinRegisterEvent(s2))} - -// struct account::KeyRotationEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:37:5+135 -type {:datatype} $1_account_KeyRotationEvent; -function {:constructor} $1_account_KeyRotationEvent($old_authentication_key: Vec (int), $new_authentication_key: Vec (int)): $1_account_KeyRotationEvent; -function {:inline} $Update'$1_account_KeyRotationEvent'_old_authentication_key(s: $1_account_KeyRotationEvent, x: Vec (int)): $1_account_KeyRotationEvent { - $1_account_KeyRotationEvent(x, $new_authentication_key#$1_account_KeyRotationEvent(s)) -} -function {:inline} $Update'$1_account_KeyRotationEvent'_new_authentication_key(s: $1_account_KeyRotationEvent, x: Vec (int)): $1_account_KeyRotationEvent { - $1_account_KeyRotationEvent($old_authentication_key#$1_account_KeyRotationEvent(s), x) -} -function $IsValid'$1_account_KeyRotationEvent'(s: $1_account_KeyRotationEvent): bool { - $IsValid'vec'u8''($old_authentication_key#$1_account_KeyRotationEvent(s)) - && $IsValid'vec'u8''($new_authentication_key#$1_account_KeyRotationEvent(s)) -} -function {:inline} $IsEqual'$1_account_KeyRotationEvent'(s1: $1_account_KeyRotationEvent, s2: $1_account_KeyRotationEvent): bool { - $IsEqual'vec'u8''($old_authentication_key#$1_account_KeyRotationEvent(s1), $old_authentication_key#$1_account_KeyRotationEvent(s2)) - && $IsEqual'vec'u8''($new_authentication_key#$1_account_KeyRotationEvent(s1), $new_authentication_key#$1_account_KeyRotationEvent(s2))} - -// struct account::RotationCapability at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:48:5+62 -type {:datatype} $1_account_RotationCapability; -function {:constructor} $1_account_RotationCapability($account: int): $1_account_RotationCapability; -function {:inline} $Update'$1_account_RotationCapability'_account(s: $1_account_RotationCapability, x: int): $1_account_RotationCapability { - $1_account_RotationCapability(x) -} -function $IsValid'$1_account_RotationCapability'(s: $1_account_RotationCapability): bool { - $IsValid'address'($account#$1_account_RotationCapability(s)) -} -function {:inline} $IsEqual'$1_account_RotationCapability'(s1: $1_account_RotationCapability, s2: $1_account_RotationCapability): bool { - s1 == s2 -} - -// struct account::SignerCapability at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:50:5+60 -type {:datatype} $1_account_SignerCapability; -function {:constructor} $1_account_SignerCapability($account: int): $1_account_SignerCapability; -function {:inline} $Update'$1_account_SignerCapability'_account(s: $1_account_SignerCapability, x: int): $1_account_SignerCapability { - $1_account_SignerCapability(x) -} -function $IsValid'$1_account_SignerCapability'(s: $1_account_SignerCapability): bool { - $IsValid'address'($account#$1_account_SignerCapability(s)) -} -function {:inline} $IsEqual'$1_account_SignerCapability'(s1: $1_account_SignerCapability, s2: $1_account_SignerCapability): bool { - s1 == s2 -} - -// fun account::new_event_handle [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:691:5+157 -procedure {:inline 1} $1_account_new_event_handle'$1_coin_DepositEvent'(_$t0: $signer) returns ($ret0: $1_event_EventHandle'$1_coin_DepositEvent') -{ - // declare local variables - var $t1: int; - var $t2: $1_account_Account; - var $t3: int; - var $t4: int; - var $t5: $1_account_Account; - var $t6: $1_guid_GUID; - var $t7: int; - var $t8: $1_event_EventHandle'$1_coin_DepositEvent'; - var $t0: $signer; - var $temp_0'$1_event_EventHandle'$1_coin_DepositEvent'': $1_event_EventHandle'$1_coin_DepositEvent'; - var $temp_0'signer': $signer; - $t0 := _$t0; - - // bytecode translation starts here - // assume Identical($t1, signer::$address_of($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:461:9+39 - assume {:print "$at(80,22297,22336)"} true; - assume ($t1 == $1_signer_$address_of($t0)); - - // assume Identical($t2, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:462:9+36 - assume {:print "$at(80,22345,22381)"} true; - assume ($t2 == $ResourceValue($1_account_Account_$memory, $t1)); - - // trace_local[account]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:691:5+1 - assume {:print "$at(79,39221,39222)"} true; - assume {:print "$track_local(18,20,0):", $t0} $t0 == $t0; - - // assume Identical($t3, signer::$address_of($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:446:9+46 - assume {:print "$at(80,21696,21742)"} true; - assume ($t3 == $1_signer_$address_of($t0)); - - // assume Identical($t4, signer::$address_of($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:461:9+39 - assume {:print "$at(80,22297,22336)"} true; - assume ($t4 == $1_signer_$address_of($t0)); - - // assume Identical($t5, global($t4)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:462:9+36 - assume {:print "$at(80,22345,22381)"} true; - assume ($t5 == $ResourceValue($1_account_Account_$memory, $t4)); - - // $t6 := account::create_guid($t0) on_abort goto L2 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:692:33+20 - assume {:print "$at(79,39351,39371)"} true; - call $t6 := $1_account_create_guid($t0); - if ($abort_flag) { - assume {:print "$at(79,39351,39371)"} true; - $t7 := $abort_code; - assume {:print "$track_abort(18,20):", $t7} $t7 == $t7; - goto L2; - } - - // $t8 := event::new_event_handle<#0>($t6) on_abort goto L2 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:692:9+45 - call $t8 := $1_event_new_event_handle'$1_coin_DepositEvent'($t6); - if ($abort_flag) { - assume {:print "$at(79,39327,39372)"} true; - $t7 := $abort_code; - assume {:print "$track_abort(18,20):", $t7} $t7 == $t7; - goto L2; - } - - // trace_return[0]($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:692:9+45 - assume {:print "$track_return(18,20,0):", $t8} $t8 == $t8; - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:693:5+1 - assume {:print "$at(79,39377,39378)"} true; -L1: - - // return $t8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:693:5+1 - assume {:print "$at(79,39377,39378)"} true; - $ret0 := $t8; - return; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:693:5+1 -L2: - - // abort($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:693:5+1 - assume {:print "$at(79,39377,39378)"} true; - $abort_code := $t7; - $abort_flag := true; - return; - -} - -// fun account::new_event_handle [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:691:5+157 -procedure {:inline 1} $1_account_new_event_handle'$1_coin_WithdrawEvent'(_$t0: $signer) returns ($ret0: $1_event_EventHandle'$1_coin_WithdrawEvent') -{ - // declare local variables - var $t1: int; - var $t2: $1_account_Account; - var $t3: int; - var $t4: int; - var $t5: $1_account_Account; - var $t6: $1_guid_GUID; - var $t7: int; - var $t8: $1_event_EventHandle'$1_coin_WithdrawEvent'; - var $t0: $signer; - var $temp_0'$1_event_EventHandle'$1_coin_WithdrawEvent'': $1_event_EventHandle'$1_coin_WithdrawEvent'; - var $temp_0'signer': $signer; - $t0 := _$t0; - - // bytecode translation starts here - // assume Identical($t1, signer::$address_of($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:461:9+39 - assume {:print "$at(80,22297,22336)"} true; - assume ($t1 == $1_signer_$address_of($t0)); - - // assume Identical($t2, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:462:9+36 - assume {:print "$at(80,22345,22381)"} true; - assume ($t2 == $ResourceValue($1_account_Account_$memory, $t1)); - - // trace_local[account]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:691:5+1 - assume {:print "$at(79,39221,39222)"} true; - assume {:print "$track_local(18,20,0):", $t0} $t0 == $t0; - - // assume Identical($t3, signer::$address_of($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:446:9+46 - assume {:print "$at(80,21696,21742)"} true; - assume ($t3 == $1_signer_$address_of($t0)); - - // assume Identical($t4, signer::$address_of($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:461:9+39 - assume {:print "$at(80,22297,22336)"} true; - assume ($t4 == $1_signer_$address_of($t0)); - - // assume Identical($t5, global($t4)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:462:9+36 - assume {:print "$at(80,22345,22381)"} true; - assume ($t5 == $ResourceValue($1_account_Account_$memory, $t4)); - - // $t6 := account::create_guid($t0) on_abort goto L2 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:692:33+20 - assume {:print "$at(79,39351,39371)"} true; - call $t6 := $1_account_create_guid($t0); - if ($abort_flag) { - assume {:print "$at(79,39351,39371)"} true; - $t7 := $abort_code; - assume {:print "$track_abort(18,20):", $t7} $t7 == $t7; - goto L2; - } - - // $t8 := event::new_event_handle<#0>($t6) on_abort goto L2 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:692:9+45 - call $t8 := $1_event_new_event_handle'$1_coin_WithdrawEvent'($t6); - if ($abort_flag) { - assume {:print "$at(79,39327,39372)"} true; - $t7 := $abort_code; - assume {:print "$track_abort(18,20):", $t7} $t7 == $t7; - goto L2; - } - - // trace_return[0]($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:692:9+45 - assume {:print "$track_return(18,20,0):", $t8} $t8 == $t8; - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:693:5+1 - assume {:print "$at(79,39377,39378)"} true; -L1: - - // return $t8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:693:5+1 - assume {:print "$at(79,39377,39378)"} true; - $ret0 := $t8; - return; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:693:5+1 -L2: - - // abort($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:693:5+1 - assume {:print "$at(79,39377,39378)"} true; - $abort_code := $t7; - $abort_flag := true; - return; - -} - -// fun account::create_account_unchecked [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:192:5+1182 -procedure {:inline 1} $1_account_create_account_unchecked(_$t0: int) returns ($ret0: $signer) -{ - // declare local variables - var $t1: Vec (int); - var $t2: $1_event_EventHandle'$1_account_CoinRegisterEvent'; - var $t3: int; - var $t4: $1_event_EventHandle'$1_account_KeyRotationEvent'; - var $t5: $signer; - var $t6: Vec (int); - var $t7: $signer; - var $t8: Vec (int); - var $t9: int; - var $t10: int; - var $t11: int; - var $t12: bool; - var $t13: int; - var $t14: int; - var $t15: int; - var $t16: $Mutation (int); - var $t17: $1_guid_GUID; - var $t18: $1_event_EventHandle'$1_account_CoinRegisterEvent'; - var $t19: $Mutation (int); - var $t20: $1_guid_GUID; - var $t21: $1_event_EventHandle'$1_account_KeyRotationEvent'; - var $t22: int; - var $t23: int; - var $t24: $1_option_Option'address'; - var $t25: $1_account_CapabilityOffer'$1_account_RotationCapability'; - var $t26: $1_option_Option'address'; - var $t27: $1_account_CapabilityOffer'$1_account_SignerCapability'; - var $t28: $1_account_Account; - var $t0: int; - var $temp_0'$1_event_EventHandle'$1_account_CoinRegisterEvent'': $1_event_EventHandle'$1_account_CoinRegisterEvent'; - var $temp_0'$1_event_EventHandle'$1_account_KeyRotationEvent'': $1_event_EventHandle'$1_account_KeyRotationEvent'; - var $temp_0'address': int; - var $temp_0'signer': $signer; - var $temp_0'u64': int; - var $temp_0'vec'u8'': Vec (int); - $t0 := _$t0; - - // bytecode translation starts here - // assume Identical($t6, bcs::$to_bytes
($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:40:9+45 - assume {:print "$at(80,1640,1685)"} true; - assume ($t6 == $1_bcs_$to_bytes'address'($t0)); - - // trace_local[new_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:192:5+1 - assume {:print "$at(79,10213,10214)"} true; - assume {:print "$track_local(18,2,0):", $t0} $t0 == $t0; - - // $t7 := opaque begin: create_signer::create_signer($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:193:27+26 - assume {:print "$at(79,10300,10326)"} true; - - // assume WellFormed($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:193:27+26 - assume $IsValid'signer'($t7) && $1_signer_is_txn_signer($t7) && $1_signer_is_txn_signer_addr($addr#$signer($t7)); - - // assume Eq
(signer::$address_of($t7), $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:193:27+26 - assume $IsEqual'address'($1_signer_$address_of($t7), $t0); - - // $t7 := opaque end: create_signer::create_signer($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:193:27+26 - - // trace_local[new_account]($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:193:13+11 - assume {:print "$track_local(18,2,5):", $t7} $t7 == $t7; - - // $t8 := bcs::to_bytes
($t0) on_abort goto L4 with $t9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:194:34+27 - assume {:print "$at(79,10361,10388)"} true; - call $t8 := $1_bcs_to_bytes'address'($t0); - if ($abort_flag) { - assume {:print "$at(79,10361,10388)"} true; - $t9 := $abort_code; - assume {:print "$track_abort(18,2):", $t9} $t9 == $t9; - goto L4; - } - - // trace_local[authentication_key]($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:194:13+18 - assume {:print "$track_local(18,2,1):", $t8} $t8 == $t8; - - // $t10 := vector::length($t8) on_abort goto L4 with $t9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:196:13+35 - assume {:print "$at(79,10419,10454)"} true; - call $t10 := $1_vector_length'u8'($t8); - if ($abort_flag) { - assume {:print "$at(79,10419,10454)"} true; - $t9 := $abort_code; - assume {:print "$track_abort(18,2):", $t9} $t9 == $t9; - goto L4; - } - - // $t11 := 32 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:196:52+2 - $t11 := 32; - assume $IsValid'u64'($t11); - - // $t12 := ==($t10, $t11) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:196:49+2 - $t12 := $IsEqual'u64'($t10, $t11); - - // if ($t12) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:195:9+140 - assume {:print "$at(79,10398,10538)"} true; - if ($t12) { goto L1; } else { goto L0; } - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:195:9+140 -L1: - - // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:195:9+140 - assume {:print "$at(79,10398,10538)"} true; - goto L2; - - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:197:37+29 - assume {:print "$at(79,10498,10527)"} true; -L0: - - // $t13 := 4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:197:37+29 - assume {:print "$at(79,10498,10527)"} true; - $t13 := 4; - assume $IsValid'u64'($t13); - - // $t14 := error::invalid_argument($t13) on_abort goto L4 with $t9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:197:13+54 - call $t14 := $1_error_invalid_argument($t13); - if ($abort_flag) { - assume {:print "$at(79,10474,10528)"} true; - $t9 := $abort_code; - assume {:print "$track_abort(18,2):", $t9} $t9 == $t9; - goto L4; - } - - // trace_abort($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:195:9+140 - assume {:print "$at(79,10398,10538)"} true; - assume {:print "$track_abort(18,2):", $t14} $t14 == $t14; - - // $t9 := move($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:195:9+140 - $t9 := $t14; - - // goto L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:195:9+140 - goto L4; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:200:33+1 - assume {:print "$at(79,10573,10574)"} true; -L2: - - // $t15 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:200:33+1 - assume {:print "$at(79,10573,10574)"} true; - $t15 := 0; - assume $IsValid'u64'($t15); - - // $t3 := $t15 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:200:13+17 - $t3 := $t15; - - // trace_local[guid_creation_num]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:200:13+17 - assume {:print "$track_local(18,2,3):", $t3} $t3 == $t3; - - // $t16 := borrow_local($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:202:55+22 - assume {:print "$at(79,10631,10653)"} true; - $t16 := $Mutation($Local(3), EmptyVec(), $t3); - - // $t17 := guid::create($t0, $t16) on_abort goto L4 with $t9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:202:29+49 - call $t17,$t16 := $1_guid_create($t0, $t16); - if ($abort_flag) { - assume {:print "$at(79,10605,10654)"} true; - $t9 := $abort_code; - assume {:print "$track_abort(18,2):", $t9} $t9 == $t9; - goto L4; - } - - // write_back[LocalRoot($t3)@]($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:202:29+49 - $t3 := $Dereference($t16); - - // trace_local[guid_creation_num]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:202:29+49 - assume {:print "$track_local(18,2,3):", $t3} $t3 == $t3; - - // $t18 := event::new_event_handle($t17) on_abort goto L4 with $t9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:203:36+57 - assume {:print "$at(79,10691,10748)"} true; - call $t18 := $1_event_new_event_handle'$1_account_CoinRegisterEvent'($t17); - if ($abort_flag) { - assume {:print "$at(79,10691,10748)"} true; - $t9 := $abort_code; - assume {:print "$track_abort(18,2):", $t9} $t9 == $t9; - goto L4; - } - - // trace_local[coin_register_events]($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:203:13+20 - assume {:print "$track_local(18,2,2):", $t18} $t18 == $t18; - - // $t19 := borrow_local($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:205:59+22 - assume {:print "$at(79,10809,10831)"} true; - $t19 := $Mutation($Local(3), EmptyVec(), $t3); - - // $t20 := guid::create($t0, $t19) on_abort goto L4 with $t9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:205:33+49 - call $t20,$t19 := $1_guid_create($t0, $t19); - if ($abort_flag) { - assume {:print "$at(79,10783,10832)"} true; - $t9 := $abort_code; - assume {:print "$track_abort(18,2):", $t9} $t9 == $t9; - goto L4; - } - - // write_back[LocalRoot($t3)@]($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:205:33+49 - $t3 := $Dereference($t19); - - // trace_local[guid_creation_num]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:205:33+49 - assume {:print "$track_local(18,2,3):", $t3} $t3 == $t3; - - // $t21 := event::new_event_handle($t20) on_abort goto L4 with $t9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:206:35+60 - assume {:print "$at(79,10868,10928)"} true; - call $t21 := $1_event_new_event_handle'$1_account_KeyRotationEvent'($t20); - if ($abort_flag) { - assume {:print "$at(79,10868,10928)"} true; - $t9 := $abort_code; - assume {:print "$track_abort(18,2):", $t9} $t9 == $t9; - goto L4; - } - - // trace_local[key_rotation_events]($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:206:13+19 - assume {:print "$track_local(18,2,4):", $t21} $t21 == $t21; - - // $t22 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:212:34+1 - assume {:print "$at(79,11065,11066)"} true; - $t22 := 0; - assume $IsValid'u64'($t22); - - // $t23 := move($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:213:17+17 - assume {:print "$at(79,11084,11101)"} true; - $t23 := $t3; - - // $t24 := opaque begin: option::none
() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:216:67+14 - assume {:print "$at(79,11244,11258)"} true; - - // assume And(WellFormed($t24), Le(Len
(select option::Option.vec($t24)), 1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:216:67+14 - assume ($IsValid'$1_option_Option'address''($t24) && (LenVec($vec#$1_option_Option'address'($t24)) <= 1)); - - // assume Eq>($t24, option::spec_none
()) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:216:67+14 - assume $IsEqual'$1_option_Option'address''($t24, $1_option_spec_none'address'()); - - // $t24 := opaque end: option::none
() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:216:67+14 - - // $t25 := pack account::CapabilityOffer($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:216:44+39 - $t25 := $1_account_CapabilityOffer'$1_account_RotationCapability'($t24); - - // $t26 := opaque begin: option::none
() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:217:65+14 - assume {:print "$at(79,11326,11340)"} true; - - // assume And(WellFormed($t26), Le(Len
(select option::Option.vec($t26)), 1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:217:65+14 - assume ($IsValid'$1_option_Option'address''($t26) && (LenVec($vec#$1_option_Option'address'($t26)) <= 1)); - - // assume Eq>($t26, option::spec_none
()) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:217:65+14 - assume $IsEqual'$1_option_Option'address''($t26, $1_option_spec_none'address'()); - - // $t26 := opaque end: option::none
() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:217:65+14 - - // $t27 := pack account::CapabilityOffer($t26) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:217:42+39 - $t27 := $1_account_CapabilityOffer'$1_account_SignerCapability'($t26); - - // $t28 := pack account::Account($t8, $t22, $t23, $t18, $t21, $t25, $t27) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:210:13+371 - assume {:print "$at(79,10986,11357)"} true; - $t28 := $1_account_Account($t8, $t22, $t23, $t18, $t21, $t25, $t27); - - // move_to($t28, $t7) on_abort goto L4 with $t9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:208:9+7 - assume {:print "$at(79,10939,10946)"} true; - if ($ResourceExists($1_account_Account_$memory, $addr#$signer($t7))) { - call $ExecFailureAbort(); - } else { - $1_account_Account_$memory := $ResourceUpdate($1_account_Account_$memory, $addr#$signer($t7), $t28); - } - if ($abort_flag) { - assume {:print "$at(79,10939,10946)"} true; - $t9 := $abort_code; - assume {:print "$track_abort(18,2):", $t9} $t9 == $t9; - goto L4; - } - - // trace_return[0]($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:221:9+11 - assume {:print "$at(79,11378,11389)"} true; - assume {:print "$track_return(18,2,0):", $t7} $t7 == $t7; - - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:222:5+1 - assume {:print "$at(79,11394,11395)"} true; -L3: - - // return $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:222:5+1 - assume {:print "$at(79,11394,11395)"} true; - $ret0 := $t7; - return; - - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:222:5+1 -L4: - - // abort($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:222:5+1 - assume {:print "$at(79,11394,11395)"} true; - $abort_code := $t9; - $abort_flag := true; - return; - -} - -// fun account::create_guid [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:676:5+436 -procedure {:inline 1} $1_account_create_guid(_$t0: $signer) returns ($ret0: $1_guid_GUID) -{ - // declare local variables - var $t1: $Mutation ($1_account_Account); - var $t2: int; - var $t3: $1_guid_GUID; - var $t4: int; - var $t5: int; - var $t6: $1_account_Account; - var $t7: int; - var $t8: int; - var $t9: $Mutation ($1_account_Account); - var $t10: $Mutation (int); - var $t11: $1_guid_GUID; - var $t12: int; - var $t13: int; - var $t14: bool; - var $t15: int; - var $t16: int; - var $t0: $signer; - var $1_account_Account_$modifies: [int]bool; - var $temp_0'$1_account_Account': $1_account_Account; - var $temp_0'$1_guid_GUID': $1_guid_GUID; - var $temp_0'address': int; - var $temp_0'signer': $signer; - $t0 := _$t0; - - // bytecode translation starts here - // assume Identical($t4, signer::$address_of($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:446:9+46 - assume {:print "$at(80,21696,21742)"} true; - assume ($t4 == $1_signer_$address_of($t0)); - - // assume Identical($t5, signer::$address_of($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:461:9+39 - assume {:print "$at(80,22297,22336)"} true; - assume ($t5 == $1_signer_$address_of($t0)); - - // assume Identical($t6, global($t5)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:462:9+36 - assume {:print "$at(80,22345,22381)"} true; - assume ($t6 == $ResourceValue($1_account_Account_$memory, $t5)); - - // trace_local[account_signer]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:676:5+1 - assume {:print "$at(79,38585,38586)"} true; - assume {:print "$track_local(18,5,0):", $t0} $t0 == $t0; - - // $t7 := signer::address_of($t0) on_abort goto L4 with $t8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:677:20+34 - assume {:print "$at(79,38683,38717)"} true; - call $t7 := $1_signer_address_of($t0); - if ($abort_flag) { - assume {:print "$at(79,38683,38717)"} true; - $t8 := $abort_code; - assume {:print "$track_abort(18,5):", $t8} $t8 == $t8; - goto L4; - } - - // trace_local[addr]($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:677:13+4 - assume {:print "$track_local(18,5,2):", $t7} $t7 == $t7; - - // $t9 := borrow_global($t7) on_abort goto L4 with $t8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:678:23+17 - assume {:print "$at(79,38741,38758)"} true; - if (!$ResourceExists($1_account_Account_$memory, $t7)) { - call $ExecFailureAbort(); - } else { - $t9 := $Mutation($Global($t7), EmptyVec(), $ResourceValue($1_account_Account_$memory, $t7)); - } - if ($abort_flag) { - assume {:print "$at(79,38741,38758)"} true; - $t8 := $abort_code; - assume {:print "$track_abort(18,5):", $t8} $t8 == $t8; - goto L4; - } - - // trace_local[account]($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:678:13+7 - $temp_0'$1_account_Account' := $Dereference($t9); - assume {:print "$track_local(18,5,1):", $temp_0'$1_account_Account'} $temp_0'$1_account_Account' == $temp_0'$1_account_Account'; - - // $t10 := borrow_field.guid_creation_num($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:679:39+30 - assume {:print "$at(79,38813,38843)"} true; - $t10 := $ChildMutation($t9, 2, $guid_creation_num#$1_account_Account($Dereference($t9))); - - // $t11 := guid::create($t7, $t10) on_abort goto L4 with $t8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:679:20+50 - call $t11,$t10 := $1_guid_create($t7, $t10); - if ($abort_flag) { - assume {:print "$at(79,38794,38844)"} true; - $t8 := $abort_code; - assume {:print "$track_abort(18,5):", $t8} $t8 == $t8; - goto L4; - } - - // write_back[Reference($t9).guid_creation_num (u64)]($t10) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:679:20+50 - $t9 := $UpdateMutation($t9, $Update'$1_account_Account'_guid_creation_num($Dereference($t9), $Dereference($t10))); - - // trace_local[guid]($t11) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:679:13+4 - assume {:print "$track_local(18,5,3):", $t11} $t11 == $t11; - - // $t12 := get_field.guid_creation_num($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:681:13+25 - assume {:print "$at(79,38875,38900)"} true; - $t12 := $guid_creation_num#$1_account_Account($Dereference($t9)); - - // pack_ref_deep($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:681:13+25 - - // write_back[account::Account@]($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:681:13+25 - $1_account_Account_$memory := $ResourceUpdate($1_account_Account_$memory, $GlobalLocationAddress($t9), - $Dereference($t9)); - - // $t13 := 1125899906842624 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:681:41+21 - $t13 := 1125899906842624; - assume $IsValid'u64'($t13); - - // $t14 := <($t12, $t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:681:39+1 - call $t14 := $Lt($t12, $t13); - - // if ($t14) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:680:9+147 - assume {:print "$at(79,38854,39001)"} true; - if ($t14) { goto L1; } else { goto L0; } - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:680:9+147 -L1: - - // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:680:9+147 - assume {:print "$at(79,38854,39001)"} true; - goto L2; - - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:682:33+31 - assume {:print "$at(79,38958,38989)"} true; -L0: - - // $t15 := 20 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:682:33+31 - assume {:print "$at(79,38958,38989)"} true; - $t15 := 20; - assume $IsValid'u64'($t15); - - // $t16 := error::out_of_range($t15) on_abort goto L4 with $t8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:682:13+52 - call $t16 := $1_error_out_of_range($t15); - if ($abort_flag) { - assume {:print "$at(79,38938,38990)"} true; - $t8 := $abort_code; - assume {:print "$track_abort(18,5):", $t8} $t8 == $t8; - goto L4; - } - - // trace_abort($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:680:9+147 - assume {:print "$at(79,38854,39001)"} true; - assume {:print "$track_abort(18,5):", $t16} $t16 == $t16; - - // $t8 := move($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:680:9+147 - $t8 := $t16; - - // goto L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:680:9+147 - goto L4; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:684:9+4 - assume {:print "$at(79,39011,39015)"} true; -L2: - - // trace_return[0]($t11) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:684:9+4 - assume {:print "$at(79,39011,39015)"} true; - assume {:print "$track_return(18,5,0):", $t11} $t11 == $t11; - - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:685:5+1 - assume {:print "$at(79,39020,39021)"} true; -L3: - - // return $t11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:685:5+1 - assume {:print "$at(79,39020,39021)"} true; - $ret0 := $t11; - return; - - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:685:5+1 -L4: - - // abort($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:685:5+1 - assume {:print "$at(79,39020,39021)"} true; - $abort_code := $t8; - $abort_flag := true; - return; - -} - -// fun account::create_resource_account [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:624:5+1378 -procedure {:inline 1} $1_account_create_resource_account(_$t0: $signer, _$t1: Vec (int)) returns ($ret0: $signer, $ret1: $1_account_SignerCapability) -{ - // declare local variables - var $t2: int; - var $t3: $signer; - var $t4: $1_account_Account; - var $t5: $Mutation ($1_account_Account); - var $t6: $signer; - var $t7: int; - var $t8: $1_account_SignerCapability; - var $t9: int; - var $t10: int; - var $t11: $1_account_Account; - var $t12: Vec (int); - var $t13: int; - var $t14: int; - var $t15: int; - var $t16: bool; - var $t17: $1_account_Account; - var $t18: $1_account_CapabilityOffer'$1_account_SignerCapability'; - var $t19: $1_option_Option'address'; - var $t20: bool; - var $t21: int; - var $t22: int; - var $t23: int; - var $t24: int; - var $t25: bool; - var $t26: int; - var $t27: int; - var $t28: Vec (int); - var $t29: Vec (int); - var $t30: int; - var $t31: $Mutation ($1_account_Account); - var $t32: $1_option_Option'address'; - var $t33: $Mutation ($1_account_CapabilityOffer'$1_account_SignerCapability'); - var $t34: $Mutation ($1_option_Option'address'); - var $t35: $1_account_SignerCapability; - var $t0: $signer; - var $t1: Vec (int); - var $temp_0'$1_account_Account': $1_account_Account; - var $temp_0'$1_account_SignerCapability': $1_account_SignerCapability; - var $temp_0'address': int; - var $temp_0'signer': $signer; - var $temp_0'vec'u8'': Vec (int); - $t0 := _$t0; - $t1 := _$t1; - - // bytecode translation starts here - // assume Identical($t9, signer::$address_of($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:412:9+45 - assume {:print "$at(80,20304,20349)"} true; - assume ($t9 == $1_signer_$address_of($t0)); - - // assume Identical($t10, account::spec_create_resource_address($t9, $t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:413:9+68 - assume {:print "$at(80,20358,20426)"} true; - assume ($t10 == $1_account_spec_create_resource_address($t9, $t1)); - - // assume Identical($t11, global($t10)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:481:9+45 - assume {:print "$at(80,23051,23096)"} true; - assume ($t11 == $ResourceValue($1_account_Account_$memory, $t10)); - - // assume Identical($t12, bcs::$to_bytes
($t10)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:40:9+45 - assume {:print "$at(80,1640,1685)"} true; - assume ($t12 == $1_bcs_$to_bytes'address'($t10)); - - // trace_local[source]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:624:5+1 - assume {:print "$at(79,36280,36281)"} true; - assume {:print "$track_local(18,6,0):", $t0} $t0 == $t0; - - // trace_local[seed]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:624:5+1 - assume {:print "$track_local(18,6,1):", $t1} $t1 == $t1; - - // $t13 := signer::address_of($t0) on_abort goto L10 with $t14 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:625:54+26 - assume {:print "$at(79,36450,36476)"} true; - call $t13 := $1_signer_address_of($t0); - if ($abort_flag) { - assume {:print "$at(79,36450,36476)"} true; - $t14 := $abort_code; - assume {:print "$track_abort(18,6):", $t14} $t14 == $t14; - goto L10; - } - - // $t15 := opaque begin: account::create_resource_address($t13, $t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:625:29+58 - - // assume WellFormed($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:625:29+58 - assume $IsValid'address'($t15); - - // assume Eq
($t15, account::spec_create_resource_address($t13, $t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:625:29+58 - assume $IsEqual'address'($t15, $1_account_spec_create_resource_address($t13, $t1)); - - // $t15 := opaque end: account::create_resource_address($t13, $t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:625:29+58 - - // trace_local[resource_addr]($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:625:13+13 - assume {:print "$track_local(18,6,7):", $t15} $t15 == $t15; - - // $t16 := account::exists_at($t15) on_abort goto L10 with $t14 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:626:28+24 - assume {:print "$at(79,36512,36536)"} true; - call $t16 := $1_account_exists_at($t15); - if ($abort_flag) { - assume {:print "$at(79,36512,36536)"} true; - $t14 := $abort_code; - assume {:print "$track_abort(18,6):", $t14} $t14 == $t14; - goto L10; - } - - // if ($t16) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:626:24+532 - if ($t16) { goto L1; } else { goto L0; } - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:627:50+13 - assume {:print "$at(79,36589,36602)"} true; -L1: - - // $t17 := get_global($t15) on_abort goto L10 with $t14 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:627:27+13 - assume {:print "$at(79,36566,36579)"} true; - if (!$ResourceExists($1_account_Account_$memory, $t15)) { - call $ExecFailureAbort(); - } else { - $t17 := $ResourceValue($1_account_Account_$memory, $t15); - } - if ($abort_flag) { - assume {:print "$at(79,36566,36579)"} true; - $t14 := $abort_code; - assume {:print "$track_abort(18,6):", $t14} $t14 == $t14; - goto L10; - } - - // trace_local[account]($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:627:17+7 - assume {:print "$track_local(18,6,4):", $t17} $t17 == $t17; - - // $t18 := get_field.signer_capability_offer($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:629:34+31 - assume {:print "$at(79,36659,36690)"} true; - $t18 := $signer_capability_offer#$1_account_Account($t17); - - // $t19 := get_field>.for($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:629:33+36 - $t19 := $for#$1_account_CapabilityOffer'$1_account_SignerCapability'($t18); - - // $t20 := opaque begin: option::is_none
($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:629:17+53 - - // assume WellFormed($t20) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:629:17+53 - assume $IsValid'bool'($t20); - - // assume Eq($t20, option::spec_is_none
($t19)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:629:17+53 - assume $IsEqual'bool'($t20, $1_option_spec_is_none'address'($t19)); - - // $t20 := opaque end: option::is_none
($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:629:17+53 - - // if ($t20) goto L3 else goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:628:13+159 - assume {:print "$at(79,36617,36776)"} true; - if ($t20) { goto L3; } else { goto L2; } - - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:628:13+159 -L3: - - // goto L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:628:13+159 - assume {:print "$at(79,36617,36776)"} true; - goto L4; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:628:13+159 -L2: - - // $t21 := 15 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:630:39+25 - assume {:print "$at(79,36735,36760)"} true; - $t21 := 15; - assume $IsValid'u64'($t21); - - // $t22 := error::already_exists($t21) on_abort goto L10 with $t14 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:630:17+48 - call $t22 := $1_error_already_exists($t21); - if ($abort_flag) { - assume {:print "$at(79,36713,36761)"} true; - $t14 := $abort_code; - assume {:print "$track_abort(18,6):", $t14} $t14 == $t14; - goto L10; - } - - // trace_abort($t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:628:13+159 - assume {:print "$at(79,36617,36776)"} true; - assume {:print "$track_abort(18,6):", $t22} $t22 == $t22; - - // $t14 := move($t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:628:13+159 - $t14 := $t22; - - // goto L10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:628:13+159 - goto L10; - - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:633:17+7 - assume {:print "$at(79,36815,36822)"} true; -L4: - - // $t23 := get_field.sequence_number($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:633:17+23 - assume {:print "$at(79,36815,36838)"} true; - $t23 := $sequence_number#$1_account_Account($t17); - - // $t24 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:633:44+1 - $t24 := 0; - assume $IsValid'u64'($t24); - - // $t25 := ==($t23, $t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:633:41+2 - $t25 := $IsEqual'u64'($t23, $t24); - - // if ($t25) goto L6 else goto L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:632:13+129 - assume {:print "$at(79,36790,36919)"} true; - if ($t25) { goto L6; } else { goto L5; } - - // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:632:13+129 -L6: - - // goto L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:632:13+129 - assume {:print "$at(79,36790,36919)"} true; - goto L7; - - // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:634:38+21 - assume {:print "$at(79,36882,36903)"} true; -L5: - - // $t26 := 16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:634:38+21 - assume {:print "$at(79,36882,36903)"} true; - $t26 := 16; - assume $IsValid'u64'($t26); - - // $t27 := error::invalid_state($t26) on_abort goto L10 with $t14 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:634:17+43 - call $t27 := $1_error_invalid_state($t26); - if ($abort_flag) { - assume {:print "$at(79,36861,36904)"} true; - $t14 := $abort_code; - assume {:print "$track_abort(18,6):", $t14} $t14 == $t14; - goto L10; - } - - // trace_abort($t27) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:632:13+129 - assume {:print "$at(79,36790,36919)"} true; - assume {:print "$track_abort(18,6):", $t27} $t27 == $t27; - - // $t14 := move($t27) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:632:13+129 - $t14 := $t27; - - // goto L10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:632:13+129 - goto L10; - - // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:636:27+13 - assume {:print "$at(79,36947,36960)"} true; -L7: - - // $t3 := opaque begin: create_signer::create_signer($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:636:13+28 - assume {:print "$at(79,36933,36961)"} true; - - // assume WellFormed($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:636:13+28 - assume $IsValid'signer'($t3) && $1_signer_is_txn_signer($t3) && $1_signer_is_txn_signer_addr($addr#$signer($t3)); - - // assume Eq
(signer::$address_of($t3), $t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:636:13+28 - assume $IsEqual'address'($1_signer_$address_of($t3), $t15); - - // $t3 := opaque end: create_signer::create_signer($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:636:13+28 - - // goto L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:626:24+532 - assume {:print "$at(79,36508,37040)"} true; - goto L8; - - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:638:38+13 - assume {:print "$at(79,37016,37029)"} true; -L0: - - // assume Identical($t28, bcs::$to_bytes
($t15)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:40:9+45 - assume {:print "$at(80,1640,1685)"} true; - assume ($t28 == $1_bcs_$to_bytes'address'($t15)); - - // $t3 := account::create_account_unchecked($t15) on_abort goto L10 with $t14 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:638:13+39 - assume {:print "$at(79,36991,37030)"} true; - call $t3 := $1_account_create_account_unchecked($t15); - if ($abort_flag) { - assume {:print "$at(79,36991,37030)"} true; - $t14 := $abort_code; - assume {:print "$track_abort(18,6):", $t14} $t14 == $t14; - goto L10; - } - - // label L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:626:24+532 - assume {:print "$at(79,36508,37040)"} true; -L8: - - // trace_local[resource]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:626:13+8 - assume {:print "$at(79,36497,36505)"} true; - assume {:print "$track_local(18,6,6):", $t3} $t3 == $t3; - - // $t29 := [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:644:55+13 - assume {:print "$at(79,37395,37408)"} true; - $t29 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(0, 0, 0, 0), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)); - assume $IsValid'vec'u8''($t29); - - // assume Identical($t30, signer::$address_of($t3)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:74:9+39 - assume {:print "$at(80,3006,3045)"} true; - assume ($t30 == $1_signer_$address_of($t3)); - - // account::rotate_authentication_key_internal($t3, $t29) on_abort goto L10 with $t14 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:644:9+60 - assume {:print "$at(79,37349,37409)"} true; - call $1_account_rotate_authentication_key_internal($t3, $t29); - if ($abort_flag) { - assume {:print "$at(79,37349,37409)"} true; - $t14 := $abort_code; - assume {:print "$track_abort(18,6):", $t14} $t14 == $t14; - goto L10; - } - - // $t31 := borrow_global($t15) on_abort goto L10 with $t14 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:646:23+17 - assume {:print "$at(79,37434,37451)"} true; - if (!$ResourceExists($1_account_Account_$memory, $t15)) { - call $ExecFailureAbort(); - } else { - $t31 := $Mutation($Global($t15), EmptyVec(), $ResourceValue($1_account_Account_$memory, $t15)); - } - if ($abort_flag) { - assume {:print "$at(79,37434,37451)"} true; - $t14 := $abort_code; - assume {:print "$track_abort(18,6):", $t14} $t14 == $t14; - goto L10; - } - - // trace_local[account#3]($t31) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:646:13+7 - $temp_0'$1_account_Account' := $Dereference($t31); - assume {:print "$track_local(18,6,5):", $temp_0'$1_account_Account'} $temp_0'$1_account_Account' == $temp_0'$1_account_Account'; - - // $t32 := opaque begin: option::some
($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:647:47+27 - assume {:print "$at(79,37523,37550)"} true; - - // assume And(WellFormed($t32), Le(Len
(select option::Option.vec($t32)), 1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:647:47+27 - assume ($IsValid'$1_option_Option'address''($t32) && (LenVec($vec#$1_option_Option'address'($t32)) <= 1)); - - // assume Eq>($t32, option::spec_some
($t15)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:647:47+27 - assume $IsEqual'$1_option_Option'address''($t32, $1_option_spec_some'address'($t15)); - - // $t32 := opaque end: option::some
($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:647:47+27 - - // $t33 := borrow_field.signer_capability_offer($t31) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:647:9+31 - $t33 := $ChildMutation($t31, 6, $signer_capability_offer#$1_account_Account($Dereference($t31))); - - // $t34 := borrow_field>.for($t33) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:647:9+35 - $t34 := $ChildMutation($t33, 0, $for#$1_account_CapabilityOffer'$1_account_SignerCapability'($Dereference($t33))); - - // write_ref($t34, $t32) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:647:9+65 - $t34 := $UpdateMutation($t34, $t32); - - // write_back[Reference($t33).for (option::Option
)]($t34) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:647:9+65 - $t33 := $UpdateMutation($t33, $Update'$1_account_CapabilityOffer'$1_account_SignerCapability''_for($Dereference($t33), $Dereference($t34))); - - // write_back[Reference($t31).signer_capability_offer (account::CapabilityOffer)]($t33) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:647:9+65 - $t31 := $UpdateMutation($t31, $Update'$1_account_Account'_signer_capability_offer($Dereference($t31), $Dereference($t33))); - - // pack_ref_deep($t31) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:647:9+65 - - // write_back[account::Account@]($t31) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:647:9+65 - $1_account_Account_$memory := $ResourceUpdate($1_account_Account_$memory, $GlobalLocationAddress($t31), - $Dereference($t31)); - - // $t35 := pack account::SignerCapability($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:648:26+43 - assume {:print "$at(79,37577,37620)"} true; - $t35 := $1_account_SignerCapability($t15); - - // trace_local[signer_cap]($t35) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:648:13+10 - assume {:print "$track_local(18,6,8):", $t35} $t35 == $t35; - - // trace_return[0]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:649:9+22 - assume {:print "$at(79,37630,37652)"} true; - assume {:print "$track_return(18,6,0):", $t3} $t3 == $t3; - - // trace_return[1]($t35) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:649:9+22 - assume {:print "$track_return(18,6,1):", $t35} $t35 == $t35; - - // label L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:650:5+1 - assume {:print "$at(79,37657,37658)"} true; -L9: - - // return ($t3, $t35) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:650:5+1 - assume {:print "$at(79,37657,37658)"} true; - $ret0 := $t3; - $ret1 := $t35; - return; - - // label L10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:650:5+1 -L10: - - // abort($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:650:5+1 - assume {:print "$at(79,37657,37658)"} true; - $abort_code := $t14; - $abort_flag := true; - return; - -} - -// fun account::create_signer_with_capability [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:729:5+156 -procedure {:inline 1} $1_account_create_signer_with_capability(_$t0: $1_account_SignerCapability) returns ($ret0: $signer) -{ - // declare local variables - var $t1: int; - var $t2: int; - var $t3: $signer; - var $t0: $1_account_SignerCapability; - var $temp_0'$1_account_SignerCapability': $1_account_SignerCapability; - var $temp_0'signer': $signer; - $t0 := _$t0; - - // bytecode translation starts here - // assume Identical($t1, select account::SignerCapability.account($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:475:9+30 - assume {:print "$at(80,22873,22903)"} true; - assume ($t1 == $account#$1_account_SignerCapability($t0)); - - // trace_local[capability]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:729:5+1 - assume {:print "$at(79,40826,40827)"} true; - assume {:print "$track_local(18,8,0):", $t0} $t0 == $t0; - - // $t2 := get_field.account($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:730:20+19 - assume {:print "$at(79,40927,40946)"} true; - $t2 := $account#$1_account_SignerCapability($t0); - - // $t3 := opaque begin: create_signer::create_signer($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:731:9+20 - assume {:print "$at(79,40956,40976)"} true; - - // assume WellFormed($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:731:9+20 - assume $IsValid'signer'($t3) && $1_signer_is_txn_signer($t3) && $1_signer_is_txn_signer_addr($addr#$signer($t3)); - - // assume Eq
(signer::$address_of($t3), $t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:731:9+20 - assume $IsEqual'address'($1_signer_$address_of($t3), $t2); - - // $t3 := opaque end: create_signer::create_signer($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:731:9+20 - - // trace_return[0]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:731:9+20 - assume {:print "$track_return(18,8,0):", $t3} $t3 == $t3; - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:732:5+1 - assume {:print "$at(79,40981,40982)"} true; -L1: - - // return $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:732:5+1 - assume {:print "$at(79,40981,40982)"} true; - $ret0 := $t3; - return; - -} - -// fun account::exists_at [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:225:5+79 -procedure {:inline 1} $1_account_exists_at(_$t0: int) returns ($ret0: bool) -{ - // declare local variables - var $t1: bool; - var $t0: int; - var $temp_0'address': int; - var $temp_0'bool': bool; - $t0 := _$t0; - - // bytecode translation starts here - // trace_local[addr]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:225:5+1 - assume {:print "$at(79,11413,11414)"} true; - assume {:print "$track_local(18,9,0):", $t0} $t0 == $t0; - - // $t1 := exists($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:226:9+6 - assume {:print "$at(79,11465,11471)"} true; - $t1 := $ResourceExists($1_account_Account_$memory, $t0); - - // trace_return[0]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:226:9+21 - assume {:print "$track_return(18,9,0):", $t1} $t1 == $t1; - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:227:5+1 - assume {:print "$at(79,11491,11492)"} true; -L1: - - // return $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:227:5+1 - assume {:print "$at(79,11491,11492)"} true; - $ret0 := $t1; - return; - -} - -// fun account::register_coin [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:699:5+364 -procedure {:inline 1} $1_account_register_coin'$1_aptos_coin_AptosCoin'(_$t0: int) returns () -{ - // declare local variables - var $t1: $Mutation ($1_account_Account); - var $t2: int; - var $t3: $Mutation ($1_event_EventHandle'$1_account_CoinRegisterEvent'); - var $t4: $1_type_info_TypeInfo; - var $t5: $1_account_CoinRegisterEvent; - var $t0: int; - var $1_account_Account_$modifies: [int]bool; - var $temp_0'address': int; - $t0 := _$t0; - - // bytecode translation starts here - // trace_local[account_addr]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:699:5+1 - assume {:print "$at(79,39578,39579)"} true; - assume {:print "$track_local(18,23,0):", $t0} $t0 == $t0; - - // $t1 := borrow_global($t0) on_abort goto L2 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:700:23+17 - assume {:print "$at(79,39685,39702)"} true; - if (!$ResourceExists($1_account_Account_$memory, $t0)) { - call $ExecFailureAbort(); - } else { - $t1 := $Mutation($Global($t0), EmptyVec(), $ResourceValue($1_account_Account_$memory, $t0)); - } - if ($abort_flag) { - assume {:print "$at(79,39685,39702)"} true; - $t2 := $abort_code; - assume {:print "$track_abort(18,23):", $t2} $t2 == $t2; - goto L2; - } - - // $t3 := borrow_field.coin_register_events($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:702:13+33 - assume {:print "$at(79,39785,39818)"} true; - $t3 := $ChildMutation($t1, 3, $coin_register_events#$1_account_Account($Dereference($t1))); - - // $t4 := type_info::type_of<#0>() on_abort goto L2 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:704:28+30 - assume {:print "$at(79,39879,39909)"} true; - if (!true) { - call $ExecFailureAbort(); - } - else { - $t4 := $1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)); - } - if ($abort_flag) { - assume {:print "$at(79,39879,39909)"} true; - $t2 := $abort_code; - assume {:print "$track_abort(18,23):", $t2} $t2 == $t2; - goto L2; - } - - // $t5 := pack account::CoinRegisterEvent($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:703:13+92 - assume {:print "$at(79,39832,39924)"} true; - $t5 := $1_account_CoinRegisterEvent($t4); - - // opaque begin: event::emit_event($t3, $t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:701:9+200 - assume {:print "$at(79,39735,39935)"} true; - - // opaque end: event::emit_event($t3, $t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:701:9+200 - - // write_back[Reference($t1).coin_register_events (event::EventHandle)]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:701:9+200 - $t1 := $UpdateMutation($t1, $Update'$1_account_Account'_coin_register_events($Dereference($t1), $Dereference($t3))); - - // pack_ref_deep($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:701:9+200 - - // write_back[account::Account@]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:701:9+200 - $1_account_Account_$memory := $ResourceUpdate($1_account_Account_$memory, $GlobalLocationAddress($t1), - $Dereference($t1)); - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:707:5+1 - assume {:print "$at(79,39941,39942)"} true; -L1: - - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:707:5+1 - assume {:print "$at(79,39941,39942)"} true; - return; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:707:5+1 -L2: - - // abort($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:707:5+1 - assume {:print "$at(79,39941,39942)"} true; - $abort_code := $t2; - $abort_flag := true; - return; - -} - -// fun account::rotate_authentication_key_internal [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:257:5+516 -procedure {:inline 1} $1_account_rotate_authentication_key_internal(_$t0: $signer, _$t1: Vec (int)) returns () -{ - // declare local variables - var $t2: $Mutation ($1_account_Account); - var $t3: int; - var $t4: int; - var $t5: int; - var $t6: int; - var $t7: bool; - var $t8: int; - var $t9: int; - var $t10: int; - var $t11: int; - var $t12: bool; - var $t13: int; - var $t14: int; - var $t15: $Mutation ($1_account_Account); - var $t16: $Mutation (Vec (int)); - var $t0: $signer; - var $t1: Vec (int); - var $1_account_Account_$modifies: [int]bool; - var $temp_0'$1_account_Account': $1_account_Account; - var $temp_0'address': int; - var $temp_0'signer': $signer; - var $temp_0'vec'u8'': Vec (int); - $t0 := _$t0; - $t1 := _$t1; - - // bytecode translation starts here - // assume Identical($t4, signer::$address_of($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:74:9+39 - assume {:print "$at(80,3006,3045)"} true; - assume ($t4 == $1_signer_$address_of($t0)); - - // trace_local[account]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:257:5+1 - assume {:print "$at(79,12471,12472)"} true; - assume {:print "$track_local(18,29,0):", $t0} $t0 == $t0; - - // trace_local[new_auth_key]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:257:5+1 - assume {:print "$track_local(18,29,1):", $t1} $t1 == $t1; - - // $t5 := signer::address_of($t0) on_abort goto L7 with $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:258:20+27 - assume {:print "$at(79,12607,12634)"} true; - call $t5 := $1_signer_address_of($t0); - if ($abort_flag) { - assume {:print "$at(79,12607,12634)"} true; - $t6 := $abort_code; - assume {:print "$track_abort(18,29):", $t6} $t6 == $t6; - goto L7; - } - - // trace_local[addr]($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:258:13+4 - assume {:print "$track_local(18,29,3):", $t5} $t5 == $t5; - - // $t7 := account::exists_at($t5) on_abort goto L7 with $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:259:17+15 - assume {:print "$at(79,12652,12667)"} true; - call $t7 := $1_account_exists_at($t5); - if ($abort_flag) { - assume {:print "$at(79,12652,12667)"} true; - $t6 := $abort_code; - assume {:print "$track_abort(18,29):", $t6} $t6 == $t6; - goto L7; - } - - // if ($t7) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:259:9+67 - if ($t7) { goto L1; } else { goto L0; } - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:259:9+67 -L1: - - // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:259:9+67 - assume {:print "$at(79,12644,12711)"} true; - goto L2; - - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:259:51+23 -L0: - - // $t8 := 2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:259:51+23 - assume {:print "$at(79,12686,12709)"} true; - $t8 := 2; - assume $IsValid'u64'($t8); - - // $t9 := error::not_found($t8) on_abort goto L7 with $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:259:34+41 - call $t9 := $1_error_not_found($t8); - if ($abort_flag) { - assume {:print "$at(79,12669,12710)"} true; - $t6 := $abort_code; - assume {:print "$track_abort(18,29):", $t6} $t6 == $t6; - goto L7; - } - - // trace_abort($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:259:9+67 - assume {:print "$at(79,12644,12711)"} true; - assume {:print "$track_abort(18,29):", $t9} $t9 == $t9; - - // $t6 := move($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:259:9+67 - $t6 := $t9; - - // goto L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:259:9+67 - goto L7; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:261:28+13 - assume {:print "$at(79,12757,12770)"} true; -L2: - - // $t10 := vector::length($t1) on_abort goto L7 with $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:261:13+29 - assume {:print "$at(79,12742,12771)"} true; - call $t10 := $1_vector_length'u8'($t1); - if ($abort_flag) { - assume {:print "$at(79,12742,12771)"} true; - $t6 := $abort_code; - assume {:print "$track_abort(18,29):", $t6} $t6 == $t6; - goto L7; - } - - // $t11 := 32 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:261:46+2 - $t11 := 32; - assume $IsValid'u64'($t11); - - // $t12 := ==($t10, $t11) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:261:43+2 - $t12 := $IsEqual'u64'($t10, $t11); - - // if ($t12) goto L4 else goto L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:260:9+134 - assume {:print "$at(79,12721,12855)"} true; - if ($t12) { goto L4; } else { goto L3; } - - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:260:9+134 -L4: - - // goto L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:260:9+134 - assume {:print "$at(79,12721,12855)"} true; - goto L5; - - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:262:37+29 - assume {:print "$at(79,12815,12844)"} true; -L3: - - // $t13 := 4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:262:37+29 - assume {:print "$at(79,12815,12844)"} true; - $t13 := 4; - assume $IsValid'u64'($t13); - - // $t14 := error::invalid_argument($t13) on_abort goto L7 with $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:262:13+54 - call $t14 := $1_error_invalid_argument($t13); - if ($abort_flag) { - assume {:print "$at(79,12791,12845)"} true; - $t6 := $abort_code; - assume {:print "$track_abort(18,29):", $t6} $t6 == $t6; - goto L7; - } - - // trace_abort($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:260:9+134 - assume {:print "$at(79,12721,12855)"} true; - assume {:print "$track_abort(18,29):", $t14} $t14 == $t14; - - // $t6 := move($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:260:9+134 - $t6 := $t14; - - // goto L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:260:9+134 - goto L7; - - // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:264:59+4 - assume {:print "$at(79,12915,12919)"} true; -L5: - - // $t15 := borrow_global($t5) on_abort goto L7 with $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:264:32+17 - assume {:print "$at(79,12888,12905)"} true; - if (!$ResourceExists($1_account_Account_$memory, $t5)) { - call $ExecFailureAbort(); - } else { - $t15 := $Mutation($Global($t5), EmptyVec(), $ResourceValue($1_account_Account_$memory, $t5)); - } - if ($abort_flag) { - assume {:print "$at(79,12888,12905)"} true; - $t6 := $abort_code; - assume {:print "$track_abort(18,29):", $t6} $t6 == $t6; - goto L7; - } - - // trace_local[account_resource]($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:264:13+16 - $temp_0'$1_account_Account' := $Dereference($t15); - assume {:print "$track_local(18,29,2):", $temp_0'$1_account_Account'} $temp_0'$1_account_Account' == $temp_0'$1_account_Account'; - - // $t16 := borrow_field.authentication_key($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:265:9+35 - assume {:print "$at(79,12930,12965)"} true; - $t16 := $ChildMutation($t15, 0, $authentication_key#$1_account_Account($Dereference($t15))); - - // write_ref($t16, $t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:265:9+50 - $t16 := $UpdateMutation($t16, $t1); - - // write_back[Reference($t15).authentication_key (vector)]($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:265:9+50 - $t15 := $UpdateMutation($t15, $Update'$1_account_Account'_authentication_key($Dereference($t15), $Dereference($t16))); - - // pack_ref_deep($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:265:9+50 - - // write_back[account::Account@]($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:265:9+50 - $1_account_Account_$memory := $ResourceUpdate($1_account_Account_$memory, $GlobalLocationAddress($t15), - $Dereference($t15)); - - // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:266:5+1 - assume {:print "$at(79,12986,12987)"} true; -L6: - - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:266:5+1 - assume {:print "$at(79,12986,12987)"} true; - return; - - // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:266:5+1 -L7: - - // abort($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.move:266:5+1 - assume {:print "$at(79,12986,12987)"} true; - $abort_code := $t6; - $abort_flag := true; - return; - -} - -// struct optional_aggregator::Integer at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aggregator/optional_aggregator.move:20:5+74 -type {:datatype} $1_optional_aggregator_Integer; -function {:constructor} $1_optional_aggregator_Integer($value: int, $limit: int): $1_optional_aggregator_Integer; -function {:inline} $Update'$1_optional_aggregator_Integer'_value(s: $1_optional_aggregator_Integer, x: int): $1_optional_aggregator_Integer { - $1_optional_aggregator_Integer(x, $limit#$1_optional_aggregator_Integer(s)) -} -function {:inline} $Update'$1_optional_aggregator_Integer'_limit(s: $1_optional_aggregator_Integer, x: int): $1_optional_aggregator_Integer { - $1_optional_aggregator_Integer($value#$1_optional_aggregator_Integer(s), x) -} -function $IsValid'$1_optional_aggregator_Integer'(s: $1_optional_aggregator_Integer): bool { - $IsValid'u128'($value#$1_optional_aggregator_Integer(s)) - && $IsValid'u128'($limit#$1_optional_aggregator_Integer(s)) -} -function {:inline} $IsEqual'$1_optional_aggregator_Integer'(s1: $1_optional_aggregator_Integer, s2: $1_optional_aggregator_Integer): bool { - s1 == s2 -} - -// struct optional_aggregator::OptionalAggregator at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aggregator/optional_aggregator.move:64:5+175 -type {:datatype} $1_optional_aggregator_OptionalAggregator; -function {:constructor} $1_optional_aggregator_OptionalAggregator($aggregator: $1_option_Option'$1_aggregator_Aggregator', $integer: $1_option_Option'$1_optional_aggregator_Integer'): $1_optional_aggregator_OptionalAggregator; -function {:inline} $Update'$1_optional_aggregator_OptionalAggregator'_aggregator(s: $1_optional_aggregator_OptionalAggregator, x: $1_option_Option'$1_aggregator_Aggregator'): $1_optional_aggregator_OptionalAggregator { - $1_optional_aggregator_OptionalAggregator(x, $integer#$1_optional_aggregator_OptionalAggregator(s)) -} -function {:inline} $Update'$1_optional_aggregator_OptionalAggregator'_integer(s: $1_optional_aggregator_OptionalAggregator, x: $1_option_Option'$1_optional_aggregator_Integer'): $1_optional_aggregator_OptionalAggregator { - $1_optional_aggregator_OptionalAggregator($aggregator#$1_optional_aggregator_OptionalAggregator(s), x) -} -function $IsValid'$1_optional_aggregator_OptionalAggregator'(s: $1_optional_aggregator_OptionalAggregator): bool { - $IsValid'$1_option_Option'$1_aggregator_Aggregator''($aggregator#$1_optional_aggregator_OptionalAggregator(s)) - && $IsValid'$1_option_Option'$1_optional_aggregator_Integer''($integer#$1_optional_aggregator_OptionalAggregator(s)) -} -function {:inline} $IsEqual'$1_optional_aggregator_OptionalAggregator'(s1: $1_optional_aggregator_OptionalAggregator, s2: $1_optional_aggregator_OptionalAggregator): bool { - $IsEqual'$1_option_Option'$1_aggregator_Aggregator''($aggregator#$1_optional_aggregator_OptionalAggregator(s1), $aggregator#$1_optional_aggregator_OptionalAggregator(s2)) - && $IsEqual'$1_option_Option'$1_optional_aggregator_Integer''($integer#$1_optional_aggregator_OptionalAggregator(s1), $integer#$1_optional_aggregator_OptionalAggregator(s2))} - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:266:5+129 -function {:inline} $1_coin_$is_account_registered'$1_aptos_coin_AptosCoin'($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory: $Memory $1_coin_CoinStore'$1_aptos_coin_AptosCoin', account_addr: int): bool { - $ResourceExists($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, account_addr) -} - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:580:5+81 -function {:inline} $1_coin_$value'$1_aptos_coin_AptosCoin'(coin: $1_coin_Coin'$1_aptos_coin_AptosCoin'): int { - $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'(coin) -} - -// struct coin::Coin at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:74:5+112 -type {:datatype} $1_coin_Coin'$1_aptos_coin_AptosCoin'; -function {:constructor} $1_coin_Coin'$1_aptos_coin_AptosCoin'($value: int): $1_coin_Coin'$1_aptos_coin_AptosCoin'; -function {:inline} $Update'$1_coin_Coin'$1_aptos_coin_AptosCoin''_value(s: $1_coin_Coin'$1_aptos_coin_AptosCoin', x: int): $1_coin_Coin'$1_aptos_coin_AptosCoin' { - $1_coin_Coin'$1_aptos_coin_AptosCoin'(x) -} -function $IsValid'$1_coin_Coin'$1_aptos_coin_AptosCoin''(s: $1_coin_Coin'$1_aptos_coin_AptosCoin'): bool { - $IsValid'u64'($value#$1_coin_Coin'$1_aptos_coin_AptosCoin'(s)) -} -function {:inline} $IsEqual'$1_coin_Coin'$1_aptos_coin_AptosCoin''(s1: $1_coin_Coin'$1_aptos_coin_AptosCoin', s2: $1_coin_Coin'$1_aptos_coin_AptosCoin'): bool { - s1 == s2 -} - -// struct coin::CoinInfo at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:109:5+564 -type {:datatype} $1_coin_CoinInfo'$1_aptos_coin_AptosCoin'; -function {:constructor} $1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($name: $1_string_String, $symbol: $1_string_String, $decimals: int, $supply: $1_option_Option'$1_optional_aggregator_OptionalAggregator'): $1_coin_CoinInfo'$1_aptos_coin_AptosCoin'; -function {:inline} $Update'$1_coin_CoinInfo'$1_aptos_coin_AptosCoin''_name(s: $1_coin_CoinInfo'$1_aptos_coin_AptosCoin', x: $1_string_String): $1_coin_CoinInfo'$1_aptos_coin_AptosCoin' { - $1_coin_CoinInfo'$1_aptos_coin_AptosCoin'(x, $symbol#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'(s), $decimals#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'(s), $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'(s)) -} -function {:inline} $Update'$1_coin_CoinInfo'$1_aptos_coin_AptosCoin''_symbol(s: $1_coin_CoinInfo'$1_aptos_coin_AptosCoin', x: $1_string_String): $1_coin_CoinInfo'$1_aptos_coin_AptosCoin' { - $1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($name#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'(s), x, $decimals#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'(s), $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'(s)) -} -function {:inline} $Update'$1_coin_CoinInfo'$1_aptos_coin_AptosCoin''_decimals(s: $1_coin_CoinInfo'$1_aptos_coin_AptosCoin', x: int): $1_coin_CoinInfo'$1_aptos_coin_AptosCoin' { - $1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($name#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'(s), $symbol#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'(s), x, $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'(s)) -} -function {:inline} $Update'$1_coin_CoinInfo'$1_aptos_coin_AptosCoin''_supply(s: $1_coin_CoinInfo'$1_aptos_coin_AptosCoin', x: $1_option_Option'$1_optional_aggregator_OptionalAggregator'): $1_coin_CoinInfo'$1_aptos_coin_AptosCoin' { - $1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($name#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'(s), $symbol#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'(s), $decimals#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'(s), x) -} -function $IsValid'$1_coin_CoinInfo'$1_aptos_coin_AptosCoin''(s: $1_coin_CoinInfo'$1_aptos_coin_AptosCoin'): bool { - $IsValid'$1_string_String'($name#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'(s)) - && $IsValid'$1_string_String'($symbol#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'(s)) - && $IsValid'u8'($decimals#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'(s)) - && $IsValid'$1_option_Option'$1_optional_aggregator_OptionalAggregator''($supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'(s)) -} -function {:inline} $IsEqual'$1_coin_CoinInfo'$1_aptos_coin_AptosCoin''(s1: $1_coin_CoinInfo'$1_aptos_coin_AptosCoin', s2: $1_coin_CoinInfo'$1_aptos_coin_AptosCoin'): bool { - $IsEqual'$1_string_String'($name#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'(s1), $name#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'(s2)) - && $IsEqual'$1_string_String'($symbol#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'(s1), $symbol#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'(s2)) - && $IsEqual'u8'($decimals#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'(s1), $decimals#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'(s2)) - && $IsEqual'$1_option_Option'$1_optional_aggregator_OptionalAggregator''($supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'(s1), $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'(s2))} -var $1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory: $Memory $1_coin_CoinInfo'$1_aptos_coin_AptosCoin'; - -// struct coin::CoinStore at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:92:5+206 -type {:datatype} $1_coin_CoinStore'$1_aptos_coin_AptosCoin'; -function {:constructor} $1_coin_CoinStore'$1_aptos_coin_AptosCoin'($coin: $1_coin_Coin'$1_aptos_coin_AptosCoin', $frozen: bool, $deposit_events: $1_event_EventHandle'$1_coin_DepositEvent', $withdraw_events: $1_event_EventHandle'$1_coin_WithdrawEvent'): $1_coin_CoinStore'$1_aptos_coin_AptosCoin'; -function {:inline} $Update'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''_coin(s: $1_coin_CoinStore'$1_aptos_coin_AptosCoin', x: $1_coin_Coin'$1_aptos_coin_AptosCoin'): $1_coin_CoinStore'$1_aptos_coin_AptosCoin' { - $1_coin_CoinStore'$1_aptos_coin_AptosCoin'(x, $frozen#$1_coin_CoinStore'$1_aptos_coin_AptosCoin'(s), $deposit_events#$1_coin_CoinStore'$1_aptos_coin_AptosCoin'(s), $withdraw_events#$1_coin_CoinStore'$1_aptos_coin_AptosCoin'(s)) -} -function {:inline} $Update'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''_frozen(s: $1_coin_CoinStore'$1_aptos_coin_AptosCoin', x: bool): $1_coin_CoinStore'$1_aptos_coin_AptosCoin' { - $1_coin_CoinStore'$1_aptos_coin_AptosCoin'($coin#$1_coin_CoinStore'$1_aptos_coin_AptosCoin'(s), x, $deposit_events#$1_coin_CoinStore'$1_aptos_coin_AptosCoin'(s), $withdraw_events#$1_coin_CoinStore'$1_aptos_coin_AptosCoin'(s)) -} -function {:inline} $Update'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''_deposit_events(s: $1_coin_CoinStore'$1_aptos_coin_AptosCoin', x: $1_event_EventHandle'$1_coin_DepositEvent'): $1_coin_CoinStore'$1_aptos_coin_AptosCoin' { - $1_coin_CoinStore'$1_aptos_coin_AptosCoin'($coin#$1_coin_CoinStore'$1_aptos_coin_AptosCoin'(s), $frozen#$1_coin_CoinStore'$1_aptos_coin_AptosCoin'(s), x, $withdraw_events#$1_coin_CoinStore'$1_aptos_coin_AptosCoin'(s)) -} -function {:inline} $Update'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''_withdraw_events(s: $1_coin_CoinStore'$1_aptos_coin_AptosCoin', x: $1_event_EventHandle'$1_coin_WithdrawEvent'): $1_coin_CoinStore'$1_aptos_coin_AptosCoin' { - $1_coin_CoinStore'$1_aptos_coin_AptosCoin'($coin#$1_coin_CoinStore'$1_aptos_coin_AptosCoin'(s), $frozen#$1_coin_CoinStore'$1_aptos_coin_AptosCoin'(s), $deposit_events#$1_coin_CoinStore'$1_aptos_coin_AptosCoin'(s), x) -} -function $IsValid'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''(s: $1_coin_CoinStore'$1_aptos_coin_AptosCoin'): bool { - $IsValid'$1_coin_Coin'$1_aptos_coin_AptosCoin''($coin#$1_coin_CoinStore'$1_aptos_coin_AptosCoin'(s)) - && $IsValid'bool'($frozen#$1_coin_CoinStore'$1_aptos_coin_AptosCoin'(s)) - && $IsValid'$1_event_EventHandle'$1_coin_DepositEvent''($deposit_events#$1_coin_CoinStore'$1_aptos_coin_AptosCoin'(s)) - && $IsValid'$1_event_EventHandle'$1_coin_WithdrawEvent''($withdraw_events#$1_coin_CoinStore'$1_aptos_coin_AptosCoin'(s)) -} -function {:inline} $IsEqual'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''(s1: $1_coin_CoinStore'$1_aptos_coin_AptosCoin', s2: $1_coin_CoinStore'$1_aptos_coin_AptosCoin'): bool { - s1 == s2 -} -var $1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory: $Memory $1_coin_CoinStore'$1_aptos_coin_AptosCoin'; - -// struct coin::DepositEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:123:5+64 -type {:datatype} $1_coin_DepositEvent; -function {:constructor} $1_coin_DepositEvent($amount: int): $1_coin_DepositEvent; -function {:inline} $Update'$1_coin_DepositEvent'_amount(s: $1_coin_DepositEvent, x: int): $1_coin_DepositEvent { - $1_coin_DepositEvent(x) -} -function $IsValid'$1_coin_DepositEvent'(s: $1_coin_DepositEvent): bool { - $IsValid'u64'($amount#$1_coin_DepositEvent(s)) -} -function {:inline} $IsEqual'$1_coin_DepositEvent'(s1: $1_coin_DepositEvent, s2: $1_coin_DepositEvent): bool { - s1 == s2 -} - -// struct coin::WithdrawEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:128:5+65 -type {:datatype} $1_coin_WithdrawEvent; -function {:constructor} $1_coin_WithdrawEvent($amount: int): $1_coin_WithdrawEvent; -function {:inline} $Update'$1_coin_WithdrawEvent'_amount(s: $1_coin_WithdrawEvent, x: int): $1_coin_WithdrawEvent { - $1_coin_WithdrawEvent(x) -} -function $IsValid'$1_coin_WithdrawEvent'(s: $1_coin_WithdrawEvent): bool { - $IsValid'u64'($amount#$1_coin_WithdrawEvent(s)) -} -function {:inline} $IsEqual'$1_coin_WithdrawEvent'(s1: $1_coin_WithdrawEvent, s2: $1_coin_WithdrawEvent): bool { - s1 == s2 -} - -// struct coin::Ghost$supply at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:4:9+29 -type {:datatype} $1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'; -function {:constructor} $1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'($v: int): $1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'; -function {:inline} $Update'$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin''_v(s: $1_coin_Ghost$supply'$1_aptos_coin_AptosCoin', x: int): $1_coin_Ghost$supply'$1_aptos_coin_AptosCoin' { - $1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'(x) -} -function $IsValid'$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin''(s: $1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'): bool { - $IsValid'num'($v#$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'(s)) -} -function {:inline} $IsEqual'$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin''(s1: $1_coin_Ghost$supply'$1_aptos_coin_AptosCoin', s2: $1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'): bool { - s1 == s2 -} -var $1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory: $Memory $1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'; - -// struct coin::Ghost$aggregate_supply at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:5:9+39 -type {:datatype} $1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'; -function {:constructor} $1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'($v: int): $1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'; -function {:inline} $Update'$1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin''_v(s: $1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin', x: int): $1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin' { - $1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'(x) -} -function $IsValid'$1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin''(s: $1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'): bool { - $IsValid'num'($v#$1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'(s)) -} -function {:inline} $IsEqual'$1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin''(s1: $1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin', s2: $1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'): bool { - s1 == s2 -} -var $1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory: $Memory $1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'; - -// fun coin::value [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:580:5+81 -procedure {:inline 1} $1_coin_value'$1_aptos_coin_AptosCoin'(_$t0: $1_coin_Coin'$1_aptos_coin_AptosCoin') returns ($ret0: int) -{ - // declare local variables - var $t1: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; - var $t2: int; - var $t0: $1_coin_Coin'$1_aptos_coin_AptosCoin'; - var $temp_0'$1_coin_Coin'$1_aptos_coin_AptosCoin'': $1_coin_Coin'$1_aptos_coin_AptosCoin'; - var $temp_0'u64': int; - $t0 := _$t0; - - // bytecode translation starts here - // assume Identical($t1, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 - assume {:print "$at(102,1664,1763)"} true; - assume ($t1 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); - - // trace_local[coin]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:580:5+1 - assume {:print "$at(101,22011,22012)"} true; - assume {:print "$track_local(23,35,0):", $t0} $t0 == $t0; - - // $t2 := get_field>.value($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:581:9+10 - assume {:print "$at(101,22076,22086)"} true; - $t2 := $value#$1_coin_Coin'$1_aptos_coin_AptosCoin'($t0); - - // trace_return[0]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:581:9+10 - assume {:print "$track_return(23,35,0):", $t2} $t2 == $t2; - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:582:5+1 - assume {:print "$at(101,22091,22092)"} true; -L1: - - // return $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:582:5+1 - assume {:print "$at(101,22091,22092)"} true; - $ret0 := $t2; - return; - -} - -// fun coin::is_account_registered [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:266:5+129 -procedure {:inline 1} $1_coin_is_account_registered'$1_aptos_coin_AptosCoin'(_$t0: int) returns ($ret0: bool) -{ - // declare local variables - var $t1: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; - var $t2: bool; - var $t0: int; - var $temp_0'address': int; - var $temp_0'bool': bool; - $t0 := _$t0; - - // bytecode translation starts here - // assume Identical($t1, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 - assume {:print "$at(102,1664,1763)"} true; - assume ($t1 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); - - // trace_local[account_addr]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:266:5+1 - assume {:print "$at(101,9762,9763)"} true; - assume {:print "$track_local(23,21,0):", $t0} $t0 == $t0; - - // $t2 := exists>($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:267:9+6 - assume {:print "$at(101,9844,9850)"} true; - $t2 := $ResourceExists($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $t0); - - // trace_return[0]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:267:9+41 - assume {:print "$track_return(23,21,0):", $t2} $t2 == $t2; - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:268:5+1 - assume {:print "$at(101,9890,9891)"} true; -L1: - - // return $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:268:5+1 - assume {:print "$at(101,9890,9891)"} true; - $ret0 := $t2; - return; - -} - -// fun coin::register [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:552:5+664 -procedure {:inline 1} $1_coin_register'$1_aptos_coin_AptosCoin'(_$t0: $signer) returns () -{ - // declare local variables - var $t1: int; - var $t2: $1_coin_CoinStore'$1_aptos_coin_AptosCoin'; - var $t3: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; - var $t4: int; - var $t5: $1_account_Account; - var $t6: int; - var $t7: int; - var $t8: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; - var $t9: bool; - var $t10: int; - var $t11: $1_coin_Coin'$1_aptos_coin_AptosCoin'; - var $t12: bool; - var $t13: int; - var $t14: $1_account_Account; - var $t15: $1_event_EventHandle'$1_coin_DepositEvent'; - var $t16: int; - var $t17: $1_account_Account; - var $t18: $1_event_EventHandle'$1_coin_WithdrawEvent'; - var $t19: $1_coin_CoinStore'$1_aptos_coin_AptosCoin'; - var $t0: $signer; - var $temp_0'$1_coin_CoinStore'$1_aptos_coin_AptosCoin'': $1_coin_CoinStore'$1_aptos_coin_AptosCoin'; - var $temp_0'address': int; - var $temp_0'signer': $signer; - $t0 := _$t0; - - // bytecode translation starts here - // assume Identical($t3, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 - assume {:print "$at(102,1664,1763)"} true; - assume ($t3 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); - - // assume Identical($t4, signer::$address_of($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:347:9+47 - assume {:print "$at(102,14682,14729)"} true; - assume ($t4 == $1_signer_$address_of($t0)); - - // assume Identical($t5, global($t4)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:348:9+49 - assume {:print "$at(102,14738,14787)"} true; - assume ($t5 == $ResourceValue($1_account_Account_$memory, $t4)); - - // trace_local[account]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:552:5+1 - assume {:print "$at(101,21007,21008)"} true; - assume {:print "$track_local(23,29,0):", $t0} $t0 == $t0; - - // $t6 := signer::address_of($t0) on_abort goto L3 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:553:28+27 - assume {:print "$at(101,21084,21111)"} true; - call $t6 := $1_signer_address_of($t0); - if ($abort_flag) { - assume {:print "$at(101,21084,21111)"} true; - $t7 := $abort_code; - assume {:print "$track_abort(23,29):", $t7} $t7 == $t7; - goto L3; - } - - // trace_local[account_addr]($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:553:13+12 - assume {:print "$track_local(23,29,1):", $t6} $t6 == $t6; - - // assume Identical($t8, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 - assume {:print "$at(102,1664,1763)"} true; - assume ($t8 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); - - // $t9 := coin::is_account_registered<#0>($t6) on_abort goto L3 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:555:13+45 - assume {:print "$at(101,21212,21257)"} true; - call $t9 := $1_coin_is_account_registered'$1_aptos_coin_AptosCoin'($t6); - if ($abort_flag) { - assume {:print "$at(101,21212,21257)"} true; - $t7 := $abort_code; - assume {:print "$track_abort(23,29):", $t7} $t7 == $t7; - goto L3; - } - - // if ($t9) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:555:9+81 - if ($t9) { goto L1; } else { goto L0; } - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:556:13+6 - assume {:print "$at(101,21273,21279)"} true; -L1: - - // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:556:13+6 - assume {:print "$at(101,21273,21279)"} true; - goto L2; - - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:559:42+12 - assume {:print "$at(101,21333,21345)"} true; -L0: - - // account::register_coin<#0>($t6) on_abort goto L3 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:559:9+46 - assume {:print "$at(101,21300,21346)"} true; - call $1_account_register_coin'$1_aptos_coin_AptosCoin'($t6); - if ($abort_flag) { - assume {:print "$at(101,21300,21346)"} true; - $t7 := $abort_code; - assume {:print "$track_abort(23,29):", $t7} $t7 == $t7; - goto L3; - } - - // $t10 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:561:33+1 - assume {:print "$at(101,21427,21428)"} true; - $t10 := 0; - assume $IsValid'u64'($t10); - - // $t11 := pack coin::Coin<#0>($t10) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:561:19+17 - $t11 := $1_coin_Coin'$1_aptos_coin_AptosCoin'($t10); - - // $t12 := false at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:562:21+5 - assume {:print "$at(101,21452,21457)"} true; - $t12 := false; - assume $IsValid'bool'($t12); - - // assume Identical($t13, signer::$address_of($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:461:9+39 - assume {:print "$at(80,22297,22336)"} true; - assume ($t13 == $1_signer_$address_of($t0)); - - // assume Identical($t14, global($t13)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:462:9+36 - assume {:print "$at(80,22345,22381)"} true; - assume ($t14 == $ResourceValue($1_account_Account_$memory, $t13)); - - // $t15 := account::new_event_handle($t0) on_abort goto L3 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:563:29+48 - assume {:print "$at(101,21487,21535)"} true; - call $t15 := $1_account_new_event_handle'$1_coin_DepositEvent'($t0); - if ($abort_flag) { - assume {:print "$at(101,21487,21535)"} true; - $t7 := $abort_code; - assume {:print "$track_abort(23,29):", $t7} $t7 == $t7; - goto L3; - } - - // assume Identical($t16, signer::$address_of($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:461:9+39 - assume {:print "$at(80,22297,22336)"} true; - assume ($t16 == $1_signer_$address_of($t0)); - - // assume Identical($t17, global($t16)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:462:9+36 - assume {:print "$at(80,22345,22381)"} true; - assume ($t17 == $ResourceValue($1_account_Account_$memory, $t16)); - - // $t18 := account::new_event_handle($t0) on_abort goto L3 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:564:30+49 - assume {:print "$at(101,21566,21615)"} true; - call $t18 := $1_account_new_event_handle'$1_coin_WithdrawEvent'($t0); - if ($abort_flag) { - assume {:print "$at(101,21566,21615)"} true; - $t7 := $abort_code; - assume {:print "$track_abort(23,29):", $t7} $t7 == $t7; - goto L3; - } - - // $t19 := pack coin::CoinStore<#0>($t11, $t12, $t15, $t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:560:26+253 - assume {:print "$at(101,21373,21626)"} true; - $t19 := $1_coin_CoinStore'$1_aptos_coin_AptosCoin'($t11, $t12, $t15, $t18); - - // trace_local[coin_store]($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:560:13+10 - assume {:print "$track_local(23,29,2):", $t19} $t19 == $t19; - - // move_to>($t19, $t0) on_abort goto L3 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:566:9+7 - assume {:print "$at(101,21636,21643)"} true; - if ($ResourceExists($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $addr#$signer($t0))) { - call $ExecFailureAbort(); - } else { - $1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory := $ResourceUpdate($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $addr#$signer($t0), $t19); - } - if ($abort_flag) { - assume {:print "$at(101,21636,21643)"} true; - $t7 := $abort_code; - assume {:print "$track_abort(23,29):", $t7} $t7 == $t7; - goto L3; - } - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:567:5+1 - assume {:print "$at(101,21670,21671)"} true; -L2: - - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:567:5+1 - assume {:print "$at(101,21670,21671)"} true; - return; - - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:567:5+1 -L3: - - // abort($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.move:567:5+1 - assume {:print "$at(101,21670,21671)"} true; - $abort_code := $t7; - $abort_flag := true; - return; - -} - -// struct aptos_coin::AptosCoin at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_coin.move:22:5+27 -type {:datatype} $1_aptos_coin_AptosCoin; -function {:constructor} $1_aptos_coin_AptosCoin($dummy_field: bool): $1_aptos_coin_AptosCoin; -function {:inline} $Update'$1_aptos_coin_AptosCoin'_dummy_field(s: $1_aptos_coin_AptosCoin, x: bool): $1_aptos_coin_AptosCoin { - $1_aptos_coin_AptosCoin(x) -} -function $IsValid'$1_aptos_coin_AptosCoin'(s: $1_aptos_coin_AptosCoin): bool { - $IsValid'bool'($dummy_field#$1_aptos_coin_AptosCoin(s)) -} -function {:inline} $IsEqual'$1_aptos_coin_AptosCoin'(s1: $1_aptos_coin_AptosCoin, s2: $1_aptos_coin_AptosCoin): bool { - s1 == s2 -} -var $1_aptos_coin_AptosCoin_$memory: $Memory $1_aptos_coin_AptosCoin; - -// fun aptos_account::assert_account_exists [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:117:5+136 -procedure {:inline 1} $1_aptos_account_assert_account_exists(_$t0: int) returns () -{ - // declare local variables - var $t1: bool; - var $t2: int; - var $t3: int; - var $t4: int; - var $t0: int; - var $temp_0'address': int; - $t0 := _$t0; - - // bytecode translation starts here - // trace_local[addr]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:117:5+1 - assume {:print "$at(87,5296,5297)"} true; - assume {:print "$track_local(25,0,0):", $t0} $t0 == $t0; - - // $t1 := account::exists_at($t0) on_abort goto L4 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:118:17+24 - assume {:print "$at(87,5362,5386)"} true; - call $t1 := $1_account_exists_at($t0); - if ($abort_flag) { - assume {:print "$at(87,5362,5386)"} true; - $t2 := $abort_code; - assume {:print "$track_abort(25,0):", $t2} $t2 == $t2; - goto L4; - } - - // if ($t1) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:118:9+71 - if ($t1) { goto L1; } else { goto L0; } - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:118:9+71 -L1: - - // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:118:9+71 - assume {:print "$at(87,5354,5425)"} true; - goto L2; - - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:118:60+18 -L0: - - // $t3 := 1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:118:60+18 - assume {:print "$at(87,5405,5423)"} true; - $t3 := 1; - assume $IsValid'u64'($t3); - - // $t4 := error::not_found($t3) on_abort goto L4 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:118:43+36 - call $t4 := $1_error_not_found($t3); - if ($abort_flag) { - assume {:print "$at(87,5388,5424)"} true; - $t2 := $abort_code; - assume {:print "$track_abort(25,0):", $t2} $t2 == $t2; - goto L4; - } - - // trace_abort($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:118:9+71 - assume {:print "$at(87,5354,5425)"} true; - assume {:print "$track_abort(25,0):", $t4} $t4 == $t4; - - // $t2 := move($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:118:9+71 - $t2 := $t4; - - // goto L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:118:9+71 - goto L4; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:118:80+1 -L2: - - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:119:5+1 - assume {:print "$at(87,5431,5432)"} true; -L3: - - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:119:5+1 - assume {:print "$at(87,5431,5432)"} true; - return; - - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:119:5+1 -L4: - - // abort($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:119:5+1 - assume {:print "$at(87,5431,5432)"} true; - $abort_code := $t2; - $abort_flag := true; - return; - -} - -// fun aptos_account::assert_account_is_registered_for_apt [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:121:5+221 -procedure {:inline 1} $1_aptos_account_assert_account_is_registered_for_apt(_$t0: int) returns () -{ - // declare local variables - var $t1: int; - var $t2: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; - var $t3: bool; - var $t4: int; - var $t5: int; - var $t0: int; - var $temp_0'address': int; - $t0 := _$t0; - - // bytecode translation starts here - // trace_local[addr]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:121:5+1 - assume {:print "$at(87,5438,5439)"} true; - assume {:print "$track_local(25,1,0):", $t0} $t0 == $t0; - - // aptos_account::assert_account_exists($t0) on_abort goto L4 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:122:9+27 - assume {:print "$at(87,5511,5538)"} true; - call $1_aptos_account_assert_account_exists($t0); - if ($abort_flag) { - assume {:print "$at(87,5511,5538)"} true; - $t1 := $abort_code; - assume {:print "$track_abort(25,1):", $t1} $t1 == $t1; - goto L4; - } - - // assume Identical($t2, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 - assume {:print "$at(102,1664,1763)"} true; - assume ($t2 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); - - // $t3 := coin::is_account_registered($t0) on_abort goto L4 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:123:17+44 - assume {:print "$at(87,5556,5600)"} true; - call $t3 := $1_coin_is_account_registered'$1_aptos_coin_AptosCoin'($t0); - if ($abort_flag) { - assume {:print "$at(87,5556,5600)"} true; - $t1 := $abort_code; - assume {:print "$track_abort(25,1):", $t1} $t1 == $t1; - goto L4; - } - - // if ($t3) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:123:9+104 - if ($t3) { goto L1; } else { goto L0; } - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:123:9+104 -L1: - - // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:123:9+104 - assume {:print "$at(87,5548,5652)"} true; - goto L2; - - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:123:80+31 -L0: - - // $t4 := 2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:123:80+31 - assume {:print "$at(87,5619,5650)"} true; - $t4 := 2; - assume $IsValid'u64'($t4); - - // $t5 := error::not_found($t4) on_abort goto L4 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:123:63+49 - call $t5 := $1_error_not_found($t4); - if ($abort_flag) { - assume {:print "$at(87,5602,5651)"} true; - $t1 := $abort_code; - assume {:print "$track_abort(25,1):", $t1} $t1 == $t1; - goto L4; - } - - // trace_abort($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:123:9+104 - assume {:print "$at(87,5548,5652)"} true; - assume {:print "$track_abort(25,1):", $t5} $t5 == $t5; - - // $t1 := move($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:123:9+104 - $t1 := $t5; - - // goto L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:123:9+104 - goto L4; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:123:113+1 -L2: - - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:124:5+1 - assume {:print "$at(87,5658,5659)"} true; -L3: - - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:124:5+1 - assume {:print "$at(87,5658,5659)"} true; - return; - - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:124:5+1 -L4: - - // abort($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/aptos_account.move:124:5+1 - assume {:print "$at(87,5658,5659)"} true; - $abort_code := $t1; - $abort_flag := true; - return; - -} - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/chain_status.move:35:5+90 -function {:inline} $1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory: $Memory $1_chain_status_GenesisEndMarker): bool { - $ResourceExists($1_chain_status_GenesisEndMarker_$memory, 1) -} - -// struct chain_status::GenesisEndMarker at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/chain_status.move:12:5+34 -type {:datatype} $1_chain_status_GenesisEndMarker; -function {:constructor} $1_chain_status_GenesisEndMarker($dummy_field: bool): $1_chain_status_GenesisEndMarker; -function {:inline} $Update'$1_chain_status_GenesisEndMarker'_dummy_field(s: $1_chain_status_GenesisEndMarker, x: bool): $1_chain_status_GenesisEndMarker { - $1_chain_status_GenesisEndMarker(x) -} -function $IsValid'$1_chain_status_GenesisEndMarker'(s: $1_chain_status_GenesisEndMarker): bool { - $IsValid'bool'($dummy_field#$1_chain_status_GenesisEndMarker(s)) -} -function {:inline} $IsEqual'$1_chain_status_GenesisEndMarker'(s1: $1_chain_status_GenesisEndMarker, s2: $1_chain_status_GenesisEndMarker): bool { - s1 == s2 -} -var $1_chain_status_GenesisEndMarker_$memory: $Memory $1_chain_status_GenesisEndMarker; - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:61:5+153 -function {:inline} $1_timestamp_$now_microseconds($1_timestamp_CurrentTimeMicroseconds_$memory: $Memory $1_timestamp_CurrentTimeMicroseconds): int { - $microseconds#$1_timestamp_CurrentTimeMicroseconds($ResourceValue($1_timestamp_CurrentTimeMicroseconds_$memory, 1)) -} - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:67:5+123 -function {:inline} $1_timestamp_$now_seconds($1_timestamp_CurrentTimeMicroseconds_$memory: $Memory $1_timestamp_CurrentTimeMicroseconds): int { - ($1_timestamp_$now_microseconds($1_timestamp_CurrentTimeMicroseconds_$memory) div 1000000) -} - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.spec.move:22:10+111 -function {:inline} $1_timestamp_spec_now_microseconds($1_timestamp_CurrentTimeMicroseconds_$memory: $Memory $1_timestamp_CurrentTimeMicroseconds): int { - $microseconds#$1_timestamp_CurrentTimeMicroseconds($ResourceValue($1_timestamp_CurrentTimeMicroseconds_$memory, 1)) -} - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.spec.move:26:10+93 -function {:inline} $1_timestamp_spec_now_seconds($1_timestamp_CurrentTimeMicroseconds_$memory: $Memory $1_timestamp_CurrentTimeMicroseconds): int { - ($1_timestamp_spec_now_microseconds($1_timestamp_CurrentTimeMicroseconds_$memory) div 1000000) -} - -// struct timestamp::CurrentTimeMicroseconds at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:12:5+73 -type {:datatype} $1_timestamp_CurrentTimeMicroseconds; -function {:constructor} $1_timestamp_CurrentTimeMicroseconds($microseconds: int): $1_timestamp_CurrentTimeMicroseconds; -function {:inline} $Update'$1_timestamp_CurrentTimeMicroseconds'_microseconds(s: $1_timestamp_CurrentTimeMicroseconds, x: int): $1_timestamp_CurrentTimeMicroseconds { - $1_timestamp_CurrentTimeMicroseconds(x) -} -function $IsValid'$1_timestamp_CurrentTimeMicroseconds'(s: $1_timestamp_CurrentTimeMicroseconds): bool { - $IsValid'u64'($microseconds#$1_timestamp_CurrentTimeMicroseconds(s)) -} -function {:inline} $IsEqual'$1_timestamp_CurrentTimeMicroseconds'(s1: $1_timestamp_CurrentTimeMicroseconds, s2: $1_timestamp_CurrentTimeMicroseconds): bool { - s1 == s2 -} -var $1_timestamp_CurrentTimeMicroseconds_$memory: $Memory $1_timestamp_CurrentTimeMicroseconds; - -// fun timestamp::now_microseconds [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:61:5+153 -procedure {:inline 1} $1_timestamp_now_microseconds() returns ($ret0: int) -{ - // declare local variables - var $t0: int; - var $t1: $1_timestamp_CurrentTimeMicroseconds; - var $t2: int; - var $t3: int; - var $temp_0'u64': int; - - // bytecode translation starts here - // $t0 := 0x1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:62:48+16 - assume {:print "$at(150,2511,2527)"} true; - $t0 := 1; - assume $IsValid'address'($t0); - - // $t1 := get_global($t0) on_abort goto L2 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:62:9+13 - if (!$ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory, $t0)) { - call $ExecFailureAbort(); - } else { - $t1 := $ResourceValue($1_timestamp_CurrentTimeMicroseconds_$memory, $t0); - } - if ($abort_flag) { - assume {:print "$at(150,2472,2485)"} true; - $t2 := $abort_code; - assume {:print "$track_abort(28,0):", $t2} $t2 == $t2; - goto L2; - } - - // $t3 := get_field.microseconds($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:62:9+69 - $t3 := $microseconds#$1_timestamp_CurrentTimeMicroseconds($t1); - - // trace_return[0]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:62:9+69 - assume {:print "$track_return(28,0,0):", $t3} $t3 == $t3; - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:63:5+1 - assume {:print "$at(150,2546,2547)"} true; -L1: - - // return $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:63:5+1 - assume {:print "$at(150,2546,2547)"} true; - $ret0 := $t3; - return; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:63:5+1 -L2: - - // abort($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:63:5+1 - assume {:print "$at(150,2546,2547)"} true; - $abort_code := $t2; - $abort_flag := true; - return; - -} - -// fun timestamp::now_seconds [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:67:5+123 -procedure {:inline 1} $1_timestamp_now_seconds() returns ($ret0: int) -{ - // declare local variables - var $t0: int; - var $t1: int; - var $t2: int; - var $t3: int; - var $temp_0'u64': int; - - // bytecode translation starts here - // $t0 := timestamp::now_microseconds() on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:68:9+18 - assume {:print "$at(150,2680,2698)"} true; - call $t0 := $1_timestamp_now_microseconds(); - if ($abort_flag) { - assume {:print "$at(150,2680,2698)"} true; - $t1 := $abort_code; - assume {:print "$track_abort(28,1):", $t1} $t1 == $t1; - goto L2; - } - - // $t2 := 1000000 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:68:30+23 - $t2 := 1000000; - assume $IsValid'u64'($t2); - - // $t3 := /($t0, $t2) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:68:28+1 - call $t3 := $Div($t0, $t2); - if ($abort_flag) { - assume {:print "$at(150,2699,2700)"} true; - $t1 := $abort_code; - assume {:print "$track_abort(28,1):", $t1} $t1 == $t1; - goto L2; - } - - // trace_return[0]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:68:9+44 - assume {:print "$track_return(28,1,0):", $t3} $t3 == $t3; - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:69:5+1 - assume {:print "$at(150,2729,2730)"} true; -L1: - - // return $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:69:5+1 - assume {:print "$at(150,2729,2730)"} true; - $ret0 := $t3; - return; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:69:5+1 -L2: - - // abort($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.move:69:5+1 - assume {:print "$at(150,2729,2730)"} true; - $abort_code := $t1; - $abort_flag := true; - return; - -} - -// struct fixed_point32::FixedPoint32 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/fixed_point32.move:15:5+56 -type {:datatype} $1_fixed_point32_FixedPoint32; -function {:constructor} $1_fixed_point32_FixedPoint32($value: int): $1_fixed_point32_FixedPoint32; -function {:inline} $Update'$1_fixed_point32_FixedPoint32'_value(s: $1_fixed_point32_FixedPoint32, x: int): $1_fixed_point32_FixedPoint32 { - $1_fixed_point32_FixedPoint32(x) -} -function $IsValid'$1_fixed_point32_FixedPoint32'(s: $1_fixed_point32_FixedPoint32): bool { - $IsValid'u64'($value#$1_fixed_point32_FixedPoint32(s)) -} -function {:inline} $IsEqual'$1_fixed_point32_FixedPoint32'(s1: $1_fixed_point32_FixedPoint32, s2: $1_fixed_point32_FixedPoint32): bool { - s1 == s2 -} - -// struct staking_config::StakingConfig at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/configs/staking_config.move:49:5+1753 -type {:datatype} $1_staking_config_StakingConfig; -function {:constructor} $1_staking_config_StakingConfig($minimum_stake: int, $maximum_stake: int, $recurring_lockup_duration_secs: int, $allow_validator_set_change: bool, $rewards_rate: int, $rewards_rate_denominator: int, $voting_power_increase_limit: int): $1_staking_config_StakingConfig; -function {:inline} $Update'$1_staking_config_StakingConfig'_minimum_stake(s: $1_staking_config_StakingConfig, x: int): $1_staking_config_StakingConfig { - $1_staking_config_StakingConfig(x, $maximum_stake#$1_staking_config_StakingConfig(s), $recurring_lockup_duration_secs#$1_staking_config_StakingConfig(s), $allow_validator_set_change#$1_staking_config_StakingConfig(s), $rewards_rate#$1_staking_config_StakingConfig(s), $rewards_rate_denominator#$1_staking_config_StakingConfig(s), $voting_power_increase_limit#$1_staking_config_StakingConfig(s)) -} -function {:inline} $Update'$1_staking_config_StakingConfig'_maximum_stake(s: $1_staking_config_StakingConfig, x: int): $1_staking_config_StakingConfig { - $1_staking_config_StakingConfig($minimum_stake#$1_staking_config_StakingConfig(s), x, $recurring_lockup_duration_secs#$1_staking_config_StakingConfig(s), $allow_validator_set_change#$1_staking_config_StakingConfig(s), $rewards_rate#$1_staking_config_StakingConfig(s), $rewards_rate_denominator#$1_staking_config_StakingConfig(s), $voting_power_increase_limit#$1_staking_config_StakingConfig(s)) -} -function {:inline} $Update'$1_staking_config_StakingConfig'_recurring_lockup_duration_secs(s: $1_staking_config_StakingConfig, x: int): $1_staking_config_StakingConfig { - $1_staking_config_StakingConfig($minimum_stake#$1_staking_config_StakingConfig(s), $maximum_stake#$1_staking_config_StakingConfig(s), x, $allow_validator_set_change#$1_staking_config_StakingConfig(s), $rewards_rate#$1_staking_config_StakingConfig(s), $rewards_rate_denominator#$1_staking_config_StakingConfig(s), $voting_power_increase_limit#$1_staking_config_StakingConfig(s)) -} -function {:inline} $Update'$1_staking_config_StakingConfig'_allow_validator_set_change(s: $1_staking_config_StakingConfig, x: bool): $1_staking_config_StakingConfig { - $1_staking_config_StakingConfig($minimum_stake#$1_staking_config_StakingConfig(s), $maximum_stake#$1_staking_config_StakingConfig(s), $recurring_lockup_duration_secs#$1_staking_config_StakingConfig(s), x, $rewards_rate#$1_staking_config_StakingConfig(s), $rewards_rate_denominator#$1_staking_config_StakingConfig(s), $voting_power_increase_limit#$1_staking_config_StakingConfig(s)) -} -function {:inline} $Update'$1_staking_config_StakingConfig'_rewards_rate(s: $1_staking_config_StakingConfig, x: int): $1_staking_config_StakingConfig { - $1_staking_config_StakingConfig($minimum_stake#$1_staking_config_StakingConfig(s), $maximum_stake#$1_staking_config_StakingConfig(s), $recurring_lockup_duration_secs#$1_staking_config_StakingConfig(s), $allow_validator_set_change#$1_staking_config_StakingConfig(s), x, $rewards_rate_denominator#$1_staking_config_StakingConfig(s), $voting_power_increase_limit#$1_staking_config_StakingConfig(s)) -} -function {:inline} $Update'$1_staking_config_StakingConfig'_rewards_rate_denominator(s: $1_staking_config_StakingConfig, x: int): $1_staking_config_StakingConfig { - $1_staking_config_StakingConfig($minimum_stake#$1_staking_config_StakingConfig(s), $maximum_stake#$1_staking_config_StakingConfig(s), $recurring_lockup_duration_secs#$1_staking_config_StakingConfig(s), $allow_validator_set_change#$1_staking_config_StakingConfig(s), $rewards_rate#$1_staking_config_StakingConfig(s), x, $voting_power_increase_limit#$1_staking_config_StakingConfig(s)) -} -function {:inline} $Update'$1_staking_config_StakingConfig'_voting_power_increase_limit(s: $1_staking_config_StakingConfig, x: int): $1_staking_config_StakingConfig { - $1_staking_config_StakingConfig($minimum_stake#$1_staking_config_StakingConfig(s), $maximum_stake#$1_staking_config_StakingConfig(s), $recurring_lockup_duration_secs#$1_staking_config_StakingConfig(s), $allow_validator_set_change#$1_staking_config_StakingConfig(s), $rewards_rate#$1_staking_config_StakingConfig(s), $rewards_rate_denominator#$1_staking_config_StakingConfig(s), x) -} -function $IsValid'$1_staking_config_StakingConfig'(s: $1_staking_config_StakingConfig): bool { - $IsValid'u64'($minimum_stake#$1_staking_config_StakingConfig(s)) - && $IsValid'u64'($maximum_stake#$1_staking_config_StakingConfig(s)) - && $IsValid'u64'($recurring_lockup_duration_secs#$1_staking_config_StakingConfig(s)) - && $IsValid'bool'($allow_validator_set_change#$1_staking_config_StakingConfig(s)) - && $IsValid'u64'($rewards_rate#$1_staking_config_StakingConfig(s)) - && $IsValid'u64'($rewards_rate_denominator#$1_staking_config_StakingConfig(s)) - && $IsValid'u64'($voting_power_increase_limit#$1_staking_config_StakingConfig(s)) -} -function {:inline} $IsEqual'$1_staking_config_StakingConfig'(s1: $1_staking_config_StakingConfig, s2: $1_staking_config_StakingConfig): bool { - s1 == s2 -} -var $1_staking_config_StakingConfig_$memory: $Memory $1_staking_config_StakingConfig; - -// fun staking_config::get [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/configs/staking_config.move:169:5+118 -procedure {:inline 1} $1_staking_config_get() returns ($ret0: $1_staking_config_StakingConfig) -{ - // declare local variables - var $t0: int; - var $t1: $1_staking_config_StakingConfig; - var $t2: int; - var $temp_0'$1_staking_config_StakingConfig': $1_staking_config_StakingConfig; - - // bytecode translation starts here - // $t0 := 0x1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/configs/staking_config.move:170:39+16 - assume {:print "$at(109,8290,8306)"} true; - $t0 := 1; - assume $IsValid'address'($t0); - - // $t1 := get_global($t0) on_abort goto L2 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/configs/staking_config.move:170:10+13 - if (!$ResourceExists($1_staking_config_StakingConfig_$memory, $t0)) { - call $ExecFailureAbort(); - } else { - $t1 := $ResourceValue($1_staking_config_StakingConfig_$memory, $t0); - } - if ($abort_flag) { - assume {:print "$at(109,8261,8274)"} true; - $t2 := $abort_code; - assume {:print "$track_abort(35,2):", $t2} $t2 == $t2; - goto L2; - } - - // trace_return[0]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/configs/staking_config.move:170:9+47 - assume {:print "$track_return(35,2,0):", $t1} $t1 == $t1; - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/configs/staking_config.move:171:5+1 - assume {:print "$at(109,8312,8313)"} true; -L1: - - // return $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/configs/staking_config.move:171:5+1 - assume {:print "$at(109,8312,8313)"} true; - $ret0 := $t1; - return; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/configs/staking_config.move:171:5+1 -L2: - - // abort($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/configs/staking_config.move:171:5+1 - assume {:print "$at(109,8312,8313)"} true; - $abort_code := $t2; - $abort_flag := true; - return; - -} - -// fun staking_config::get_recurring_lockup_duration [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/configs/staking_config.move:185:5+123 -procedure {:inline 1} $1_staking_config_get_recurring_lockup_duration(_$t0: $1_staking_config_StakingConfig) returns ($ret0: int) -{ - // declare local variables - var $t1: int; - var $t0: $1_staking_config_StakingConfig; - var $temp_0'$1_staking_config_StakingConfig': $1_staking_config_StakingConfig; - var $temp_0'u64': int; - $t0 := _$t0; - - // bytecode translation starts here - // trace_local[config]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/configs/staking_config.move:185:5+1 - assume {:print "$at(109,8826,8827)"} true; - assume {:print "$track_local(35,4,0):", $t0} $t0 == $t0; - - // $t1 := get_field.recurring_lockup_duration_secs($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/configs/staking_config.move:186:9+37 - assume {:print "$at(109,8906,8943)"} true; - $t1 := $recurring_lockup_duration_secs#$1_staking_config_StakingConfig($t0); - - // trace_return[0]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/configs/staking_config.move:186:9+37 - assume {:print "$track_return(35,4,0):", $t1} $t1 == $t1; - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/configs/staking_config.move:187:5+1 - assume {:print "$at(109,8948,8949)"} true; -L1: - - // return $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/configs/staking_config.move:187:5+1 - assume {:print "$at(109,8948,8949)"} true; - $ret0 := $t1; - return; - -} - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:400:5+89 -function {:inline} $1_stake_$stake_pool_exists($1_stake_StakePool_$memory: $Memory $1_stake_StakePool, addr: int): bool { - $ResourceExists($1_stake_StakePool_$memory, addr) -} - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:16:10+500 -function {:inline} $1_stake_validator_set_is_valid($1_stake_StakePool_$memory: $Memory $1_stake_StakePool, $1_stake_ValidatorConfig_$memory: $Memory $1_stake_ValidatorConfig, $1_stake_ValidatorPerformance_$memory: $Memory $1_stake_ValidatorPerformance, $1_stake_ValidatorSet_$memory: $Memory $1_stake_ValidatorSet): bool { - (var validator_set := $ResourceValue($1_stake_ValidatorSet_$memory, 1); (((($1_stake_spec_validators_are_initialized($1_stake_StakePool_$memory, $1_stake_ValidatorConfig_$memory, $active_validators#$1_stake_ValidatorSet(validator_set)) && $1_stake_spec_validators_are_initialized($1_stake_StakePool_$memory, $1_stake_ValidatorConfig_$memory, $pending_inactive#$1_stake_ValidatorSet(validator_set))) && $1_stake_spec_validators_are_initialized($1_stake_StakePool_$memory, $1_stake_ValidatorConfig_$memory, $pending_active#$1_stake_ValidatorSet(validator_set))) && $1_stake_spec_validator_indices_are_valid($1_stake_ValidatorConfig_$memory, $1_stake_ValidatorPerformance_$memory, $active_validators#$1_stake_ValidatorSet(validator_set))) && $1_stake_spec_validator_indices_are_valid($1_stake_ValidatorConfig_$memory, $1_stake_ValidatorPerformance_$memory, $pending_inactive#$1_stake_ValidatorSet(validator_set)))) -} - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:306:10+241 -function {:inline} $1_stake_spec_validators_are_initialized($1_stake_StakePool_$memory: $Memory $1_stake_StakePool, $1_stake_ValidatorConfig_$memory: $Memory $1_stake_ValidatorConfig, validators: Vec ($1_stake_ValidatorInfo)): bool { - (var $range_0 := $Range(0, LenVec(validators)); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var i := $i_1; - (($1_stake_spec_has_stake_pool($1_stake_StakePool_$memory, $addr#$1_stake_ValidatorInfo(ReadVec(validators, i))) && $1_stake_spec_has_validator_config($1_stake_ValidatorConfig_$memory, $addr#$1_stake_ValidatorInfo(ReadVec(validators, i)))))))) -} - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:313:10+234 -function {:inline} $1_stake_spec_validator_indices_are_valid($1_stake_ValidatorConfig_$memory: $Memory $1_stake_ValidatorConfig, $1_stake_ValidatorPerformance_$memory: $Memory $1_stake_ValidatorPerformance, validators: Vec ($1_stake_ValidatorInfo)): bool { - (var $range_2 := $Range(0, LenVec(validators)); (forall $i_3: int :: $InRange($range_2, $i_3) ==> (var i := $i_3; - (($validator_index#$1_stake_ValidatorConfig($ResourceValue($1_stake_ValidatorConfig_$memory, $addr#$1_stake_ValidatorInfo(ReadVec(validators, i)))) < $1_stake_spec_validator_index_upper_bound($1_stake_ValidatorPerformance_$memory)))))) -} - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:319:10+122 -function {:inline} $1_stake_spec_validator_index_upper_bound($1_stake_ValidatorPerformance_$memory: $Memory $1_stake_ValidatorPerformance): int { - LenVec($validators#$1_stake_ValidatorPerformance($ResourceValue($1_stake_ValidatorPerformance_$memory, 1))) -} - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:323:10+78 -function {:inline} $1_stake_spec_has_stake_pool($1_stake_StakePool_$memory: $Memory $1_stake_StakePool, a: int): bool { - $ResourceExists($1_stake_StakePool_$memory, a) -} - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:327:10+90 -function {:inline} $1_stake_spec_has_validator_config($1_stake_ValidatorConfig_$memory: $Memory $1_stake_ValidatorConfig, a: int): bool { - $ResourceExists($1_stake_ValidatorConfig_$memory, a) -} - -// struct stake::AddStakeEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:210:5+102 -type {:datatype} $1_stake_AddStakeEvent; -function {:constructor} $1_stake_AddStakeEvent($pool_address: int, $amount_added: int): $1_stake_AddStakeEvent; -function {:inline} $Update'$1_stake_AddStakeEvent'_pool_address(s: $1_stake_AddStakeEvent, x: int): $1_stake_AddStakeEvent { - $1_stake_AddStakeEvent(x, $amount_added#$1_stake_AddStakeEvent(s)) -} -function {:inline} $Update'$1_stake_AddStakeEvent'_amount_added(s: $1_stake_AddStakeEvent, x: int): $1_stake_AddStakeEvent { - $1_stake_AddStakeEvent($pool_address#$1_stake_AddStakeEvent(s), x) -} -function $IsValid'$1_stake_AddStakeEvent'(s: $1_stake_AddStakeEvent): bool { - $IsValid'address'($pool_address#$1_stake_AddStakeEvent(s)) - && $IsValid'u64'($amount_added#$1_stake_AddStakeEvent(s)) -} -function {:inline} $IsEqual'$1_stake_AddStakeEvent'(s1: $1_stake_AddStakeEvent, s2: $1_stake_AddStakeEvent): bool { - s1 == s2 -} - -// struct stake::DistributeRewardsEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:244:5+113 -type {:datatype} $1_stake_DistributeRewardsEvent; -function {:constructor} $1_stake_DistributeRewardsEvent($pool_address: int, $rewards_amount: int): $1_stake_DistributeRewardsEvent; -function {:inline} $Update'$1_stake_DistributeRewardsEvent'_pool_address(s: $1_stake_DistributeRewardsEvent, x: int): $1_stake_DistributeRewardsEvent { - $1_stake_DistributeRewardsEvent(x, $rewards_amount#$1_stake_DistributeRewardsEvent(s)) -} -function {:inline} $Update'$1_stake_DistributeRewardsEvent'_rewards_amount(s: $1_stake_DistributeRewardsEvent, x: int): $1_stake_DistributeRewardsEvent { - $1_stake_DistributeRewardsEvent($pool_address#$1_stake_DistributeRewardsEvent(s), x) -} -function $IsValid'$1_stake_DistributeRewardsEvent'(s: $1_stake_DistributeRewardsEvent): bool { - $IsValid'address'($pool_address#$1_stake_DistributeRewardsEvent(s)) - && $IsValid'u64'($rewards_amount#$1_stake_DistributeRewardsEvent(s)) -} -function {:inline} $IsEqual'$1_stake_DistributeRewardsEvent'(s1: $1_stake_DistributeRewardsEvent, s2: $1_stake_DistributeRewardsEvent): bool { - s1 == s2 -} - -// struct stake::IncreaseLockupEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:234:5+153 -type {:datatype} $1_stake_IncreaseLockupEvent; -function {:constructor} $1_stake_IncreaseLockupEvent($pool_address: int, $old_locked_until_secs: int, $new_locked_until_secs: int): $1_stake_IncreaseLockupEvent; -function {:inline} $Update'$1_stake_IncreaseLockupEvent'_pool_address(s: $1_stake_IncreaseLockupEvent, x: int): $1_stake_IncreaseLockupEvent { - $1_stake_IncreaseLockupEvent(x, $old_locked_until_secs#$1_stake_IncreaseLockupEvent(s), $new_locked_until_secs#$1_stake_IncreaseLockupEvent(s)) -} -function {:inline} $Update'$1_stake_IncreaseLockupEvent'_old_locked_until_secs(s: $1_stake_IncreaseLockupEvent, x: int): $1_stake_IncreaseLockupEvent { - $1_stake_IncreaseLockupEvent($pool_address#$1_stake_IncreaseLockupEvent(s), x, $new_locked_until_secs#$1_stake_IncreaseLockupEvent(s)) -} -function {:inline} $Update'$1_stake_IncreaseLockupEvent'_new_locked_until_secs(s: $1_stake_IncreaseLockupEvent, x: int): $1_stake_IncreaseLockupEvent { - $1_stake_IncreaseLockupEvent($pool_address#$1_stake_IncreaseLockupEvent(s), $old_locked_until_secs#$1_stake_IncreaseLockupEvent(s), x) -} -function $IsValid'$1_stake_IncreaseLockupEvent'(s: $1_stake_IncreaseLockupEvent): bool { - $IsValid'address'($pool_address#$1_stake_IncreaseLockupEvent(s)) - && $IsValid'u64'($old_locked_until_secs#$1_stake_IncreaseLockupEvent(s)) - && $IsValid'u64'($new_locked_until_secs#$1_stake_IncreaseLockupEvent(s)) -} -function {:inline} $IsEqual'$1_stake_IncreaseLockupEvent'(s1: $1_stake_IncreaseLockupEvent, s2: $1_stake_IncreaseLockupEvent): bool { - s1 == s2 -} - -// struct stake::IndividualValidatorPerformance at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:191:5+127 -type {:datatype} $1_stake_IndividualValidatorPerformance; -function {:constructor} $1_stake_IndividualValidatorPerformance($successful_proposals: int, $failed_proposals: int): $1_stake_IndividualValidatorPerformance; -function {:inline} $Update'$1_stake_IndividualValidatorPerformance'_successful_proposals(s: $1_stake_IndividualValidatorPerformance, x: int): $1_stake_IndividualValidatorPerformance { - $1_stake_IndividualValidatorPerformance(x, $failed_proposals#$1_stake_IndividualValidatorPerformance(s)) -} -function {:inline} $Update'$1_stake_IndividualValidatorPerformance'_failed_proposals(s: $1_stake_IndividualValidatorPerformance, x: int): $1_stake_IndividualValidatorPerformance { - $1_stake_IndividualValidatorPerformance($successful_proposals#$1_stake_IndividualValidatorPerformance(s), x) -} -function $IsValid'$1_stake_IndividualValidatorPerformance'(s: $1_stake_IndividualValidatorPerformance): bool { - $IsValid'u64'($successful_proposals#$1_stake_IndividualValidatorPerformance(s)) - && $IsValid'u64'($failed_proposals#$1_stake_IndividualValidatorPerformance(s)) -} -function {:inline} $IsEqual'$1_stake_IndividualValidatorPerformance'(s1: $1_stake_IndividualValidatorPerformance, s2: $1_stake_IndividualValidatorPerformance): bool { - s1 == s2 -} - -// struct stake::JoinValidatorSetEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:240:5+83 -type {:datatype} $1_stake_JoinValidatorSetEvent; -function {:constructor} $1_stake_JoinValidatorSetEvent($pool_address: int): $1_stake_JoinValidatorSetEvent; -function {:inline} $Update'$1_stake_JoinValidatorSetEvent'_pool_address(s: $1_stake_JoinValidatorSetEvent, x: int): $1_stake_JoinValidatorSetEvent { - $1_stake_JoinValidatorSetEvent(x) -} -function $IsValid'$1_stake_JoinValidatorSetEvent'(s: $1_stake_JoinValidatorSetEvent): bool { - $IsValid'address'($pool_address#$1_stake_JoinValidatorSetEvent(s)) -} -function {:inline} $IsEqual'$1_stake_JoinValidatorSetEvent'(s1: $1_stake_JoinValidatorSetEvent, s2: $1_stake_JoinValidatorSetEvent): bool { - s1 == s2 -} - -// struct stake::LeaveValidatorSetEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:259:5+84 -type {:datatype} $1_stake_LeaveValidatorSetEvent; -function {:constructor} $1_stake_LeaveValidatorSetEvent($pool_address: int): $1_stake_LeaveValidatorSetEvent; -function {:inline} $Update'$1_stake_LeaveValidatorSetEvent'_pool_address(s: $1_stake_LeaveValidatorSetEvent, x: int): $1_stake_LeaveValidatorSetEvent { - $1_stake_LeaveValidatorSetEvent(x) -} -function $IsValid'$1_stake_LeaveValidatorSetEvent'(s: $1_stake_LeaveValidatorSetEvent): bool { - $IsValid'address'($pool_address#$1_stake_LeaveValidatorSetEvent(s)) -} -function {:inline} $IsEqual'$1_stake_LeaveValidatorSetEvent'(s1: $1_stake_LeaveValidatorSetEvent, s2: $1_stake_LeaveValidatorSetEvent): bool { - s1 == s2 -} - -// struct stake::OwnerCapability at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:100:5+76 -type {:datatype} $1_stake_OwnerCapability; -function {:constructor} $1_stake_OwnerCapability($pool_address: int): $1_stake_OwnerCapability; -function {:inline} $Update'$1_stake_OwnerCapability'_pool_address(s: $1_stake_OwnerCapability, x: int): $1_stake_OwnerCapability { - $1_stake_OwnerCapability(x) -} -function $IsValid'$1_stake_OwnerCapability'(s: $1_stake_OwnerCapability): bool { - $IsValid'address'($pool_address#$1_stake_OwnerCapability(s)) -} -function {:inline} $IsEqual'$1_stake_OwnerCapability'(s1: $1_stake_OwnerCapability, s2: $1_stake_OwnerCapability): bool { - s1 == s2 -} -var $1_stake_OwnerCapability_$memory: $Memory $1_stake_OwnerCapability; - -// struct stake::ReactivateStakeEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:215:5+103 -type {:datatype} $1_stake_ReactivateStakeEvent; -function {:constructor} $1_stake_ReactivateStakeEvent($pool_address: int, $amount: int): $1_stake_ReactivateStakeEvent; -function {:inline} $Update'$1_stake_ReactivateStakeEvent'_pool_address(s: $1_stake_ReactivateStakeEvent, x: int): $1_stake_ReactivateStakeEvent { - $1_stake_ReactivateStakeEvent(x, $amount#$1_stake_ReactivateStakeEvent(s)) -} -function {:inline} $Update'$1_stake_ReactivateStakeEvent'_amount(s: $1_stake_ReactivateStakeEvent, x: int): $1_stake_ReactivateStakeEvent { - $1_stake_ReactivateStakeEvent($pool_address#$1_stake_ReactivateStakeEvent(s), x) -} -function $IsValid'$1_stake_ReactivateStakeEvent'(s: $1_stake_ReactivateStakeEvent): bool { - $IsValid'address'($pool_address#$1_stake_ReactivateStakeEvent(s)) - && $IsValid'u64'($amount#$1_stake_ReactivateStakeEvent(s)) -} -function {:inline} $IsEqual'$1_stake_ReactivateStakeEvent'(s1: $1_stake_ReactivateStakeEvent, s2: $1_stake_ReactivateStakeEvent): bool { - s1 == s2 -} - -// struct stake::RegisterValidatorCandidateEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:200:5+93 -type {:datatype} $1_stake_RegisterValidatorCandidateEvent; -function {:constructor} $1_stake_RegisterValidatorCandidateEvent($pool_address: int): $1_stake_RegisterValidatorCandidateEvent; -function {:inline} $Update'$1_stake_RegisterValidatorCandidateEvent'_pool_address(s: $1_stake_RegisterValidatorCandidateEvent, x: int): $1_stake_RegisterValidatorCandidateEvent { - $1_stake_RegisterValidatorCandidateEvent(x) -} -function $IsValid'$1_stake_RegisterValidatorCandidateEvent'(s: $1_stake_RegisterValidatorCandidateEvent): bool { - $IsValid'address'($pool_address#$1_stake_RegisterValidatorCandidateEvent(s)) -} -function {:inline} $IsEqual'$1_stake_RegisterValidatorCandidateEvent'(s1: $1_stake_RegisterValidatorCandidateEvent, s2: $1_stake_RegisterValidatorCandidateEvent): bool { - s1 == s2 -} - -// struct stake::RotateConsensusKeyEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:220:5+169 -type {:datatype} $1_stake_RotateConsensusKeyEvent; -function {:constructor} $1_stake_RotateConsensusKeyEvent($pool_address: int, $old_consensus_pubkey: Vec (int), $new_consensus_pubkey: Vec (int)): $1_stake_RotateConsensusKeyEvent; -function {:inline} $Update'$1_stake_RotateConsensusKeyEvent'_pool_address(s: $1_stake_RotateConsensusKeyEvent, x: int): $1_stake_RotateConsensusKeyEvent { - $1_stake_RotateConsensusKeyEvent(x, $old_consensus_pubkey#$1_stake_RotateConsensusKeyEvent(s), $new_consensus_pubkey#$1_stake_RotateConsensusKeyEvent(s)) -} -function {:inline} $Update'$1_stake_RotateConsensusKeyEvent'_old_consensus_pubkey(s: $1_stake_RotateConsensusKeyEvent, x: Vec (int)): $1_stake_RotateConsensusKeyEvent { - $1_stake_RotateConsensusKeyEvent($pool_address#$1_stake_RotateConsensusKeyEvent(s), x, $new_consensus_pubkey#$1_stake_RotateConsensusKeyEvent(s)) -} -function {:inline} $Update'$1_stake_RotateConsensusKeyEvent'_new_consensus_pubkey(s: $1_stake_RotateConsensusKeyEvent, x: Vec (int)): $1_stake_RotateConsensusKeyEvent { - $1_stake_RotateConsensusKeyEvent($pool_address#$1_stake_RotateConsensusKeyEvent(s), $old_consensus_pubkey#$1_stake_RotateConsensusKeyEvent(s), x) -} -function $IsValid'$1_stake_RotateConsensusKeyEvent'(s: $1_stake_RotateConsensusKeyEvent): bool { - $IsValid'address'($pool_address#$1_stake_RotateConsensusKeyEvent(s)) - && $IsValid'vec'u8''($old_consensus_pubkey#$1_stake_RotateConsensusKeyEvent(s)) - && $IsValid'vec'u8''($new_consensus_pubkey#$1_stake_RotateConsensusKeyEvent(s)) -} -function {:inline} $IsEqual'$1_stake_RotateConsensusKeyEvent'(s1: $1_stake_RotateConsensusKeyEvent, s2: $1_stake_RotateConsensusKeyEvent): bool { - $IsEqual'address'($pool_address#$1_stake_RotateConsensusKeyEvent(s1), $pool_address#$1_stake_RotateConsensusKeyEvent(s2)) - && $IsEqual'vec'u8''($old_consensus_pubkey#$1_stake_RotateConsensusKeyEvent(s1), $old_consensus_pubkey#$1_stake_RotateConsensusKeyEvent(s2)) - && $IsEqual'vec'u8''($new_consensus_pubkey#$1_stake_RotateConsensusKeyEvent(s1), $new_consensus_pubkey#$1_stake_RotateConsensusKeyEvent(s2))} - -// struct stake::SetOperatorEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:204:5+140 -type {:datatype} $1_stake_SetOperatorEvent; -function {:constructor} $1_stake_SetOperatorEvent($pool_address: int, $old_operator: int, $new_operator: int): $1_stake_SetOperatorEvent; -function {:inline} $Update'$1_stake_SetOperatorEvent'_pool_address(s: $1_stake_SetOperatorEvent, x: int): $1_stake_SetOperatorEvent { - $1_stake_SetOperatorEvent(x, $old_operator#$1_stake_SetOperatorEvent(s), $new_operator#$1_stake_SetOperatorEvent(s)) -} -function {:inline} $Update'$1_stake_SetOperatorEvent'_old_operator(s: $1_stake_SetOperatorEvent, x: int): $1_stake_SetOperatorEvent { - $1_stake_SetOperatorEvent($pool_address#$1_stake_SetOperatorEvent(s), x, $new_operator#$1_stake_SetOperatorEvent(s)) -} -function {:inline} $Update'$1_stake_SetOperatorEvent'_new_operator(s: $1_stake_SetOperatorEvent, x: int): $1_stake_SetOperatorEvent { - $1_stake_SetOperatorEvent($pool_address#$1_stake_SetOperatorEvent(s), $old_operator#$1_stake_SetOperatorEvent(s), x) -} -function $IsValid'$1_stake_SetOperatorEvent'(s: $1_stake_SetOperatorEvent): bool { - $IsValid'address'($pool_address#$1_stake_SetOperatorEvent(s)) - && $IsValid'address'($old_operator#$1_stake_SetOperatorEvent(s)) - && $IsValid'address'($new_operator#$1_stake_SetOperatorEvent(s)) -} -function {:inline} $IsEqual'$1_stake_SetOperatorEvent'(s1: $1_stake_SetOperatorEvent, s2: $1_stake_SetOperatorEvent): bool { - s1 == s2 -} - -// struct stake::StakePool at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:115:5+1829 -type {:datatype} $1_stake_StakePool; -function {:constructor} $1_stake_StakePool($active: $1_coin_Coin'$1_aptos_coin_AptosCoin', $inactive: $1_coin_Coin'$1_aptos_coin_AptosCoin', $pending_active: $1_coin_Coin'$1_aptos_coin_AptosCoin', $pending_inactive: $1_coin_Coin'$1_aptos_coin_AptosCoin', $locked_until_secs: int, $operator_address: int, $delegated_voter: int, $initialize_validator_events: $1_event_EventHandle'$1_stake_RegisterValidatorCandidateEvent', $set_operator_events: $1_event_EventHandle'$1_stake_SetOperatorEvent', $add_stake_events: $1_event_EventHandle'$1_stake_AddStakeEvent', $reactivate_stake_events: $1_event_EventHandle'$1_stake_ReactivateStakeEvent', $rotate_consensus_key_events: $1_event_EventHandle'$1_stake_RotateConsensusKeyEvent', $update_network_and_fullnode_addresses_events: $1_event_EventHandle'$1_stake_UpdateNetworkAndFullnodeAddressesEvent', $increase_lockup_events: $1_event_EventHandle'$1_stake_IncreaseLockupEvent', $join_validator_set_events: $1_event_EventHandle'$1_stake_JoinValidatorSetEvent', $distribute_rewards_events: $1_event_EventHandle'$1_stake_DistributeRewardsEvent', $unlock_stake_events: $1_event_EventHandle'$1_stake_UnlockStakeEvent', $withdraw_stake_events: $1_event_EventHandle'$1_stake_WithdrawStakeEvent', $leave_validator_set_events: $1_event_EventHandle'$1_stake_LeaveValidatorSetEvent'): $1_stake_StakePool; -function {:inline} $Update'$1_stake_StakePool'_active(s: $1_stake_StakePool, x: $1_coin_Coin'$1_aptos_coin_AptosCoin'): $1_stake_StakePool { - $1_stake_StakePool(x, $inactive#$1_stake_StakePool(s), $pending_active#$1_stake_StakePool(s), $pending_inactive#$1_stake_StakePool(s), $locked_until_secs#$1_stake_StakePool(s), $operator_address#$1_stake_StakePool(s), $delegated_voter#$1_stake_StakePool(s), $initialize_validator_events#$1_stake_StakePool(s), $set_operator_events#$1_stake_StakePool(s), $add_stake_events#$1_stake_StakePool(s), $reactivate_stake_events#$1_stake_StakePool(s), $rotate_consensus_key_events#$1_stake_StakePool(s), $update_network_and_fullnode_addresses_events#$1_stake_StakePool(s), $increase_lockup_events#$1_stake_StakePool(s), $join_validator_set_events#$1_stake_StakePool(s), $distribute_rewards_events#$1_stake_StakePool(s), $unlock_stake_events#$1_stake_StakePool(s), $withdraw_stake_events#$1_stake_StakePool(s), $leave_validator_set_events#$1_stake_StakePool(s)) -} -function {:inline} $Update'$1_stake_StakePool'_inactive(s: $1_stake_StakePool, x: $1_coin_Coin'$1_aptos_coin_AptosCoin'): $1_stake_StakePool { - $1_stake_StakePool($active#$1_stake_StakePool(s), x, $pending_active#$1_stake_StakePool(s), $pending_inactive#$1_stake_StakePool(s), $locked_until_secs#$1_stake_StakePool(s), $operator_address#$1_stake_StakePool(s), $delegated_voter#$1_stake_StakePool(s), $initialize_validator_events#$1_stake_StakePool(s), $set_operator_events#$1_stake_StakePool(s), $add_stake_events#$1_stake_StakePool(s), $reactivate_stake_events#$1_stake_StakePool(s), $rotate_consensus_key_events#$1_stake_StakePool(s), $update_network_and_fullnode_addresses_events#$1_stake_StakePool(s), $increase_lockup_events#$1_stake_StakePool(s), $join_validator_set_events#$1_stake_StakePool(s), $distribute_rewards_events#$1_stake_StakePool(s), $unlock_stake_events#$1_stake_StakePool(s), $withdraw_stake_events#$1_stake_StakePool(s), $leave_validator_set_events#$1_stake_StakePool(s)) -} -function {:inline} $Update'$1_stake_StakePool'_pending_active(s: $1_stake_StakePool, x: $1_coin_Coin'$1_aptos_coin_AptosCoin'): $1_stake_StakePool { - $1_stake_StakePool($active#$1_stake_StakePool(s), $inactive#$1_stake_StakePool(s), x, $pending_inactive#$1_stake_StakePool(s), $locked_until_secs#$1_stake_StakePool(s), $operator_address#$1_stake_StakePool(s), $delegated_voter#$1_stake_StakePool(s), $initialize_validator_events#$1_stake_StakePool(s), $set_operator_events#$1_stake_StakePool(s), $add_stake_events#$1_stake_StakePool(s), $reactivate_stake_events#$1_stake_StakePool(s), $rotate_consensus_key_events#$1_stake_StakePool(s), $update_network_and_fullnode_addresses_events#$1_stake_StakePool(s), $increase_lockup_events#$1_stake_StakePool(s), $join_validator_set_events#$1_stake_StakePool(s), $distribute_rewards_events#$1_stake_StakePool(s), $unlock_stake_events#$1_stake_StakePool(s), $withdraw_stake_events#$1_stake_StakePool(s), $leave_validator_set_events#$1_stake_StakePool(s)) -} -function {:inline} $Update'$1_stake_StakePool'_pending_inactive(s: $1_stake_StakePool, x: $1_coin_Coin'$1_aptos_coin_AptosCoin'): $1_stake_StakePool { - $1_stake_StakePool($active#$1_stake_StakePool(s), $inactive#$1_stake_StakePool(s), $pending_active#$1_stake_StakePool(s), x, $locked_until_secs#$1_stake_StakePool(s), $operator_address#$1_stake_StakePool(s), $delegated_voter#$1_stake_StakePool(s), $initialize_validator_events#$1_stake_StakePool(s), $set_operator_events#$1_stake_StakePool(s), $add_stake_events#$1_stake_StakePool(s), $reactivate_stake_events#$1_stake_StakePool(s), $rotate_consensus_key_events#$1_stake_StakePool(s), $update_network_and_fullnode_addresses_events#$1_stake_StakePool(s), $increase_lockup_events#$1_stake_StakePool(s), $join_validator_set_events#$1_stake_StakePool(s), $distribute_rewards_events#$1_stake_StakePool(s), $unlock_stake_events#$1_stake_StakePool(s), $withdraw_stake_events#$1_stake_StakePool(s), $leave_validator_set_events#$1_stake_StakePool(s)) -} -function {:inline} $Update'$1_stake_StakePool'_locked_until_secs(s: $1_stake_StakePool, x: int): $1_stake_StakePool { - $1_stake_StakePool($active#$1_stake_StakePool(s), $inactive#$1_stake_StakePool(s), $pending_active#$1_stake_StakePool(s), $pending_inactive#$1_stake_StakePool(s), x, $operator_address#$1_stake_StakePool(s), $delegated_voter#$1_stake_StakePool(s), $initialize_validator_events#$1_stake_StakePool(s), $set_operator_events#$1_stake_StakePool(s), $add_stake_events#$1_stake_StakePool(s), $reactivate_stake_events#$1_stake_StakePool(s), $rotate_consensus_key_events#$1_stake_StakePool(s), $update_network_and_fullnode_addresses_events#$1_stake_StakePool(s), $increase_lockup_events#$1_stake_StakePool(s), $join_validator_set_events#$1_stake_StakePool(s), $distribute_rewards_events#$1_stake_StakePool(s), $unlock_stake_events#$1_stake_StakePool(s), $withdraw_stake_events#$1_stake_StakePool(s), $leave_validator_set_events#$1_stake_StakePool(s)) -} -function {:inline} $Update'$1_stake_StakePool'_operator_address(s: $1_stake_StakePool, x: int): $1_stake_StakePool { - $1_stake_StakePool($active#$1_stake_StakePool(s), $inactive#$1_stake_StakePool(s), $pending_active#$1_stake_StakePool(s), $pending_inactive#$1_stake_StakePool(s), $locked_until_secs#$1_stake_StakePool(s), x, $delegated_voter#$1_stake_StakePool(s), $initialize_validator_events#$1_stake_StakePool(s), $set_operator_events#$1_stake_StakePool(s), $add_stake_events#$1_stake_StakePool(s), $reactivate_stake_events#$1_stake_StakePool(s), $rotate_consensus_key_events#$1_stake_StakePool(s), $update_network_and_fullnode_addresses_events#$1_stake_StakePool(s), $increase_lockup_events#$1_stake_StakePool(s), $join_validator_set_events#$1_stake_StakePool(s), $distribute_rewards_events#$1_stake_StakePool(s), $unlock_stake_events#$1_stake_StakePool(s), $withdraw_stake_events#$1_stake_StakePool(s), $leave_validator_set_events#$1_stake_StakePool(s)) -} -function {:inline} $Update'$1_stake_StakePool'_delegated_voter(s: $1_stake_StakePool, x: int): $1_stake_StakePool { - $1_stake_StakePool($active#$1_stake_StakePool(s), $inactive#$1_stake_StakePool(s), $pending_active#$1_stake_StakePool(s), $pending_inactive#$1_stake_StakePool(s), $locked_until_secs#$1_stake_StakePool(s), $operator_address#$1_stake_StakePool(s), x, $initialize_validator_events#$1_stake_StakePool(s), $set_operator_events#$1_stake_StakePool(s), $add_stake_events#$1_stake_StakePool(s), $reactivate_stake_events#$1_stake_StakePool(s), $rotate_consensus_key_events#$1_stake_StakePool(s), $update_network_and_fullnode_addresses_events#$1_stake_StakePool(s), $increase_lockup_events#$1_stake_StakePool(s), $join_validator_set_events#$1_stake_StakePool(s), $distribute_rewards_events#$1_stake_StakePool(s), $unlock_stake_events#$1_stake_StakePool(s), $withdraw_stake_events#$1_stake_StakePool(s), $leave_validator_set_events#$1_stake_StakePool(s)) -} -function {:inline} $Update'$1_stake_StakePool'_initialize_validator_events(s: $1_stake_StakePool, x: $1_event_EventHandle'$1_stake_RegisterValidatorCandidateEvent'): $1_stake_StakePool { - $1_stake_StakePool($active#$1_stake_StakePool(s), $inactive#$1_stake_StakePool(s), $pending_active#$1_stake_StakePool(s), $pending_inactive#$1_stake_StakePool(s), $locked_until_secs#$1_stake_StakePool(s), $operator_address#$1_stake_StakePool(s), $delegated_voter#$1_stake_StakePool(s), x, $set_operator_events#$1_stake_StakePool(s), $add_stake_events#$1_stake_StakePool(s), $reactivate_stake_events#$1_stake_StakePool(s), $rotate_consensus_key_events#$1_stake_StakePool(s), $update_network_and_fullnode_addresses_events#$1_stake_StakePool(s), $increase_lockup_events#$1_stake_StakePool(s), $join_validator_set_events#$1_stake_StakePool(s), $distribute_rewards_events#$1_stake_StakePool(s), $unlock_stake_events#$1_stake_StakePool(s), $withdraw_stake_events#$1_stake_StakePool(s), $leave_validator_set_events#$1_stake_StakePool(s)) -} -function {:inline} $Update'$1_stake_StakePool'_set_operator_events(s: $1_stake_StakePool, x: $1_event_EventHandle'$1_stake_SetOperatorEvent'): $1_stake_StakePool { - $1_stake_StakePool($active#$1_stake_StakePool(s), $inactive#$1_stake_StakePool(s), $pending_active#$1_stake_StakePool(s), $pending_inactive#$1_stake_StakePool(s), $locked_until_secs#$1_stake_StakePool(s), $operator_address#$1_stake_StakePool(s), $delegated_voter#$1_stake_StakePool(s), $initialize_validator_events#$1_stake_StakePool(s), x, $add_stake_events#$1_stake_StakePool(s), $reactivate_stake_events#$1_stake_StakePool(s), $rotate_consensus_key_events#$1_stake_StakePool(s), $update_network_and_fullnode_addresses_events#$1_stake_StakePool(s), $increase_lockup_events#$1_stake_StakePool(s), $join_validator_set_events#$1_stake_StakePool(s), $distribute_rewards_events#$1_stake_StakePool(s), $unlock_stake_events#$1_stake_StakePool(s), $withdraw_stake_events#$1_stake_StakePool(s), $leave_validator_set_events#$1_stake_StakePool(s)) -} -function {:inline} $Update'$1_stake_StakePool'_add_stake_events(s: $1_stake_StakePool, x: $1_event_EventHandle'$1_stake_AddStakeEvent'): $1_stake_StakePool { - $1_stake_StakePool($active#$1_stake_StakePool(s), $inactive#$1_stake_StakePool(s), $pending_active#$1_stake_StakePool(s), $pending_inactive#$1_stake_StakePool(s), $locked_until_secs#$1_stake_StakePool(s), $operator_address#$1_stake_StakePool(s), $delegated_voter#$1_stake_StakePool(s), $initialize_validator_events#$1_stake_StakePool(s), $set_operator_events#$1_stake_StakePool(s), x, $reactivate_stake_events#$1_stake_StakePool(s), $rotate_consensus_key_events#$1_stake_StakePool(s), $update_network_and_fullnode_addresses_events#$1_stake_StakePool(s), $increase_lockup_events#$1_stake_StakePool(s), $join_validator_set_events#$1_stake_StakePool(s), $distribute_rewards_events#$1_stake_StakePool(s), $unlock_stake_events#$1_stake_StakePool(s), $withdraw_stake_events#$1_stake_StakePool(s), $leave_validator_set_events#$1_stake_StakePool(s)) -} -function {:inline} $Update'$1_stake_StakePool'_reactivate_stake_events(s: $1_stake_StakePool, x: $1_event_EventHandle'$1_stake_ReactivateStakeEvent'): $1_stake_StakePool { - $1_stake_StakePool($active#$1_stake_StakePool(s), $inactive#$1_stake_StakePool(s), $pending_active#$1_stake_StakePool(s), $pending_inactive#$1_stake_StakePool(s), $locked_until_secs#$1_stake_StakePool(s), $operator_address#$1_stake_StakePool(s), $delegated_voter#$1_stake_StakePool(s), $initialize_validator_events#$1_stake_StakePool(s), $set_operator_events#$1_stake_StakePool(s), $add_stake_events#$1_stake_StakePool(s), x, $rotate_consensus_key_events#$1_stake_StakePool(s), $update_network_and_fullnode_addresses_events#$1_stake_StakePool(s), $increase_lockup_events#$1_stake_StakePool(s), $join_validator_set_events#$1_stake_StakePool(s), $distribute_rewards_events#$1_stake_StakePool(s), $unlock_stake_events#$1_stake_StakePool(s), $withdraw_stake_events#$1_stake_StakePool(s), $leave_validator_set_events#$1_stake_StakePool(s)) -} -function {:inline} $Update'$1_stake_StakePool'_rotate_consensus_key_events(s: $1_stake_StakePool, x: $1_event_EventHandle'$1_stake_RotateConsensusKeyEvent'): $1_stake_StakePool { - $1_stake_StakePool($active#$1_stake_StakePool(s), $inactive#$1_stake_StakePool(s), $pending_active#$1_stake_StakePool(s), $pending_inactive#$1_stake_StakePool(s), $locked_until_secs#$1_stake_StakePool(s), $operator_address#$1_stake_StakePool(s), $delegated_voter#$1_stake_StakePool(s), $initialize_validator_events#$1_stake_StakePool(s), $set_operator_events#$1_stake_StakePool(s), $add_stake_events#$1_stake_StakePool(s), $reactivate_stake_events#$1_stake_StakePool(s), x, $update_network_and_fullnode_addresses_events#$1_stake_StakePool(s), $increase_lockup_events#$1_stake_StakePool(s), $join_validator_set_events#$1_stake_StakePool(s), $distribute_rewards_events#$1_stake_StakePool(s), $unlock_stake_events#$1_stake_StakePool(s), $withdraw_stake_events#$1_stake_StakePool(s), $leave_validator_set_events#$1_stake_StakePool(s)) -} -function {:inline} $Update'$1_stake_StakePool'_update_network_and_fullnode_addresses_events(s: $1_stake_StakePool, x: $1_event_EventHandle'$1_stake_UpdateNetworkAndFullnodeAddressesEvent'): $1_stake_StakePool { - $1_stake_StakePool($active#$1_stake_StakePool(s), $inactive#$1_stake_StakePool(s), $pending_active#$1_stake_StakePool(s), $pending_inactive#$1_stake_StakePool(s), $locked_until_secs#$1_stake_StakePool(s), $operator_address#$1_stake_StakePool(s), $delegated_voter#$1_stake_StakePool(s), $initialize_validator_events#$1_stake_StakePool(s), $set_operator_events#$1_stake_StakePool(s), $add_stake_events#$1_stake_StakePool(s), $reactivate_stake_events#$1_stake_StakePool(s), $rotate_consensus_key_events#$1_stake_StakePool(s), x, $increase_lockup_events#$1_stake_StakePool(s), $join_validator_set_events#$1_stake_StakePool(s), $distribute_rewards_events#$1_stake_StakePool(s), $unlock_stake_events#$1_stake_StakePool(s), $withdraw_stake_events#$1_stake_StakePool(s), $leave_validator_set_events#$1_stake_StakePool(s)) -} -function {:inline} $Update'$1_stake_StakePool'_increase_lockup_events(s: $1_stake_StakePool, x: $1_event_EventHandle'$1_stake_IncreaseLockupEvent'): $1_stake_StakePool { - $1_stake_StakePool($active#$1_stake_StakePool(s), $inactive#$1_stake_StakePool(s), $pending_active#$1_stake_StakePool(s), $pending_inactive#$1_stake_StakePool(s), $locked_until_secs#$1_stake_StakePool(s), $operator_address#$1_stake_StakePool(s), $delegated_voter#$1_stake_StakePool(s), $initialize_validator_events#$1_stake_StakePool(s), $set_operator_events#$1_stake_StakePool(s), $add_stake_events#$1_stake_StakePool(s), $reactivate_stake_events#$1_stake_StakePool(s), $rotate_consensus_key_events#$1_stake_StakePool(s), $update_network_and_fullnode_addresses_events#$1_stake_StakePool(s), x, $join_validator_set_events#$1_stake_StakePool(s), $distribute_rewards_events#$1_stake_StakePool(s), $unlock_stake_events#$1_stake_StakePool(s), $withdraw_stake_events#$1_stake_StakePool(s), $leave_validator_set_events#$1_stake_StakePool(s)) -} -function {:inline} $Update'$1_stake_StakePool'_join_validator_set_events(s: $1_stake_StakePool, x: $1_event_EventHandle'$1_stake_JoinValidatorSetEvent'): $1_stake_StakePool { - $1_stake_StakePool($active#$1_stake_StakePool(s), $inactive#$1_stake_StakePool(s), $pending_active#$1_stake_StakePool(s), $pending_inactive#$1_stake_StakePool(s), $locked_until_secs#$1_stake_StakePool(s), $operator_address#$1_stake_StakePool(s), $delegated_voter#$1_stake_StakePool(s), $initialize_validator_events#$1_stake_StakePool(s), $set_operator_events#$1_stake_StakePool(s), $add_stake_events#$1_stake_StakePool(s), $reactivate_stake_events#$1_stake_StakePool(s), $rotate_consensus_key_events#$1_stake_StakePool(s), $update_network_and_fullnode_addresses_events#$1_stake_StakePool(s), $increase_lockup_events#$1_stake_StakePool(s), x, $distribute_rewards_events#$1_stake_StakePool(s), $unlock_stake_events#$1_stake_StakePool(s), $withdraw_stake_events#$1_stake_StakePool(s), $leave_validator_set_events#$1_stake_StakePool(s)) -} -function {:inline} $Update'$1_stake_StakePool'_distribute_rewards_events(s: $1_stake_StakePool, x: $1_event_EventHandle'$1_stake_DistributeRewardsEvent'): $1_stake_StakePool { - $1_stake_StakePool($active#$1_stake_StakePool(s), $inactive#$1_stake_StakePool(s), $pending_active#$1_stake_StakePool(s), $pending_inactive#$1_stake_StakePool(s), $locked_until_secs#$1_stake_StakePool(s), $operator_address#$1_stake_StakePool(s), $delegated_voter#$1_stake_StakePool(s), $initialize_validator_events#$1_stake_StakePool(s), $set_operator_events#$1_stake_StakePool(s), $add_stake_events#$1_stake_StakePool(s), $reactivate_stake_events#$1_stake_StakePool(s), $rotate_consensus_key_events#$1_stake_StakePool(s), $update_network_and_fullnode_addresses_events#$1_stake_StakePool(s), $increase_lockup_events#$1_stake_StakePool(s), $join_validator_set_events#$1_stake_StakePool(s), x, $unlock_stake_events#$1_stake_StakePool(s), $withdraw_stake_events#$1_stake_StakePool(s), $leave_validator_set_events#$1_stake_StakePool(s)) -} -function {:inline} $Update'$1_stake_StakePool'_unlock_stake_events(s: $1_stake_StakePool, x: $1_event_EventHandle'$1_stake_UnlockStakeEvent'): $1_stake_StakePool { - $1_stake_StakePool($active#$1_stake_StakePool(s), $inactive#$1_stake_StakePool(s), $pending_active#$1_stake_StakePool(s), $pending_inactive#$1_stake_StakePool(s), $locked_until_secs#$1_stake_StakePool(s), $operator_address#$1_stake_StakePool(s), $delegated_voter#$1_stake_StakePool(s), $initialize_validator_events#$1_stake_StakePool(s), $set_operator_events#$1_stake_StakePool(s), $add_stake_events#$1_stake_StakePool(s), $reactivate_stake_events#$1_stake_StakePool(s), $rotate_consensus_key_events#$1_stake_StakePool(s), $update_network_and_fullnode_addresses_events#$1_stake_StakePool(s), $increase_lockup_events#$1_stake_StakePool(s), $join_validator_set_events#$1_stake_StakePool(s), $distribute_rewards_events#$1_stake_StakePool(s), x, $withdraw_stake_events#$1_stake_StakePool(s), $leave_validator_set_events#$1_stake_StakePool(s)) -} -function {:inline} $Update'$1_stake_StakePool'_withdraw_stake_events(s: $1_stake_StakePool, x: $1_event_EventHandle'$1_stake_WithdrawStakeEvent'): $1_stake_StakePool { - $1_stake_StakePool($active#$1_stake_StakePool(s), $inactive#$1_stake_StakePool(s), $pending_active#$1_stake_StakePool(s), $pending_inactive#$1_stake_StakePool(s), $locked_until_secs#$1_stake_StakePool(s), $operator_address#$1_stake_StakePool(s), $delegated_voter#$1_stake_StakePool(s), $initialize_validator_events#$1_stake_StakePool(s), $set_operator_events#$1_stake_StakePool(s), $add_stake_events#$1_stake_StakePool(s), $reactivate_stake_events#$1_stake_StakePool(s), $rotate_consensus_key_events#$1_stake_StakePool(s), $update_network_and_fullnode_addresses_events#$1_stake_StakePool(s), $increase_lockup_events#$1_stake_StakePool(s), $join_validator_set_events#$1_stake_StakePool(s), $distribute_rewards_events#$1_stake_StakePool(s), $unlock_stake_events#$1_stake_StakePool(s), x, $leave_validator_set_events#$1_stake_StakePool(s)) -} -function {:inline} $Update'$1_stake_StakePool'_leave_validator_set_events(s: $1_stake_StakePool, x: $1_event_EventHandle'$1_stake_LeaveValidatorSetEvent'): $1_stake_StakePool { - $1_stake_StakePool($active#$1_stake_StakePool(s), $inactive#$1_stake_StakePool(s), $pending_active#$1_stake_StakePool(s), $pending_inactive#$1_stake_StakePool(s), $locked_until_secs#$1_stake_StakePool(s), $operator_address#$1_stake_StakePool(s), $delegated_voter#$1_stake_StakePool(s), $initialize_validator_events#$1_stake_StakePool(s), $set_operator_events#$1_stake_StakePool(s), $add_stake_events#$1_stake_StakePool(s), $reactivate_stake_events#$1_stake_StakePool(s), $rotate_consensus_key_events#$1_stake_StakePool(s), $update_network_and_fullnode_addresses_events#$1_stake_StakePool(s), $increase_lockup_events#$1_stake_StakePool(s), $join_validator_set_events#$1_stake_StakePool(s), $distribute_rewards_events#$1_stake_StakePool(s), $unlock_stake_events#$1_stake_StakePool(s), $withdraw_stake_events#$1_stake_StakePool(s), x) -} -function $IsValid'$1_stake_StakePool'(s: $1_stake_StakePool): bool { - $IsValid'$1_coin_Coin'$1_aptos_coin_AptosCoin''($active#$1_stake_StakePool(s)) - && $IsValid'$1_coin_Coin'$1_aptos_coin_AptosCoin''($inactive#$1_stake_StakePool(s)) - && $IsValid'$1_coin_Coin'$1_aptos_coin_AptosCoin''($pending_active#$1_stake_StakePool(s)) - && $IsValid'$1_coin_Coin'$1_aptos_coin_AptosCoin''($pending_inactive#$1_stake_StakePool(s)) - && $IsValid'u64'($locked_until_secs#$1_stake_StakePool(s)) - && $IsValid'address'($operator_address#$1_stake_StakePool(s)) - && $IsValid'address'($delegated_voter#$1_stake_StakePool(s)) - && $IsValid'$1_event_EventHandle'$1_stake_RegisterValidatorCandidateEvent''($initialize_validator_events#$1_stake_StakePool(s)) - && $IsValid'$1_event_EventHandle'$1_stake_SetOperatorEvent''($set_operator_events#$1_stake_StakePool(s)) - && $IsValid'$1_event_EventHandle'$1_stake_AddStakeEvent''($add_stake_events#$1_stake_StakePool(s)) - && $IsValid'$1_event_EventHandle'$1_stake_ReactivateStakeEvent''($reactivate_stake_events#$1_stake_StakePool(s)) - && $IsValid'$1_event_EventHandle'$1_stake_RotateConsensusKeyEvent''($rotate_consensus_key_events#$1_stake_StakePool(s)) - && $IsValid'$1_event_EventHandle'$1_stake_UpdateNetworkAndFullnodeAddressesEvent''($update_network_and_fullnode_addresses_events#$1_stake_StakePool(s)) - && $IsValid'$1_event_EventHandle'$1_stake_IncreaseLockupEvent''($increase_lockup_events#$1_stake_StakePool(s)) - && $IsValid'$1_event_EventHandle'$1_stake_JoinValidatorSetEvent''($join_validator_set_events#$1_stake_StakePool(s)) - && $IsValid'$1_event_EventHandle'$1_stake_DistributeRewardsEvent''($distribute_rewards_events#$1_stake_StakePool(s)) - && $IsValid'$1_event_EventHandle'$1_stake_UnlockStakeEvent''($unlock_stake_events#$1_stake_StakePool(s)) - && $IsValid'$1_event_EventHandle'$1_stake_WithdrawStakeEvent''($withdraw_stake_events#$1_stake_StakePool(s)) - && $IsValid'$1_event_EventHandle'$1_stake_LeaveValidatorSetEvent''($leave_validator_set_events#$1_stake_StakePool(s)) -} -function {:inline} $IsEqual'$1_stake_StakePool'(s1: $1_stake_StakePool, s2: $1_stake_StakePool): bool { - s1 == s2 -} -var $1_stake_StakePool_$memory: $Memory $1_stake_StakePool; - -// struct stake::UnlockStakeEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:249:5+108 -type {:datatype} $1_stake_UnlockStakeEvent; -function {:constructor} $1_stake_UnlockStakeEvent($pool_address: int, $amount_unlocked: int): $1_stake_UnlockStakeEvent; -function {:inline} $Update'$1_stake_UnlockStakeEvent'_pool_address(s: $1_stake_UnlockStakeEvent, x: int): $1_stake_UnlockStakeEvent { - $1_stake_UnlockStakeEvent(x, $amount_unlocked#$1_stake_UnlockStakeEvent(s)) -} -function {:inline} $Update'$1_stake_UnlockStakeEvent'_amount_unlocked(s: $1_stake_UnlockStakeEvent, x: int): $1_stake_UnlockStakeEvent { - $1_stake_UnlockStakeEvent($pool_address#$1_stake_UnlockStakeEvent(s), x) -} -function $IsValid'$1_stake_UnlockStakeEvent'(s: $1_stake_UnlockStakeEvent): bool { - $IsValid'address'($pool_address#$1_stake_UnlockStakeEvent(s)) - && $IsValid'u64'($amount_unlocked#$1_stake_UnlockStakeEvent(s)) -} -function {:inline} $IsEqual'$1_stake_UnlockStakeEvent'(s1: $1_stake_UnlockStakeEvent, s2: $1_stake_UnlockStakeEvent): bool { - s1 == s2 -} - -// struct stake::UpdateNetworkAndFullnodeAddressesEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:226:5+274 -type {:datatype} $1_stake_UpdateNetworkAndFullnodeAddressesEvent; -function {:constructor} $1_stake_UpdateNetworkAndFullnodeAddressesEvent($pool_address: int, $old_network_addresses: Vec (int), $new_network_addresses: Vec (int), $old_fullnode_addresses: Vec (int), $new_fullnode_addresses: Vec (int)): $1_stake_UpdateNetworkAndFullnodeAddressesEvent; -function {:inline} $Update'$1_stake_UpdateNetworkAndFullnodeAddressesEvent'_pool_address(s: $1_stake_UpdateNetworkAndFullnodeAddressesEvent, x: int): $1_stake_UpdateNetworkAndFullnodeAddressesEvent { - $1_stake_UpdateNetworkAndFullnodeAddressesEvent(x, $old_network_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s), $new_network_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s), $old_fullnode_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s), $new_fullnode_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s)) -} -function {:inline} $Update'$1_stake_UpdateNetworkAndFullnodeAddressesEvent'_old_network_addresses(s: $1_stake_UpdateNetworkAndFullnodeAddressesEvent, x: Vec (int)): $1_stake_UpdateNetworkAndFullnodeAddressesEvent { - $1_stake_UpdateNetworkAndFullnodeAddressesEvent($pool_address#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s), x, $new_network_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s), $old_fullnode_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s), $new_fullnode_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s)) -} -function {:inline} $Update'$1_stake_UpdateNetworkAndFullnodeAddressesEvent'_new_network_addresses(s: $1_stake_UpdateNetworkAndFullnodeAddressesEvent, x: Vec (int)): $1_stake_UpdateNetworkAndFullnodeAddressesEvent { - $1_stake_UpdateNetworkAndFullnodeAddressesEvent($pool_address#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s), $old_network_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s), x, $old_fullnode_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s), $new_fullnode_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s)) -} -function {:inline} $Update'$1_stake_UpdateNetworkAndFullnodeAddressesEvent'_old_fullnode_addresses(s: $1_stake_UpdateNetworkAndFullnodeAddressesEvent, x: Vec (int)): $1_stake_UpdateNetworkAndFullnodeAddressesEvent { - $1_stake_UpdateNetworkAndFullnodeAddressesEvent($pool_address#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s), $old_network_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s), $new_network_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s), x, $new_fullnode_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s)) -} -function {:inline} $Update'$1_stake_UpdateNetworkAndFullnodeAddressesEvent'_new_fullnode_addresses(s: $1_stake_UpdateNetworkAndFullnodeAddressesEvent, x: Vec (int)): $1_stake_UpdateNetworkAndFullnodeAddressesEvent { - $1_stake_UpdateNetworkAndFullnodeAddressesEvent($pool_address#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s), $old_network_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s), $new_network_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s), $old_fullnode_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s), x) -} -function $IsValid'$1_stake_UpdateNetworkAndFullnodeAddressesEvent'(s: $1_stake_UpdateNetworkAndFullnodeAddressesEvent): bool { - $IsValid'address'($pool_address#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s)) - && $IsValid'vec'u8''($old_network_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s)) - && $IsValid'vec'u8''($new_network_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s)) - && $IsValid'vec'u8''($old_fullnode_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s)) - && $IsValid'vec'u8''($new_fullnode_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s)) -} -function {:inline} $IsEqual'$1_stake_UpdateNetworkAndFullnodeAddressesEvent'(s1: $1_stake_UpdateNetworkAndFullnodeAddressesEvent, s2: $1_stake_UpdateNetworkAndFullnodeAddressesEvent): bool { - $IsEqual'address'($pool_address#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s1), $pool_address#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s2)) - && $IsEqual'vec'u8''($old_network_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s1), $old_network_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s2)) - && $IsEqual'vec'u8''($new_network_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s1), $new_network_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s2)) - && $IsEqual'vec'u8''($old_fullnode_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s1), $old_fullnode_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s2)) - && $IsEqual'vec'u8''($new_fullnode_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s1), $new_fullnode_addresses#$1_stake_UpdateNetworkAndFullnodeAddressesEvent(s2))} - -// struct stake::ValidatorConfig at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:151:5+372 -type {:datatype} $1_stake_ValidatorConfig; -function {:constructor} $1_stake_ValidatorConfig($consensus_pubkey: Vec (int), $network_addresses: Vec (int), $fullnode_addresses: Vec (int), $validator_index: int): $1_stake_ValidatorConfig; -function {:inline} $Update'$1_stake_ValidatorConfig'_consensus_pubkey(s: $1_stake_ValidatorConfig, x: Vec (int)): $1_stake_ValidatorConfig { - $1_stake_ValidatorConfig(x, $network_addresses#$1_stake_ValidatorConfig(s), $fullnode_addresses#$1_stake_ValidatorConfig(s), $validator_index#$1_stake_ValidatorConfig(s)) -} -function {:inline} $Update'$1_stake_ValidatorConfig'_network_addresses(s: $1_stake_ValidatorConfig, x: Vec (int)): $1_stake_ValidatorConfig { - $1_stake_ValidatorConfig($consensus_pubkey#$1_stake_ValidatorConfig(s), x, $fullnode_addresses#$1_stake_ValidatorConfig(s), $validator_index#$1_stake_ValidatorConfig(s)) -} -function {:inline} $Update'$1_stake_ValidatorConfig'_fullnode_addresses(s: $1_stake_ValidatorConfig, x: Vec (int)): $1_stake_ValidatorConfig { - $1_stake_ValidatorConfig($consensus_pubkey#$1_stake_ValidatorConfig(s), $network_addresses#$1_stake_ValidatorConfig(s), x, $validator_index#$1_stake_ValidatorConfig(s)) -} -function {:inline} $Update'$1_stake_ValidatorConfig'_validator_index(s: $1_stake_ValidatorConfig, x: int): $1_stake_ValidatorConfig { - $1_stake_ValidatorConfig($consensus_pubkey#$1_stake_ValidatorConfig(s), $network_addresses#$1_stake_ValidatorConfig(s), $fullnode_addresses#$1_stake_ValidatorConfig(s), x) -} -function $IsValid'$1_stake_ValidatorConfig'(s: $1_stake_ValidatorConfig): bool { - $IsValid'vec'u8''($consensus_pubkey#$1_stake_ValidatorConfig(s)) - && $IsValid'vec'u8''($network_addresses#$1_stake_ValidatorConfig(s)) - && $IsValid'vec'u8''($fullnode_addresses#$1_stake_ValidatorConfig(s)) - && $IsValid'u64'($validator_index#$1_stake_ValidatorConfig(s)) -} -function {:inline} $IsEqual'$1_stake_ValidatorConfig'(s1: $1_stake_ValidatorConfig, s2: $1_stake_ValidatorConfig): bool { - $IsEqual'vec'u8''($consensus_pubkey#$1_stake_ValidatorConfig(s1), $consensus_pubkey#$1_stake_ValidatorConfig(s2)) - && $IsEqual'vec'u8''($network_addresses#$1_stake_ValidatorConfig(s1), $network_addresses#$1_stake_ValidatorConfig(s2)) - && $IsEqual'vec'u8''($fullnode_addresses#$1_stake_ValidatorConfig(s1), $fullnode_addresses#$1_stake_ValidatorConfig(s2)) - && $IsEqual'u64'($validator_index#$1_stake_ValidatorConfig(s1), $validator_index#$1_stake_ValidatorConfig(s2))} -var $1_stake_ValidatorConfig_$memory: $Memory $1_stake_ValidatorConfig; - -// struct stake::ValidatorInfo at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:161:5+133 -type {:datatype} $1_stake_ValidatorInfo; -function {:constructor} $1_stake_ValidatorInfo($addr: int, $voting_power: int, $config: $1_stake_ValidatorConfig): $1_stake_ValidatorInfo; -function {:inline} $Update'$1_stake_ValidatorInfo'_addr(s: $1_stake_ValidatorInfo, x: int): $1_stake_ValidatorInfo { - $1_stake_ValidatorInfo(x, $voting_power#$1_stake_ValidatorInfo(s), $config#$1_stake_ValidatorInfo(s)) -} -function {:inline} $Update'$1_stake_ValidatorInfo'_voting_power(s: $1_stake_ValidatorInfo, x: int): $1_stake_ValidatorInfo { - $1_stake_ValidatorInfo($addr#$1_stake_ValidatorInfo(s), x, $config#$1_stake_ValidatorInfo(s)) -} -function {:inline} $Update'$1_stake_ValidatorInfo'_config(s: $1_stake_ValidatorInfo, x: $1_stake_ValidatorConfig): $1_stake_ValidatorInfo { - $1_stake_ValidatorInfo($addr#$1_stake_ValidatorInfo(s), $voting_power#$1_stake_ValidatorInfo(s), x) -} -function $IsValid'$1_stake_ValidatorInfo'(s: $1_stake_ValidatorInfo): bool { - $IsValid'address'($addr#$1_stake_ValidatorInfo(s)) - && $IsValid'u64'($voting_power#$1_stake_ValidatorInfo(s)) - && $IsValid'$1_stake_ValidatorConfig'($config#$1_stake_ValidatorInfo(s)) -} -function {:inline} $IsEqual'$1_stake_ValidatorInfo'(s1: $1_stake_ValidatorInfo, s2: $1_stake_ValidatorInfo): bool { - $IsEqual'address'($addr#$1_stake_ValidatorInfo(s1), $addr#$1_stake_ValidatorInfo(s2)) - && $IsEqual'u64'($voting_power#$1_stake_ValidatorInfo(s1), $voting_power#$1_stake_ValidatorInfo(s2)) - && $IsEqual'$1_stake_ValidatorConfig'($config#$1_stake_ValidatorInfo(s1), $config#$1_stake_ValidatorInfo(s2))} - -// struct stake::ValidatorPerformance at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:196:5+103 -type {:datatype} $1_stake_ValidatorPerformance; -function {:constructor} $1_stake_ValidatorPerformance($validators: Vec ($1_stake_IndividualValidatorPerformance)): $1_stake_ValidatorPerformance; -function {:inline} $Update'$1_stake_ValidatorPerformance'_validators(s: $1_stake_ValidatorPerformance, x: Vec ($1_stake_IndividualValidatorPerformance)): $1_stake_ValidatorPerformance { - $1_stake_ValidatorPerformance(x) -} -function $IsValid'$1_stake_ValidatorPerformance'(s: $1_stake_ValidatorPerformance): bool { - $IsValid'vec'$1_stake_IndividualValidatorPerformance''($validators#$1_stake_ValidatorPerformance(s)) -} -function {:inline} $IsEqual'$1_stake_ValidatorPerformance'(s1: $1_stake_ValidatorPerformance, s2: $1_stake_ValidatorPerformance): bool { - $IsEqual'vec'$1_stake_IndividualValidatorPerformance''($validators#$1_stake_ValidatorPerformance(s1), $validators#$1_stake_ValidatorPerformance(s2))} -var $1_stake_ValidatorPerformance_$memory: $Memory $1_stake_ValidatorPerformance; - -// struct stake::ValidatorSet at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:171:5+558 -type {:datatype} $1_stake_ValidatorSet; -function {:constructor} $1_stake_ValidatorSet($consensus_scheme: int, $active_validators: Vec ($1_stake_ValidatorInfo), $pending_inactive: Vec ($1_stake_ValidatorInfo), $pending_active: Vec ($1_stake_ValidatorInfo), $total_voting_power: int, $total_joining_power: int): $1_stake_ValidatorSet; -function {:inline} $Update'$1_stake_ValidatorSet'_consensus_scheme(s: $1_stake_ValidatorSet, x: int): $1_stake_ValidatorSet { - $1_stake_ValidatorSet(x, $active_validators#$1_stake_ValidatorSet(s), $pending_inactive#$1_stake_ValidatorSet(s), $pending_active#$1_stake_ValidatorSet(s), $total_voting_power#$1_stake_ValidatorSet(s), $total_joining_power#$1_stake_ValidatorSet(s)) -} -function {:inline} $Update'$1_stake_ValidatorSet'_active_validators(s: $1_stake_ValidatorSet, x: Vec ($1_stake_ValidatorInfo)): $1_stake_ValidatorSet { - $1_stake_ValidatorSet($consensus_scheme#$1_stake_ValidatorSet(s), x, $pending_inactive#$1_stake_ValidatorSet(s), $pending_active#$1_stake_ValidatorSet(s), $total_voting_power#$1_stake_ValidatorSet(s), $total_joining_power#$1_stake_ValidatorSet(s)) -} -function {:inline} $Update'$1_stake_ValidatorSet'_pending_inactive(s: $1_stake_ValidatorSet, x: Vec ($1_stake_ValidatorInfo)): $1_stake_ValidatorSet { - $1_stake_ValidatorSet($consensus_scheme#$1_stake_ValidatorSet(s), $active_validators#$1_stake_ValidatorSet(s), x, $pending_active#$1_stake_ValidatorSet(s), $total_voting_power#$1_stake_ValidatorSet(s), $total_joining_power#$1_stake_ValidatorSet(s)) -} -function {:inline} $Update'$1_stake_ValidatorSet'_pending_active(s: $1_stake_ValidatorSet, x: Vec ($1_stake_ValidatorInfo)): $1_stake_ValidatorSet { - $1_stake_ValidatorSet($consensus_scheme#$1_stake_ValidatorSet(s), $active_validators#$1_stake_ValidatorSet(s), $pending_inactive#$1_stake_ValidatorSet(s), x, $total_voting_power#$1_stake_ValidatorSet(s), $total_joining_power#$1_stake_ValidatorSet(s)) -} -function {:inline} $Update'$1_stake_ValidatorSet'_total_voting_power(s: $1_stake_ValidatorSet, x: int): $1_stake_ValidatorSet { - $1_stake_ValidatorSet($consensus_scheme#$1_stake_ValidatorSet(s), $active_validators#$1_stake_ValidatorSet(s), $pending_inactive#$1_stake_ValidatorSet(s), $pending_active#$1_stake_ValidatorSet(s), x, $total_joining_power#$1_stake_ValidatorSet(s)) -} -function {:inline} $Update'$1_stake_ValidatorSet'_total_joining_power(s: $1_stake_ValidatorSet, x: int): $1_stake_ValidatorSet { - $1_stake_ValidatorSet($consensus_scheme#$1_stake_ValidatorSet(s), $active_validators#$1_stake_ValidatorSet(s), $pending_inactive#$1_stake_ValidatorSet(s), $pending_active#$1_stake_ValidatorSet(s), $total_voting_power#$1_stake_ValidatorSet(s), x) -} -function $IsValid'$1_stake_ValidatorSet'(s: $1_stake_ValidatorSet): bool { - $IsValid'u8'($consensus_scheme#$1_stake_ValidatorSet(s)) - && $IsValid'vec'$1_stake_ValidatorInfo''($active_validators#$1_stake_ValidatorSet(s)) - && $IsValid'vec'$1_stake_ValidatorInfo''($pending_inactive#$1_stake_ValidatorSet(s)) - && $IsValid'vec'$1_stake_ValidatorInfo''($pending_active#$1_stake_ValidatorSet(s)) - && $IsValid'u128'($total_voting_power#$1_stake_ValidatorSet(s)) - && $IsValid'u128'($total_joining_power#$1_stake_ValidatorSet(s)) -} -function {:inline} $IsEqual'$1_stake_ValidatorSet'(s1: $1_stake_ValidatorSet, s2: $1_stake_ValidatorSet): bool { - $IsEqual'u8'($consensus_scheme#$1_stake_ValidatorSet(s1), $consensus_scheme#$1_stake_ValidatorSet(s2)) - && $IsEqual'vec'$1_stake_ValidatorInfo''($active_validators#$1_stake_ValidatorSet(s1), $active_validators#$1_stake_ValidatorSet(s2)) - && $IsEqual'vec'$1_stake_ValidatorInfo''($pending_inactive#$1_stake_ValidatorSet(s1), $pending_inactive#$1_stake_ValidatorSet(s2)) - && $IsEqual'vec'$1_stake_ValidatorInfo''($pending_active#$1_stake_ValidatorSet(s1), $pending_active#$1_stake_ValidatorSet(s2)) - && $IsEqual'u128'($total_voting_power#$1_stake_ValidatorSet(s1), $total_voting_power#$1_stake_ValidatorSet(s2)) - && $IsEqual'u128'($total_joining_power#$1_stake_ValidatorSet(s1), $total_joining_power#$1_stake_ValidatorSet(s2))} -var $1_stake_ValidatorSet_$memory: $Memory $1_stake_ValidatorSet; - -// struct stake::WithdrawStakeEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:254:5+111 -type {:datatype} $1_stake_WithdrawStakeEvent; -function {:constructor} $1_stake_WithdrawStakeEvent($pool_address: int, $amount_withdrawn: int): $1_stake_WithdrawStakeEvent; -function {:inline} $Update'$1_stake_WithdrawStakeEvent'_pool_address(s: $1_stake_WithdrawStakeEvent, x: int): $1_stake_WithdrawStakeEvent { - $1_stake_WithdrawStakeEvent(x, $amount_withdrawn#$1_stake_WithdrawStakeEvent(s)) -} -function {:inline} $Update'$1_stake_WithdrawStakeEvent'_amount_withdrawn(s: $1_stake_WithdrawStakeEvent, x: int): $1_stake_WithdrawStakeEvent { - $1_stake_WithdrawStakeEvent($pool_address#$1_stake_WithdrawStakeEvent(s), x) -} -function $IsValid'$1_stake_WithdrawStakeEvent'(s: $1_stake_WithdrawStakeEvent): bool { - $IsValid'address'($pool_address#$1_stake_WithdrawStakeEvent(s)) - && $IsValid'u64'($amount_withdrawn#$1_stake_WithdrawStakeEvent(s)) -} -function {:inline} $IsEqual'$1_stake_WithdrawStakeEvent'(s1: $1_stake_WithdrawStakeEvent, s2: $1_stake_WithdrawStakeEvent): bool { - s1 == s2 -} - -// fun stake::assert_stake_pool_exists [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:1319:5+162 -procedure {:inline 1} $1_stake_assert_stake_pool_exists(_$t0: int) returns () -{ - // declare local variables - var $t1: bool; - var $t2: int; - var $t3: int; - var $t4: int; - var $t0: int; - var $temp_0'address': int; - $t0 := _$t0; - - // bytecode translation starts here - // trace_local[pool_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:1319:5+1 - assume {:print "$at(138,62960,62961)"} true; - assume {:print "$track_local(38,5,0):", $t0} $t0 == $t0; - - // $t1 := stake::stake_pool_exists($t0) on_abort goto L4 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:1320:17+31 - assume {:print "$at(138,63030,63061)"} true; - call $t1 := $1_stake_stake_pool_exists($t0); - if ($abort_flag) { - assume {:print "$at(138,63030,63061)"} true; - $t2 := $abort_code; - assume {:print "$track_abort(38,5):", $t2} $t2 == $t2; - goto L4; - } - - // if ($t1) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:1320:9+93 - if ($t1) { goto L1; } else { goto L0; } - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:1320:9+93 -L1: - - // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:1320:9+93 - assume {:print "$at(138,63022,63115)"} true; - goto L2; - - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:1320:74+26 -L0: - - // $t3 := 14 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:1320:74+26 - assume {:print "$at(138,63087,63113)"} true; - $t3 := 14; - assume $IsValid'u64'($t3); - - // $t4 := error::invalid_argument($t3) on_abort goto L4 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:1320:50+51 - call $t4 := $1_error_invalid_argument($t3); - if ($abort_flag) { - assume {:print "$at(138,63063,63114)"} true; - $t2 := $abort_code; - assume {:print "$track_abort(38,5):", $t2} $t2 == $t2; - goto L4; - } - - // trace_abort($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:1320:9+93 - assume {:print "$at(138,63022,63115)"} true; - assume {:print "$track_abort(38,5):", $t4} $t4 == $t4; - - // $t2 := move($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:1320:9+93 - $t2 := $t4; - - // goto L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:1320:9+93 - goto L4; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:1320:102+1 -L2: - - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:1321:5+1 - assume {:print "$at(138,63121,63122)"} true; -L3: - - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:1321:5+1 - assume {:print "$at(138,63121,63122)"} true; - return; - - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:1321:5+1 -L4: - - // abort($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:1321:5+1 - assume {:print "$at(138,63121,63122)"} true; - $abort_code := $t2; - $abort_flag := true; - return; - -} - -// fun stake::get_delegated_voter [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:359:5+200 -procedure {:inline 1} $1_stake_get_delegated_voter(_$t0: int) returns ($ret0: int) -{ - // declare local variables - var $t1: int; - var $t2: $1_stake_StakePool; - var $t3: int; - var $t0: int; - var $temp_0'address': int; - $t0 := _$t0; - - // bytecode translation starts here - // trace_local[pool_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:359:5+1 - assume {:print "$at(138,16317,16318)"} true; - assume {:print "$track_local(38,16,0):", $t0} $t0 == $t0; - - // stake::assert_stake_pool_exists($t0) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:360:9+38 - assume {:print "$at(138,16409,16447)"} true; - call $1_stake_assert_stake_pool_exists($t0); - if ($abort_flag) { - assume {:print "$at(138,16409,16447)"} true; - $t1 := $abort_code; - assume {:print "$track_abort(38,16):", $t1} $t1 == $t1; - goto L2; - } - - // $t2 := get_global($t0) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:361:9+13 - assume {:print "$at(138,16457,16470)"} true; - if (!$ResourceExists($1_stake_StakePool_$memory, $t0)) { - call $ExecFailureAbort(); - } else { - $t2 := $ResourceValue($1_stake_StakePool_$memory, $t0); - } - if ($abort_flag) { - assume {:print "$at(138,16457,16470)"} true; - $t1 := $abort_code; - assume {:print "$track_abort(38,16):", $t1} $t1 == $t1; - goto L2; - } - - // $t3 := get_field.delegated_voter($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:361:9+54 - $t3 := $delegated_voter#$1_stake_StakePool($t2); - - // trace_return[0]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:361:9+54 - assume {:print "$track_return(38,16,0):", $t3} $t3 == $t3; - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:362:5+1 - assume {:print "$at(138,16516,16517)"} true; -L1: - - // return $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:362:5+1 - assume {:print "$at(138,16516,16517)"} true; - $ret0 := $t3; - return; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:362:5+1 -L2: - - // abort($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:362:5+1 - assume {:print "$at(138,16516,16517)"} true; - $abort_code := $t1; - $abort_flag := true; - return; - -} - -// fun stake::get_lockup_secs [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:294:5+194 -procedure {:inline 1} $1_stake_get_lockup_secs(_$t0: int) returns ($ret0: int) -{ - // declare local variables - var $t1: int; - var $t2: $1_stake_StakePool; - var $t3: int; - var $t0: int; - var $temp_0'address': int; - var $temp_0'u64': int; - $t0 := _$t0; - - // bytecode translation starts here - // trace_local[pool_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:294:5+1 - assume {:print "$at(138,13232,13233)"} true; - assume {:print "$track_local(38,17,0):", $t0} $t0 == $t0; - - // stake::assert_stake_pool_exists($t0) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:295:9+38 - assume {:print "$at(138,13316,13354)"} true; - call $1_stake_assert_stake_pool_exists($t0); - if ($abort_flag) { - assume {:print "$at(138,13316,13354)"} true; - $t1 := $abort_code; - assume {:print "$track_abort(38,17):", $t1} $t1 == $t1; - goto L2; - } - - // $t2 := get_global($t0) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:296:9+13 - assume {:print "$at(138,13364,13377)"} true; - if (!$ResourceExists($1_stake_StakePool_$memory, $t0)) { - call $ExecFailureAbort(); - } else { - $t2 := $ResourceValue($1_stake_StakePool_$memory, $t0); - } - if ($abort_flag) { - assume {:print "$at(138,13364,13377)"} true; - $t1 := $abort_code; - assume {:print "$track_abort(38,17):", $t1} $t1 == $t1; - goto L2; - } - - // $t3 := get_field.locked_until_secs($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:296:9+56 - $t3 := $locked_until_secs#$1_stake_StakePool($t2); - - // trace_return[0]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:296:9+56 - assume {:print "$track_return(38,17,0):", $t3} $t3 == $t3; - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:297:5+1 - assume {:print "$at(138,13425,13426)"} true; -L1: - - // return $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:297:5+1 - assume {:print "$at(138,13425,13426)"} true; - $ret0 := $t3; - return; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:297:5+1 -L2: - - // abort($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:297:5+1 - assume {:print "$at(138,13425,13426)"} true; - $abort_code := $t1; - $abort_flag := true; - return; - -} - -// fun stake::get_stake [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:315:5+425 -procedure {:inline 1} $1_stake_get_stake(_$t0: int) returns ($ret0: int, $ret1: int, $ret2: int, $ret3: int) -{ - // declare local variables - var $t1: $1_stake_StakePool; - var $t2: int; - var $t3: $1_stake_StakePool; - var $t4: $1_coin_Coin'$1_aptos_coin_AptosCoin'; - var $t5: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; - var $t6: int; - var $t7: $1_coin_Coin'$1_aptos_coin_AptosCoin'; - var $t8: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; - var $t9: int; - var $t10: $1_coin_Coin'$1_aptos_coin_AptosCoin'; - var $t11: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; - var $t12: int; - var $t13: $1_coin_Coin'$1_aptos_coin_AptosCoin'; - var $t14: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; - var $t15: int; - var $t0: int; - var $temp_0'$1_stake_StakePool': $1_stake_StakePool; - var $temp_0'address': int; - var $temp_0'u64': int; - $t0 := _$t0; - - // bytecode translation starts here - // trace_local[pool_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:315:5+1 - assume {:print "$at(138,14196,14197)"} true; - assume {:print "$track_local(38,22,0):", $t0} $t0 == $t0; - - // stake::assert_stake_pool_exists($t0) on_abort goto L2 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:316:9+38 - assume {:print "$at(138,14291,14329)"} true; - call $1_stake_assert_stake_pool_exists($t0); - if ($abort_flag) { - assume {:print "$at(138,14291,14329)"} true; - $t2 := $abort_code; - assume {:print "$track_abort(38,22):", $t2} $t2 == $t2; - goto L2; - } - - // $t3 := get_global($t0) on_abort goto L2 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:317:26+13 - assume {:print "$at(138,14356,14369)"} true; - if (!$ResourceExists($1_stake_StakePool_$memory, $t0)) { - call $ExecFailureAbort(); - } else { - $t3 := $ResourceValue($1_stake_StakePool_$memory, $t0); - } - if ($abort_flag) { - assume {:print "$at(138,14356,14369)"} true; - $t2 := $abort_code; - assume {:print "$track_abort(38,22):", $t2} $t2 == $t2; - goto L2; - } - - // trace_local[stake_pool]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:317:13+10 - assume {:print "$track_local(38,22,1):", $t3} $t3 == $t3; - - // $t4 := get_field.active($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:319:25+18 - assume {:print "$at(138,14430,14448)"} true; - $t4 := $active#$1_stake_StakePool($t3); - - // assume Identical($t5, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 - assume {:print "$at(102,1664,1763)"} true; - assume ($t5 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); - - // $t6 := coin::value($t4) on_abort goto L2 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:319:13+31 - assume {:print "$at(138,14418,14449)"} true; - call $t6 := $1_coin_value'$1_aptos_coin_AptosCoin'($t4); - if ($abort_flag) { - assume {:print "$at(138,14418,14449)"} true; - $t2 := $abort_code; - assume {:print "$track_abort(38,22):", $t2} $t2 == $t2; - goto L2; - } - - // $t7 := get_field.inactive($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:320:25+20 - assume {:print "$at(138,14475,14495)"} true; - $t7 := $inactive#$1_stake_StakePool($t3); - - // assume Identical($t8, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 - assume {:print "$at(102,1664,1763)"} true; - assume ($t8 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); - - // $t9 := coin::value($t7) on_abort goto L2 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:320:13+33 - assume {:print "$at(138,14463,14496)"} true; - call $t9 := $1_coin_value'$1_aptos_coin_AptosCoin'($t7); - if ($abort_flag) { - assume {:print "$at(138,14463,14496)"} true; - $t2 := $abort_code; - assume {:print "$track_abort(38,22):", $t2} $t2 == $t2; - goto L2; - } - - // $t10 := get_field.pending_active($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:321:25+26 - assume {:print "$at(138,14522,14548)"} true; - $t10 := $pending_active#$1_stake_StakePool($t3); - - // assume Identical($t11, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 - assume {:print "$at(102,1664,1763)"} true; - assume ($t11 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); - - // $t12 := coin::value($t10) on_abort goto L2 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:321:13+39 - assume {:print "$at(138,14510,14549)"} true; - call $t12 := $1_coin_value'$1_aptos_coin_AptosCoin'($t10); - if ($abort_flag) { - assume {:print "$at(138,14510,14549)"} true; - $t2 := $abort_code; - assume {:print "$track_abort(38,22):", $t2} $t2 == $t2; - goto L2; - } - - // $t13 := get_field.pending_inactive($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:322:25+28 - assume {:print "$at(138,14575,14603)"} true; - $t13 := $pending_inactive#$1_stake_StakePool($t3); - - // assume Identical($t14, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 - assume {:print "$at(102,1664,1763)"} true; - assume ($t14 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); - - // $t15 := coin::value($t13) on_abort goto L2 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:322:13+41 - assume {:print "$at(138,14563,14604)"} true; - call $t15 := $1_coin_value'$1_aptos_coin_AptosCoin'($t13); - if ($abort_flag) { - assume {:print "$at(138,14563,14604)"} true; - $t2 := $abort_code; - assume {:print "$track_abort(38,22):", $t2} $t2 == $t2; - goto L2; - } - - // trace_return[0]($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:318:9+211 - assume {:print "$at(138,14404,14615)"} true; - assume {:print "$track_return(38,22,0):", $t6} $t6 == $t6; - - // trace_return[1]($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:318:9+211 - assume {:print "$track_return(38,22,1):", $t9} $t9 == $t9; - - // trace_return[2]($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:318:9+211 - assume {:print "$track_return(38,22,2):", $t12} $t12 == $t12; - - // trace_return[3]($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:318:9+211 - assume {:print "$track_return(38,22,3):", $t15} $t15 == $t15; - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:324:5+1 - assume {:print "$at(138,14620,14621)"} true; -L1: - - // return ($t6, $t9, $t12, $t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:324:5+1 - assume {:print "$at(138,14620,14621)"} true; - $ret0 := $t6; - $ret1 := $t9; - $ret2 := $t12; - $ret3 := $t15; - return; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:324:5+1 -L2: - - // abort($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:324:5+1 - assume {:print "$at(138,14620,14621)"} true; - $abort_code := $t2; - $abort_flag := true; - return; - -} - -// fun stake::increase_lockup_with_cap [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:763:5+905 -procedure {:inline 1} $1_stake_increase_lockup_with_cap(_$t0: $1_stake_OwnerCapability) returns () -{ - // declare local variables - var $t1: $1_staking_config_StakingConfig; - var $t2: int; - var $t3: int; - var $t4: int; - var $t5: $Mutation ($1_stake_StakePool); - var $t6: $1_staking_config_StakingConfig; - var $t7: int; - var $t8: $1_stake_StakePool; - var $t9: int; - var $t10: int; - var $t11: int; - var $t12: int; - var $t13: $1_staking_config_StakingConfig; - var $t14: $Mutation ($1_stake_StakePool); - var $t15: int; - var $t16: int; - var $t17: int; - var $t18: int; - var $t19: bool; - var $t20: int; - var $t21: int; - var $t22: $Mutation (int); - var $t23: $Mutation ($1_event_EventHandle'$1_stake_IncreaseLockupEvent'); - var $t24: $1_stake_IncreaseLockupEvent; - var $t0: $1_stake_OwnerCapability; - var $1_stake_StakePool_$modifies: [int]bool; - var $temp_0'$1_stake_OwnerCapability': $1_stake_OwnerCapability; - var $temp_0'$1_stake_StakePool': $1_stake_StakePool; - var $temp_0'$1_staking_config_StakingConfig': $1_staking_config_StakingConfig; - var $temp_0'address': int; - var $temp_0'u64': int; - $t0 := _$t0; - - // bytecode translation starts here - // assume Identical($t6, global(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:67:9+69 - assume {:print "$at(139,3047,3116)"} true; - assume ($t6 == $ResourceValue($1_staking_config_StakingConfig_$memory, 1)); - - // assume Identical($t7, select stake::OwnerCapability.pool_address($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:68:9+42 - assume {:print "$at(139,3125,3167)"} true; - assume ($t7 == $pool_address#$1_stake_OwnerCapability($t0)); - - // assume Identical($t8, global($t7)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:69:9+53 - assume {:print "$at(139,3176,3229)"} true; - assume ($t8 == $ResourceValue($1_stake_StakePool_$memory, $t7)); - - // assume Identical($t9, timestamp::spec_now_seconds()) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:71:9+48 - assume {:print "$at(139,3301,3349)"} true; - assume ($t9 == $1_timestamp_spec_now_seconds($1_timestamp_CurrentTimeMicroseconds_$memory)); - - // assume Identical($t10, select staking_config::StakingConfig.recurring_lockup_duration_secs($t6)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:72:9+51 - assume {:print "$at(139,3358,3409)"} true; - assume ($t10 == $recurring_lockup_duration_secs#$1_staking_config_StakingConfig($t6)); - - // trace_local[owner_cap]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:763:5+1 - assume {:print "$at(138,35298,35299)"} true; - assume {:print "$track_local(38,27,0):", $t0} $t0 == $t0; - - // $t11 := get_field.pool_address($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:764:28+22 - assume {:print "$at(138,35411,35433)"} true; - $t11 := $pool_address#$1_stake_OwnerCapability($t0); - - // trace_local[pool_address]($t11) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:764:13+12 - assume {:print "$track_local(38,27,4):", $t11} $t11 == $t11; - - // stake::assert_stake_pool_exists($t11) on_abort goto L4 with $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:765:9+38 - assume {:print "$at(138,35443,35481)"} true; - call $1_stake_assert_stake_pool_exists($t11); - if ($abort_flag) { - assume {:print "$at(138,35443,35481)"} true; - $t12 := $abort_code; - assume {:print "$track_abort(38,27):", $t12} $t12 == $t12; - goto L4; - } - - // $t13 := staking_config::get() on_abort goto L4 with $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:766:22+21 - assume {:print "$at(138,35504,35525)"} true; - call $t13 := $1_staking_config_get(); - if ($abort_flag) { - assume {:print "$at(138,35504,35525)"} true; - $t12 := $abort_code; - assume {:print "$track_abort(38,27):", $t12} $t12 == $t12; - goto L4; - } - - // trace_local[config]($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:766:13+6 - assume {:print "$track_local(38,27,1):", $t13} $t13 == $t13; - - // $t14 := borrow_global($t11) on_abort goto L4 with $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:768:26+17 - assume {:print "$at(138,35553,35570)"} true; - if (!$ResourceExists($1_stake_StakePool_$memory, $t11)) { - call $ExecFailureAbort(); - } else { - $t14 := $Mutation($Global($t11), EmptyVec(), $ResourceValue($1_stake_StakePool_$memory, $t11)); - } - if ($abort_flag) { - assume {:print "$at(138,35553,35570)"} true; - $t12 := $abort_code; - assume {:print "$track_abort(38,27):", $t12} $t12 == $t12; - goto L4; - } - - // trace_local[stake_pool]($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:768:13+10 - $temp_0'$1_stake_StakePool' := $Dereference($t14); - assume {:print "$track_local(38,27,5):", $temp_0'$1_stake_StakePool'} $temp_0'$1_stake_StakePool' == $temp_0'$1_stake_StakePool'; - - // $t15 := get_field.locked_until_secs($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:769:37+28 - assume {:print "$at(138,35633,35661)"} true; - $t15 := $locked_until_secs#$1_stake_StakePool($Dereference($t14)); - - // trace_local[old_locked_until_secs]($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:769:13+21 - assume {:print "$track_local(38,27,3):", $t15} $t15 == $t15; - - // $t16 := timestamp::now_seconds() on_abort goto L4 with $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:770:37+24 - assume {:print "$at(138,35699,35723)"} true; - call $t16 := $1_timestamp_now_seconds(); - if ($abort_flag) { - assume {:print "$at(138,35699,35723)"} true; - $t12 := $abort_code; - assume {:print "$track_abort(38,27):", $t12} $t12 == $t12; - goto L4; - } - - // $t17 := staking_config::get_recurring_lockup_duration($t13) on_abort goto L4 with $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:770:64+54 - call $t17 := $1_staking_config_get_recurring_lockup_duration($t13); - if ($abort_flag) { - assume {:print "$at(138,35726,35780)"} true; - $t12 := $abort_code; - assume {:print "$track_abort(38,27):", $t12} $t12 == $t12; - goto L4; - } - - // $t18 := +($t16, $t17) on_abort goto L4 with $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:770:62+1 - call $t18 := $AddU64($t16, $t17); - if ($abort_flag) { - assume {:print "$at(138,35724,35725)"} true; - $t12 := $abort_code; - assume {:print "$track_abort(38,27):", $t12} $t12 == $t12; - goto L4; - } - - // trace_local[new_locked_until_secs]($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:770:13+21 - assume {:print "$track_local(38,27,2):", $t18} $t18 == $t18; - - // $t19 := <($t15, $t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:771:39+1 - assume {:print "$at(138,35820,35821)"} true; - call $t19 := $Lt($t15, $t18); - - // if ($t19) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:771:9+96 - if ($t19) { goto L1; } else { goto L0; } - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:771:9+96 -L1: - - // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:771:9+96 - assume {:print "$at(138,35790,35886)"} true; - goto L2; - - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:771:9+96 -L0: - - // destroy($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:771:9+96 - assume {:print "$at(138,35790,35886)"} true; - - // $t20 := 18 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:771:88+15 - $t20 := 18; - assume $IsValid'u64'($t20); - - // $t21 := error::invalid_argument($t20) on_abort goto L4 with $t12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:771:64+40 - call $t21 := $1_error_invalid_argument($t20); - if ($abort_flag) { - assume {:print "$at(138,35845,35885)"} true; - $t12 := $abort_code; - assume {:print "$track_abort(38,27):", $t12} $t12 == $t12; - goto L4; - } - - // trace_abort($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:771:9+96 - assume {:print "$at(138,35790,35886)"} true; - assume {:print "$track_abort(38,27):", $t21} $t21 == $t21; - - // $t12 := move($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:771:9+96 - $t12 := $t21; - - // goto L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:771:9+96 - goto L4; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:772:40+21 - assume {:print "$at(138,35927,35948)"} true; -L2: - - // $t22 := borrow_field.locked_until_secs($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:772:9+28 - assume {:print "$at(138,35896,35924)"} true; - $t22 := $ChildMutation($t14, 4, $locked_until_secs#$1_stake_StakePool($Dereference($t14))); - - // write_ref($t22, $t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:772:9+52 - $t22 := $UpdateMutation($t22, $t18); - - // write_back[Reference($t14).locked_until_secs (u64)]($t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:772:9+52 - $t14 := $UpdateMutation($t14, $Update'$1_stake_StakePool'_locked_until_secs($Dereference($t14), $Dereference($t22))); - - // $t23 := borrow_field.increase_lockup_events($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:775:13+38 - assume {:print "$at(138,35990,36028)"} true; - $t23 := $ChildMutation($t14, 13, $increase_lockup_events#$1_stake_StakePool($Dereference($t14))); - - // $t24 := pack stake::IncreaseLockupEvent($t11, $t15, $t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:776:13+143 - assume {:print "$at(138,36042,36185)"} true; - $t24 := $1_stake_IncreaseLockupEvent($t11, $t15, $t18); - - // opaque begin: event::emit_event($t23, $t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:774:9+237 - assume {:print "$at(138,35959,36196)"} true; - - // opaque end: event::emit_event($t23, $t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:774:9+237 - - // write_back[Reference($t14).increase_lockup_events (event::EventHandle)]($t23) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:774:9+237 - $t14 := $UpdateMutation($t14, $Update'$1_stake_StakePool'_increase_lockup_events($Dereference($t14), $Dereference($t23))); - - // write_back[stake::StakePool@]($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:774:9+237 - $1_stake_StakePool_$memory := $ResourceUpdate($1_stake_StakePool_$memory, $GlobalLocationAddress($t14), - $Dereference($t14)); - - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:782:5+1 - assume {:print "$at(138,36202,36203)"} true; -L3: - - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:782:5+1 - assume {:print "$at(138,36202,36203)"} true; - return; - - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:782:5+1 -L4: - - // abort($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:782:5+1 - assume {:print "$at(138,36202,36203)"} true; - $abort_code := $t12; - $abort_flag := true; - return; - -} - -// fun stake::set_delegated_voter_with_cap [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:601:5+331 -procedure {:inline 1} $1_stake_set_delegated_voter_with_cap(_$t0: $1_stake_OwnerCapability, _$t1: int) returns () -{ - // declare local variables - var $t2: int; - var $t3: $Mutation ($1_stake_StakePool); - var $t4: int; - var $t5: int; - var $t6: int; - var $t7: $Mutation ($1_stake_StakePool); - var $t8: $Mutation (int); - var $t0: $1_stake_OwnerCapability; - var $t1: int; - var $1_stake_StakePool_$modifies: [int]bool; - var $temp_0'$1_stake_OwnerCapability': $1_stake_OwnerCapability; - var $temp_0'$1_stake_StakePool': $1_stake_StakePool; - var $temp_0'address': int; - $t0 := _$t0; - $t1 := _$t1; - - // bytecode translation starts here - // assume Identical($t4, select stake::OwnerCapability.pool_address($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:136:9+42 - assume {:print "$at(139,6139,6181)"} true; - assume ($t4 == $pool_address#$1_stake_OwnerCapability($t0)); - - // trace_local[owner_cap]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:601:5+1 - assume {:print "$at(138,27301,27302)"} true; - assume {:print "$track_local(38,44,0):", $t0} $t0 == $t0; - - // trace_local[new_voter]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:601:5+1 - assume {:print "$track_local(38,44,1):", $t1} $t1 == $t1; - - // $t5 := get_field.pool_address($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:602:28+22 - assume {:print "$at(138,27438,27460)"} true; - $t5 := $pool_address#$1_stake_OwnerCapability($t0); - - // trace_local[pool_address]($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:602:13+12 - assume {:print "$track_local(38,44,2):", $t5} $t5 == $t5; - - // stake::assert_stake_pool_exists($t5) on_abort goto L2 with $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:603:9+38 - assume {:print "$at(138,27470,27508)"} true; - call $1_stake_assert_stake_pool_exists($t5); - if ($abort_flag) { - assume {:print "$at(138,27470,27508)"} true; - $t6 := $abort_code; - assume {:print "$track_abort(38,44):", $t6} $t6 == $t6; - goto L2; - } - - // $t7 := borrow_global($t5) on_abort goto L2 with $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:604:26+17 - assume {:print "$at(138,27535,27552)"} true; - if (!$ResourceExists($1_stake_StakePool_$memory, $t5)) { - call $ExecFailureAbort(); - } else { - $t7 := $Mutation($Global($t5), EmptyVec(), $ResourceValue($1_stake_StakePool_$memory, $t5)); - } - if ($abort_flag) { - assume {:print "$at(138,27535,27552)"} true; - $t6 := $abort_code; - assume {:print "$track_abort(38,44):", $t6} $t6 == $t6; - goto L2; - } - - // trace_local[stake_pool]($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:604:13+10 - $temp_0'$1_stake_StakePool' := $Dereference($t7); - assume {:print "$track_local(38,44,3):", $temp_0'$1_stake_StakePool'} $temp_0'$1_stake_StakePool' == $temp_0'$1_stake_StakePool'; - - // $t8 := borrow_field.delegated_voter($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:605:9+26 - assume {:print "$at(138,27587,27613)"} true; - $t8 := $ChildMutation($t7, 6, $delegated_voter#$1_stake_StakePool($Dereference($t7))); - - // write_ref($t8, $t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:605:9+38 - $t8 := $UpdateMutation($t8, $t1); - - // write_back[Reference($t7).delegated_voter (address)]($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:605:9+38 - $t7 := $UpdateMutation($t7, $Update'$1_stake_StakePool'_delegated_voter($Dereference($t7), $Dereference($t8))); - - // write_back[stake::StakePool@]($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:605:9+38 - $1_stake_StakePool_$memory := $ResourceUpdate($1_stake_StakePool_$memory, $GlobalLocationAddress($t7), - $Dereference($t7)); - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:606:5+1 - assume {:print "$at(138,27631,27632)"} true; -L1: - - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:606:5+1 - assume {:print "$at(138,27631,27632)"} true; - return; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:606:5+1 -L2: - - // abort($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:606:5+1 - assume {:print "$at(138,27631,27632)"} true; - $abort_code := $t6; - $abort_flag := true; - return; - -} - -// fun stake::stake_pool_exists [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:400:5+89 -procedure {:inline 1} $1_stake_stake_pool_exists(_$t0: int) returns ($ret0: bool) -{ - // declare local variables - var $t1: bool; - var $t0: int; - var $temp_0'address': int; - var $temp_0'bool': bool; - $t0 := _$t0; - - // bytecode translation starts here - // trace_local[addr]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:400:5+1 - assume {:print "$at(138,18212,18213)"} true; - assume {:print "$track_local(38,47,0):", $t0} $t0 == $t0; - - // $t1 := exists($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:401:9+6 - assume {:print "$at(138,18272,18278)"} true; - $t1 := $ResourceExists($1_stake_StakePool_$memory, $t0); - - // trace_return[0]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:401:9+23 - assume {:print "$track_return(38,47,0):", $t1} $t1 == $t1; - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:402:5+1 - assume {:print "$at(138,18300,18301)"} true; -L1: - - // return $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.move:402:5+1 - assume {:print "$at(138,18300,18301)"} true; - $ret0 := $t1; - return; - -} - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/hash.spec.move:7:9+50 -function $1_aptos_hash_spec_keccak256(bytes: Vec (int)): Vec (int); -axiom (forall bytes: Vec (int) :: -(var $$res := $1_aptos_hash_spec_keccak256(bytes); -$IsValid'vec'u8''($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/hash.spec.move:12:9+58 -function $1_aptos_hash_spec_sha2_512_internal(bytes: Vec (int)): Vec (int); -axiom (forall bytes: Vec (int) :: -(var $$res := $1_aptos_hash_spec_sha2_512_internal(bytes); -$IsValid'vec'u8''($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/hash.spec.move:17:9+58 -function $1_aptos_hash_spec_sha3_512_internal(bytes: Vec (int)): Vec (int); -axiom (forall bytes: Vec (int) :: -(var $$res := $1_aptos_hash_spec_sha3_512_internal(bytes); -$IsValid'vec'u8''($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/hash.spec.move:22:9+59 -function $1_aptos_hash_spec_ripemd160_internal(bytes: Vec (int)): Vec (int); -axiom (forall bytes: Vec (int) :: -(var $$res := $1_aptos_hash_spec_ripemd160_internal(bytes); -$IsValid'vec'u8''($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/hash.spec.move:27:9+61 -function $1_aptos_hash_spec_blake2b_256_internal(bytes: Vec (int)): Vec (int); -axiom (forall bytes: Vec (int) :: -(var $$res := $1_aptos_hash_spec_blake2b_256_internal(bytes); -$IsValid'vec'u8''($$res))); - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/reconfiguration.move:154:5+155 -function {:inline} $1_reconfiguration_$last_reconfiguration_time($1_reconfiguration_Configuration_$memory: $Memory $1_reconfiguration_Configuration): int { - $last_reconfiguration_time#$1_reconfiguration_Configuration($ResourceValue($1_reconfiguration_Configuration_$memory, 1)) -} - -// struct reconfiguration::Configuration at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/reconfiguration.move:33:5+306 -type {:datatype} $1_reconfiguration_Configuration; -function {:constructor} $1_reconfiguration_Configuration($epoch: int, $last_reconfiguration_time: int, $events: $1_event_EventHandle'$1_reconfiguration_NewEpochEvent'): $1_reconfiguration_Configuration; -function {:inline} $Update'$1_reconfiguration_Configuration'_epoch(s: $1_reconfiguration_Configuration, x: int): $1_reconfiguration_Configuration { - $1_reconfiguration_Configuration(x, $last_reconfiguration_time#$1_reconfiguration_Configuration(s), $events#$1_reconfiguration_Configuration(s)) -} -function {:inline} $Update'$1_reconfiguration_Configuration'_last_reconfiguration_time(s: $1_reconfiguration_Configuration, x: int): $1_reconfiguration_Configuration { - $1_reconfiguration_Configuration($epoch#$1_reconfiguration_Configuration(s), x, $events#$1_reconfiguration_Configuration(s)) -} -function {:inline} $Update'$1_reconfiguration_Configuration'_events(s: $1_reconfiguration_Configuration, x: $1_event_EventHandle'$1_reconfiguration_NewEpochEvent'): $1_reconfiguration_Configuration { - $1_reconfiguration_Configuration($epoch#$1_reconfiguration_Configuration(s), $last_reconfiguration_time#$1_reconfiguration_Configuration(s), x) -} -function $IsValid'$1_reconfiguration_Configuration'(s: $1_reconfiguration_Configuration): bool { - $IsValid'u64'($epoch#$1_reconfiguration_Configuration(s)) - && $IsValid'u64'($last_reconfiguration_time#$1_reconfiguration_Configuration(s)) - && $IsValid'$1_event_EventHandle'$1_reconfiguration_NewEpochEvent''($events#$1_reconfiguration_Configuration(s)) -} -function {:inline} $IsEqual'$1_reconfiguration_Configuration'(s1: $1_reconfiguration_Configuration, s2: $1_reconfiguration_Configuration): bool { - s1 == s2 -} -var $1_reconfiguration_Configuration_$memory: $Memory $1_reconfiguration_Configuration; - -// struct reconfiguration::NewEpochEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/reconfiguration.move:28:5+64 -type {:datatype} $1_reconfiguration_NewEpochEvent; -function {:constructor} $1_reconfiguration_NewEpochEvent($epoch: int): $1_reconfiguration_NewEpochEvent; -function {:inline} $Update'$1_reconfiguration_NewEpochEvent'_epoch(s: $1_reconfiguration_NewEpochEvent, x: int): $1_reconfiguration_NewEpochEvent { - $1_reconfiguration_NewEpochEvent(x) -} -function $IsValid'$1_reconfiguration_NewEpochEvent'(s: $1_reconfiguration_NewEpochEvent): bool { - $IsValid'u64'($epoch#$1_reconfiguration_NewEpochEvent(s)) -} -function {:inline} $IsEqual'$1_reconfiguration_NewEpochEvent'(s1: $1_reconfiguration_NewEpochEvent, s2: $1_reconfiguration_NewEpochEvent): bool { - s1 == s2 -} - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:38:10+241 -function {:inline} $1_pool_u64_spec_shares(pool: $1_pool_u64_Pool, shareholder: int): int { - (if ($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool(pool), shareholder)) then ($1_simple_map_spec_get'address_u64'($shares#$1_pool_u64_Pool(pool), shareholder)) else (0)) -} - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:129:10+265 -function {:inline} $1_pool_u64_spec_shares_to_amount_with_total_coins(pool: $1_pool_u64_Pool, shares: int, total_coins: int): int { - (if (($IsEqual'u64'($total_coins#$1_pool_u64_Pool(pool), 0) || $IsEqual'u64'($total_shares#$1_pool_u64_Pool(pool), 0))) then (0) else (((shares * total_coins) div $total_shares#$1_pool_u64_Pool(pool)))) -} - -// struct pool_u64::Pool at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:38:5+449 -type {:datatype} $1_pool_u64_Pool; -function {:constructor} $1_pool_u64_Pool($shareholders_limit: int, $total_coins: int, $total_shares: int, $shares: Table int (int), $shareholders: Vec (int), $scaling_factor: int): $1_pool_u64_Pool; -function {:inline} $Update'$1_pool_u64_Pool'_shareholders_limit(s: $1_pool_u64_Pool, x: int): $1_pool_u64_Pool { - $1_pool_u64_Pool(x, $total_coins#$1_pool_u64_Pool(s), $total_shares#$1_pool_u64_Pool(s), $shares#$1_pool_u64_Pool(s), $shareholders#$1_pool_u64_Pool(s), $scaling_factor#$1_pool_u64_Pool(s)) -} -function {:inline} $Update'$1_pool_u64_Pool'_total_coins(s: $1_pool_u64_Pool, x: int): $1_pool_u64_Pool { - $1_pool_u64_Pool($shareholders_limit#$1_pool_u64_Pool(s), x, $total_shares#$1_pool_u64_Pool(s), $shares#$1_pool_u64_Pool(s), $shareholders#$1_pool_u64_Pool(s), $scaling_factor#$1_pool_u64_Pool(s)) -} -function {:inline} $Update'$1_pool_u64_Pool'_total_shares(s: $1_pool_u64_Pool, x: int): $1_pool_u64_Pool { - $1_pool_u64_Pool($shareholders_limit#$1_pool_u64_Pool(s), $total_coins#$1_pool_u64_Pool(s), x, $shares#$1_pool_u64_Pool(s), $shareholders#$1_pool_u64_Pool(s), $scaling_factor#$1_pool_u64_Pool(s)) -} -function {:inline} $Update'$1_pool_u64_Pool'_shares(s: $1_pool_u64_Pool, x: Table int (int)): $1_pool_u64_Pool { - $1_pool_u64_Pool($shareholders_limit#$1_pool_u64_Pool(s), $total_coins#$1_pool_u64_Pool(s), $total_shares#$1_pool_u64_Pool(s), x, $shareholders#$1_pool_u64_Pool(s), $scaling_factor#$1_pool_u64_Pool(s)) -} -function {:inline} $Update'$1_pool_u64_Pool'_shareholders(s: $1_pool_u64_Pool, x: Vec (int)): $1_pool_u64_Pool { - $1_pool_u64_Pool($shareholders_limit#$1_pool_u64_Pool(s), $total_coins#$1_pool_u64_Pool(s), $total_shares#$1_pool_u64_Pool(s), $shares#$1_pool_u64_Pool(s), x, $scaling_factor#$1_pool_u64_Pool(s)) -} -function {:inline} $Update'$1_pool_u64_Pool'_scaling_factor(s: $1_pool_u64_Pool, x: int): $1_pool_u64_Pool { - $1_pool_u64_Pool($shareholders_limit#$1_pool_u64_Pool(s), $total_coins#$1_pool_u64_Pool(s), $total_shares#$1_pool_u64_Pool(s), $shares#$1_pool_u64_Pool(s), $shareholders#$1_pool_u64_Pool(s), x) -} -function $IsValid'$1_pool_u64_Pool'(s: $1_pool_u64_Pool): bool { - $IsValid'u64'($shareholders_limit#$1_pool_u64_Pool(s)) - && $IsValid'u64'($total_coins#$1_pool_u64_Pool(s)) - && $IsValid'u64'($total_shares#$1_pool_u64_Pool(s)) - && $IsValid'$1_simple_map_SimpleMap'address_u64''($shares#$1_pool_u64_Pool(s)) - && $IsValid'vec'address''($shareholders#$1_pool_u64_Pool(s)) - && $IsValid'u64'($scaling_factor#$1_pool_u64_Pool(s)) -} -function {:inline} $IsEqual'$1_pool_u64_Pool'(s1: $1_pool_u64_Pool, s2: $1_pool_u64_Pool): bool { - $IsEqual'u64'($shareholders_limit#$1_pool_u64_Pool(s1), $shareholders_limit#$1_pool_u64_Pool(s2)) - && $IsEqual'u64'($total_coins#$1_pool_u64_Pool(s1), $total_coins#$1_pool_u64_Pool(s2)) - && $IsEqual'u64'($total_shares#$1_pool_u64_Pool(s1), $total_shares#$1_pool_u64_Pool(s2)) - && $IsEqual'$1_simple_map_SimpleMap'address_u64''($shares#$1_pool_u64_Pool(s1), $shares#$1_pool_u64_Pool(s2)) - && $IsEqual'vec'address''($shareholders#$1_pool_u64_Pool(s1), $shareholders#$1_pool_u64_Pool(s2)) - && $IsEqual'u64'($scaling_factor#$1_pool_u64_Pool(s1), $scaling_factor#$1_pool_u64_Pool(s2))} - -// fun pool_u64::contains [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:98:5+129 -procedure {:inline 1} $1_pool_u64_contains(_$t0: $1_pool_u64_Pool, _$t1: int) returns ($ret0: bool) -{ - // declare local variables - var $t2: Table int (int); - var $t3: bool; - var $t4: int; - var $t0: $1_pool_u64_Pool; - var $t1: int; - var $temp_0'$1_pool_u64_Pool': $1_pool_u64_Pool; - var $temp_0'address': int; - var $temp_0'bool': bool; - $t0 := _$t0; - $t1 := _$t1; - - // bytecode translation starts here - // trace_local[pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:98:5+1 - assume {:print "$at(65,3815,3816)"} true; - assume {:print "$track_local(57,5,0):", $t0} $t0 == $t0; - - // trace_local[shareholder]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:98:5+1 - assume {:print "$track_local(57,5,1):", $t1} $t1 == $t1; - - // $t2 := get_field.shares($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:99:34+12 - assume {:print "$at(65,3911,3923)"} true; - $t2 := $shares#$1_pool_u64_Pool($t0); - - // $t3 := simple_map::contains_key($t2, $t1) on_abort goto L2 with $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:99:9+52 - call $t3 := $1_simple_map_contains_key'address_u64'($t2, $t1); - if ($abort_flag) { - assume {:print "$at(65,3886,3938)"} true; - $t4 := $abort_code; - assume {:print "$track_abort(57,5):", $t4} $t4 == $t4; - goto L2; - } - - // trace_return[0]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:99:9+52 - assume {:print "$track_return(57,5,0):", $t3} $t3 == $t3; - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:100:5+1 - assume {:print "$at(65,3943,3944)"} true; -L1: - - // return $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:100:5+1 - assume {:print "$at(65,3943,3944)"} true; - $ret0 := $t3; - return; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:100:5+1 -L2: - - // abort($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:100:5+1 - assume {:print "$at(65,3943,3944)"} true; - $abort_code := $t4; - $abort_flag := true; - return; - -} - -// fun pool_u64::to_u128 [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:266:5+57 -procedure {:inline 1} $1_pool_u64_to_u128(_$t0: int) returns ($ret0: int) -{ - // declare local variables - var $t1: int; - var $t2: int; - var $t0: int; - var $temp_0'u128': int; - var $temp_0'u64': int; - $t0 := _$t0; - - // bytecode translation starts here - // trace_local[num]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:266:5+1 - assume {:print "$at(65,11617,11618)"} true; - assume {:print "$track_local(57,18,0):", $t0} $t0 == $t0; - - // $t1 := (u128)($t0) on_abort goto L2 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:267:9+13 - assume {:print "$at(65,11655,11668)"} true; - call $t1 := $CastU128($t0); - if ($abort_flag) { - assume {:print "$at(65,11655,11668)"} true; - $t2 := $abort_code; - assume {:print "$track_abort(57,18):", $t2} $t2 == $t2; - goto L2; - } - - // trace_return[0]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:267:9+13 - assume {:print "$track_return(57,18,0):", $t1} $t1 == $t1; - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:268:5+1 - assume {:print "$at(65,11673,11674)"} true; -L1: - - // return $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:268:5+1 - assume {:print "$at(65,11673,11674)"} true; - $ret0 := $t1; - return; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:268:5+1 -L2: - - // abort($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:268:5+1 - assume {:print "$at(65,11673,11674)"} true; - $abort_code := $t2; - $abort_flag := true; - return; - -} - -// fun pool_u64::multiply_then_divide [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:261:5+167 -procedure {:inline 1} $1_pool_u64_multiply_then_divide(_$t0: $1_pool_u64_Pool, _$t1: int, _$t2: int, _$t3: int) returns ($ret0: int) -{ - // declare local variables - var $t4: int; - var $t5: int; - var $t6: int; - var $t7: int; - var $t8: int; - var $t9: int; - var $t10: int; - var $t0: $1_pool_u64_Pool; - var $t1: int; - var $t2: int; - var $t3: int; - var $temp_0'$1_pool_u64_Pool': $1_pool_u64_Pool; - var $temp_0'u64': int; - $t0 := _$t0; - $t1 := _$t1; - $t2 := _$t2; - $t3 := _$t3; - - // bytecode translation starts here - // trace_local[_pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:261:5+1 - assume {:print "$at(65,11444,11445)"} true; - assume {:print "$track_local(57,10,0):", $t0} $t0 == $t0; - - // trace_local[x]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:261:5+1 - assume {:print "$track_local(57,10,1):", $t1} $t1 == $t1; - - // trace_local[y]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:261:5+1 - assume {:print "$track_local(57,10,2):", $t2} $t2 == $t2; - - // trace_local[z]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:261:5+1 - assume {:print "$track_local(57,10,3):", $t3} $t3 == $t3; - - // $t4 := pool_u64::to_u128($t1) on_abort goto L2 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:262:23+10 - assume {:print "$at(65,11543,11553)"} true; - call $t4 := $1_pool_u64_to_u128($t1); - if ($abort_flag) { - assume {:print "$at(65,11543,11553)"} true; - $t5 := $abort_code; - assume {:print "$track_abort(57,10):", $t5} $t5 == $t5; - goto L2; - } - - // $t6 := pool_u64::to_u128($t2) on_abort goto L2 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:262:36+10 - call $t6 := $1_pool_u64_to_u128($t2); - if ($abort_flag) { - assume {:print "$at(65,11556,11566)"} true; - $t5 := $abort_code; - assume {:print "$track_abort(57,10):", $t5} $t5 == $t5; - goto L2; - } - - // $t7 := *($t4, $t6) on_abort goto L2 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:262:34+1 - call $t7 := $MulU128($t4, $t6); - if ($abort_flag) { - assume {:print "$at(65,11554,11555)"} true; - $t5 := $abort_code; - assume {:print "$track_abort(57,10):", $t5} $t5 == $t5; - goto L2; - } - - // $t8 := pool_u64::to_u128($t3) on_abort goto L2 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:262:50+10 - call $t8 := $1_pool_u64_to_u128($t3); - if ($abort_flag) { - assume {:print "$at(65,11570,11580)"} true; - $t5 := $abort_code; - assume {:print "$track_abort(57,10):", $t5} $t5 == $t5; - goto L2; - } - - // $t9 := /($t7, $t8) on_abort goto L2 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:262:48+1 - call $t9 := $Div($t7, $t8); - if ($abort_flag) { - assume {:print "$at(65,11568,11569)"} true; - $t5 := $abort_code; - assume {:print "$track_abort(57,10):", $t5} $t5 == $t5; - goto L2; - } - - // $t10 := (u64)($t9) on_abort goto L2 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:263:9+15 - assume {:print "$at(65,11590,11605)"} true; - call $t10 := $CastU64($t9); - if ($abort_flag) { - assume {:print "$at(65,11590,11605)"} true; - $t5 := $abort_code; - assume {:print "$track_abort(57,10):", $t5} $t5 == $t5; - goto L2; - } - - // trace_return[0]($t10) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:263:9+15 - assume {:print "$track_return(57,10,0):", $t10} $t10 == $t10; - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:264:5+1 - assume {:print "$at(65,11610,11611)"} true; -L1: - - // return $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:264:5+1 - assume {:print "$at(65,11610,11611)"} true; - $ret0 := $t10; - return; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:264:5+1 -L2: - - // abort($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:264:5+1 - assume {:print "$at(65,11610,11611)"} true; - $abort_code := $t5; - $abort_flag := true; - return; - -} - -// fun pool_u64::shareholders [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:118:5+87 -procedure {:inline 1} $1_pool_u64_shareholders(_$t0: $1_pool_u64_Pool) returns ($ret0: Vec (int)) -{ - // declare local variables - var $t1: Vec (int); - var $t0: $1_pool_u64_Pool; - var $temp_0'$1_pool_u64_Pool': $1_pool_u64_Pool; - var $temp_0'vec'address'': Vec (int); - $t0 := _$t0; - - // bytecode translation starts here - // trace_local[pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:118:5+1 - assume {:print "$at(65,4511,4512)"} true; - assume {:print "$track_local(57,13,0):", $t0} $t0 == $t0; - - // $t1 := get_field.shareholders($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:119:9+17 - assume {:print "$at(65,4575,4592)"} true; - $t1 := $shareholders#$1_pool_u64_Pool($t0); - - // trace_return[0]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:119:9+17 - assume {:print "$track_return(57,13,0):", $t1} $t1 == $t1; - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:120:5+1 - assume {:print "$at(65,4597,4598)"} true; -L1: - - // return $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:120:5+1 - assume {:print "$at(65,4597,4598)"} true; - $ret0 := $t1; - return; - -} - -// fun pool_u64::shares [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:103:5+209 -procedure {:inline 1} $1_pool_u64_shares(_$t0: $1_pool_u64_Pool, _$t1: int) returns ($ret0: int) -{ - // declare local variables - var $t2: int; - var $t3: bool; - var $t4: int; - var $t5: Table int (int); - var $t6: int; - var $t0: $1_pool_u64_Pool; - var $t1: int; - var $temp_0'$1_pool_u64_Pool': $1_pool_u64_Pool; - var $temp_0'address': int; - var $temp_0'u64': int; - $t0 := _$t0; - $t1 := _$t1; - - // bytecode translation starts here - // trace_local[pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:103:5+1 - assume {:print "$at(65,4014,4015)"} true; - assume {:print "$track_local(57,15,0):", $t0} $t0 == $t0; - - // trace_local[shareholder]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:103:5+1 - assume {:print "$track_local(57,15,1):", $t1} $t1 == $t1; - - // $t3 := pool_u64::contains($t0, $t1) on_abort goto L4 with $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:104:13+27 - assume {:print "$at(65,4086,4113)"} true; - call $t3 := $1_pool_u64_contains($t0, $t1); - if ($abort_flag) { - assume {:print "$at(65,4086,4113)"} true; - $t4 := $abort_code; - assume {:print "$track_abort(57,15):", $t4} $t4 == $t4; - goto L4; - } - - // if ($t3) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:104:9+135 - if ($t3) { goto L1; } else { goto L0; } - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:105:34+4 - assume {:print "$at(65,4150,4154)"} true; -L1: - - // $t5 := get_field.shares($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:105:33+12 - assume {:print "$at(65,4149,4161)"} true; - $t5 := $shares#$1_pool_u64_Pool($t0); - - // $t2 := simple_map::borrow($t5, $t1) on_abort goto L4 with $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:105:14+46 - call $t2 := $1_simple_map_borrow'address_u64'($t5, $t1); - if ($abort_flag) { - assume {:print "$at(65,4130,4176)"} true; - $t4 := $abort_code; - assume {:print "$track_abort(57,15):", $t4} $t4 == $t4; - goto L4; - } - - // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:104:9+135 - assume {:print "$at(65,4082,4217)"} true; - goto L2; - - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:104:9+135 -L0: - - // $t6 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:107:13+1 - assume {:print "$at(65,4206,4207)"} true; - $t6 := 0; - assume $IsValid'u64'($t6); - - // $t2 := $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:104:9+135 - assume {:print "$at(65,4082,4217)"} true; - $t2 := $t6; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:104:9+135 -L2: - - // trace_return[0]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:104:9+135 - assume {:print "$at(65,4082,4217)"} true; - assume {:print "$track_return(57,15,0):", $t2} $t2 == $t2; - - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:109:5+1 - assume {:print "$at(65,4222,4223)"} true; -L3: - - // return $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:109:5+1 - assume {:print "$at(65,4222,4223)"} true; - $ret0 := $t2; - return; - - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:109:5+1 -L4: - - // abort($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:109:5+1 - assume {:print "$at(65,4222,4223)"} true; - $abort_code := $t4; - $abort_flag := true; - return; - -} - -// fun pool_u64::shares_to_amount_with_total_coins [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:249:5+601 -procedure {:inline 1} $1_pool_u64_shares_to_amount_with_total_coins(_$t0: $1_pool_u64_Pool, _$t1: int, _$t2: int) returns ($ret0: int) -{ - // declare local variables - var $t3: bool; - var $t4: int; - var $t5: int; - var $t6: int; - var $t7: bool; - var $t8: bool; - var $t9: int; - var $t10: int; - var $t11: int; - var $t12: int; - var $t13: int; - var $t0: $1_pool_u64_Pool; - var $t1: int; - var $t2: int; - var $temp_0'$1_pool_u64_Pool': $1_pool_u64_Pool; - var $temp_0'u64': int; - $t0 := _$t0; - $t1 := _$t1; - $t2 := _$t2; - - // bytecode translation starts here - // trace_local[pool]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:249:5+1 - assume {:print "$at(65,10837,10838)"} true; - assume {:print "$track_local(57,17,0):", $t0} $t0 == $t0; - - // trace_local[shares]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:249:5+1 - assume {:print "$track_local(57,17,1):", $t1} $t1 == $t1; - - // trace_local[total_coins]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:249:5+1 - assume {:print "$track_local(57,17,2):", $t2} $t2 == $t2; - - // $t5 := get_field.total_coins($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:251:13+16 - assume {:print "$at(65,11004,11020)"} true; - $t5 := $total_coins#$1_pool_u64_Pool($t0); - - // $t6 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:251:33+1 - $t6 := 0; - assume $IsValid'u64'($t6); - - // $t7 := ==($t5, $t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:251:30+2 - $t7 := $IsEqual'u64'($t5, $t6); - - // if ($t7) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:251:13+47 - if ($t7) { goto L1; } else { goto L0; } - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:251:13+47 -L1: - - // $t8 := true at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:251:13+47 - assume {:print "$at(65,11004,11051)"} true; - $t8 := true; - assume $IsValid'bool'($t8); - - // $t3 := $t8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:251:13+47 - $t3 := $t8; - - // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:251:13+47 - goto L2; - - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:251:38+4 -L0: - - // $t9 := get_field.total_shares($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:251:38+17 - assume {:print "$at(65,11029,11046)"} true; - $t9 := $total_shares#$1_pool_u64_Pool($t0); - - // $t10 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:251:59+1 - $t10 := 0; - assume $IsValid'u64'($t10); - - // $t3 := ==($t9, $t10) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:251:56+2 - $t3 := $IsEqual'u64'($t9, $t10); - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:251:13+47 -L2: - - // if ($t3) goto L4 else goto L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:251:9+432 - assume {:print "$at(65,11000,11432)"} true; - if ($t3) { goto L4; } else { goto L3; } - - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:251:9+432 -L4: - - // $t11 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:252:13+1 - assume {:print "$at(65,11067,11068)"} true; - $t11 := 0; - assume $IsValid'u64'($t11); - - // $t4 := $t11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:251:9+432 - assume {:print "$at(65,11000,11432)"} true; - $t4 := $t11; - - // goto L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:251:9+432 - goto L5; - - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:257:34+4 - assume {:print "$at(65,11377,11381)"} true; -L3: - - // $t12 := get_field.total_shares($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:257:61+17 - assume {:print "$at(65,11404,11421)"} true; - $t12 := $total_shares#$1_pool_u64_Pool($t0); - - // $t4 := pool_u64::multiply_then_divide($t0, $t1, $t2, $t12) on_abort goto L7 with $t13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:257:13+66 - call $t4 := $1_pool_u64_multiply_then_divide($t0, $t1, $t2, $t12); - if ($abort_flag) { - assume {:print "$at(65,11356,11422)"} true; - $t13 := $abort_code; - assume {:print "$track_abort(57,17):", $t13} $t13 == $t13; - goto L7; - } - - // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:251:9+432 - assume {:print "$at(65,11000,11432)"} true; -L5: - - // trace_return[0]($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:251:9+432 - assume {:print "$at(65,11000,11432)"} true; - assume {:print "$track_return(57,17,0):", $t4} $t4 == $t4; - - // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:259:5+1 - assume {:print "$at(65,11437,11438)"} true; -L6: - - // return $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:259:5+1 - assume {:print "$at(65,11437,11438)"} true; - $ret0 := $t4; - return; - - // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:259:5+1 -L7: - - // abort($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.move:259:5+1 - assume {:print "$at(65,11437,11438)"} true; - $abort_code := $t13; - $abort_flag := true; - return; - -} - -// struct staking_contract::AddStakeEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:129:5+122 -type {:datatype} $1_staking_contract_AddStakeEvent; -function {:constructor} $1_staking_contract_AddStakeEvent($operator: int, $pool_address: int, $amount: int): $1_staking_contract_AddStakeEvent; -function {:inline} $Update'$1_staking_contract_AddStakeEvent'_operator(s: $1_staking_contract_AddStakeEvent, x: int): $1_staking_contract_AddStakeEvent { - $1_staking_contract_AddStakeEvent(x, $pool_address#$1_staking_contract_AddStakeEvent(s), $amount#$1_staking_contract_AddStakeEvent(s)) -} -function {:inline} $Update'$1_staking_contract_AddStakeEvent'_pool_address(s: $1_staking_contract_AddStakeEvent, x: int): $1_staking_contract_AddStakeEvent { - $1_staking_contract_AddStakeEvent($operator#$1_staking_contract_AddStakeEvent(s), x, $amount#$1_staking_contract_AddStakeEvent(s)) -} -function {:inline} $Update'$1_staking_contract_AddStakeEvent'_amount(s: $1_staking_contract_AddStakeEvent, x: int): $1_staking_contract_AddStakeEvent { - $1_staking_contract_AddStakeEvent($operator#$1_staking_contract_AddStakeEvent(s), $pool_address#$1_staking_contract_AddStakeEvent(s), x) -} -function $IsValid'$1_staking_contract_AddStakeEvent'(s: $1_staking_contract_AddStakeEvent): bool { - $IsValid'address'($operator#$1_staking_contract_AddStakeEvent(s)) - && $IsValid'address'($pool_address#$1_staking_contract_AddStakeEvent(s)) - && $IsValid'u64'($amount#$1_staking_contract_AddStakeEvent(s)) -} -function {:inline} $IsEqual'$1_staking_contract_AddStakeEvent'(s1: $1_staking_contract_AddStakeEvent, s2: $1_staking_contract_AddStakeEvent): bool { - s1 == s2 -} - -// struct staking_contract::UnlockStakeEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:142:5+156 -type {:datatype} $1_staking_contract_UnlockStakeEvent; -function {:constructor} $1_staking_contract_UnlockStakeEvent($operator: int, $pool_address: int, $amount: int, $commission_paid: int): $1_staking_contract_UnlockStakeEvent; -function {:inline} $Update'$1_staking_contract_UnlockStakeEvent'_operator(s: $1_staking_contract_UnlockStakeEvent, x: int): $1_staking_contract_UnlockStakeEvent { - $1_staking_contract_UnlockStakeEvent(x, $pool_address#$1_staking_contract_UnlockStakeEvent(s), $amount#$1_staking_contract_UnlockStakeEvent(s), $commission_paid#$1_staking_contract_UnlockStakeEvent(s)) -} -function {:inline} $Update'$1_staking_contract_UnlockStakeEvent'_pool_address(s: $1_staking_contract_UnlockStakeEvent, x: int): $1_staking_contract_UnlockStakeEvent { - $1_staking_contract_UnlockStakeEvent($operator#$1_staking_contract_UnlockStakeEvent(s), x, $amount#$1_staking_contract_UnlockStakeEvent(s), $commission_paid#$1_staking_contract_UnlockStakeEvent(s)) -} -function {:inline} $Update'$1_staking_contract_UnlockStakeEvent'_amount(s: $1_staking_contract_UnlockStakeEvent, x: int): $1_staking_contract_UnlockStakeEvent { - $1_staking_contract_UnlockStakeEvent($operator#$1_staking_contract_UnlockStakeEvent(s), $pool_address#$1_staking_contract_UnlockStakeEvent(s), x, $commission_paid#$1_staking_contract_UnlockStakeEvent(s)) -} -function {:inline} $Update'$1_staking_contract_UnlockStakeEvent'_commission_paid(s: $1_staking_contract_UnlockStakeEvent, x: int): $1_staking_contract_UnlockStakeEvent { - $1_staking_contract_UnlockStakeEvent($operator#$1_staking_contract_UnlockStakeEvent(s), $pool_address#$1_staking_contract_UnlockStakeEvent(s), $amount#$1_staking_contract_UnlockStakeEvent(s), x) -} -function $IsValid'$1_staking_contract_UnlockStakeEvent'(s: $1_staking_contract_UnlockStakeEvent): bool { - $IsValid'address'($operator#$1_staking_contract_UnlockStakeEvent(s)) - && $IsValid'address'($pool_address#$1_staking_contract_UnlockStakeEvent(s)) - && $IsValid'u64'($amount#$1_staking_contract_UnlockStakeEvent(s)) - && $IsValid'u64'($commission_paid#$1_staking_contract_UnlockStakeEvent(s)) -} -function {:inline} $IsEqual'$1_staking_contract_UnlockStakeEvent'(s1: $1_staking_contract_UnlockStakeEvent, s2: $1_staking_contract_UnlockStakeEvent): bool { - s1 == s2 -} - -// struct staking_contract::AddDistributionEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:155:5+130 -type {:datatype} $1_staking_contract_AddDistributionEvent; -function {:constructor} $1_staking_contract_AddDistributionEvent($operator: int, $pool_address: int, $amount: int): $1_staking_contract_AddDistributionEvent; -function {:inline} $Update'$1_staking_contract_AddDistributionEvent'_operator(s: $1_staking_contract_AddDistributionEvent, x: int): $1_staking_contract_AddDistributionEvent { - $1_staking_contract_AddDistributionEvent(x, $pool_address#$1_staking_contract_AddDistributionEvent(s), $amount#$1_staking_contract_AddDistributionEvent(s)) -} -function {:inline} $Update'$1_staking_contract_AddDistributionEvent'_pool_address(s: $1_staking_contract_AddDistributionEvent, x: int): $1_staking_contract_AddDistributionEvent { - $1_staking_contract_AddDistributionEvent($operator#$1_staking_contract_AddDistributionEvent(s), x, $amount#$1_staking_contract_AddDistributionEvent(s)) -} -function {:inline} $Update'$1_staking_contract_AddDistributionEvent'_amount(s: $1_staking_contract_AddDistributionEvent, x: int): $1_staking_contract_AddDistributionEvent { - $1_staking_contract_AddDistributionEvent($operator#$1_staking_contract_AddDistributionEvent(s), $pool_address#$1_staking_contract_AddDistributionEvent(s), x) -} -function $IsValid'$1_staking_contract_AddDistributionEvent'(s: $1_staking_contract_AddDistributionEvent): bool { - $IsValid'address'($operator#$1_staking_contract_AddDistributionEvent(s)) - && $IsValid'address'($pool_address#$1_staking_contract_AddDistributionEvent(s)) - && $IsValid'u64'($amount#$1_staking_contract_AddDistributionEvent(s)) -} -function {:inline} $IsEqual'$1_staking_contract_AddDistributionEvent'(s1: $1_staking_contract_AddDistributionEvent, s2: $1_staking_contract_AddDistributionEvent): bool { - s1 == s2 -} - -// struct staking_contract::CreateStakingContractEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:109:5+199 -type {:datatype} $1_staking_contract_CreateStakingContractEvent; -function {:constructor} $1_staking_contract_CreateStakingContractEvent($operator: int, $voter: int, $pool_address: int, $principal: int, $commission_percentage: int): $1_staking_contract_CreateStakingContractEvent; -function {:inline} $Update'$1_staking_contract_CreateStakingContractEvent'_operator(s: $1_staking_contract_CreateStakingContractEvent, x: int): $1_staking_contract_CreateStakingContractEvent { - $1_staking_contract_CreateStakingContractEvent(x, $voter#$1_staking_contract_CreateStakingContractEvent(s), $pool_address#$1_staking_contract_CreateStakingContractEvent(s), $principal#$1_staking_contract_CreateStakingContractEvent(s), $commission_percentage#$1_staking_contract_CreateStakingContractEvent(s)) -} -function {:inline} $Update'$1_staking_contract_CreateStakingContractEvent'_voter(s: $1_staking_contract_CreateStakingContractEvent, x: int): $1_staking_contract_CreateStakingContractEvent { - $1_staking_contract_CreateStakingContractEvent($operator#$1_staking_contract_CreateStakingContractEvent(s), x, $pool_address#$1_staking_contract_CreateStakingContractEvent(s), $principal#$1_staking_contract_CreateStakingContractEvent(s), $commission_percentage#$1_staking_contract_CreateStakingContractEvent(s)) -} -function {:inline} $Update'$1_staking_contract_CreateStakingContractEvent'_pool_address(s: $1_staking_contract_CreateStakingContractEvent, x: int): $1_staking_contract_CreateStakingContractEvent { - $1_staking_contract_CreateStakingContractEvent($operator#$1_staking_contract_CreateStakingContractEvent(s), $voter#$1_staking_contract_CreateStakingContractEvent(s), x, $principal#$1_staking_contract_CreateStakingContractEvent(s), $commission_percentage#$1_staking_contract_CreateStakingContractEvent(s)) -} -function {:inline} $Update'$1_staking_contract_CreateStakingContractEvent'_principal(s: $1_staking_contract_CreateStakingContractEvent, x: int): $1_staking_contract_CreateStakingContractEvent { - $1_staking_contract_CreateStakingContractEvent($operator#$1_staking_contract_CreateStakingContractEvent(s), $voter#$1_staking_contract_CreateStakingContractEvent(s), $pool_address#$1_staking_contract_CreateStakingContractEvent(s), x, $commission_percentage#$1_staking_contract_CreateStakingContractEvent(s)) -} -function {:inline} $Update'$1_staking_contract_CreateStakingContractEvent'_commission_percentage(s: $1_staking_contract_CreateStakingContractEvent, x: int): $1_staking_contract_CreateStakingContractEvent { - $1_staking_contract_CreateStakingContractEvent($operator#$1_staking_contract_CreateStakingContractEvent(s), $voter#$1_staking_contract_CreateStakingContractEvent(s), $pool_address#$1_staking_contract_CreateStakingContractEvent(s), $principal#$1_staking_contract_CreateStakingContractEvent(s), x) -} -function $IsValid'$1_staking_contract_CreateStakingContractEvent'(s: $1_staking_contract_CreateStakingContractEvent): bool { - $IsValid'address'($operator#$1_staking_contract_CreateStakingContractEvent(s)) - && $IsValid'address'($voter#$1_staking_contract_CreateStakingContractEvent(s)) - && $IsValid'address'($pool_address#$1_staking_contract_CreateStakingContractEvent(s)) - && $IsValid'u64'($principal#$1_staking_contract_CreateStakingContractEvent(s)) - && $IsValid'u64'($commission_percentage#$1_staking_contract_CreateStakingContractEvent(s)) -} -function {:inline} $IsEqual'$1_staking_contract_CreateStakingContractEvent'(s1: $1_staking_contract_CreateStakingContractEvent, s2: $1_staking_contract_CreateStakingContractEvent): bool { - s1 == s2 -} - -// struct staking_contract::DistributeEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:161:5+153 -type {:datatype} $1_staking_contract_DistributeEvent; -function {:constructor} $1_staking_contract_DistributeEvent($operator: int, $pool_address: int, $recipient: int, $amount: int): $1_staking_contract_DistributeEvent; -function {:inline} $Update'$1_staking_contract_DistributeEvent'_operator(s: $1_staking_contract_DistributeEvent, x: int): $1_staking_contract_DistributeEvent { - $1_staking_contract_DistributeEvent(x, $pool_address#$1_staking_contract_DistributeEvent(s), $recipient#$1_staking_contract_DistributeEvent(s), $amount#$1_staking_contract_DistributeEvent(s)) -} -function {:inline} $Update'$1_staking_contract_DistributeEvent'_pool_address(s: $1_staking_contract_DistributeEvent, x: int): $1_staking_contract_DistributeEvent { - $1_staking_contract_DistributeEvent($operator#$1_staking_contract_DistributeEvent(s), x, $recipient#$1_staking_contract_DistributeEvent(s), $amount#$1_staking_contract_DistributeEvent(s)) -} -function {:inline} $Update'$1_staking_contract_DistributeEvent'_recipient(s: $1_staking_contract_DistributeEvent, x: int): $1_staking_contract_DistributeEvent { - $1_staking_contract_DistributeEvent($operator#$1_staking_contract_DistributeEvent(s), $pool_address#$1_staking_contract_DistributeEvent(s), x, $amount#$1_staking_contract_DistributeEvent(s)) -} -function {:inline} $Update'$1_staking_contract_DistributeEvent'_amount(s: $1_staking_contract_DistributeEvent, x: int): $1_staking_contract_DistributeEvent { - $1_staking_contract_DistributeEvent($operator#$1_staking_contract_DistributeEvent(s), $pool_address#$1_staking_contract_DistributeEvent(s), $recipient#$1_staking_contract_DistributeEvent(s), x) -} -function $IsValid'$1_staking_contract_DistributeEvent'(s: $1_staking_contract_DistributeEvent): bool { - $IsValid'address'($operator#$1_staking_contract_DistributeEvent(s)) - && $IsValid'address'($pool_address#$1_staking_contract_DistributeEvent(s)) - && $IsValid'address'($recipient#$1_staking_contract_DistributeEvent(s)) - && $IsValid'u64'($amount#$1_staking_contract_DistributeEvent(s)) -} -function {:inline} $IsEqual'$1_staking_contract_DistributeEvent'(s1: $1_staking_contract_DistributeEvent, s2: $1_staking_contract_DistributeEvent): bool { - s1 == s2 -} - -// struct staking_contract::RequestCommissionEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:135:5+177 -type {:datatype} $1_staking_contract_RequestCommissionEvent; -function {:constructor} $1_staking_contract_RequestCommissionEvent($operator: int, $pool_address: int, $accumulated_rewards: int, $commission_amount: int): $1_staking_contract_RequestCommissionEvent; -function {:inline} $Update'$1_staking_contract_RequestCommissionEvent'_operator(s: $1_staking_contract_RequestCommissionEvent, x: int): $1_staking_contract_RequestCommissionEvent { - $1_staking_contract_RequestCommissionEvent(x, $pool_address#$1_staking_contract_RequestCommissionEvent(s), $accumulated_rewards#$1_staking_contract_RequestCommissionEvent(s), $commission_amount#$1_staking_contract_RequestCommissionEvent(s)) -} -function {:inline} $Update'$1_staking_contract_RequestCommissionEvent'_pool_address(s: $1_staking_contract_RequestCommissionEvent, x: int): $1_staking_contract_RequestCommissionEvent { - $1_staking_contract_RequestCommissionEvent($operator#$1_staking_contract_RequestCommissionEvent(s), x, $accumulated_rewards#$1_staking_contract_RequestCommissionEvent(s), $commission_amount#$1_staking_contract_RequestCommissionEvent(s)) -} -function {:inline} $Update'$1_staking_contract_RequestCommissionEvent'_accumulated_rewards(s: $1_staking_contract_RequestCommissionEvent, x: int): $1_staking_contract_RequestCommissionEvent { - $1_staking_contract_RequestCommissionEvent($operator#$1_staking_contract_RequestCommissionEvent(s), $pool_address#$1_staking_contract_RequestCommissionEvent(s), x, $commission_amount#$1_staking_contract_RequestCommissionEvent(s)) -} -function {:inline} $Update'$1_staking_contract_RequestCommissionEvent'_commission_amount(s: $1_staking_contract_RequestCommissionEvent, x: int): $1_staking_contract_RequestCommissionEvent { - $1_staking_contract_RequestCommissionEvent($operator#$1_staking_contract_RequestCommissionEvent(s), $pool_address#$1_staking_contract_RequestCommissionEvent(s), $accumulated_rewards#$1_staking_contract_RequestCommissionEvent(s), x) -} -function $IsValid'$1_staking_contract_RequestCommissionEvent'(s: $1_staking_contract_RequestCommissionEvent): bool { - $IsValid'address'($operator#$1_staking_contract_RequestCommissionEvent(s)) - && $IsValid'address'($pool_address#$1_staking_contract_RequestCommissionEvent(s)) - && $IsValid'u64'($accumulated_rewards#$1_staking_contract_RequestCommissionEvent(s)) - && $IsValid'u64'($commission_amount#$1_staking_contract_RequestCommissionEvent(s)) -} -function {:inline} $IsEqual'$1_staking_contract_RequestCommissionEvent'(s1: $1_staking_contract_RequestCommissionEvent, s2: $1_staking_contract_RequestCommissionEvent): bool { - s1 == s2 -} - -// struct staking_contract::ResetLockupEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:124:5+105 -type {:datatype} $1_staking_contract_ResetLockupEvent; -function {:constructor} $1_staking_contract_ResetLockupEvent($operator: int, $pool_address: int): $1_staking_contract_ResetLockupEvent; -function {:inline} $Update'$1_staking_contract_ResetLockupEvent'_operator(s: $1_staking_contract_ResetLockupEvent, x: int): $1_staking_contract_ResetLockupEvent { - $1_staking_contract_ResetLockupEvent(x, $pool_address#$1_staking_contract_ResetLockupEvent(s)) -} -function {:inline} $Update'$1_staking_contract_ResetLockupEvent'_pool_address(s: $1_staking_contract_ResetLockupEvent, x: int): $1_staking_contract_ResetLockupEvent { - $1_staking_contract_ResetLockupEvent($operator#$1_staking_contract_ResetLockupEvent(s), x) -} -function $IsValid'$1_staking_contract_ResetLockupEvent'(s: $1_staking_contract_ResetLockupEvent): bool { - $IsValid'address'($operator#$1_staking_contract_ResetLockupEvent(s)) - && $IsValid'address'($pool_address#$1_staking_contract_ResetLockupEvent(s)) -} -function {:inline} $IsEqual'$1_staking_contract_ResetLockupEvent'(s1: $1_staking_contract_ResetLockupEvent, s2: $1_staking_contract_ResetLockupEvent): bool { - s1 == s2 -} - -// struct staking_contract::StakingContract at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:68:5+692 -type {:datatype} $1_staking_contract_StakingContract; -function {:constructor} $1_staking_contract_StakingContract($principal: int, $pool_address: int, $owner_cap: $1_stake_OwnerCapability, $commission_percentage: int, $distribution_pool: $1_pool_u64_Pool, $signer_cap: $1_account_SignerCapability): $1_staking_contract_StakingContract; -function {:inline} $Update'$1_staking_contract_StakingContract'_principal(s: $1_staking_contract_StakingContract, x: int): $1_staking_contract_StakingContract { - $1_staking_contract_StakingContract(x, $pool_address#$1_staking_contract_StakingContract(s), $owner_cap#$1_staking_contract_StakingContract(s), $commission_percentage#$1_staking_contract_StakingContract(s), $distribution_pool#$1_staking_contract_StakingContract(s), $signer_cap#$1_staking_contract_StakingContract(s)) -} -function {:inline} $Update'$1_staking_contract_StakingContract'_pool_address(s: $1_staking_contract_StakingContract, x: int): $1_staking_contract_StakingContract { - $1_staking_contract_StakingContract($principal#$1_staking_contract_StakingContract(s), x, $owner_cap#$1_staking_contract_StakingContract(s), $commission_percentage#$1_staking_contract_StakingContract(s), $distribution_pool#$1_staking_contract_StakingContract(s), $signer_cap#$1_staking_contract_StakingContract(s)) -} -function {:inline} $Update'$1_staking_contract_StakingContract'_owner_cap(s: $1_staking_contract_StakingContract, x: $1_stake_OwnerCapability): $1_staking_contract_StakingContract { - $1_staking_contract_StakingContract($principal#$1_staking_contract_StakingContract(s), $pool_address#$1_staking_contract_StakingContract(s), x, $commission_percentage#$1_staking_contract_StakingContract(s), $distribution_pool#$1_staking_contract_StakingContract(s), $signer_cap#$1_staking_contract_StakingContract(s)) -} -function {:inline} $Update'$1_staking_contract_StakingContract'_commission_percentage(s: $1_staking_contract_StakingContract, x: int): $1_staking_contract_StakingContract { - $1_staking_contract_StakingContract($principal#$1_staking_contract_StakingContract(s), $pool_address#$1_staking_contract_StakingContract(s), $owner_cap#$1_staking_contract_StakingContract(s), x, $distribution_pool#$1_staking_contract_StakingContract(s), $signer_cap#$1_staking_contract_StakingContract(s)) -} -function {:inline} $Update'$1_staking_contract_StakingContract'_distribution_pool(s: $1_staking_contract_StakingContract, x: $1_pool_u64_Pool): $1_staking_contract_StakingContract { - $1_staking_contract_StakingContract($principal#$1_staking_contract_StakingContract(s), $pool_address#$1_staking_contract_StakingContract(s), $owner_cap#$1_staking_contract_StakingContract(s), $commission_percentage#$1_staking_contract_StakingContract(s), x, $signer_cap#$1_staking_contract_StakingContract(s)) -} -function {:inline} $Update'$1_staking_contract_StakingContract'_signer_cap(s: $1_staking_contract_StakingContract, x: $1_account_SignerCapability): $1_staking_contract_StakingContract { - $1_staking_contract_StakingContract($principal#$1_staking_contract_StakingContract(s), $pool_address#$1_staking_contract_StakingContract(s), $owner_cap#$1_staking_contract_StakingContract(s), $commission_percentage#$1_staking_contract_StakingContract(s), $distribution_pool#$1_staking_contract_StakingContract(s), x) -} -function $IsValid'$1_staking_contract_StakingContract'(s: $1_staking_contract_StakingContract): bool { - $IsValid'u64'($principal#$1_staking_contract_StakingContract(s)) - && $IsValid'address'($pool_address#$1_staking_contract_StakingContract(s)) - && $IsValid'$1_stake_OwnerCapability'($owner_cap#$1_staking_contract_StakingContract(s)) - && $IsValid'u64'($commission_percentage#$1_staking_contract_StakingContract(s)) - && $IsValid'$1_pool_u64_Pool'($distribution_pool#$1_staking_contract_StakingContract(s)) - && $IsValid'$1_account_SignerCapability'($signer_cap#$1_staking_contract_StakingContract(s)) -} -function {:inline} $IsEqual'$1_staking_contract_StakingContract'(s1: $1_staking_contract_StakingContract, s2: $1_staking_contract_StakingContract): bool { - $IsEqual'u64'($principal#$1_staking_contract_StakingContract(s1), $principal#$1_staking_contract_StakingContract(s2)) - && $IsEqual'address'($pool_address#$1_staking_contract_StakingContract(s1), $pool_address#$1_staking_contract_StakingContract(s2)) - && $IsEqual'$1_stake_OwnerCapability'($owner_cap#$1_staking_contract_StakingContract(s1), $owner_cap#$1_staking_contract_StakingContract(s2)) - && $IsEqual'u64'($commission_percentage#$1_staking_contract_StakingContract(s1), $commission_percentage#$1_staking_contract_StakingContract(s2)) - && $IsEqual'$1_pool_u64_Pool'($distribution_pool#$1_staking_contract_StakingContract(s1), $distribution_pool#$1_staking_contract_StakingContract(s2)) - && $IsEqual'$1_account_SignerCapability'($signer_cap#$1_staking_contract_StakingContract(s1), $signer_cap#$1_staking_contract_StakingContract(s2))} - -// struct staking_contract::Store at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:82:5+690 -type {:datatype} $1_staking_contract_Store; -function {:constructor} $1_staking_contract_Store($staking_contracts: Table int ($1_staking_contract_StakingContract), $create_staking_contract_events: $1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent', $update_voter_events: $1_event_EventHandle'$1_staking_contract_UpdateVoterEvent', $reset_lockup_events: $1_event_EventHandle'$1_staking_contract_ResetLockupEvent', $add_stake_events: $1_event_EventHandle'$1_staking_contract_AddStakeEvent', $request_commission_events: $1_event_EventHandle'$1_staking_contract_RequestCommissionEvent', $unlock_stake_events: $1_event_EventHandle'$1_staking_contract_UnlockStakeEvent', $switch_operator_events: $1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent', $add_distribution_events: $1_event_EventHandle'$1_staking_contract_AddDistributionEvent', $distribute_events: $1_event_EventHandle'$1_staking_contract_DistributeEvent'): $1_staking_contract_Store; -function {:inline} $Update'$1_staking_contract_Store'_staking_contracts(s: $1_staking_contract_Store, x: Table int ($1_staking_contract_StakingContract)): $1_staking_contract_Store { - $1_staking_contract_Store(x, $create_staking_contract_events#$1_staking_contract_Store(s), $update_voter_events#$1_staking_contract_Store(s), $reset_lockup_events#$1_staking_contract_Store(s), $add_stake_events#$1_staking_contract_Store(s), $request_commission_events#$1_staking_contract_Store(s), $unlock_stake_events#$1_staking_contract_Store(s), $switch_operator_events#$1_staking_contract_Store(s), $add_distribution_events#$1_staking_contract_Store(s), $distribute_events#$1_staking_contract_Store(s)) -} -function {:inline} $Update'$1_staking_contract_Store'_create_staking_contract_events(s: $1_staking_contract_Store, x: $1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent'): $1_staking_contract_Store { - $1_staking_contract_Store($staking_contracts#$1_staking_contract_Store(s), x, $update_voter_events#$1_staking_contract_Store(s), $reset_lockup_events#$1_staking_contract_Store(s), $add_stake_events#$1_staking_contract_Store(s), $request_commission_events#$1_staking_contract_Store(s), $unlock_stake_events#$1_staking_contract_Store(s), $switch_operator_events#$1_staking_contract_Store(s), $add_distribution_events#$1_staking_contract_Store(s), $distribute_events#$1_staking_contract_Store(s)) -} -function {:inline} $Update'$1_staking_contract_Store'_update_voter_events(s: $1_staking_contract_Store, x: $1_event_EventHandle'$1_staking_contract_UpdateVoterEvent'): $1_staking_contract_Store { - $1_staking_contract_Store($staking_contracts#$1_staking_contract_Store(s), $create_staking_contract_events#$1_staking_contract_Store(s), x, $reset_lockup_events#$1_staking_contract_Store(s), $add_stake_events#$1_staking_contract_Store(s), $request_commission_events#$1_staking_contract_Store(s), $unlock_stake_events#$1_staking_contract_Store(s), $switch_operator_events#$1_staking_contract_Store(s), $add_distribution_events#$1_staking_contract_Store(s), $distribute_events#$1_staking_contract_Store(s)) -} -function {:inline} $Update'$1_staking_contract_Store'_reset_lockup_events(s: $1_staking_contract_Store, x: $1_event_EventHandle'$1_staking_contract_ResetLockupEvent'): $1_staking_contract_Store { - $1_staking_contract_Store($staking_contracts#$1_staking_contract_Store(s), $create_staking_contract_events#$1_staking_contract_Store(s), $update_voter_events#$1_staking_contract_Store(s), x, $add_stake_events#$1_staking_contract_Store(s), $request_commission_events#$1_staking_contract_Store(s), $unlock_stake_events#$1_staking_contract_Store(s), $switch_operator_events#$1_staking_contract_Store(s), $add_distribution_events#$1_staking_contract_Store(s), $distribute_events#$1_staking_contract_Store(s)) -} -function {:inline} $Update'$1_staking_contract_Store'_add_stake_events(s: $1_staking_contract_Store, x: $1_event_EventHandle'$1_staking_contract_AddStakeEvent'): $1_staking_contract_Store { - $1_staking_contract_Store($staking_contracts#$1_staking_contract_Store(s), $create_staking_contract_events#$1_staking_contract_Store(s), $update_voter_events#$1_staking_contract_Store(s), $reset_lockup_events#$1_staking_contract_Store(s), x, $request_commission_events#$1_staking_contract_Store(s), $unlock_stake_events#$1_staking_contract_Store(s), $switch_operator_events#$1_staking_contract_Store(s), $add_distribution_events#$1_staking_contract_Store(s), $distribute_events#$1_staking_contract_Store(s)) -} -function {:inline} $Update'$1_staking_contract_Store'_request_commission_events(s: $1_staking_contract_Store, x: $1_event_EventHandle'$1_staking_contract_RequestCommissionEvent'): $1_staking_contract_Store { - $1_staking_contract_Store($staking_contracts#$1_staking_contract_Store(s), $create_staking_contract_events#$1_staking_contract_Store(s), $update_voter_events#$1_staking_contract_Store(s), $reset_lockup_events#$1_staking_contract_Store(s), $add_stake_events#$1_staking_contract_Store(s), x, $unlock_stake_events#$1_staking_contract_Store(s), $switch_operator_events#$1_staking_contract_Store(s), $add_distribution_events#$1_staking_contract_Store(s), $distribute_events#$1_staking_contract_Store(s)) -} -function {:inline} $Update'$1_staking_contract_Store'_unlock_stake_events(s: $1_staking_contract_Store, x: $1_event_EventHandle'$1_staking_contract_UnlockStakeEvent'): $1_staking_contract_Store { - $1_staking_contract_Store($staking_contracts#$1_staking_contract_Store(s), $create_staking_contract_events#$1_staking_contract_Store(s), $update_voter_events#$1_staking_contract_Store(s), $reset_lockup_events#$1_staking_contract_Store(s), $add_stake_events#$1_staking_contract_Store(s), $request_commission_events#$1_staking_contract_Store(s), x, $switch_operator_events#$1_staking_contract_Store(s), $add_distribution_events#$1_staking_contract_Store(s), $distribute_events#$1_staking_contract_Store(s)) -} -function {:inline} $Update'$1_staking_contract_Store'_switch_operator_events(s: $1_staking_contract_Store, x: $1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent'): $1_staking_contract_Store { - $1_staking_contract_Store($staking_contracts#$1_staking_contract_Store(s), $create_staking_contract_events#$1_staking_contract_Store(s), $update_voter_events#$1_staking_contract_Store(s), $reset_lockup_events#$1_staking_contract_Store(s), $add_stake_events#$1_staking_contract_Store(s), $request_commission_events#$1_staking_contract_Store(s), $unlock_stake_events#$1_staking_contract_Store(s), x, $add_distribution_events#$1_staking_contract_Store(s), $distribute_events#$1_staking_contract_Store(s)) -} -function {:inline} $Update'$1_staking_contract_Store'_add_distribution_events(s: $1_staking_contract_Store, x: $1_event_EventHandle'$1_staking_contract_AddDistributionEvent'): $1_staking_contract_Store { - $1_staking_contract_Store($staking_contracts#$1_staking_contract_Store(s), $create_staking_contract_events#$1_staking_contract_Store(s), $update_voter_events#$1_staking_contract_Store(s), $reset_lockup_events#$1_staking_contract_Store(s), $add_stake_events#$1_staking_contract_Store(s), $request_commission_events#$1_staking_contract_Store(s), $unlock_stake_events#$1_staking_contract_Store(s), $switch_operator_events#$1_staking_contract_Store(s), x, $distribute_events#$1_staking_contract_Store(s)) -} -function {:inline} $Update'$1_staking_contract_Store'_distribute_events(s: $1_staking_contract_Store, x: $1_event_EventHandle'$1_staking_contract_DistributeEvent'): $1_staking_contract_Store { - $1_staking_contract_Store($staking_contracts#$1_staking_contract_Store(s), $create_staking_contract_events#$1_staking_contract_Store(s), $update_voter_events#$1_staking_contract_Store(s), $reset_lockup_events#$1_staking_contract_Store(s), $add_stake_events#$1_staking_contract_Store(s), $request_commission_events#$1_staking_contract_Store(s), $unlock_stake_events#$1_staking_contract_Store(s), $switch_operator_events#$1_staking_contract_Store(s), $add_distribution_events#$1_staking_contract_Store(s), x) -} -function $IsValid'$1_staking_contract_Store'(s: $1_staking_contract_Store): bool { - $IsValid'$1_simple_map_SimpleMap'address_$1_staking_contract_StakingContract''($staking_contracts#$1_staking_contract_Store(s)) - && $IsValid'$1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent''($create_staking_contract_events#$1_staking_contract_Store(s)) - && $IsValid'$1_event_EventHandle'$1_staking_contract_UpdateVoterEvent''($update_voter_events#$1_staking_contract_Store(s)) - && $IsValid'$1_event_EventHandle'$1_staking_contract_ResetLockupEvent''($reset_lockup_events#$1_staking_contract_Store(s)) - && $IsValid'$1_event_EventHandle'$1_staking_contract_AddStakeEvent''($add_stake_events#$1_staking_contract_Store(s)) - && $IsValid'$1_event_EventHandle'$1_staking_contract_RequestCommissionEvent''($request_commission_events#$1_staking_contract_Store(s)) - && $IsValid'$1_event_EventHandle'$1_staking_contract_UnlockStakeEvent''($unlock_stake_events#$1_staking_contract_Store(s)) - && $IsValid'$1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent''($switch_operator_events#$1_staking_contract_Store(s)) - && $IsValid'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent''($add_distribution_events#$1_staking_contract_Store(s)) - && $IsValid'$1_event_EventHandle'$1_staking_contract_DistributeEvent''($distribute_events#$1_staking_contract_Store(s)) -} -function {:inline} $IsEqual'$1_staking_contract_Store'(s1: $1_staking_contract_Store, s2: $1_staking_contract_Store): bool { - $IsEqual'$1_simple_map_SimpleMap'address_$1_staking_contract_StakingContract''($staking_contracts#$1_staking_contract_Store(s1), $staking_contracts#$1_staking_contract_Store(s2)) - && $IsEqual'$1_event_EventHandle'$1_staking_contract_CreateStakingContractEvent''($create_staking_contract_events#$1_staking_contract_Store(s1), $create_staking_contract_events#$1_staking_contract_Store(s2)) - && $IsEqual'$1_event_EventHandle'$1_staking_contract_UpdateVoterEvent''($update_voter_events#$1_staking_contract_Store(s1), $update_voter_events#$1_staking_contract_Store(s2)) - && $IsEqual'$1_event_EventHandle'$1_staking_contract_ResetLockupEvent''($reset_lockup_events#$1_staking_contract_Store(s1), $reset_lockup_events#$1_staking_contract_Store(s2)) - && $IsEqual'$1_event_EventHandle'$1_staking_contract_AddStakeEvent''($add_stake_events#$1_staking_contract_Store(s1), $add_stake_events#$1_staking_contract_Store(s2)) - && $IsEqual'$1_event_EventHandle'$1_staking_contract_RequestCommissionEvent''($request_commission_events#$1_staking_contract_Store(s1), $request_commission_events#$1_staking_contract_Store(s2)) - && $IsEqual'$1_event_EventHandle'$1_staking_contract_UnlockStakeEvent''($unlock_stake_events#$1_staking_contract_Store(s1), $unlock_stake_events#$1_staking_contract_Store(s2)) - && $IsEqual'$1_event_EventHandle'$1_staking_contract_SwitchOperatorEvent''($switch_operator_events#$1_staking_contract_Store(s1), $switch_operator_events#$1_staking_contract_Store(s2)) - && $IsEqual'$1_event_EventHandle'$1_staking_contract_AddDistributionEvent''($add_distribution_events#$1_staking_contract_Store(s1), $add_distribution_events#$1_staking_contract_Store(s2)) - && $IsEqual'$1_event_EventHandle'$1_staking_contract_DistributeEvent''($distribute_events#$1_staking_contract_Store(s1), $distribute_events#$1_staking_contract_Store(s2))} -var $1_staking_contract_Store_$memory: $Memory $1_staking_contract_Store; - -// struct staking_contract::SwitchOperatorEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:149:5+143 -type {:datatype} $1_staking_contract_SwitchOperatorEvent; -function {:constructor} $1_staking_contract_SwitchOperatorEvent($old_operator: int, $new_operator: int, $pool_address: int): $1_staking_contract_SwitchOperatorEvent; -function {:inline} $Update'$1_staking_contract_SwitchOperatorEvent'_old_operator(s: $1_staking_contract_SwitchOperatorEvent, x: int): $1_staking_contract_SwitchOperatorEvent { - $1_staking_contract_SwitchOperatorEvent(x, $new_operator#$1_staking_contract_SwitchOperatorEvent(s), $pool_address#$1_staking_contract_SwitchOperatorEvent(s)) -} -function {:inline} $Update'$1_staking_contract_SwitchOperatorEvent'_new_operator(s: $1_staking_contract_SwitchOperatorEvent, x: int): $1_staking_contract_SwitchOperatorEvent { - $1_staking_contract_SwitchOperatorEvent($old_operator#$1_staking_contract_SwitchOperatorEvent(s), x, $pool_address#$1_staking_contract_SwitchOperatorEvent(s)) -} -function {:inline} $Update'$1_staking_contract_SwitchOperatorEvent'_pool_address(s: $1_staking_contract_SwitchOperatorEvent, x: int): $1_staking_contract_SwitchOperatorEvent { - $1_staking_contract_SwitchOperatorEvent($old_operator#$1_staking_contract_SwitchOperatorEvent(s), $new_operator#$1_staking_contract_SwitchOperatorEvent(s), x) -} -function $IsValid'$1_staking_contract_SwitchOperatorEvent'(s: $1_staking_contract_SwitchOperatorEvent): bool { - $IsValid'address'($old_operator#$1_staking_contract_SwitchOperatorEvent(s)) - && $IsValid'address'($new_operator#$1_staking_contract_SwitchOperatorEvent(s)) - && $IsValid'address'($pool_address#$1_staking_contract_SwitchOperatorEvent(s)) -} -function {:inline} $IsEqual'$1_staking_contract_SwitchOperatorEvent'(s1: $1_staking_contract_SwitchOperatorEvent, s2: $1_staking_contract_SwitchOperatorEvent): bool { - s1 == s2 -} - -// struct staking_contract::UpdateVoterEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:117:5+161 -type {:datatype} $1_staking_contract_UpdateVoterEvent; -function {:constructor} $1_staking_contract_UpdateVoterEvent($operator: int, $pool_address: int, $old_voter: int, $new_voter: int): $1_staking_contract_UpdateVoterEvent; -function {:inline} $Update'$1_staking_contract_UpdateVoterEvent'_operator(s: $1_staking_contract_UpdateVoterEvent, x: int): $1_staking_contract_UpdateVoterEvent { - $1_staking_contract_UpdateVoterEvent(x, $pool_address#$1_staking_contract_UpdateVoterEvent(s), $old_voter#$1_staking_contract_UpdateVoterEvent(s), $new_voter#$1_staking_contract_UpdateVoterEvent(s)) -} -function {:inline} $Update'$1_staking_contract_UpdateVoterEvent'_pool_address(s: $1_staking_contract_UpdateVoterEvent, x: int): $1_staking_contract_UpdateVoterEvent { - $1_staking_contract_UpdateVoterEvent($operator#$1_staking_contract_UpdateVoterEvent(s), x, $old_voter#$1_staking_contract_UpdateVoterEvent(s), $new_voter#$1_staking_contract_UpdateVoterEvent(s)) -} -function {:inline} $Update'$1_staking_contract_UpdateVoterEvent'_old_voter(s: $1_staking_contract_UpdateVoterEvent, x: int): $1_staking_contract_UpdateVoterEvent { - $1_staking_contract_UpdateVoterEvent($operator#$1_staking_contract_UpdateVoterEvent(s), $pool_address#$1_staking_contract_UpdateVoterEvent(s), x, $new_voter#$1_staking_contract_UpdateVoterEvent(s)) -} -function {:inline} $Update'$1_staking_contract_UpdateVoterEvent'_new_voter(s: $1_staking_contract_UpdateVoterEvent, x: int): $1_staking_contract_UpdateVoterEvent { - $1_staking_contract_UpdateVoterEvent($operator#$1_staking_contract_UpdateVoterEvent(s), $pool_address#$1_staking_contract_UpdateVoterEvent(s), $old_voter#$1_staking_contract_UpdateVoterEvent(s), x) -} -function $IsValid'$1_staking_contract_UpdateVoterEvent'(s: $1_staking_contract_UpdateVoterEvent): bool { - $IsValid'address'($operator#$1_staking_contract_UpdateVoterEvent(s)) - && $IsValid'address'($pool_address#$1_staking_contract_UpdateVoterEvent(s)) - && $IsValid'address'($old_voter#$1_staking_contract_UpdateVoterEvent(s)) - && $IsValid'address'($new_voter#$1_staking_contract_UpdateVoterEvent(s)) -} -function {:inline} $IsEqual'$1_staking_contract_UpdateVoterEvent'(s1: $1_staking_contract_UpdateVoterEvent, s2: $1_staking_contract_UpdateVoterEvent): bool { - s1 == s2 -} - -// fun staking_contract::assert_staking_contract_exists [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:633:5+446 -procedure {:inline 1} $1_staking_contract_assert_staking_contract_exists(_$t0: int, _$t1: int) returns () -{ - // declare local variables - var $t2: int; - var $t3: Table int ($1_staking_contract_StakingContract); - var $t4: bool; - var $t5: int; - var $t6: int; - var $t7: int; - var $t8: $Mutation ($1_staking_contract_Store); - var $t9: $Mutation (Table int ($1_staking_contract_StakingContract)); - var $t10: Table int ($1_staking_contract_StakingContract); - var $t11: bool; - var $t12: int; - var $t13: int; - var $t0: int; - var $t1: int; - var $temp_0'address': int; - $t0 := _$t0; - $t1 := _$t1; - - // bytecode translation starts here - // assume Identical($t3, select staking_contract::Store.staking_contracts(global($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:302:9+64 - assume {:print "$at(141,12978,13042)"} true; - assume ($t3 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t0))); - - // trace_local[staker]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:633:5+1 - assume {:print "$at(140,29972,29973)"} true; - assume {:print "$track_local(58,2,0):", $t0} $t0 == $t0; - - // trace_local[operator]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:633:5+1 - assume {:print "$track_local(58,2,1):", $t1} $t1 == $t1; - - // $t4 := exists($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:634:17+6 - assume {:print "$at(140,30076,30082)"} true; - $t4 := $ResourceExists($1_staking_contract_Store_$memory, $t0); - - // if ($t4) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:634:9+87 - if ($t4) { goto L1; } else { goto L0; } - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:634:9+87 -L1: - - // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:634:9+87 - assume {:print "$at(140,30068,30155)"} true; - goto L2; - - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:634:57+37 -L0: - - // $t5 := 3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:634:57+37 - assume {:print "$at(140,30116,30153)"} true; - $t5 := 3; - assume $IsValid'u64'($t5); - - // $t6 := error::not_found($t5) on_abort goto L7 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:634:40+55 - call $t6 := $1_error_not_found($t5); - if ($abort_flag) { - assume {:print "$at(140,30099,30154)"} true; - $t7 := $abort_code; - assume {:print "$track_abort(58,2):", $t7} $t7 == $t7; - goto L7; - } - - // trace_abort($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:634:9+87 - assume {:print "$at(140,30068,30155)"} true; - assume {:print "$track_abort(58,2):", $t6} $t6 == $t6; - - // $t7 := move($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:634:9+87 - $t7 := $t6; - - // goto L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:634:9+87 - goto L7; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:635:63+6 - assume {:print "$at(140,30219,30225)"} true; -L2: - - // $t8 := borrow_global($t0) on_abort goto L7 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:635:38+17 - assume {:print "$at(140,30194,30211)"} true; - if (!$ResourceExists($1_staking_contract_Store_$memory, $t0)) { - call $ExecFailureAbort(); - } else { - $t8 := $Mutation($Global($t0), EmptyVec(), $ResourceValue($1_staking_contract_Store_$memory, $t0)); - } - if ($abort_flag) { - assume {:print "$at(140,30194,30211)"} true; - $t7 := $abort_code; - assume {:print "$track_abort(58,2):", $t7} $t7 == $t7; - goto L7; - } - - // $t9 := borrow_field.staking_contracts($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:635:33+55 - $t9 := $ChildMutation($t8, 0, $staking_contracts#$1_staking_contract_Store($Dereference($t8))); - - // $t10 := read_ref($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:637:37+30 - assume {:print "$at(140,30299,30329)"} true; - $t10 := $Dereference($t9); - - // pack_ref_deep($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:637:37+30 - - // $t11 := simple_map::contains_key($t10, $t1) on_abort goto L7 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:637:13+54 - call $t11 := $1_simple_map_contains_key'address_$1_staking_contract_StakingContract'($t10, $t1); - if ($abort_flag) { - assume {:print "$at(140,30275,30329)"} true; - $t7 := $abort_code; - assume {:print "$track_abort(58,2):", $t7} $t7 == $t7; - goto L7; - } - - // if ($t11) goto L4 else goto L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:636:9+157 - assume {:print "$at(140,30254,30411)"} true; - if ($t11) { goto L4; } else { goto L3; } - - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:636:9+157 -L4: - - // goto L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:636:9+157 - assume {:print "$at(140,30254,30411)"} true; - goto L5; - - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:638:30+39 - assume {:print "$at(140,30360,30399)"} true; -L3: - - // $t12 := 4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:638:30+39 - assume {:print "$at(140,30360,30399)"} true; - $t12 := 4; - assume $IsValid'u64'($t12); - - // $t13 := error::not_found($t12) on_abort goto L7 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:638:13+57 - call $t13 := $1_error_not_found($t12); - if ($abort_flag) { - assume {:print "$at(140,30343,30400)"} true; - $t7 := $abort_code; - assume {:print "$track_abort(58,2):", $t7} $t7 == $t7; - goto L7; - } - - // trace_abort($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:636:9+157 - assume {:print "$at(140,30254,30411)"} true; - assume {:print "$track_abort(58,2):", $t13} $t13 == $t13; - - // $t7 := move($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:636:9+157 - $t7 := $t13; - - // goto L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:636:9+157 - goto L7; - - // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:639:10+1 - assume {:print "$at(140,30411,30412)"} true; -L5: - - // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:640:5+1 - assume {:print "$at(140,30417,30418)"} true; -L6: - - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:640:5+1 - assume {:print "$at(140,30417,30418)"} true; - return; - - // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:640:5+1 -L7: - - // abort($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:640:5+1 - assume {:print "$at(140,30417,30418)"} true; - $abort_code := $t7; - $abort_flag := true; - return; - -} - -// fun staking_contract::get_staking_contract_amounts_internal [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:664:5+869 -procedure {:inline 1} $1_staking_contract_get_staking_contract_amounts_internal(_$t0: $1_staking_contract_StakingContract) returns ($ret0: int, $ret1: int, $ret2: int) -{ - // declare local variables - var $t1: int; - var $t2: int; - var $t3: int; - var $t4: int; - var $t5: int; - var $t6: $1_stake_StakePool; - var $t7: int; - var $t8: int; - var $t9: int; - var $t10: int; - var $t11: int; - var $t12: int; - var $t13: int; - var $t14: int; - var $t15: int; - var $t16: int; - var $t17: int; - var $t18: int; - var $t19: int; - var $t20: int; - var $t21: int; - var $t22: int; - var $t23: int; - var $t0: $1_staking_contract_StakingContract; - var $temp_0'$1_staking_contract_StakingContract': $1_staking_contract_StakingContract; - var $temp_0'u64': int; - $t0 := _$t0; - - // bytecode translation starts here - // assume Identical($t5, select staking_contract::StakingContract.pool_address($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:334:9+49 - assume {:print "$at(141,14229,14278)"} true; - assume ($t5 == $pool_address#$1_staking_contract_StakingContract($t0)); - - // assume Identical($t6, global($t5)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:335:9+56 - assume {:print "$at(141,14287,14343)"} true; - assume ($t6 == $ResourceValue($1_stake_StakePool_$memory, $t5)); - - // assume Identical($t7, coin::$value(select stake::StakePool.active($t6))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:336:9+44 - assume {:print "$at(141,14352,14396)"} true; - assume ($t7 == $1_coin_$value'$1_aptos_coin_AptosCoin'($active#$1_stake_StakePool($t6))); - - // assume Identical($t8, coin::$value(select stake::StakePool.pending_active($t6))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:337:9+60 - assume {:print "$at(141,14405,14465)"} true; - assume ($t8 == $1_coin_$value'$1_aptos_coin_AptosCoin'($pending_active#$1_stake_StakePool($t6))); - - // assume Identical($t9, Add($t7, $t8)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:338:9+49 - assume {:print "$at(141,14474,14523)"} true; - assume ($t9 == ($t7 + $t8)); - - // assume Identical($t10, Sub($t9, select staking_contract::StakingContract.principal($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:339:9+74 - assume {:print "$at(141,14532,14606)"} true; - assume ($t10 == ($t9 - $principal#$1_staking_contract_StakingContract($t0))); - - // assume And(Ge(select staking_contract::StakingContract.commission_percentage($t0), 0), Le(select staking_contract::StakingContract.commission_percentage($t0), 100)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:332:9+102 - assume {:print "$at(141,14117,14219)"} true; - assume (($commission_percentage#$1_staking_contract_StakingContract($t0) >= 0) && ($commission_percentage#$1_staking_contract_StakingContract($t0) <= 100)); - - // trace_local[staking_contract]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:664:5+1 - assume {:print "$at(140,31442,31443)"} true; - assume {:print "$track_local(58,11,0):", $t0} $t0 == $t0; - - // $t11 := get_field.pool_address($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:669:63+29 - assume {:print "$at(140,31963,31992)"} true; - $t11 := $pool_address#$1_staking_contract_StakingContract($t0); - - // ($t12, $t13, $t14, $t15) := stake::get_stake($t11) on_abort goto L2 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:669:46+47 - call $t12,$t13,$t14,$t15 := $1_stake_get_stake($t11); - if ($abort_flag) { - assume {:print "$at(140,31946,31993)"} true; - $t16 := $abort_code; - assume {:print "$track_abort(58,11):", $t16} $t16 == $t16; - goto L2; - } - - // destroy($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:669:41+1 - - // trace_local[pending_active]($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:669:25+14 - assume {:print "$track_local(58,11,3):", $t14} $t14 == $t14; - - // destroy($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:669:22+1 - - // $t17 := +($t12, $t14) on_abort goto L2 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:670:41+1 - assume {:print "$at(140,32035,32036)"} true; - call $t17 := $AddU64($t12, $t14); - if ($abort_flag) { - assume {:print "$at(140,32035,32036)"} true; - $t16 := $abort_code; - assume {:print "$track_abort(58,11):", $t16} $t16 == $t16; - goto L2; - } - - // trace_local[total_active_stake]($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:670:13+18 - assume {:print "$track_local(58,11,4):", $t17} $t17 == $t17; - - // $t18 := get_field.principal($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:671:56+26 - assume {:print "$at(140,32108,32134)"} true; - $t18 := $principal#$1_staking_contract_StakingContract($t0); - - // $t19 := -($t17, $t18) on_abort goto L2 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:671:54+1 - call $t19 := $Sub($t17, $t18); - if ($abort_flag) { - assume {:print "$at(140,32106,32107)"} true; - $t16 := $abort_code; - assume {:print "$track_abort(58,11):", $t16} $t16 == $t16; - goto L2; - } - - // trace_local[accumulated_rewards]($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:671:13+19 - assume {:print "$track_local(58,11,1):", $t19} $t19 == $t19; - - // $t20 := get_field.commission_percentage($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:672:55+38 - assume {:print "$at(140,32190,32228)"} true; - $t20 := $commission_percentage#$1_staking_contract_StakingContract($t0); - - // $t21 := *($t19, $t20) on_abort goto L2 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:672:53+1 - call $t21 := $MulU64($t19, $t20); - if ($abort_flag) { - assume {:print "$at(140,32188,32189)"} true; - $t16 := $abort_code; - assume {:print "$track_abort(58,11):", $t16} $t16 == $t16; - goto L2; - } - - // $t22 := 100 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:672:96+3 - $t22 := 100; - assume $IsValid'u64'($t22); - - // $t23 := /($t21, $t22) on_abort goto L2 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:672:94+1 - call $t23 := $Div($t21, $t22); - if ($abort_flag) { - assume {:print "$at(140,32229,32230)"} true; - $t16 := $abort_code; - assume {:print "$track_abort(58,11):", $t16} $t16 == $t16; - goto L2; - } - - // trace_local[commission_amount]($t23) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:672:13+17 - assume {:print "$track_local(58,11,2):", $t23} $t23 == $t23; - - // trace_return[0]($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:674:9+60 - assume {:print "$at(140,32245,32305)"} true; - assume {:print "$track_return(58,11,0):", $t17} $t17 == $t17; - - // trace_return[1]($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:674:9+60 - assume {:print "$track_return(58,11,1):", $t19} $t19 == $t19; - - // trace_return[2]($t23) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:674:9+60 - assume {:print "$track_return(58,11,2):", $t23} $t23 == $t23; - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:675:5+1 - assume {:print "$at(140,32310,32311)"} true; -L1: - - // return ($t17, $t19, $t23) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:675:5+1 - assume {:print "$at(140,32310,32311)"} true; - $ret0 := $t17; - $ret1 := $t19; - $ret2 := $t23; - return; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:675:5+1 -L2: - - // abort($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:675:5+1 - assume {:print "$at(140,32310,32311)"} true; - $abort_code := $t16; - $abort_flag := true; - return; - -} - -// fun staking_contract::reset_lockup [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:363:5+596 -procedure {:inline 1} $1_staking_contract_reset_lockup(_$t0: $signer, _$t1: int) returns () -{ - // declare local variables - var $t2: int; - var $t3: int; - var $t4: $Mutation ($1_staking_contract_StakingContract); - var $t5: $Mutation ($1_staking_contract_Store); - var $t6: int; - var $t7: Table int ($1_staking_contract_StakingContract); - var $t8: $1_staking_contract_Store; - var $t9: $1_staking_contract_StakingContract; - var $t10: int; - var $t11: $1_staking_config_StakingConfig; - var $t12: $1_stake_StakePool; - var $t13: int; - var $t14: int; - var $t15: int; - var $t16: int; - var $t17: int; - var $t18: Table int ($1_staking_contract_StakingContract); - var $t19: $Mutation ($1_staking_contract_Store); - var $t20: $Mutation (Table int ($1_staking_contract_StakingContract)); - var $t21: $Mutation ($1_staking_contract_StakingContract); - var $t22: int; - var $t23: $1_stake_OwnerCapability; - var $t24: $1_staking_config_StakingConfig; - var $t25: int; - var $t26: $1_stake_StakePool; - var $t27: int; - var $t28: int; - var $t29: $Mutation ($1_event_EventHandle'$1_staking_contract_ResetLockupEvent'); - var $t30: $1_staking_contract_ResetLockupEvent; - var $t0: $signer; - var $t1: int; - var $temp_0'$1_staking_contract_StakingContract': $1_staking_contract_StakingContract; - var $temp_0'$1_staking_contract_Store': $1_staking_contract_Store; - var $temp_0'address': int; - var $temp_0'signer': $signer; - $t0 := _$t0; - $t1 := _$t1; - - // bytecode translation starts here - // assume Identical($t6, signer::$address_of($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:124:9+48 - assume {:print "$at(141,5165,5213)"} true; - assume ($t6 == $1_signer_$address_of($t0)); - - // assume Identical($t7, select staking_contract::Store.staking_contracts(global($t6))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:302:9+64 - assume {:print "$at(141,12978,13042)"} true; - assume ($t7 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t6))); - - // assume Identical($t8, global($t6)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:352:9+34 - assume {:print "$at(141,15082,15116)"} true; - assume ($t8 == $ResourceValue($1_staking_contract_Store_$memory, $t6)); - - // assume Identical($t9, simple_map::spec_get(select staking_contract::Store.staking_contracts($t8), $t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:353:9+79 - assume {:print "$at(141,15125,15204)"} true; - assume ($t9 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($t8), $t1)); - - // assume Identical($t10, select stake::OwnerCapability.pool_address(select staking_contract::StakingContract.owner_cap($t9))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:354:9+59 - assume {:print "$at(141,15213,15272)"} true; - assume ($t10 == $pool_address#$1_stake_OwnerCapability($owner_cap#$1_staking_contract_StakingContract($t9))); - - // assume Identical($t11, global(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:359:9+69 - assume {:print "$at(141,15418,15487)"} true; - assume ($t11 == $ResourceValue($1_staking_config_StakingConfig_$memory, 1)); - - // assume Identical($t12, global($t10)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:360:9+56 - assume {:print "$at(141,15496,15552)"} true; - assume ($t12 == $ResourceValue($1_stake_StakePool_$memory, $t10)); - - // assume Identical($t13, select stake::StakePool.locked_until_secs($t12)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:361:9+57 - assume {:print "$at(141,15561,15618)"} true; - assume ($t13 == $locked_until_secs#$1_stake_StakePool($t12)); - - // assume Identical($t14, Div(select timestamp::CurrentTimeMicroseconds.microseconds(global(0x1)), 1000000)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:362:9+126 - assume {:print "$at(141,15627,15753)"} true; - assume ($t14 == ($microseconds#$1_timestamp_CurrentTimeMicroseconds($ResourceValue($1_timestamp_CurrentTimeMicroseconds_$memory, 1)) div 1000000)); - - // assume Identical($t15, Add($t14, select staking_config::StakingConfig.recurring_lockup_duration_secs($t11))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:363:9+77 - assume {:print "$at(141,15762,15839)"} true; - assume ($t15 == ($t14 + $recurring_lockup_duration_secs#$1_staking_config_StakingConfig($t11))); - - // trace_local[staker]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:363:5+1 - assume {:print "$track_local(58,17,0):", $t0} $t0 == $t0; - - // trace_local[operator]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:363:5+1 - assume {:print "$track_local(58,17,1):", $t1} $t1 == $t1; - - // $t16 := signer::address_of($t0) on_abort goto L2 with $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:364:30+26 - assume {:print "$at(140,17010,17036)"} true; - call $t16 := $1_signer_address_of($t0); - if ($abort_flag) { - assume {:print "$at(140,17010,17036)"} true; - $t17 := $abort_code; - assume {:print "$track_abort(58,17):", $t17} $t17 == $t17; - goto L2; - } - - // trace_local[staker_address]($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:364:13+14 - assume {:print "$track_local(58,17,3):", $t16} $t16 == $t16; - - // assume Identical($t18, select staking_contract::Store.staking_contracts(global($t16))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:302:9+64 - assume {:print "$at(141,12978,13042)"} true; - assume ($t18 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t16))); - - // staking_contract::assert_staking_contract_exists($t16, $t1) on_abort goto L2 with $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:365:9+56 - assume {:print "$at(140,17046,17102)"} true; - call $1_staking_contract_assert_staking_contract_exists($t16, $t1); - if ($abort_flag) { - assume {:print "$at(140,17046,17102)"} true; - $t17 := $abort_code; - assume {:print "$track_abort(58,17):", $t17} $t17 == $t17; - goto L2; - } - - // $t19 := borrow_global($t16) on_abort goto L2 with $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:367:21+17 - assume {:print "$at(140,17125,17142)"} true; - if (!$ResourceExists($1_staking_contract_Store_$memory, $t16)) { - call $ExecFailureAbort(); - } else { - $t19 := $Mutation($Global($t16), EmptyVec(), $ResourceValue($1_staking_contract_Store_$memory, $t16)); - } - if ($abort_flag) { - assume {:print "$at(140,17125,17142)"} true; - $t17 := $abort_code; - assume {:print "$track_abort(58,17):", $t17} $t17 == $t17; - goto L2; - } - - // trace_local[store]($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:367:13+5 - $temp_0'$1_staking_contract_Store' := $Dereference($t19); - assume {:print "$track_local(58,17,5):", $temp_0'$1_staking_contract_Store'} $temp_0'$1_staking_contract_Store' == $temp_0'$1_staking_contract_Store'; - - // $t20 := borrow_field.staking_contracts($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:368:55+28 - assume {:print "$at(140,17221,17249)"} true; - $t20 := $ChildMutation($t19, 0, $staking_contracts#$1_staking_contract_Store($Dereference($t19))); - - // $t21 := simple_map::borrow_mut($t20, $t1) on_abort goto L2 with $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:368:32+63 - call $t21,$t20 := $1_simple_map_borrow_mut'address_$1_staking_contract_StakingContract'($t20, $t1); - if ($abort_flag) { - assume {:print "$at(140,17198,17261)"} true; - $t17 := $abort_code; - assume {:print "$track_abort(58,17):", $t17} $t17 == $t17; - goto L2; - } - - // trace_local[staking_contract]($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:368:13+16 - $temp_0'$1_staking_contract_StakingContract' := $Dereference($t21); - assume {:print "$track_local(58,17,4):", $temp_0'$1_staking_contract_StakingContract'} $temp_0'$1_staking_contract_StakingContract' == $temp_0'$1_staking_contract_StakingContract'; - - // $t22 := get_field.pool_address($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:369:28+29 - assume {:print "$at(140,17290,17319)"} true; - $t22 := $pool_address#$1_staking_contract_StakingContract($Dereference($t21)); - - // trace_local[pool_address]($t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:369:13+12 - assume {:print "$track_local(58,17,2):", $t22} $t22 == $t22; - - // $t23 := get_field.owner_cap($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:370:41+27 - assume {:print "$at(140,17361,17388)"} true; - $t23 := $owner_cap#$1_staking_contract_StakingContract($Dereference($t21)); - - // assume Identical($t24, global(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:67:9+69 - assume {:print "$at(139,3047,3116)"} true; - assume ($t24 == $ResourceValue($1_staking_config_StakingConfig_$memory, 1)); - - // assume Identical($t25, select stake::OwnerCapability.pool_address($t23)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:68:9+42 - assume {:print "$at(139,3125,3167)"} true; - assume ($t25 == $pool_address#$1_stake_OwnerCapability($t23)); - - // assume Identical($t26, global($t25)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:69:9+53 - assume {:print "$at(139,3176,3229)"} true; - assume ($t26 == $ResourceValue($1_stake_StakePool_$memory, $t25)); - - // assume Identical($t27, timestamp::spec_now_seconds()) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:71:9+48 - assume {:print "$at(139,3301,3349)"} true; - assume ($t27 == $1_timestamp_spec_now_seconds($1_timestamp_CurrentTimeMicroseconds_$memory)); - - // assume Identical($t28, select staking_config::StakingConfig.recurring_lockup_duration_secs($t24)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:72:9+51 - assume {:print "$at(139,3358,3409)"} true; - assume ($t28 == $recurring_lockup_duration_secs#$1_staking_config_StakingConfig($t24)); - - // stake::increase_lockup_with_cap($t23) on_abort goto L2 with $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:370:9+60 - assume {:print "$at(140,17329,17389)"} true; - call $1_stake_increase_lockup_with_cap($t23); - if ($abort_flag) { - assume {:print "$at(140,17329,17389)"} true; - $t17 := $abort_code; - assume {:print "$track_abort(58,17):", $t17} $t17 == $t17; - goto L2; - } - - // $t29 := borrow_field.reset_lockup_events($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:372:20+30 - assume {:print "$at(140,17411,17441)"} true; - $t29 := $ChildMutation($t19, 3, $reset_lockup_events#$1_staking_contract_Store($Dereference($t19))); - - // $t30 := pack staking_contract::ResetLockupEvent($t1, $t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:372:52+43 - $t30 := $1_staking_contract_ResetLockupEvent($t1, $t22); - - // opaque begin: event::emit_event($t29, $t30) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:372:9+87 - - // opaque end: event::emit_event($t29, $t30) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:372:9+87 - - // write_back[Reference($t19).reset_lockup_events (event::EventHandle)]($t29) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:372:9+87 - $t19 := $UpdateMutation($t19, $Update'$1_staking_contract_Store'_reset_lockup_events($Dereference($t19), $Dereference($t29))); - - // pack_ref_deep($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:372:9+87 - - // write_back[staking_contract::Store@]($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:372:9+87 - $1_staking_contract_Store_$memory := $ResourceUpdate($1_staking_contract_Store_$memory, $GlobalLocationAddress($t19), - $Dereference($t19)); - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:373:5+1 - assume {:print "$at(140,17493,17494)"} true; -L1: - - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:373:5+1 - assume {:print "$at(140,17493,17494)"} true; - return; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:373:5+1 -L2: - - // abort($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:373:5+1 - assume {:print "$at(140,17493,17494)"} true; - $abort_code := $t17; - $abort_flag := true; - return; - -} - -// fun staking_contract::staking_contract_amounts [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:208:5+395 -procedure {:inline 1} $1_staking_contract_staking_contract_amounts(_$t0: int, _$t1: int) returns ($ret0: int, $ret1: int, $ret2: int) -{ - // declare local variables - var $t2: Table int ($1_staking_contract_StakingContract); - var $t3: $1_staking_contract_StakingContract; - var $t4: int; - var $t5: $1_stake_StakePool; - var $t6: int; - var $t7: int; - var $t8: int; - var $t9: int; - var $t10: Table int ($1_staking_contract_StakingContract); - var $t11: int; - var $t12: $1_stake_StakePool; - var $t13: int; - var $t14: int; - var $t15: int; - var $t16: int; - var $t17: Table int ($1_staking_contract_StakingContract); - var $t18: int; - var $t19: $1_staking_contract_Store; - var $t20: Table int ($1_staking_contract_StakingContract); - var $t21: $1_staking_contract_StakingContract; - var $t22: int; - var $t23: $1_stake_StakePool; - var $t24: int; - var $t25: int; - var $t26: int; - var $t27: int; - var $t28: int; - var $t29: int; - var $t30: int; - var $t0: int; - var $t1: int; - var $temp_0'address': int; - var $temp_0'u64': int; - $t0 := _$t0; - $t1 := _$t1; - - // bytecode translation starts here - // assume Identical($t2, select staking_contract::Store.staking_contracts(global($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:25:9+64 - assume {:print "$at(141,843,907)"} true; - assume ($t2 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t0))); - - // assume Identical($t3, simple_map::spec_get($t2, $t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:26:9+73 - assume {:print "$at(141,916,989)"} true; - assume ($t3 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($t2, $t1)); - - // assume Identical($t4, select staking_contract::StakingContract.pool_address($t3)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:30:9+49 - assume {:print "$at(141,1108,1157)"} true; - assume ($t4 == $pool_address#$1_staking_contract_StakingContract($t3)); - - // assume Identical($t5, global($t4)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:31:9+56 - assume {:print "$at(141,1166,1222)"} true; - assume ($t5 == $ResourceValue($1_stake_StakePool_$memory, $t4)); - - // assume Identical($t6, coin::$value(select stake::StakePool.active($t5))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:32:9+44 - assume {:print "$at(141,1231,1275)"} true; - assume ($t6 == $1_coin_$value'$1_aptos_coin_AptosCoin'($active#$1_stake_StakePool($t5))); - - // assume Identical($t7, coin::$value(select stake::StakePool.pending_active($t5))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:33:9+60 - assume {:print "$at(141,1284,1344)"} true; - assume ($t7 == $1_coin_$value'$1_aptos_coin_AptosCoin'($pending_active#$1_stake_StakePool($t5))); - - // assume Identical($t8, Add($t6, $t7)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:34:9+49 - assume {:print "$at(141,1353,1402)"} true; - assume ($t8 == ($t6 + $t7)); - - // assume Identical($t9, Sub($t8, select staking_contract::StakingContract.principal($t3))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:35:9+74 - assume {:print "$at(141,1411,1485)"} true; - assume ($t9 == ($t8 - $principal#$1_staking_contract_StakingContract($t3))); - - // assume Identical($t10, select staking_contract::Store.staking_contracts(global($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:302:9+64 - assume {:print "$at(141,12978,13042)"} true; - assume ($t10 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t0))); - - // assume Identical($t11, select staking_contract::StakingContract.pool_address($t3)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:334:9+49 - assume {:print "$at(141,14229,14278)"} true; - assume ($t11 == $pool_address#$1_staking_contract_StakingContract($t3)); - - // assume Identical($t12, global($t11)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:335:9+56 - assume {:print "$at(141,14287,14343)"} true; - assume ($t12 == $ResourceValue($1_stake_StakePool_$memory, $t11)); - - // assume Identical($t13, coin::$value(select stake::StakePool.active($t12))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:336:9+44 - assume {:print "$at(141,14352,14396)"} true; - assume ($t13 == $1_coin_$value'$1_aptos_coin_AptosCoin'($active#$1_stake_StakePool($t12))); - - // assume Identical($t14, coin::$value(select stake::StakePool.pending_active($t12))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:337:9+60 - assume {:print "$at(141,14405,14465)"} true; - assume ($t14 == $1_coin_$value'$1_aptos_coin_AptosCoin'($pending_active#$1_stake_StakePool($t12))); - - // assume Identical($t15, Add($t13, $t14)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:338:9+49 - assume {:print "$at(141,14474,14523)"} true; - assume ($t15 == ($t13 + $t14)); - - // assume Identical($t16, Sub($t15, select staking_contract::StakingContract.principal($t3))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:339:9+74 - assume {:print "$at(141,14532,14606)"} true; - assume ($t16 == ($t15 - $principal#$1_staking_contract_StakingContract($t3))); - - // assume And(Ge(select staking_contract::StakingContract.commission_percentage($t3), 0), Le(select staking_contract::StakingContract.commission_percentage($t3), 100)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:332:9+102 - assume {:print "$at(141,14117,14219)"} true; - assume (($commission_percentage#$1_staking_contract_StakingContract($t3) >= 0) && ($commission_percentage#$1_staking_contract_StakingContract($t3) <= 100)); - - // trace_local[staker]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:208:5+1 - assume {:print "$at(140,9573,9574)"} true; - assume {:print "$track_local(58,19,0):", $t0} $t0 == $t0; - - // trace_local[operator]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:208:5+1 - assume {:print "$track_local(58,19,1):", $t1} $t1 == $t1; - - // assume Identical($t17, select staking_contract::Store.staking_contracts(global($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:302:9+64 - assume {:print "$at(141,12978,13042)"} true; - assume ($t17 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t0))); - - // staking_contract::assert_staking_contract_exists($t0, $t1) on_abort goto L2 with $t18 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:209:9+48 - assume {:print "$at(140,9687,9735)"} true; - call $1_staking_contract_assert_staking_contract_exists($t0, $t1); - if ($abort_flag) { - assume {:print "$at(140,9687,9735)"} true; - $t18 := $abort_code; - assume {:print "$track_abort(58,19):", $t18} $t18 == $t18; - goto L2; - } - - // $t19 := get_global($t0) on_abort goto L2 with $t18 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:210:34+13 - assume {:print "$at(140,9770,9783)"} true; - if (!$ResourceExists($1_staking_contract_Store_$memory, $t0)) { - call $ExecFailureAbort(); - } else { - $t19 := $ResourceValue($1_staking_contract_Store_$memory, $t0); - } - if ($abort_flag) { - assume {:print "$at(140,9770,9783)"} true; - $t18 := $abort_code; - assume {:print "$track_abort(58,19):", $t18} $t18 == $t18; - goto L2; - } - - // $t20 := get_field.staking_contracts($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:210:33+47 - $t20 := $staking_contracts#$1_staking_contract_Store($t19); - - // $t21 := simple_map::borrow($t20, $t1) on_abort goto L2 with $t18 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:211:32+48 - assume {:print "$at(140,9849,9897)"} true; - call $t21 := $1_simple_map_borrow'address_$1_staking_contract_StakingContract'($t20, $t1); - if ($abort_flag) { - assume {:print "$at(140,9849,9897)"} true; - $t18 := $abort_code; - assume {:print "$track_abort(58,19):", $t18} $t18 == $t18; - goto L2; - } - - // assume Identical($t22, select staking_contract::StakingContract.pool_address($t21)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:334:9+49 - assume {:print "$at(141,14229,14278)"} true; - assume ($t22 == $pool_address#$1_staking_contract_StakingContract($t21)); - - // assume Identical($t23, global($t22)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:335:9+56 - assume {:print "$at(141,14287,14343)"} true; - assume ($t23 == $ResourceValue($1_stake_StakePool_$memory, $t22)); - - // assume Identical($t24, coin::$value(select stake::StakePool.active($t23))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:336:9+44 - assume {:print "$at(141,14352,14396)"} true; - assume ($t24 == $1_coin_$value'$1_aptos_coin_AptosCoin'($active#$1_stake_StakePool($t23))); - - // assume Identical($t25, coin::$value(select stake::StakePool.pending_active($t23))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:337:9+60 - assume {:print "$at(141,14405,14465)"} true; - assume ($t25 == $1_coin_$value'$1_aptos_coin_AptosCoin'($pending_active#$1_stake_StakePool($t23))); - - // assume Identical($t26, Add($t24, $t25)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:338:9+49 - assume {:print "$at(141,14474,14523)"} true; - assume ($t26 == ($t24 + $t25)); - - // assume Identical($t27, Sub($t26, select staking_contract::StakingContract.principal($t21))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:339:9+74 - assume {:print "$at(141,14532,14606)"} true; - assume ($t27 == ($t26 - $principal#$1_staking_contract_StakingContract($t21))); - - // ($t28, $t29, $t30) := staking_contract::get_staking_contract_amounts_internal($t21) on_abort goto L2 with $t18 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:212:9+55 - assume {:print "$at(140,9907,9962)"} true; - call $t28,$t29,$t30 := $1_staking_contract_get_staking_contract_amounts_internal($t21); - if ($abort_flag) { - assume {:print "$at(140,9907,9962)"} true; - $t18 := $abort_code; - assume {:print "$track_abort(58,19):", $t18} $t18 == $t18; - goto L2; - } - - // trace_return[0]($t28) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:212:9+55 - assume {:print "$track_return(58,19,0):", $t28} $t28 == $t28; - - // trace_return[1]($t29) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:212:9+55 - assume {:print "$track_return(58,19,1):", $t29} $t29 == $t29; - - // trace_return[2]($t30) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:212:9+55 - assume {:print "$track_return(58,19,2):", $t30} $t30 == $t30; - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:213:5+1 - assume {:print "$at(140,9967,9968)"} true; -L1: - - // return ($t28, $t29, $t30) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:213:5+1 - assume {:print "$at(140,9967,9968)"} true; - $ret0 := $t28; - $ret1 := $t29; - $ret2 := $t30; - return; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:213:5+1 -L2: - - // abort($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:213:5+1 - assume {:print "$at(140,9967,9968)"} true; - $abort_code := $t18; - $abort_flag := true; - return; - -} - -// fun staking_contract::update_voter [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:346:5+754 -procedure {:inline 1} $1_staking_contract_update_voter(_$t0: $signer, _$t1: int, _$t2: int) returns () -{ - // declare local variables - var $t3: int; - var $t4: int; - var $t5: int; - var $t6: $Mutation ($1_staking_contract_StakingContract); - var $t7: $Mutation ($1_staking_contract_Store); - var $t8: int; - var $t9: $1_staking_contract_Store; - var $t10: $1_staking_contract_StakingContract; - var $t11: int; - var $t12: Table int ($1_staking_contract_StakingContract); - var $t13: int; - var $t14: int; - var $t15: Table int ($1_staking_contract_StakingContract); - var $t16: $Mutation ($1_staking_contract_Store); - var $t17: $Mutation (Table int ($1_staking_contract_StakingContract)); - var $t18: $Mutation ($1_staking_contract_StakingContract); - var $t19: int; - var $t20: int; - var $t21: $1_stake_OwnerCapability; - var $t22: int; - var $t23: $Mutation ($1_event_EventHandle'$1_staking_contract_UpdateVoterEvent'); - var $t24: $1_staking_contract_UpdateVoterEvent; - var $t0: $signer; - var $t1: int; - var $t2: int; - var $temp_0'$1_staking_contract_StakingContract': $1_staking_contract_StakingContract; - var $temp_0'$1_staking_contract_Store': $1_staking_contract_Store; - var $temp_0'address': int; - var $temp_0'signer': $signer; - $t0 := _$t0; - $t1 := _$t1; - $t2 := _$t2; - - // bytecode translation starts here - // assume Identical($t8, signer::$address_of($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:117:9+48 - assume {:print "$at(141,4862,4910)"} true; - assume ($t8 == $1_signer_$address_of($t0)); - - // assume Identical($t9, global($t8)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:310:9+34 - assume {:print "$at(141,13226,13260)"} true; - assume ($t9 == $ResourceValue($1_staking_contract_Store_$memory, $t8)); - - // assume Identical($t10, simple_map::spec_get(select staking_contract::Store.staking_contracts($t9), $t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:311:9+79 - assume {:print "$at(141,13269,13348)"} true; - assume ($t10 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($t9), $t1)); - - // assume Identical($t11, select staking_contract::StakingContract.pool_address($t10)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:312:9+49 - assume {:print "$at(141,13357,13406)"} true; - assume ($t11 == $pool_address#$1_staking_contract_StakingContract($t10)); - - // assume Identical($t12, select staking_contract::Store.staking_contracts(global($t8))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:302:9+64 - assume {:print "$at(141,12978,13042)"} true; - assume ($t12 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t8))); - - // trace_local[staker]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:346:5+1 - assume {:print "$at(140,16034,16035)"} true; - assume {:print "$track_local(58,27,0):", $t0} $t0 == $t0; - - // trace_local[operator]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:346:5+1 - assume {:print "$track_local(58,27,1):", $t1} $t1 == $t1; - - // trace_local[new_voter]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:346:5+1 - assume {:print "$track_local(58,27,2):", $t2} $t2 == $t2; - - // $t13 := signer::address_of($t0) on_abort goto L2 with $t14 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:347:30+26 - assume {:print "$at(140,16166,16192)"} true; - call $t13 := $1_signer_address_of($t0); - if ($abort_flag) { - assume {:print "$at(140,16166,16192)"} true; - $t14 := $abort_code; - assume {:print "$track_abort(58,27):", $t14} $t14 == $t14; - goto L2; - } - - // trace_local[staker_address]($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:347:13+14 - assume {:print "$track_local(58,27,5):", $t13} $t13 == $t13; - - // assume Identical($t15, select staking_contract::Store.staking_contracts(global($t13))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:302:9+64 - assume {:print "$at(141,12978,13042)"} true; - assume ($t15 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t13))); - - // staking_contract::assert_staking_contract_exists($t13, $t1) on_abort goto L2 with $t14 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:348:9+56 - assume {:print "$at(140,16202,16258)"} true; - call $1_staking_contract_assert_staking_contract_exists($t13, $t1); - if ($abort_flag) { - assume {:print "$at(140,16202,16258)"} true; - $t14 := $abort_code; - assume {:print "$track_abort(58,27):", $t14} $t14 == $t14; - goto L2; - } - - // $t16 := borrow_global($t13) on_abort goto L2 with $t14 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:350:21+17 - assume {:print "$at(140,16281,16298)"} true; - if (!$ResourceExists($1_staking_contract_Store_$memory, $t13)) { - call $ExecFailureAbort(); - } else { - $t16 := $Mutation($Global($t13), EmptyVec(), $ResourceValue($1_staking_contract_Store_$memory, $t13)); - } - if ($abort_flag) { - assume {:print "$at(140,16281,16298)"} true; - $t14 := $abort_code; - assume {:print "$track_abort(58,27):", $t14} $t14 == $t14; - goto L2; - } - - // trace_local[store]($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:350:13+5 - $temp_0'$1_staking_contract_Store' := $Dereference($t16); - assume {:print "$track_local(58,27,7):", $temp_0'$1_staking_contract_Store'} $temp_0'$1_staking_contract_Store' == $temp_0'$1_staking_contract_Store'; - - // $t17 := borrow_field.staking_contracts($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:351:55+28 - assume {:print "$at(140,16377,16405)"} true; - $t17 := $ChildMutation($t16, 0, $staking_contracts#$1_staking_contract_Store($Dereference($t16))); - - // $t18 := simple_map::borrow_mut($t17, $t1) on_abort goto L2 with $t14 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:351:32+63 - call $t18,$t17 := $1_simple_map_borrow_mut'address_$1_staking_contract_StakingContract'($t17, $t1); - if ($abort_flag) { - assume {:print "$at(140,16354,16417)"} true; - $t14 := $abort_code; - assume {:print "$track_abort(58,27):", $t14} $t14 == $t14; - goto L2; - } - - // trace_local[staking_contract]($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:351:13+16 - $temp_0'$1_staking_contract_StakingContract' := $Dereference($t18); - assume {:print "$track_local(58,27,6):", $temp_0'$1_staking_contract_StakingContract'} $temp_0'$1_staking_contract_StakingContract' == $temp_0'$1_staking_contract_StakingContract'; - - // $t19 := get_field.pool_address($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:352:28+29 - assume {:print "$at(140,16446,16475)"} true; - $t19 := $pool_address#$1_staking_contract_StakingContract($Dereference($t18)); - - // trace_local[pool_address]($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:352:13+12 - assume {:print "$track_local(58,27,4):", $t19} $t19 == $t19; - - // $t20 := stake::get_delegated_voter($t19) on_abort goto L2 with $t14 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:353:25+40 - assume {:print "$at(140,16501,16541)"} true; - call $t20 := $1_stake_get_delegated_voter($t19); - if ($abort_flag) { - assume {:print "$at(140,16501,16541)"} true; - $t14 := $abort_code; - assume {:print "$track_abort(58,27):", $t14} $t14 == $t14; - goto L2; - } - - // trace_local[old_voter]($t20) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:353:13+9 - assume {:print "$track_local(58,27,3):", $t20} $t20 == $t20; - - // $t21 := get_field.owner_cap($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:354:45+27 - assume {:print "$at(140,16587,16614)"} true; - $t21 := $owner_cap#$1_staking_contract_StakingContract($Dereference($t18)); - - // assume Identical($t22, select stake::OwnerCapability.pool_address($t21)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:136:9+42 - assume {:print "$at(139,6139,6181)"} true; - assume ($t22 == $pool_address#$1_stake_OwnerCapability($t21)); - - // stake::set_delegated_voter_with_cap($t21, $t2) on_abort goto L2 with $t14 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:354:9+75 - assume {:print "$at(140,16551,16626)"} true; - call $1_stake_set_delegated_voter_with_cap($t21, $t2); - if ($abort_flag) { - assume {:print "$at(140,16551,16626)"} true; - $t14 := $abort_code; - assume {:print "$track_abort(58,27):", $t14} $t14 == $t14; - goto L2; - } - - // $t23 := borrow_field.update_voter_events($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:357:13+30 - assume {:print "$at(140,16661,16691)"} true; - $t23 := $ChildMutation($t16, 2, $update_voter_events#$1_staking_contract_Store($Dereference($t16))); - - // $t24 := pack staking_contract::UpdateVoterEvent($t1, $t19, $t20, $t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:358:13+65 - assume {:print "$at(140,16705,16770)"} true; - $t24 := $1_staking_contract_UpdateVoterEvent($t1, $t19, $t20, $t2); - - // opaque begin: event::emit_event($t23, $t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:356:9+144 - assume {:print "$at(140,16637,16781)"} true; - - // opaque end: event::emit_event($t23, $t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:356:9+144 - - // write_back[Reference($t16).update_voter_events (event::EventHandle)]($t23) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:356:9+144 - $t16 := $UpdateMutation($t16, $Update'$1_staking_contract_Store'_update_voter_events($Dereference($t16), $Dereference($t23))); - - // pack_ref_deep($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:356:9+144 - - // write_back[staking_contract::Store@]($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:356:9+144 - $1_staking_contract_Store_$memory := $ResourceUpdate($1_staking_contract_Store_$memory, $GlobalLocationAddress($t16), - $Dereference($t16)); - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:360:5+1 - assume {:print "$at(140,16787,16788)"} true; -L1: - - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:360:5+1 - assume {:print "$at(140,16787,16788)"} true; - return; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:360:5+1 -L2: - - // abort($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.move:360:5+1 - assume {:print "$at(140,16787,16788)"} true; - $abort_code := $t14; - $abort_flag := true; - return; - -} - -// spec fun at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:120:10+102 -function $1_vesting_spec_shareholder(vesting_contract_address: int, shareholder_or_beneficiary: int): int; -axiom (forall vesting_contract_address: int, shareholder_or_beneficiary: int :: -(var $$res := $1_vesting_spec_shareholder(vesting_contract_address, shareholder_or_beneficiary); -$IsValid'address'($$res))); - -// struct vesting::DistributeEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:230:5+134 -type {:datatype} $1_vesting_DistributeEvent; -function {:constructor} $1_vesting_DistributeEvent($admin: int, $vesting_contract_address: int, $amount: int): $1_vesting_DistributeEvent; -function {:inline} $Update'$1_vesting_DistributeEvent'_admin(s: $1_vesting_DistributeEvent, x: int): $1_vesting_DistributeEvent { - $1_vesting_DistributeEvent(x, $vesting_contract_address#$1_vesting_DistributeEvent(s), $amount#$1_vesting_DistributeEvent(s)) -} -function {:inline} $Update'$1_vesting_DistributeEvent'_vesting_contract_address(s: $1_vesting_DistributeEvent, x: int): $1_vesting_DistributeEvent { - $1_vesting_DistributeEvent($admin#$1_vesting_DistributeEvent(s), x, $amount#$1_vesting_DistributeEvent(s)) -} -function {:inline} $Update'$1_vesting_DistributeEvent'_amount(s: $1_vesting_DistributeEvent, x: int): $1_vesting_DistributeEvent { - $1_vesting_DistributeEvent($admin#$1_vesting_DistributeEvent(s), $vesting_contract_address#$1_vesting_DistributeEvent(s), x) -} -function $IsValid'$1_vesting_DistributeEvent'(s: $1_vesting_DistributeEvent): bool { - $IsValid'address'($admin#$1_vesting_DistributeEvent(s)) - && $IsValid'address'($vesting_contract_address#$1_vesting_DistributeEvent(s)) - && $IsValid'u64'($amount#$1_vesting_DistributeEvent(s)) -} -function {:inline} $IsEqual'$1_vesting_DistributeEvent'(s1: $1_vesting_DistributeEvent, s2: $1_vesting_DistributeEvent): bool { - s1 == s2 -} - -// struct vesting::ResetLockupEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:200:5+194 -type {:datatype} $1_vesting_ResetLockupEvent; -function {:constructor} $1_vesting_ResetLockupEvent($admin: int, $vesting_contract_address: int, $staking_pool_address: int, $new_lockup_expiration_secs: int): $1_vesting_ResetLockupEvent; -function {:inline} $Update'$1_vesting_ResetLockupEvent'_admin(s: $1_vesting_ResetLockupEvent, x: int): $1_vesting_ResetLockupEvent { - $1_vesting_ResetLockupEvent(x, $vesting_contract_address#$1_vesting_ResetLockupEvent(s), $staking_pool_address#$1_vesting_ResetLockupEvent(s), $new_lockup_expiration_secs#$1_vesting_ResetLockupEvent(s)) -} -function {:inline} $Update'$1_vesting_ResetLockupEvent'_vesting_contract_address(s: $1_vesting_ResetLockupEvent, x: int): $1_vesting_ResetLockupEvent { - $1_vesting_ResetLockupEvent($admin#$1_vesting_ResetLockupEvent(s), x, $staking_pool_address#$1_vesting_ResetLockupEvent(s), $new_lockup_expiration_secs#$1_vesting_ResetLockupEvent(s)) -} -function {:inline} $Update'$1_vesting_ResetLockupEvent'_staking_pool_address(s: $1_vesting_ResetLockupEvent, x: int): $1_vesting_ResetLockupEvent { - $1_vesting_ResetLockupEvent($admin#$1_vesting_ResetLockupEvent(s), $vesting_contract_address#$1_vesting_ResetLockupEvent(s), x, $new_lockup_expiration_secs#$1_vesting_ResetLockupEvent(s)) -} -function {:inline} $Update'$1_vesting_ResetLockupEvent'_new_lockup_expiration_secs(s: $1_vesting_ResetLockupEvent, x: int): $1_vesting_ResetLockupEvent { - $1_vesting_ResetLockupEvent($admin#$1_vesting_ResetLockupEvent(s), $vesting_contract_address#$1_vesting_ResetLockupEvent(s), $staking_pool_address#$1_vesting_ResetLockupEvent(s), x) -} -function $IsValid'$1_vesting_ResetLockupEvent'(s: $1_vesting_ResetLockupEvent): bool { - $IsValid'address'($admin#$1_vesting_ResetLockupEvent(s)) - && $IsValid'address'($vesting_contract_address#$1_vesting_ResetLockupEvent(s)) - && $IsValid'address'($staking_pool_address#$1_vesting_ResetLockupEvent(s)) - && $IsValid'u64'($new_lockup_expiration_secs#$1_vesting_ResetLockupEvent(s)) -} -function {:inline} $IsEqual'$1_vesting_ResetLockupEvent'(s1: $1_vesting_ResetLockupEvent, s2: $1_vesting_ResetLockupEvent): bool { - s1 == s2 -} - -// struct vesting::UpdateVoterEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:192:5+209 -type {:datatype} $1_vesting_UpdateVoterEvent; -function {:constructor} $1_vesting_UpdateVoterEvent($admin: int, $vesting_contract_address: int, $staking_pool_address: int, $old_voter: int, $new_voter: int): $1_vesting_UpdateVoterEvent; -function {:inline} $Update'$1_vesting_UpdateVoterEvent'_admin(s: $1_vesting_UpdateVoterEvent, x: int): $1_vesting_UpdateVoterEvent { - $1_vesting_UpdateVoterEvent(x, $vesting_contract_address#$1_vesting_UpdateVoterEvent(s), $staking_pool_address#$1_vesting_UpdateVoterEvent(s), $old_voter#$1_vesting_UpdateVoterEvent(s), $new_voter#$1_vesting_UpdateVoterEvent(s)) -} -function {:inline} $Update'$1_vesting_UpdateVoterEvent'_vesting_contract_address(s: $1_vesting_UpdateVoterEvent, x: int): $1_vesting_UpdateVoterEvent { - $1_vesting_UpdateVoterEvent($admin#$1_vesting_UpdateVoterEvent(s), x, $staking_pool_address#$1_vesting_UpdateVoterEvent(s), $old_voter#$1_vesting_UpdateVoterEvent(s), $new_voter#$1_vesting_UpdateVoterEvent(s)) -} -function {:inline} $Update'$1_vesting_UpdateVoterEvent'_staking_pool_address(s: $1_vesting_UpdateVoterEvent, x: int): $1_vesting_UpdateVoterEvent { - $1_vesting_UpdateVoterEvent($admin#$1_vesting_UpdateVoterEvent(s), $vesting_contract_address#$1_vesting_UpdateVoterEvent(s), x, $old_voter#$1_vesting_UpdateVoterEvent(s), $new_voter#$1_vesting_UpdateVoterEvent(s)) -} -function {:inline} $Update'$1_vesting_UpdateVoterEvent'_old_voter(s: $1_vesting_UpdateVoterEvent, x: int): $1_vesting_UpdateVoterEvent { - $1_vesting_UpdateVoterEvent($admin#$1_vesting_UpdateVoterEvent(s), $vesting_contract_address#$1_vesting_UpdateVoterEvent(s), $staking_pool_address#$1_vesting_UpdateVoterEvent(s), x, $new_voter#$1_vesting_UpdateVoterEvent(s)) -} -function {:inline} $Update'$1_vesting_UpdateVoterEvent'_new_voter(s: $1_vesting_UpdateVoterEvent, x: int): $1_vesting_UpdateVoterEvent { - $1_vesting_UpdateVoterEvent($admin#$1_vesting_UpdateVoterEvent(s), $vesting_contract_address#$1_vesting_UpdateVoterEvent(s), $staking_pool_address#$1_vesting_UpdateVoterEvent(s), $old_voter#$1_vesting_UpdateVoterEvent(s), x) -} -function $IsValid'$1_vesting_UpdateVoterEvent'(s: $1_vesting_UpdateVoterEvent): bool { - $IsValid'address'($admin#$1_vesting_UpdateVoterEvent(s)) - && $IsValid'address'($vesting_contract_address#$1_vesting_UpdateVoterEvent(s)) - && $IsValid'address'($staking_pool_address#$1_vesting_UpdateVoterEvent(s)) - && $IsValid'address'($old_voter#$1_vesting_UpdateVoterEvent(s)) - && $IsValid'address'($new_voter#$1_vesting_UpdateVoterEvent(s)) -} -function {:inline} $IsEqual'$1_vesting_UpdateVoterEvent'(s1: $1_vesting_UpdateVoterEvent, s2: $1_vesting_UpdateVoterEvent): bool { - s1 == s2 -} - -// struct vesting::AdminStore at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:165:5+265 -type {:datatype} $1_vesting_AdminStore; -function {:constructor} $1_vesting_AdminStore($vesting_contracts: Vec (int), $nonce: int, $create_events: $1_event_EventHandle'$1_vesting_CreateVestingContractEvent'): $1_vesting_AdminStore; -function {:inline} $Update'$1_vesting_AdminStore'_vesting_contracts(s: $1_vesting_AdminStore, x: Vec (int)): $1_vesting_AdminStore { - $1_vesting_AdminStore(x, $nonce#$1_vesting_AdminStore(s), $create_events#$1_vesting_AdminStore(s)) -} -function {:inline} $Update'$1_vesting_AdminStore'_nonce(s: $1_vesting_AdminStore, x: int): $1_vesting_AdminStore { - $1_vesting_AdminStore($vesting_contracts#$1_vesting_AdminStore(s), x, $create_events#$1_vesting_AdminStore(s)) -} -function {:inline} $Update'$1_vesting_AdminStore'_create_events(s: $1_vesting_AdminStore, x: $1_event_EventHandle'$1_vesting_CreateVestingContractEvent'): $1_vesting_AdminStore { - $1_vesting_AdminStore($vesting_contracts#$1_vesting_AdminStore(s), $nonce#$1_vesting_AdminStore(s), x) -} -function $IsValid'$1_vesting_AdminStore'(s: $1_vesting_AdminStore): bool { - $IsValid'vec'address''($vesting_contracts#$1_vesting_AdminStore(s)) - && $IsValid'u64'($nonce#$1_vesting_AdminStore(s)) - && $IsValid'$1_event_EventHandle'$1_vesting_CreateVestingContractEvent''($create_events#$1_vesting_AdminStore(s)) -} -function {:inline} $IsEqual'$1_vesting_AdminStore'(s1: $1_vesting_AdminStore, s2: $1_vesting_AdminStore): bool { - $IsEqual'vec'address''($vesting_contracts#$1_vesting_AdminStore(s1), $vesting_contracts#$1_vesting_AdminStore(s2)) - && $IsEqual'u64'($nonce#$1_vesting_AdminStore(s1), $nonce#$1_vesting_AdminStore(s2)) - && $IsEqual'$1_event_EventHandle'$1_vesting_CreateVestingContractEvent''($create_events#$1_vesting_AdminStore(s1), $create_events#$1_vesting_AdminStore(s2))} -var $1_vesting_AdminStore_$memory: $Memory $1_vesting_AdminStore; - -// struct vesting::AdminWithdrawEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:241:5+137 -type {:datatype} $1_vesting_AdminWithdrawEvent; -function {:constructor} $1_vesting_AdminWithdrawEvent($admin: int, $vesting_contract_address: int, $amount: int): $1_vesting_AdminWithdrawEvent; -function {:inline} $Update'$1_vesting_AdminWithdrawEvent'_admin(s: $1_vesting_AdminWithdrawEvent, x: int): $1_vesting_AdminWithdrawEvent { - $1_vesting_AdminWithdrawEvent(x, $vesting_contract_address#$1_vesting_AdminWithdrawEvent(s), $amount#$1_vesting_AdminWithdrawEvent(s)) -} -function {:inline} $Update'$1_vesting_AdminWithdrawEvent'_vesting_contract_address(s: $1_vesting_AdminWithdrawEvent, x: int): $1_vesting_AdminWithdrawEvent { - $1_vesting_AdminWithdrawEvent($admin#$1_vesting_AdminWithdrawEvent(s), x, $amount#$1_vesting_AdminWithdrawEvent(s)) -} -function {:inline} $Update'$1_vesting_AdminWithdrawEvent'_amount(s: $1_vesting_AdminWithdrawEvent, x: int): $1_vesting_AdminWithdrawEvent { - $1_vesting_AdminWithdrawEvent($admin#$1_vesting_AdminWithdrawEvent(s), $vesting_contract_address#$1_vesting_AdminWithdrawEvent(s), x) -} -function $IsValid'$1_vesting_AdminWithdrawEvent'(s: $1_vesting_AdminWithdrawEvent): bool { - $IsValid'address'($admin#$1_vesting_AdminWithdrawEvent(s)) - && $IsValid'address'($vesting_contract_address#$1_vesting_AdminWithdrawEvent(s)) - && $IsValid'u64'($amount#$1_vesting_AdminWithdrawEvent(s)) -} -function {:inline} $IsEqual'$1_vesting_AdminWithdrawEvent'(s1: $1_vesting_AdminWithdrawEvent, s2: $1_vesting_AdminWithdrawEvent): bool { - s1 == s2 -} - -// struct vesting::CreateVestingContractEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:173:5+290 -type {:datatype} $1_vesting_CreateVestingContractEvent; -function {:constructor} $1_vesting_CreateVestingContractEvent($operator: int, $voter: int, $grant_amount: int, $withdrawal_address: int, $vesting_contract_address: int, $staking_pool_address: int, $commission_percentage: int): $1_vesting_CreateVestingContractEvent; -function {:inline} $Update'$1_vesting_CreateVestingContractEvent'_operator(s: $1_vesting_CreateVestingContractEvent, x: int): $1_vesting_CreateVestingContractEvent { - $1_vesting_CreateVestingContractEvent(x, $voter#$1_vesting_CreateVestingContractEvent(s), $grant_amount#$1_vesting_CreateVestingContractEvent(s), $withdrawal_address#$1_vesting_CreateVestingContractEvent(s), $vesting_contract_address#$1_vesting_CreateVestingContractEvent(s), $staking_pool_address#$1_vesting_CreateVestingContractEvent(s), $commission_percentage#$1_vesting_CreateVestingContractEvent(s)) -} -function {:inline} $Update'$1_vesting_CreateVestingContractEvent'_voter(s: $1_vesting_CreateVestingContractEvent, x: int): $1_vesting_CreateVestingContractEvent { - $1_vesting_CreateVestingContractEvent($operator#$1_vesting_CreateVestingContractEvent(s), x, $grant_amount#$1_vesting_CreateVestingContractEvent(s), $withdrawal_address#$1_vesting_CreateVestingContractEvent(s), $vesting_contract_address#$1_vesting_CreateVestingContractEvent(s), $staking_pool_address#$1_vesting_CreateVestingContractEvent(s), $commission_percentage#$1_vesting_CreateVestingContractEvent(s)) -} -function {:inline} $Update'$1_vesting_CreateVestingContractEvent'_grant_amount(s: $1_vesting_CreateVestingContractEvent, x: int): $1_vesting_CreateVestingContractEvent { - $1_vesting_CreateVestingContractEvent($operator#$1_vesting_CreateVestingContractEvent(s), $voter#$1_vesting_CreateVestingContractEvent(s), x, $withdrawal_address#$1_vesting_CreateVestingContractEvent(s), $vesting_contract_address#$1_vesting_CreateVestingContractEvent(s), $staking_pool_address#$1_vesting_CreateVestingContractEvent(s), $commission_percentage#$1_vesting_CreateVestingContractEvent(s)) -} -function {:inline} $Update'$1_vesting_CreateVestingContractEvent'_withdrawal_address(s: $1_vesting_CreateVestingContractEvent, x: int): $1_vesting_CreateVestingContractEvent { - $1_vesting_CreateVestingContractEvent($operator#$1_vesting_CreateVestingContractEvent(s), $voter#$1_vesting_CreateVestingContractEvent(s), $grant_amount#$1_vesting_CreateVestingContractEvent(s), x, $vesting_contract_address#$1_vesting_CreateVestingContractEvent(s), $staking_pool_address#$1_vesting_CreateVestingContractEvent(s), $commission_percentage#$1_vesting_CreateVestingContractEvent(s)) -} -function {:inline} $Update'$1_vesting_CreateVestingContractEvent'_vesting_contract_address(s: $1_vesting_CreateVestingContractEvent, x: int): $1_vesting_CreateVestingContractEvent { - $1_vesting_CreateVestingContractEvent($operator#$1_vesting_CreateVestingContractEvent(s), $voter#$1_vesting_CreateVestingContractEvent(s), $grant_amount#$1_vesting_CreateVestingContractEvent(s), $withdrawal_address#$1_vesting_CreateVestingContractEvent(s), x, $staking_pool_address#$1_vesting_CreateVestingContractEvent(s), $commission_percentage#$1_vesting_CreateVestingContractEvent(s)) -} -function {:inline} $Update'$1_vesting_CreateVestingContractEvent'_staking_pool_address(s: $1_vesting_CreateVestingContractEvent, x: int): $1_vesting_CreateVestingContractEvent { - $1_vesting_CreateVestingContractEvent($operator#$1_vesting_CreateVestingContractEvent(s), $voter#$1_vesting_CreateVestingContractEvent(s), $grant_amount#$1_vesting_CreateVestingContractEvent(s), $withdrawal_address#$1_vesting_CreateVestingContractEvent(s), $vesting_contract_address#$1_vesting_CreateVestingContractEvent(s), x, $commission_percentage#$1_vesting_CreateVestingContractEvent(s)) -} -function {:inline} $Update'$1_vesting_CreateVestingContractEvent'_commission_percentage(s: $1_vesting_CreateVestingContractEvent, x: int): $1_vesting_CreateVestingContractEvent { - $1_vesting_CreateVestingContractEvent($operator#$1_vesting_CreateVestingContractEvent(s), $voter#$1_vesting_CreateVestingContractEvent(s), $grant_amount#$1_vesting_CreateVestingContractEvent(s), $withdrawal_address#$1_vesting_CreateVestingContractEvent(s), $vesting_contract_address#$1_vesting_CreateVestingContractEvent(s), $staking_pool_address#$1_vesting_CreateVestingContractEvent(s), x) -} -function $IsValid'$1_vesting_CreateVestingContractEvent'(s: $1_vesting_CreateVestingContractEvent): bool { - $IsValid'address'($operator#$1_vesting_CreateVestingContractEvent(s)) - && $IsValid'address'($voter#$1_vesting_CreateVestingContractEvent(s)) - && $IsValid'u64'($grant_amount#$1_vesting_CreateVestingContractEvent(s)) - && $IsValid'address'($withdrawal_address#$1_vesting_CreateVestingContractEvent(s)) - && $IsValid'address'($vesting_contract_address#$1_vesting_CreateVestingContractEvent(s)) - && $IsValid'address'($staking_pool_address#$1_vesting_CreateVestingContractEvent(s)) - && $IsValid'u64'($commission_percentage#$1_vesting_CreateVestingContractEvent(s)) -} -function {:inline} $IsEqual'$1_vesting_CreateVestingContractEvent'(s1: $1_vesting_CreateVestingContractEvent, s2: $1_vesting_CreateVestingContractEvent): bool { - s1 == s2 -} - -// struct vesting::SetBeneficiaryEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:207:5+215 -type {:datatype} $1_vesting_SetBeneficiaryEvent; -function {:constructor} $1_vesting_SetBeneficiaryEvent($admin: int, $vesting_contract_address: int, $shareholder: int, $old_beneficiary: int, $new_beneficiary: int): $1_vesting_SetBeneficiaryEvent; -function {:inline} $Update'$1_vesting_SetBeneficiaryEvent'_admin(s: $1_vesting_SetBeneficiaryEvent, x: int): $1_vesting_SetBeneficiaryEvent { - $1_vesting_SetBeneficiaryEvent(x, $vesting_contract_address#$1_vesting_SetBeneficiaryEvent(s), $shareholder#$1_vesting_SetBeneficiaryEvent(s), $old_beneficiary#$1_vesting_SetBeneficiaryEvent(s), $new_beneficiary#$1_vesting_SetBeneficiaryEvent(s)) -} -function {:inline} $Update'$1_vesting_SetBeneficiaryEvent'_vesting_contract_address(s: $1_vesting_SetBeneficiaryEvent, x: int): $1_vesting_SetBeneficiaryEvent { - $1_vesting_SetBeneficiaryEvent($admin#$1_vesting_SetBeneficiaryEvent(s), x, $shareholder#$1_vesting_SetBeneficiaryEvent(s), $old_beneficiary#$1_vesting_SetBeneficiaryEvent(s), $new_beneficiary#$1_vesting_SetBeneficiaryEvent(s)) -} -function {:inline} $Update'$1_vesting_SetBeneficiaryEvent'_shareholder(s: $1_vesting_SetBeneficiaryEvent, x: int): $1_vesting_SetBeneficiaryEvent { - $1_vesting_SetBeneficiaryEvent($admin#$1_vesting_SetBeneficiaryEvent(s), $vesting_contract_address#$1_vesting_SetBeneficiaryEvent(s), x, $old_beneficiary#$1_vesting_SetBeneficiaryEvent(s), $new_beneficiary#$1_vesting_SetBeneficiaryEvent(s)) -} -function {:inline} $Update'$1_vesting_SetBeneficiaryEvent'_old_beneficiary(s: $1_vesting_SetBeneficiaryEvent, x: int): $1_vesting_SetBeneficiaryEvent { - $1_vesting_SetBeneficiaryEvent($admin#$1_vesting_SetBeneficiaryEvent(s), $vesting_contract_address#$1_vesting_SetBeneficiaryEvent(s), $shareholder#$1_vesting_SetBeneficiaryEvent(s), x, $new_beneficiary#$1_vesting_SetBeneficiaryEvent(s)) -} -function {:inline} $Update'$1_vesting_SetBeneficiaryEvent'_new_beneficiary(s: $1_vesting_SetBeneficiaryEvent, x: int): $1_vesting_SetBeneficiaryEvent { - $1_vesting_SetBeneficiaryEvent($admin#$1_vesting_SetBeneficiaryEvent(s), $vesting_contract_address#$1_vesting_SetBeneficiaryEvent(s), $shareholder#$1_vesting_SetBeneficiaryEvent(s), $old_beneficiary#$1_vesting_SetBeneficiaryEvent(s), x) -} -function $IsValid'$1_vesting_SetBeneficiaryEvent'(s: $1_vesting_SetBeneficiaryEvent): bool { - $IsValid'address'($admin#$1_vesting_SetBeneficiaryEvent(s)) - && $IsValid'address'($vesting_contract_address#$1_vesting_SetBeneficiaryEvent(s)) - && $IsValid'address'($shareholder#$1_vesting_SetBeneficiaryEvent(s)) - && $IsValid'address'($old_beneficiary#$1_vesting_SetBeneficiaryEvent(s)) - && $IsValid'address'($new_beneficiary#$1_vesting_SetBeneficiaryEvent(s)) -} -function {:inline} $IsEqual'$1_vesting_SetBeneficiaryEvent'(s1: $1_vesting_SetBeneficiaryEvent, s2: $1_vesting_SetBeneficiaryEvent): bool { - s1 == s2 -} - -// struct vesting::StakingInfo at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:123:5+384 -type {:datatype} $1_vesting_StakingInfo; -function {:constructor} $1_vesting_StakingInfo($pool_address: int, $operator: int, $voter: int, $commission_percentage: int): $1_vesting_StakingInfo; -function {:inline} $Update'$1_vesting_StakingInfo'_pool_address(s: $1_vesting_StakingInfo, x: int): $1_vesting_StakingInfo { - $1_vesting_StakingInfo(x, $operator#$1_vesting_StakingInfo(s), $voter#$1_vesting_StakingInfo(s), $commission_percentage#$1_vesting_StakingInfo(s)) -} -function {:inline} $Update'$1_vesting_StakingInfo'_operator(s: $1_vesting_StakingInfo, x: int): $1_vesting_StakingInfo { - $1_vesting_StakingInfo($pool_address#$1_vesting_StakingInfo(s), x, $voter#$1_vesting_StakingInfo(s), $commission_percentage#$1_vesting_StakingInfo(s)) -} -function {:inline} $Update'$1_vesting_StakingInfo'_voter(s: $1_vesting_StakingInfo, x: int): $1_vesting_StakingInfo { - $1_vesting_StakingInfo($pool_address#$1_vesting_StakingInfo(s), $operator#$1_vesting_StakingInfo(s), x, $commission_percentage#$1_vesting_StakingInfo(s)) -} -function {:inline} $Update'$1_vesting_StakingInfo'_commission_percentage(s: $1_vesting_StakingInfo, x: int): $1_vesting_StakingInfo { - $1_vesting_StakingInfo($pool_address#$1_vesting_StakingInfo(s), $operator#$1_vesting_StakingInfo(s), $voter#$1_vesting_StakingInfo(s), x) -} -function $IsValid'$1_vesting_StakingInfo'(s: $1_vesting_StakingInfo): bool { - $IsValid'address'($pool_address#$1_vesting_StakingInfo(s)) - && $IsValid'address'($operator#$1_vesting_StakingInfo(s)) - && $IsValid'address'($voter#$1_vesting_StakingInfo(s)) - && $IsValid'u64'($commission_percentage#$1_vesting_StakingInfo(s)) -} -function {:inline} $IsEqual'$1_vesting_StakingInfo'(s1: $1_vesting_StakingInfo, s2: $1_vesting_StakingInfo): bool { - s1 == s2 -} - -// struct vesting::TerminateEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:236:5+112 -type {:datatype} $1_vesting_TerminateEvent; -function {:constructor} $1_vesting_TerminateEvent($admin: int, $vesting_contract_address: int): $1_vesting_TerminateEvent; -function {:inline} $Update'$1_vesting_TerminateEvent'_admin(s: $1_vesting_TerminateEvent, x: int): $1_vesting_TerminateEvent { - $1_vesting_TerminateEvent(x, $vesting_contract_address#$1_vesting_TerminateEvent(s)) -} -function {:inline} $Update'$1_vesting_TerminateEvent'_vesting_contract_address(s: $1_vesting_TerminateEvent, x: int): $1_vesting_TerminateEvent { - $1_vesting_TerminateEvent($admin#$1_vesting_TerminateEvent(s), x) -} -function $IsValid'$1_vesting_TerminateEvent'(s: $1_vesting_TerminateEvent): bool { - $IsValid'address'($admin#$1_vesting_TerminateEvent(s)) - && $IsValid'address'($vesting_contract_address#$1_vesting_TerminateEvent(s)) -} -function {:inline} $IsEqual'$1_vesting_TerminateEvent'(s1: $1_vesting_TerminateEvent, s2: $1_vesting_TerminateEvent): bool { - s1 == s2 -} - -// struct vesting::UnlockRewardsEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:215:5+176 -type {:datatype} $1_vesting_UnlockRewardsEvent; -function {:constructor} $1_vesting_UnlockRewardsEvent($admin: int, $vesting_contract_address: int, $staking_pool_address: int, $amount: int): $1_vesting_UnlockRewardsEvent; -function {:inline} $Update'$1_vesting_UnlockRewardsEvent'_admin(s: $1_vesting_UnlockRewardsEvent, x: int): $1_vesting_UnlockRewardsEvent { - $1_vesting_UnlockRewardsEvent(x, $vesting_contract_address#$1_vesting_UnlockRewardsEvent(s), $staking_pool_address#$1_vesting_UnlockRewardsEvent(s), $amount#$1_vesting_UnlockRewardsEvent(s)) -} -function {:inline} $Update'$1_vesting_UnlockRewardsEvent'_vesting_contract_address(s: $1_vesting_UnlockRewardsEvent, x: int): $1_vesting_UnlockRewardsEvent { - $1_vesting_UnlockRewardsEvent($admin#$1_vesting_UnlockRewardsEvent(s), x, $staking_pool_address#$1_vesting_UnlockRewardsEvent(s), $amount#$1_vesting_UnlockRewardsEvent(s)) -} -function {:inline} $Update'$1_vesting_UnlockRewardsEvent'_staking_pool_address(s: $1_vesting_UnlockRewardsEvent, x: int): $1_vesting_UnlockRewardsEvent { - $1_vesting_UnlockRewardsEvent($admin#$1_vesting_UnlockRewardsEvent(s), $vesting_contract_address#$1_vesting_UnlockRewardsEvent(s), x, $amount#$1_vesting_UnlockRewardsEvent(s)) -} -function {:inline} $Update'$1_vesting_UnlockRewardsEvent'_amount(s: $1_vesting_UnlockRewardsEvent, x: int): $1_vesting_UnlockRewardsEvent { - $1_vesting_UnlockRewardsEvent($admin#$1_vesting_UnlockRewardsEvent(s), $vesting_contract_address#$1_vesting_UnlockRewardsEvent(s), $staking_pool_address#$1_vesting_UnlockRewardsEvent(s), x) -} -function $IsValid'$1_vesting_UnlockRewardsEvent'(s: $1_vesting_UnlockRewardsEvent): bool { - $IsValid'address'($admin#$1_vesting_UnlockRewardsEvent(s)) - && $IsValid'address'($vesting_contract_address#$1_vesting_UnlockRewardsEvent(s)) - && $IsValid'address'($staking_pool_address#$1_vesting_UnlockRewardsEvent(s)) - && $IsValid'u64'($amount#$1_vesting_UnlockRewardsEvent(s)) -} -function {:inline} $IsEqual'$1_vesting_UnlockRewardsEvent'(s1: $1_vesting_UnlockRewardsEvent, s2: $1_vesting_UnlockRewardsEvent): bool { - s1 == s2 -} - -// struct vesting::UpdateOperatorEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:183:5+254 -type {:datatype} $1_vesting_UpdateOperatorEvent; -function {:constructor} $1_vesting_UpdateOperatorEvent($admin: int, $vesting_contract_address: int, $staking_pool_address: int, $old_operator: int, $new_operator: int, $commission_percentage: int): $1_vesting_UpdateOperatorEvent; -function {:inline} $Update'$1_vesting_UpdateOperatorEvent'_admin(s: $1_vesting_UpdateOperatorEvent, x: int): $1_vesting_UpdateOperatorEvent { - $1_vesting_UpdateOperatorEvent(x, $vesting_contract_address#$1_vesting_UpdateOperatorEvent(s), $staking_pool_address#$1_vesting_UpdateOperatorEvent(s), $old_operator#$1_vesting_UpdateOperatorEvent(s), $new_operator#$1_vesting_UpdateOperatorEvent(s), $commission_percentage#$1_vesting_UpdateOperatorEvent(s)) -} -function {:inline} $Update'$1_vesting_UpdateOperatorEvent'_vesting_contract_address(s: $1_vesting_UpdateOperatorEvent, x: int): $1_vesting_UpdateOperatorEvent { - $1_vesting_UpdateOperatorEvent($admin#$1_vesting_UpdateOperatorEvent(s), x, $staking_pool_address#$1_vesting_UpdateOperatorEvent(s), $old_operator#$1_vesting_UpdateOperatorEvent(s), $new_operator#$1_vesting_UpdateOperatorEvent(s), $commission_percentage#$1_vesting_UpdateOperatorEvent(s)) -} -function {:inline} $Update'$1_vesting_UpdateOperatorEvent'_staking_pool_address(s: $1_vesting_UpdateOperatorEvent, x: int): $1_vesting_UpdateOperatorEvent { - $1_vesting_UpdateOperatorEvent($admin#$1_vesting_UpdateOperatorEvent(s), $vesting_contract_address#$1_vesting_UpdateOperatorEvent(s), x, $old_operator#$1_vesting_UpdateOperatorEvent(s), $new_operator#$1_vesting_UpdateOperatorEvent(s), $commission_percentage#$1_vesting_UpdateOperatorEvent(s)) -} -function {:inline} $Update'$1_vesting_UpdateOperatorEvent'_old_operator(s: $1_vesting_UpdateOperatorEvent, x: int): $1_vesting_UpdateOperatorEvent { - $1_vesting_UpdateOperatorEvent($admin#$1_vesting_UpdateOperatorEvent(s), $vesting_contract_address#$1_vesting_UpdateOperatorEvent(s), $staking_pool_address#$1_vesting_UpdateOperatorEvent(s), x, $new_operator#$1_vesting_UpdateOperatorEvent(s), $commission_percentage#$1_vesting_UpdateOperatorEvent(s)) -} -function {:inline} $Update'$1_vesting_UpdateOperatorEvent'_new_operator(s: $1_vesting_UpdateOperatorEvent, x: int): $1_vesting_UpdateOperatorEvent { - $1_vesting_UpdateOperatorEvent($admin#$1_vesting_UpdateOperatorEvent(s), $vesting_contract_address#$1_vesting_UpdateOperatorEvent(s), $staking_pool_address#$1_vesting_UpdateOperatorEvent(s), $old_operator#$1_vesting_UpdateOperatorEvent(s), x, $commission_percentage#$1_vesting_UpdateOperatorEvent(s)) -} -function {:inline} $Update'$1_vesting_UpdateOperatorEvent'_commission_percentage(s: $1_vesting_UpdateOperatorEvent, x: int): $1_vesting_UpdateOperatorEvent { - $1_vesting_UpdateOperatorEvent($admin#$1_vesting_UpdateOperatorEvent(s), $vesting_contract_address#$1_vesting_UpdateOperatorEvent(s), $staking_pool_address#$1_vesting_UpdateOperatorEvent(s), $old_operator#$1_vesting_UpdateOperatorEvent(s), $new_operator#$1_vesting_UpdateOperatorEvent(s), x) -} -function $IsValid'$1_vesting_UpdateOperatorEvent'(s: $1_vesting_UpdateOperatorEvent): bool { - $IsValid'address'($admin#$1_vesting_UpdateOperatorEvent(s)) - && $IsValid'address'($vesting_contract_address#$1_vesting_UpdateOperatorEvent(s)) - && $IsValid'address'($staking_pool_address#$1_vesting_UpdateOperatorEvent(s)) - && $IsValid'address'($old_operator#$1_vesting_UpdateOperatorEvent(s)) - && $IsValid'address'($new_operator#$1_vesting_UpdateOperatorEvent(s)) - && $IsValid'u64'($commission_percentage#$1_vesting_UpdateOperatorEvent(s)) -} -function {:inline} $IsEqual'$1_vesting_UpdateOperatorEvent'(s1: $1_vesting_UpdateOperatorEvent, s2: $1_vesting_UpdateOperatorEvent): bool { - s1 == s2 -} - -// struct vesting::VestEvent at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:222:5+195 -type {:datatype} $1_vesting_VestEvent; -function {:constructor} $1_vesting_VestEvent($admin: int, $vesting_contract_address: int, $staking_pool_address: int, $period_vested: int, $amount: int): $1_vesting_VestEvent; -function {:inline} $Update'$1_vesting_VestEvent'_admin(s: $1_vesting_VestEvent, x: int): $1_vesting_VestEvent { - $1_vesting_VestEvent(x, $vesting_contract_address#$1_vesting_VestEvent(s), $staking_pool_address#$1_vesting_VestEvent(s), $period_vested#$1_vesting_VestEvent(s), $amount#$1_vesting_VestEvent(s)) -} -function {:inline} $Update'$1_vesting_VestEvent'_vesting_contract_address(s: $1_vesting_VestEvent, x: int): $1_vesting_VestEvent { - $1_vesting_VestEvent($admin#$1_vesting_VestEvent(s), x, $staking_pool_address#$1_vesting_VestEvent(s), $period_vested#$1_vesting_VestEvent(s), $amount#$1_vesting_VestEvent(s)) -} -function {:inline} $Update'$1_vesting_VestEvent'_staking_pool_address(s: $1_vesting_VestEvent, x: int): $1_vesting_VestEvent { - $1_vesting_VestEvent($admin#$1_vesting_VestEvent(s), $vesting_contract_address#$1_vesting_VestEvent(s), x, $period_vested#$1_vesting_VestEvent(s), $amount#$1_vesting_VestEvent(s)) -} -function {:inline} $Update'$1_vesting_VestEvent'_period_vested(s: $1_vesting_VestEvent, x: int): $1_vesting_VestEvent { - $1_vesting_VestEvent($admin#$1_vesting_VestEvent(s), $vesting_contract_address#$1_vesting_VestEvent(s), $staking_pool_address#$1_vesting_VestEvent(s), x, $amount#$1_vesting_VestEvent(s)) -} -function {:inline} $Update'$1_vesting_VestEvent'_amount(s: $1_vesting_VestEvent, x: int): $1_vesting_VestEvent { - $1_vesting_VestEvent($admin#$1_vesting_VestEvent(s), $vesting_contract_address#$1_vesting_VestEvent(s), $staking_pool_address#$1_vesting_VestEvent(s), $period_vested#$1_vesting_VestEvent(s), x) -} -function $IsValid'$1_vesting_VestEvent'(s: $1_vesting_VestEvent): bool { - $IsValid'address'($admin#$1_vesting_VestEvent(s)) - && $IsValid'address'($vesting_contract_address#$1_vesting_VestEvent(s)) - && $IsValid'address'($staking_pool_address#$1_vesting_VestEvent(s)) - && $IsValid'u64'($period_vested#$1_vesting_VestEvent(s)) - && $IsValid'u64'($amount#$1_vesting_VestEvent(s)) -} -function {:inline} $IsEqual'$1_vesting_VestEvent'(s1: $1_vesting_VestEvent, s2: $1_vesting_VestEvent): bool { - s1 == s2 -} - -// struct vesting::VestingAccountManagement at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:161:5+90 -type {:datatype} $1_vesting_VestingAccountManagement; -function {:constructor} $1_vesting_VestingAccountManagement($roles: Table int (int)): $1_vesting_VestingAccountManagement; -function {:inline} $Update'$1_vesting_VestingAccountManagement'_roles(s: $1_vesting_VestingAccountManagement, x: Table int (int)): $1_vesting_VestingAccountManagement { - $1_vesting_VestingAccountManagement(x) -} -function $IsValid'$1_vesting_VestingAccountManagement'(s: $1_vesting_VestingAccountManagement): bool { - $IsValid'$1_simple_map_SimpleMap'$1_string_String_address''($roles#$1_vesting_VestingAccountManagement(s)) -} -function {:inline} $IsEqual'$1_vesting_VestingAccountManagement'(s1: $1_vesting_VestingAccountManagement, s2: $1_vesting_VestingAccountManagement): bool { - $IsEqual'$1_simple_map_SimpleMap'$1_string_String_address''($roles#$1_vesting_VestingAccountManagement(s1), $roles#$1_vesting_VestingAccountManagement(s2))} -var $1_vesting_VestingAccountManagement_$memory: $Memory $1_vesting_VestingAccountManagement; - -// struct vesting::VestingContract at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:134:5+1189 -type {:datatype} $1_vesting_VestingContract; -function {:constructor} $1_vesting_VestingContract($state: int, $admin: int, $grant_pool: $1_pool_u64_Pool, $beneficiaries: Table int (int), $vesting_schedule: $1_vesting_VestingSchedule, $withdrawal_address: int, $staking: $1_vesting_StakingInfo, $remaining_grant: int, $signer_cap: $1_account_SignerCapability, $update_operator_events: $1_event_EventHandle'$1_vesting_UpdateOperatorEvent', $update_voter_events: $1_event_EventHandle'$1_vesting_UpdateVoterEvent', $reset_lockup_events: $1_event_EventHandle'$1_vesting_ResetLockupEvent', $set_beneficiary_events: $1_event_EventHandle'$1_vesting_SetBeneficiaryEvent', $unlock_rewards_events: $1_event_EventHandle'$1_vesting_UnlockRewardsEvent', $vest_events: $1_event_EventHandle'$1_vesting_VestEvent', $distribute_events: $1_event_EventHandle'$1_vesting_DistributeEvent', $terminate_events: $1_event_EventHandle'$1_vesting_TerminateEvent', $admin_withdraw_events: $1_event_EventHandle'$1_vesting_AdminWithdrawEvent'): $1_vesting_VestingContract; -function {:inline} $Update'$1_vesting_VestingContract'_state(s: $1_vesting_VestingContract, x: int): $1_vesting_VestingContract { - $1_vesting_VestingContract(x, $admin#$1_vesting_VestingContract(s), $grant_pool#$1_vesting_VestingContract(s), $beneficiaries#$1_vesting_VestingContract(s), $vesting_schedule#$1_vesting_VestingContract(s), $withdrawal_address#$1_vesting_VestingContract(s), $staking#$1_vesting_VestingContract(s), $remaining_grant#$1_vesting_VestingContract(s), $signer_cap#$1_vesting_VestingContract(s), $update_operator_events#$1_vesting_VestingContract(s), $update_voter_events#$1_vesting_VestingContract(s), $reset_lockup_events#$1_vesting_VestingContract(s), $set_beneficiary_events#$1_vesting_VestingContract(s), $unlock_rewards_events#$1_vesting_VestingContract(s), $vest_events#$1_vesting_VestingContract(s), $distribute_events#$1_vesting_VestingContract(s), $terminate_events#$1_vesting_VestingContract(s), $admin_withdraw_events#$1_vesting_VestingContract(s)) -} -function {:inline} $Update'$1_vesting_VestingContract'_admin(s: $1_vesting_VestingContract, x: int): $1_vesting_VestingContract { - $1_vesting_VestingContract($state#$1_vesting_VestingContract(s), x, $grant_pool#$1_vesting_VestingContract(s), $beneficiaries#$1_vesting_VestingContract(s), $vesting_schedule#$1_vesting_VestingContract(s), $withdrawal_address#$1_vesting_VestingContract(s), $staking#$1_vesting_VestingContract(s), $remaining_grant#$1_vesting_VestingContract(s), $signer_cap#$1_vesting_VestingContract(s), $update_operator_events#$1_vesting_VestingContract(s), $update_voter_events#$1_vesting_VestingContract(s), $reset_lockup_events#$1_vesting_VestingContract(s), $set_beneficiary_events#$1_vesting_VestingContract(s), $unlock_rewards_events#$1_vesting_VestingContract(s), $vest_events#$1_vesting_VestingContract(s), $distribute_events#$1_vesting_VestingContract(s), $terminate_events#$1_vesting_VestingContract(s), $admin_withdraw_events#$1_vesting_VestingContract(s)) -} -function {:inline} $Update'$1_vesting_VestingContract'_grant_pool(s: $1_vesting_VestingContract, x: $1_pool_u64_Pool): $1_vesting_VestingContract { - $1_vesting_VestingContract($state#$1_vesting_VestingContract(s), $admin#$1_vesting_VestingContract(s), x, $beneficiaries#$1_vesting_VestingContract(s), $vesting_schedule#$1_vesting_VestingContract(s), $withdrawal_address#$1_vesting_VestingContract(s), $staking#$1_vesting_VestingContract(s), $remaining_grant#$1_vesting_VestingContract(s), $signer_cap#$1_vesting_VestingContract(s), $update_operator_events#$1_vesting_VestingContract(s), $update_voter_events#$1_vesting_VestingContract(s), $reset_lockup_events#$1_vesting_VestingContract(s), $set_beneficiary_events#$1_vesting_VestingContract(s), $unlock_rewards_events#$1_vesting_VestingContract(s), $vest_events#$1_vesting_VestingContract(s), $distribute_events#$1_vesting_VestingContract(s), $terminate_events#$1_vesting_VestingContract(s), $admin_withdraw_events#$1_vesting_VestingContract(s)) -} -function {:inline} $Update'$1_vesting_VestingContract'_beneficiaries(s: $1_vesting_VestingContract, x: Table int (int)): $1_vesting_VestingContract { - $1_vesting_VestingContract($state#$1_vesting_VestingContract(s), $admin#$1_vesting_VestingContract(s), $grant_pool#$1_vesting_VestingContract(s), x, $vesting_schedule#$1_vesting_VestingContract(s), $withdrawal_address#$1_vesting_VestingContract(s), $staking#$1_vesting_VestingContract(s), $remaining_grant#$1_vesting_VestingContract(s), $signer_cap#$1_vesting_VestingContract(s), $update_operator_events#$1_vesting_VestingContract(s), $update_voter_events#$1_vesting_VestingContract(s), $reset_lockup_events#$1_vesting_VestingContract(s), $set_beneficiary_events#$1_vesting_VestingContract(s), $unlock_rewards_events#$1_vesting_VestingContract(s), $vest_events#$1_vesting_VestingContract(s), $distribute_events#$1_vesting_VestingContract(s), $terminate_events#$1_vesting_VestingContract(s), $admin_withdraw_events#$1_vesting_VestingContract(s)) -} -function {:inline} $Update'$1_vesting_VestingContract'_vesting_schedule(s: $1_vesting_VestingContract, x: $1_vesting_VestingSchedule): $1_vesting_VestingContract { - $1_vesting_VestingContract($state#$1_vesting_VestingContract(s), $admin#$1_vesting_VestingContract(s), $grant_pool#$1_vesting_VestingContract(s), $beneficiaries#$1_vesting_VestingContract(s), x, $withdrawal_address#$1_vesting_VestingContract(s), $staking#$1_vesting_VestingContract(s), $remaining_grant#$1_vesting_VestingContract(s), $signer_cap#$1_vesting_VestingContract(s), $update_operator_events#$1_vesting_VestingContract(s), $update_voter_events#$1_vesting_VestingContract(s), $reset_lockup_events#$1_vesting_VestingContract(s), $set_beneficiary_events#$1_vesting_VestingContract(s), $unlock_rewards_events#$1_vesting_VestingContract(s), $vest_events#$1_vesting_VestingContract(s), $distribute_events#$1_vesting_VestingContract(s), $terminate_events#$1_vesting_VestingContract(s), $admin_withdraw_events#$1_vesting_VestingContract(s)) -} -function {:inline} $Update'$1_vesting_VestingContract'_withdrawal_address(s: $1_vesting_VestingContract, x: int): $1_vesting_VestingContract { - $1_vesting_VestingContract($state#$1_vesting_VestingContract(s), $admin#$1_vesting_VestingContract(s), $grant_pool#$1_vesting_VestingContract(s), $beneficiaries#$1_vesting_VestingContract(s), $vesting_schedule#$1_vesting_VestingContract(s), x, $staking#$1_vesting_VestingContract(s), $remaining_grant#$1_vesting_VestingContract(s), $signer_cap#$1_vesting_VestingContract(s), $update_operator_events#$1_vesting_VestingContract(s), $update_voter_events#$1_vesting_VestingContract(s), $reset_lockup_events#$1_vesting_VestingContract(s), $set_beneficiary_events#$1_vesting_VestingContract(s), $unlock_rewards_events#$1_vesting_VestingContract(s), $vest_events#$1_vesting_VestingContract(s), $distribute_events#$1_vesting_VestingContract(s), $terminate_events#$1_vesting_VestingContract(s), $admin_withdraw_events#$1_vesting_VestingContract(s)) -} -function {:inline} $Update'$1_vesting_VestingContract'_staking(s: $1_vesting_VestingContract, x: $1_vesting_StakingInfo): $1_vesting_VestingContract { - $1_vesting_VestingContract($state#$1_vesting_VestingContract(s), $admin#$1_vesting_VestingContract(s), $grant_pool#$1_vesting_VestingContract(s), $beneficiaries#$1_vesting_VestingContract(s), $vesting_schedule#$1_vesting_VestingContract(s), $withdrawal_address#$1_vesting_VestingContract(s), x, $remaining_grant#$1_vesting_VestingContract(s), $signer_cap#$1_vesting_VestingContract(s), $update_operator_events#$1_vesting_VestingContract(s), $update_voter_events#$1_vesting_VestingContract(s), $reset_lockup_events#$1_vesting_VestingContract(s), $set_beneficiary_events#$1_vesting_VestingContract(s), $unlock_rewards_events#$1_vesting_VestingContract(s), $vest_events#$1_vesting_VestingContract(s), $distribute_events#$1_vesting_VestingContract(s), $terminate_events#$1_vesting_VestingContract(s), $admin_withdraw_events#$1_vesting_VestingContract(s)) -} -function {:inline} $Update'$1_vesting_VestingContract'_remaining_grant(s: $1_vesting_VestingContract, x: int): $1_vesting_VestingContract { - $1_vesting_VestingContract($state#$1_vesting_VestingContract(s), $admin#$1_vesting_VestingContract(s), $grant_pool#$1_vesting_VestingContract(s), $beneficiaries#$1_vesting_VestingContract(s), $vesting_schedule#$1_vesting_VestingContract(s), $withdrawal_address#$1_vesting_VestingContract(s), $staking#$1_vesting_VestingContract(s), x, $signer_cap#$1_vesting_VestingContract(s), $update_operator_events#$1_vesting_VestingContract(s), $update_voter_events#$1_vesting_VestingContract(s), $reset_lockup_events#$1_vesting_VestingContract(s), $set_beneficiary_events#$1_vesting_VestingContract(s), $unlock_rewards_events#$1_vesting_VestingContract(s), $vest_events#$1_vesting_VestingContract(s), $distribute_events#$1_vesting_VestingContract(s), $terminate_events#$1_vesting_VestingContract(s), $admin_withdraw_events#$1_vesting_VestingContract(s)) -} -function {:inline} $Update'$1_vesting_VestingContract'_signer_cap(s: $1_vesting_VestingContract, x: $1_account_SignerCapability): $1_vesting_VestingContract { - $1_vesting_VestingContract($state#$1_vesting_VestingContract(s), $admin#$1_vesting_VestingContract(s), $grant_pool#$1_vesting_VestingContract(s), $beneficiaries#$1_vesting_VestingContract(s), $vesting_schedule#$1_vesting_VestingContract(s), $withdrawal_address#$1_vesting_VestingContract(s), $staking#$1_vesting_VestingContract(s), $remaining_grant#$1_vesting_VestingContract(s), x, $update_operator_events#$1_vesting_VestingContract(s), $update_voter_events#$1_vesting_VestingContract(s), $reset_lockup_events#$1_vesting_VestingContract(s), $set_beneficiary_events#$1_vesting_VestingContract(s), $unlock_rewards_events#$1_vesting_VestingContract(s), $vest_events#$1_vesting_VestingContract(s), $distribute_events#$1_vesting_VestingContract(s), $terminate_events#$1_vesting_VestingContract(s), $admin_withdraw_events#$1_vesting_VestingContract(s)) -} -function {:inline} $Update'$1_vesting_VestingContract'_update_operator_events(s: $1_vesting_VestingContract, x: $1_event_EventHandle'$1_vesting_UpdateOperatorEvent'): $1_vesting_VestingContract { - $1_vesting_VestingContract($state#$1_vesting_VestingContract(s), $admin#$1_vesting_VestingContract(s), $grant_pool#$1_vesting_VestingContract(s), $beneficiaries#$1_vesting_VestingContract(s), $vesting_schedule#$1_vesting_VestingContract(s), $withdrawal_address#$1_vesting_VestingContract(s), $staking#$1_vesting_VestingContract(s), $remaining_grant#$1_vesting_VestingContract(s), $signer_cap#$1_vesting_VestingContract(s), x, $update_voter_events#$1_vesting_VestingContract(s), $reset_lockup_events#$1_vesting_VestingContract(s), $set_beneficiary_events#$1_vesting_VestingContract(s), $unlock_rewards_events#$1_vesting_VestingContract(s), $vest_events#$1_vesting_VestingContract(s), $distribute_events#$1_vesting_VestingContract(s), $terminate_events#$1_vesting_VestingContract(s), $admin_withdraw_events#$1_vesting_VestingContract(s)) -} -function {:inline} $Update'$1_vesting_VestingContract'_update_voter_events(s: $1_vesting_VestingContract, x: $1_event_EventHandle'$1_vesting_UpdateVoterEvent'): $1_vesting_VestingContract { - $1_vesting_VestingContract($state#$1_vesting_VestingContract(s), $admin#$1_vesting_VestingContract(s), $grant_pool#$1_vesting_VestingContract(s), $beneficiaries#$1_vesting_VestingContract(s), $vesting_schedule#$1_vesting_VestingContract(s), $withdrawal_address#$1_vesting_VestingContract(s), $staking#$1_vesting_VestingContract(s), $remaining_grant#$1_vesting_VestingContract(s), $signer_cap#$1_vesting_VestingContract(s), $update_operator_events#$1_vesting_VestingContract(s), x, $reset_lockup_events#$1_vesting_VestingContract(s), $set_beneficiary_events#$1_vesting_VestingContract(s), $unlock_rewards_events#$1_vesting_VestingContract(s), $vest_events#$1_vesting_VestingContract(s), $distribute_events#$1_vesting_VestingContract(s), $terminate_events#$1_vesting_VestingContract(s), $admin_withdraw_events#$1_vesting_VestingContract(s)) -} -function {:inline} $Update'$1_vesting_VestingContract'_reset_lockup_events(s: $1_vesting_VestingContract, x: $1_event_EventHandle'$1_vesting_ResetLockupEvent'): $1_vesting_VestingContract { - $1_vesting_VestingContract($state#$1_vesting_VestingContract(s), $admin#$1_vesting_VestingContract(s), $grant_pool#$1_vesting_VestingContract(s), $beneficiaries#$1_vesting_VestingContract(s), $vesting_schedule#$1_vesting_VestingContract(s), $withdrawal_address#$1_vesting_VestingContract(s), $staking#$1_vesting_VestingContract(s), $remaining_grant#$1_vesting_VestingContract(s), $signer_cap#$1_vesting_VestingContract(s), $update_operator_events#$1_vesting_VestingContract(s), $update_voter_events#$1_vesting_VestingContract(s), x, $set_beneficiary_events#$1_vesting_VestingContract(s), $unlock_rewards_events#$1_vesting_VestingContract(s), $vest_events#$1_vesting_VestingContract(s), $distribute_events#$1_vesting_VestingContract(s), $terminate_events#$1_vesting_VestingContract(s), $admin_withdraw_events#$1_vesting_VestingContract(s)) -} -function {:inline} $Update'$1_vesting_VestingContract'_set_beneficiary_events(s: $1_vesting_VestingContract, x: $1_event_EventHandle'$1_vesting_SetBeneficiaryEvent'): $1_vesting_VestingContract { - $1_vesting_VestingContract($state#$1_vesting_VestingContract(s), $admin#$1_vesting_VestingContract(s), $grant_pool#$1_vesting_VestingContract(s), $beneficiaries#$1_vesting_VestingContract(s), $vesting_schedule#$1_vesting_VestingContract(s), $withdrawal_address#$1_vesting_VestingContract(s), $staking#$1_vesting_VestingContract(s), $remaining_grant#$1_vesting_VestingContract(s), $signer_cap#$1_vesting_VestingContract(s), $update_operator_events#$1_vesting_VestingContract(s), $update_voter_events#$1_vesting_VestingContract(s), $reset_lockup_events#$1_vesting_VestingContract(s), x, $unlock_rewards_events#$1_vesting_VestingContract(s), $vest_events#$1_vesting_VestingContract(s), $distribute_events#$1_vesting_VestingContract(s), $terminate_events#$1_vesting_VestingContract(s), $admin_withdraw_events#$1_vesting_VestingContract(s)) -} -function {:inline} $Update'$1_vesting_VestingContract'_unlock_rewards_events(s: $1_vesting_VestingContract, x: $1_event_EventHandle'$1_vesting_UnlockRewardsEvent'): $1_vesting_VestingContract { - $1_vesting_VestingContract($state#$1_vesting_VestingContract(s), $admin#$1_vesting_VestingContract(s), $grant_pool#$1_vesting_VestingContract(s), $beneficiaries#$1_vesting_VestingContract(s), $vesting_schedule#$1_vesting_VestingContract(s), $withdrawal_address#$1_vesting_VestingContract(s), $staking#$1_vesting_VestingContract(s), $remaining_grant#$1_vesting_VestingContract(s), $signer_cap#$1_vesting_VestingContract(s), $update_operator_events#$1_vesting_VestingContract(s), $update_voter_events#$1_vesting_VestingContract(s), $reset_lockup_events#$1_vesting_VestingContract(s), $set_beneficiary_events#$1_vesting_VestingContract(s), x, $vest_events#$1_vesting_VestingContract(s), $distribute_events#$1_vesting_VestingContract(s), $terminate_events#$1_vesting_VestingContract(s), $admin_withdraw_events#$1_vesting_VestingContract(s)) -} -function {:inline} $Update'$1_vesting_VestingContract'_vest_events(s: $1_vesting_VestingContract, x: $1_event_EventHandle'$1_vesting_VestEvent'): $1_vesting_VestingContract { - $1_vesting_VestingContract($state#$1_vesting_VestingContract(s), $admin#$1_vesting_VestingContract(s), $grant_pool#$1_vesting_VestingContract(s), $beneficiaries#$1_vesting_VestingContract(s), $vesting_schedule#$1_vesting_VestingContract(s), $withdrawal_address#$1_vesting_VestingContract(s), $staking#$1_vesting_VestingContract(s), $remaining_grant#$1_vesting_VestingContract(s), $signer_cap#$1_vesting_VestingContract(s), $update_operator_events#$1_vesting_VestingContract(s), $update_voter_events#$1_vesting_VestingContract(s), $reset_lockup_events#$1_vesting_VestingContract(s), $set_beneficiary_events#$1_vesting_VestingContract(s), $unlock_rewards_events#$1_vesting_VestingContract(s), x, $distribute_events#$1_vesting_VestingContract(s), $terminate_events#$1_vesting_VestingContract(s), $admin_withdraw_events#$1_vesting_VestingContract(s)) -} -function {:inline} $Update'$1_vesting_VestingContract'_distribute_events(s: $1_vesting_VestingContract, x: $1_event_EventHandle'$1_vesting_DistributeEvent'): $1_vesting_VestingContract { - $1_vesting_VestingContract($state#$1_vesting_VestingContract(s), $admin#$1_vesting_VestingContract(s), $grant_pool#$1_vesting_VestingContract(s), $beneficiaries#$1_vesting_VestingContract(s), $vesting_schedule#$1_vesting_VestingContract(s), $withdrawal_address#$1_vesting_VestingContract(s), $staking#$1_vesting_VestingContract(s), $remaining_grant#$1_vesting_VestingContract(s), $signer_cap#$1_vesting_VestingContract(s), $update_operator_events#$1_vesting_VestingContract(s), $update_voter_events#$1_vesting_VestingContract(s), $reset_lockup_events#$1_vesting_VestingContract(s), $set_beneficiary_events#$1_vesting_VestingContract(s), $unlock_rewards_events#$1_vesting_VestingContract(s), $vest_events#$1_vesting_VestingContract(s), x, $terminate_events#$1_vesting_VestingContract(s), $admin_withdraw_events#$1_vesting_VestingContract(s)) -} -function {:inline} $Update'$1_vesting_VestingContract'_terminate_events(s: $1_vesting_VestingContract, x: $1_event_EventHandle'$1_vesting_TerminateEvent'): $1_vesting_VestingContract { - $1_vesting_VestingContract($state#$1_vesting_VestingContract(s), $admin#$1_vesting_VestingContract(s), $grant_pool#$1_vesting_VestingContract(s), $beneficiaries#$1_vesting_VestingContract(s), $vesting_schedule#$1_vesting_VestingContract(s), $withdrawal_address#$1_vesting_VestingContract(s), $staking#$1_vesting_VestingContract(s), $remaining_grant#$1_vesting_VestingContract(s), $signer_cap#$1_vesting_VestingContract(s), $update_operator_events#$1_vesting_VestingContract(s), $update_voter_events#$1_vesting_VestingContract(s), $reset_lockup_events#$1_vesting_VestingContract(s), $set_beneficiary_events#$1_vesting_VestingContract(s), $unlock_rewards_events#$1_vesting_VestingContract(s), $vest_events#$1_vesting_VestingContract(s), $distribute_events#$1_vesting_VestingContract(s), x, $admin_withdraw_events#$1_vesting_VestingContract(s)) -} -function {:inline} $Update'$1_vesting_VestingContract'_admin_withdraw_events(s: $1_vesting_VestingContract, x: $1_event_EventHandle'$1_vesting_AdminWithdrawEvent'): $1_vesting_VestingContract { - $1_vesting_VestingContract($state#$1_vesting_VestingContract(s), $admin#$1_vesting_VestingContract(s), $grant_pool#$1_vesting_VestingContract(s), $beneficiaries#$1_vesting_VestingContract(s), $vesting_schedule#$1_vesting_VestingContract(s), $withdrawal_address#$1_vesting_VestingContract(s), $staking#$1_vesting_VestingContract(s), $remaining_grant#$1_vesting_VestingContract(s), $signer_cap#$1_vesting_VestingContract(s), $update_operator_events#$1_vesting_VestingContract(s), $update_voter_events#$1_vesting_VestingContract(s), $reset_lockup_events#$1_vesting_VestingContract(s), $set_beneficiary_events#$1_vesting_VestingContract(s), $unlock_rewards_events#$1_vesting_VestingContract(s), $vest_events#$1_vesting_VestingContract(s), $distribute_events#$1_vesting_VestingContract(s), $terminate_events#$1_vesting_VestingContract(s), x) -} -function $IsValid'$1_vesting_VestingContract'(s: $1_vesting_VestingContract): bool { - $IsValid'u64'($state#$1_vesting_VestingContract(s)) - && $IsValid'address'($admin#$1_vesting_VestingContract(s)) - && $IsValid'$1_pool_u64_Pool'($grant_pool#$1_vesting_VestingContract(s)) - && $IsValid'$1_simple_map_SimpleMap'address_address''($beneficiaries#$1_vesting_VestingContract(s)) - && $IsValid'$1_vesting_VestingSchedule'($vesting_schedule#$1_vesting_VestingContract(s)) - && $IsValid'address'($withdrawal_address#$1_vesting_VestingContract(s)) - && $IsValid'$1_vesting_StakingInfo'($staking#$1_vesting_VestingContract(s)) - && $IsValid'u64'($remaining_grant#$1_vesting_VestingContract(s)) - && $IsValid'$1_account_SignerCapability'($signer_cap#$1_vesting_VestingContract(s)) - && $IsValid'$1_event_EventHandle'$1_vesting_UpdateOperatorEvent''($update_operator_events#$1_vesting_VestingContract(s)) - && $IsValid'$1_event_EventHandle'$1_vesting_UpdateVoterEvent''($update_voter_events#$1_vesting_VestingContract(s)) - && $IsValid'$1_event_EventHandle'$1_vesting_ResetLockupEvent''($reset_lockup_events#$1_vesting_VestingContract(s)) - && $IsValid'$1_event_EventHandle'$1_vesting_SetBeneficiaryEvent''($set_beneficiary_events#$1_vesting_VestingContract(s)) - && $IsValid'$1_event_EventHandle'$1_vesting_UnlockRewardsEvent''($unlock_rewards_events#$1_vesting_VestingContract(s)) - && $IsValid'$1_event_EventHandle'$1_vesting_VestEvent''($vest_events#$1_vesting_VestingContract(s)) - && $IsValid'$1_event_EventHandle'$1_vesting_DistributeEvent''($distribute_events#$1_vesting_VestingContract(s)) - && $IsValid'$1_event_EventHandle'$1_vesting_TerminateEvent''($terminate_events#$1_vesting_VestingContract(s)) - && $IsValid'$1_event_EventHandle'$1_vesting_AdminWithdrawEvent''($admin_withdraw_events#$1_vesting_VestingContract(s)) -} -function {:inline} $IsEqual'$1_vesting_VestingContract'(s1: $1_vesting_VestingContract, s2: $1_vesting_VestingContract): bool { - $IsEqual'u64'($state#$1_vesting_VestingContract(s1), $state#$1_vesting_VestingContract(s2)) - && $IsEqual'address'($admin#$1_vesting_VestingContract(s1), $admin#$1_vesting_VestingContract(s2)) - && $IsEqual'$1_pool_u64_Pool'($grant_pool#$1_vesting_VestingContract(s1), $grant_pool#$1_vesting_VestingContract(s2)) - && $IsEqual'$1_simple_map_SimpleMap'address_address''($beneficiaries#$1_vesting_VestingContract(s1), $beneficiaries#$1_vesting_VestingContract(s2)) - && $IsEqual'$1_vesting_VestingSchedule'($vesting_schedule#$1_vesting_VestingContract(s1), $vesting_schedule#$1_vesting_VestingContract(s2)) - && $IsEqual'address'($withdrawal_address#$1_vesting_VestingContract(s1), $withdrawal_address#$1_vesting_VestingContract(s2)) - && $IsEqual'$1_vesting_StakingInfo'($staking#$1_vesting_VestingContract(s1), $staking#$1_vesting_VestingContract(s2)) - && $IsEqual'u64'($remaining_grant#$1_vesting_VestingContract(s1), $remaining_grant#$1_vesting_VestingContract(s2)) - && $IsEqual'$1_account_SignerCapability'($signer_cap#$1_vesting_VestingContract(s1), $signer_cap#$1_vesting_VestingContract(s2)) - && $IsEqual'$1_event_EventHandle'$1_vesting_UpdateOperatorEvent''($update_operator_events#$1_vesting_VestingContract(s1), $update_operator_events#$1_vesting_VestingContract(s2)) - && $IsEqual'$1_event_EventHandle'$1_vesting_UpdateVoterEvent''($update_voter_events#$1_vesting_VestingContract(s1), $update_voter_events#$1_vesting_VestingContract(s2)) - && $IsEqual'$1_event_EventHandle'$1_vesting_ResetLockupEvent''($reset_lockup_events#$1_vesting_VestingContract(s1), $reset_lockup_events#$1_vesting_VestingContract(s2)) - && $IsEqual'$1_event_EventHandle'$1_vesting_SetBeneficiaryEvent''($set_beneficiary_events#$1_vesting_VestingContract(s1), $set_beneficiary_events#$1_vesting_VestingContract(s2)) - && $IsEqual'$1_event_EventHandle'$1_vesting_UnlockRewardsEvent''($unlock_rewards_events#$1_vesting_VestingContract(s1), $unlock_rewards_events#$1_vesting_VestingContract(s2)) - && $IsEqual'$1_event_EventHandle'$1_vesting_VestEvent''($vest_events#$1_vesting_VestingContract(s1), $vest_events#$1_vesting_VestingContract(s2)) - && $IsEqual'$1_event_EventHandle'$1_vesting_DistributeEvent''($distribute_events#$1_vesting_VestingContract(s1), $distribute_events#$1_vesting_VestingContract(s2)) - && $IsEqual'$1_event_EventHandle'$1_vesting_TerminateEvent''($terminate_events#$1_vesting_VestingContract(s1), $terminate_events#$1_vesting_VestingContract(s2)) - && $IsEqual'$1_event_EventHandle'$1_vesting_AdminWithdrawEvent''($admin_withdraw_events#$1_vesting_VestingContract(s1), $admin_withdraw_events#$1_vesting_VestingContract(s2))} -var $1_vesting_VestingContract_$memory: $Memory $1_vesting_VestingContract; - -// struct vesting::VestingSchedule at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:106:5+1037 -type {:datatype} $1_vesting_VestingSchedule; -function {:constructor} $1_vesting_VestingSchedule($schedule: Vec ($1_fixed_point32_FixedPoint32), $start_timestamp_secs: int, $period_duration: int, $last_vested_period: int): $1_vesting_VestingSchedule; -function {:inline} $Update'$1_vesting_VestingSchedule'_schedule(s: $1_vesting_VestingSchedule, x: Vec ($1_fixed_point32_FixedPoint32)): $1_vesting_VestingSchedule { - $1_vesting_VestingSchedule(x, $start_timestamp_secs#$1_vesting_VestingSchedule(s), $period_duration#$1_vesting_VestingSchedule(s), $last_vested_period#$1_vesting_VestingSchedule(s)) -} -function {:inline} $Update'$1_vesting_VestingSchedule'_start_timestamp_secs(s: $1_vesting_VestingSchedule, x: int): $1_vesting_VestingSchedule { - $1_vesting_VestingSchedule($schedule#$1_vesting_VestingSchedule(s), x, $period_duration#$1_vesting_VestingSchedule(s), $last_vested_period#$1_vesting_VestingSchedule(s)) -} -function {:inline} $Update'$1_vesting_VestingSchedule'_period_duration(s: $1_vesting_VestingSchedule, x: int): $1_vesting_VestingSchedule { - $1_vesting_VestingSchedule($schedule#$1_vesting_VestingSchedule(s), $start_timestamp_secs#$1_vesting_VestingSchedule(s), x, $last_vested_period#$1_vesting_VestingSchedule(s)) -} -function {:inline} $Update'$1_vesting_VestingSchedule'_last_vested_period(s: $1_vesting_VestingSchedule, x: int): $1_vesting_VestingSchedule { - $1_vesting_VestingSchedule($schedule#$1_vesting_VestingSchedule(s), $start_timestamp_secs#$1_vesting_VestingSchedule(s), $period_duration#$1_vesting_VestingSchedule(s), x) -} -function $IsValid'$1_vesting_VestingSchedule'(s: $1_vesting_VestingSchedule): bool { - $IsValid'vec'$1_fixed_point32_FixedPoint32''($schedule#$1_vesting_VestingSchedule(s)) - && $IsValid'u64'($start_timestamp_secs#$1_vesting_VestingSchedule(s)) - && $IsValid'u64'($period_duration#$1_vesting_VestingSchedule(s)) - && $IsValid'u64'($last_vested_period#$1_vesting_VestingSchedule(s)) -} -function {:inline} $IsEqual'$1_vesting_VestingSchedule'(s1: $1_vesting_VestingSchedule, s2: $1_vesting_VestingSchedule): bool { - $IsEqual'vec'$1_fixed_point32_FixedPoint32''($schedule#$1_vesting_VestingSchedule(s1), $schedule#$1_vesting_VestingSchedule(s2)) - && $IsEqual'u64'($start_timestamp_secs#$1_vesting_VestingSchedule(s1), $start_timestamp_secs#$1_vesting_VestingSchedule(s2)) - && $IsEqual'u64'($period_duration#$1_vesting_VestingSchedule(s1), $period_duration#$1_vesting_VestingSchedule(s2)) - && $IsEqual'u64'($last_vested_period#$1_vesting_VestingSchedule(s1), $last_vested_period#$1_vesting_VestingSchedule(s2))} - -// fun vesting::operator [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:321:5+244 -procedure {:timeLimit 900} $1_vesting_operator$verify(_$t0: int) returns ($ret0: int) -{ - // declare local variables - var $t1: int; - var $t2: $1_vesting_VestingContract; - var $t3: $1_vesting_StakingInfo; - var $t4: int; - var $t0: int; - var $temp_0'address': int; - var $1_vesting_VestingContract_$memory#35: $Memory $1_vesting_VestingContract; - $t0 := _$t0; - - // verification entrypoint assumptions - call $InitVerification(); - - // bytecode translation starts here - // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:321:5+1 - assume {:print "$at(2,14901,14902)"} true; - assume $IsValid'address'($t0); - - // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:321:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); - (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; - (var j := $i_4; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); - - // @35 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:321:5+1 - $1_vesting_VestingContract_$memory#35 := $1_vesting_VestingContract_$memory; - - // trace_local[vesting_contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:321:5+1 - assume {:print "$track_local(59,14,0):", $t0} $t0 == $t0; - - // vesting::assert_vesting_contract_exists($t0) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:322:9+56 - assume {:print "$at(2,15000,15056)"} true; - call $1_vesting_assert_vesting_contract_exists($t0); - if ($abort_flag) { - assume {:print "$at(2,15000,15056)"} true; - $t1 := $abort_code; - assume {:print "$track_abort(59,14):", $t1} $t1 == $t1; - goto L2; - } - - // $t2 := get_global($t0) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:323:9+13 - assume {:print "$at(2,15066,15079)"} true; - if (!$ResourceExists($1_vesting_VestingContract_$memory, $t0)) { - call $ExecFailureAbort(); - } else { - $t2 := $ResourceValue($1_vesting_VestingContract_$memory, $t0); - } - if ($abort_flag) { - assume {:print "$at(2,15066,15079)"} true; - $t1 := $abort_code; - assume {:print "$track_abort(59,14):", $t1} $t1 == $t1; - goto L2; - } - - // $t3 := get_field.staking($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:323:9+64 - $t3 := $staking#$1_vesting_VestingContract($t2); - - // $t4 := get_field.operator($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:323:9+73 - $t4 := $operator#$1_vesting_StakingInfo($t3); - - // trace_return[0]($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:323:9+73 - assume {:print "$track_return(59,14,0):", $t4} $t4 == $t4; - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:324:5+1 - assume {:print "$at(2,15144,15145)"} true; -L1: - - // assert Not(Not(exists[@35]($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:36:9+61 - assume {:print "$at(3,1205,1266)"} true; - assert {:msg "assert_failed(3,1205,1266): function does not abort under this condition"} - !!$ResourceExists($1_vesting_VestingContract_$memory#35, $t0); - - // return $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:36:9+61 - $ret0 := $t4; - return; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:324:5+1 - assume {:print "$at(2,15144,15145)"} true; -L2: - - // assert Not(exists[@35]($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:35:5+135 - assume {:print "$at(3,1137,1272)"} true; - assert {:msg "assert_failed(3,1137,1272): abort not covered by any of the `aborts_if` clauses"} - !$ResourceExists($1_vesting_VestingContract_$memory#35, $t0); - - // abort($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:35:5+135 - $abort_code := $t1; - $abort_flag := true; - return; - -} - -// fun vesting::voter [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:331:5+238 -procedure {:timeLimit 900} $1_vesting_voter$verify(_$t0: int) returns ($ret0: int) -{ - // declare local variables - var $t1: int; - var $t2: $1_vesting_VestingContract; - var $t3: $1_vesting_StakingInfo; - var $t4: int; - var $t0: int; - var $temp_0'address': int; - var $1_vesting_VestingContract_$memory#34: $Memory $1_vesting_VestingContract; - $t0 := _$t0; - - // verification entrypoint assumptions - call $InitVerification(); - - // bytecode translation starts here - // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:331:5+1 - assume {:print "$at(2,15393,15394)"} true; - assume $IsValid'address'($t0); - - // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:331:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); - (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; - (var j := $i_4; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); - - // @34 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:331:5+1 - $1_vesting_VestingContract_$memory#34 := $1_vesting_VestingContract_$memory; - - // trace_local[vesting_contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:331:5+1 - assume {:print "$track_local(59,40,0):", $t0} $t0 == $t0; - - // vesting::assert_vesting_contract_exists($t0) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:332:9+56 - assume {:print "$at(2,15489,15545)"} true; - call $1_vesting_assert_vesting_contract_exists($t0); - if ($abort_flag) { - assume {:print "$at(2,15489,15545)"} true; - $t1 := $abort_code; - assume {:print "$track_abort(59,40):", $t1} $t1 == $t1; - goto L2; - } - - // $t2 := get_global($t0) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:333:9+13 - assume {:print "$at(2,15555,15568)"} true; - if (!$ResourceExists($1_vesting_VestingContract_$memory, $t0)) { - call $ExecFailureAbort(); - } else { - $t2 := $ResourceValue($1_vesting_VestingContract_$memory, $t0); - } - if ($abort_flag) { - assume {:print "$at(2,15555,15568)"} true; - $t1 := $abort_code; - assume {:print "$track_abort(59,40):", $t1} $t1 == $t1; - goto L2; - } - - // $t3 := get_field.staking($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:333:9+64 - $t3 := $staking#$1_vesting_VestingContract($t2); - - // $t4 := get_field.voter($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:333:9+70 - $t4 := $voter#$1_vesting_StakingInfo($t3); - - // trace_return[0]($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:333:9+70 - assume {:print "$track_return(59,40,0):", $t4} $t4 == $t4; - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:334:5+1 - assume {:print "$at(2,15630,15631)"} true; -L1: - - // assert Not(Not(exists[@34]($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:40:9+61 - assume {:print "$at(3,1343,1404)"} true; - assert {:msg "assert_failed(3,1343,1404): function does not abort under this condition"} - !!$ResourceExists($1_vesting_VestingContract_$memory#34, $t0); - - // return $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:40:9+61 - $ret0 := $t4; - return; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:334:5+1 - assume {:print "$at(2,15630,15631)"} true; -L2: - - // assert Not(exists[@34]($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:39:5+132 - assume {:print "$at(3,1278,1410)"} true; - assert {:msg "assert_failed(3,1278,1410): abort not covered by any of the `aborts_if` clauses"} - !$ResourceExists($1_vesting_VestingContract_$memory#34, $t0); - - // abort($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:39:5+132 - $abort_code := $t1; - $abort_flag := true; - return; - -} - -// fun vesting::shareholder [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:396:5+811 -procedure {:timeLimit 900} $1_vesting_shareholder$verify(_$t0: int, _$t1: int) returns ($ret0: int) -{ - // declare local variables - var $t2: Vec (int); - var $t3: bool; - var $t4: int; - var $t5: int; - var $t6: bool; - var $t7: int; - var $t8: Vec (int); - var $t9: Vec (int); - var $t10: $1_vesting_VestingContract; - var $t11: $1_vesting_VestingContract; - var $t12: $1_vesting_VestingContract; - var $t13: int; - var $t14: $1_vesting_VestingContract; - var $t15: Vec (int); - var $t16: bool; - var $t17: int; - var $t18: $1_vesting_VestingContract; - var $t19: int; - var $t20: bool; - var $t21: int; - var $t22: int; - var $t23: bool; - var $t24: int; - var $t25: int; - var $t26: bool; - var $t27: bool; - var $t28: bool; - var $t29: int; - var $t30: int; - var $t0: int; - var $t1: int; - var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; - var $temp_0'address': int; - var $temp_0'bool': bool; - var $temp_0'u64': int; - var $temp_0'vec'address'': Vec (int); - var $1_vesting_VestingContract_$memory#78: $Memory $1_vesting_VestingContract; - $t0 := _$t0; - $t1 := _$t1; - - // verification entrypoint assumptions - call $InitVerification(); - - // bytecode translation starts here - // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:396:5+1 - assume {:print "$at(2,19217,19218)"} true; - assume $IsValid'address'($t0); - - // assume WellFormed($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:396:5+1 - assume $IsValid'address'($t1); - - // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:396:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); - (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; - (var j := $i_4; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); - - // assume Identical($t11, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:511:9+65 - assume {:print "$at(3,23068,23133)"} true; - assume ($t11 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); - - // @78 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:396:5+1 - assume {:print "$at(2,19217,19218)"} true; - $1_vesting_VestingContract_$memory#78 := $1_vesting_VestingContract_$memory; - - // trace_local[vesting_contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:396:5+1 - assume {:print "$track_local(59,23,0):", $t0} $t0 == $t0; - - // trace_local[shareholder_or_beneficiary]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:396:5+1 - assume {:print "$track_local(59,23,1):", $t1} $t1 == $t1; - - // assume Identical($t12, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:511:9+65 - assume {:print "$at(3,23068,23133)"} true; - assume ($t12 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); - - // vesting::assert_active_vesting_contract($t0) on_abort goto L13 with $t13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:397:9+56 - assume {:print "$at(2,19356,19412)"} true; - call $1_vesting_assert_active_vesting_contract($t0); - if ($abort_flag) { - assume {:print "$at(2,19356,19412)"} true; - $t13 := $abort_code; - assume {:print "$track_abort(59,23):", $t13} $t13 == $t13; - goto L13; - } - - // assume Identical($t14, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:511:9+65 - assume {:print "$at(3,23068,23133)"} true; - assume ($t14 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); - - // $t15 := vesting::shareholders($t0) on_abort goto L13 with $t13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:399:29+38 - assume {:print "$at(2,19443,19481)"} true; - call $t15 := $1_vesting_shareholders($t0); - if ($abort_flag) { - assume {:print "$at(2,19443,19481)"} true; - $t13 := $abort_code; - assume {:print "$track_abort(59,23):", $t13} $t13 == $t13; - goto L13; - } - - // trace_local[shareholders]($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:399:13+12 - assume {:print "$track_local(59,23,8):", $t15} $t15 == $t15; - - // $t16 := vector::contains
($t15, $t1) on_abort goto L13 with $t13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:400:13+59 - assume {:print "$at(2,19495,19554)"} true; - call $t16 := $1_vector_contains'address'($t15, $t1); - if ($abort_flag) { - assume {:print "$at(2,19495,19554)"} true; - $t13 := $abort_code; - assume {:print "$track_abort(59,23):", $t13} $t13 == $t13; - goto L13; - } - - // if ($t16) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:400:9+122 - if ($t16) { goto L1; } else { goto L0; } - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:401:13+33 - assume {:print "$at(2,19570,19603)"} true; -L1: - - // trace_return[0]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:401:13+33 - assume {:print "$at(2,19570,19603)"} true; - assume {:print "$track_return(59,23,0):", $t1} $t1 == $t1; - - // $t17 := move($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:401:13+33 - $t17 := $t1; - - // goto L12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:401:13+33 - goto L12; - - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:403:63+24 - assume {:print "$at(2,19677,19701)"} true; -L0: - - // $t18 := get_global($t0) on_abort goto L13 with $t13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:403:32+13 - assume {:print "$at(2,19646,19659)"} true; - if (!$ResourceExists($1_vesting_VestingContract_$memory, $t0)) { - call $ExecFailureAbort(); - } else { - $t18 := $ResourceValue($1_vesting_VestingContract_$memory, $t0); - } - if ($abort_flag) { - assume {:print "$at(2,19646,19659)"} true; - $t13 := $abort_code; - assume {:print "$track_abort(59,23):", $t13} $t13 == $t13; - goto L13; - } - - // trace_local[vesting_contract]($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:403:13+16 - assume {:print "$track_local(59,23,10):", $t18} $t18 == $t18; - - // $t19 := 0x0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:404:22+4 - assume {:print "$at(2,19725,19729)"} true; - $t19 := 0; - assume $IsValid'address'($t19); - - // trace_local[result]($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:404:13+6 - assume {:print "$track_local(59,23,5):", $t19} $t19 == $t19; - - // trace_local[v#272]($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:405:9+266 - assume {:print "$at(2,19739,20005)"} true; - assume {:print "$track_local(59,23,9):", $t15} $t15 == $t15; - - // $t20 := false at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:554:22+5 - assume {:print "$at(18,19381,19386)"} true; - $t20 := false; - assume $IsValid'bool'($t20); - - // trace_local[result#274]($t20) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:554:13+6 - assume {:print "$track_local(59,23,6):", $t20} $t20 == $t20; - - // $t21 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:555:17+1 - assume {:print "$at(18,19404,19405)"} true; - $t21 := 0; - assume $IsValid'u64'($t21); - - // trace_local[i#275]($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:555:13+1 - assume {:print "$track_local(59,23,4):", $t21} $t21 == $t21; - - // label L10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:556:16+1 - assume {:print "$at(18,19422,19423)"} true; -L10: - - // $t3 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:556:16+1 - assume {:print "$at(18,19422,19423)"} true; - havoc $t3; - - // assume WellFormed($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:556:16+1 - assume $IsValid'bool'($t3); - - // $t4 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:556:16+1 - havoc $t4; - - // assume WellFormed($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:556:16+1 - assume $IsValid'u64'($t4); - - // $t5 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:556:16+1 - havoc $t5; - - // assume WellFormed($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:556:16+1 - assume $IsValid'address'($t5); - - // $t6 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:556:16+1 - havoc $t6; - - // assume WellFormed($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:556:16+1 - assume $IsValid'bool'($t6); - - // $t22 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:556:16+1 - havoc $t22; - - // assume WellFormed($t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:556:16+1 - assume $IsValid'u64'($t22); - - // $t23 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:556:16+1 - havoc $t23; - - // assume WellFormed($t23) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:556:16+1 - assume $IsValid'bool'($t23); - - // $t24 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:556:16+1 - havoc $t24; - - // assume WellFormed($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:556:16+1 - assume $IsValid'address'($t24); - - // $t25 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:556:16+1 - havoc $t25; - - // assume WellFormed($t25) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:556:16+1 - assume $IsValid'address'($t25); - - // $t26 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:556:16+1 - havoc $t26; - - // assume WellFormed($t26) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:556:16+1 - assume $IsValid'bool'($t26); - - // $t27 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:556:16+1 - havoc $t27; - - // assume WellFormed($t27) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:556:16+1 - assume $IsValid'bool'($t27); - - // $t28 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:556:16+1 - havoc $t28; - - // assume WellFormed($t28) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:556:16+1 - assume $IsValid'bool'($t28); - - // $t29 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:556:16+1 - havoc $t29; - - // assume WellFormed($t29) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:556:16+1 - assume $IsValid'u64'($t29); - - // $t30 := havoc[val]() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:556:16+1 - havoc $t30; - - // assume WellFormed($t30) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:556:16+1 - assume $IsValid'u64'($t30); - - // trace_local[i#275]($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:556:16+1 - assume {:print "$info(): enter loop, variable(s) i#275, result, result#274 havocked and reassigned"} true; - assume {:print "$track_local(59,23,4):", $t4} $t4 == $t4; - - // trace_local[result]($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:556:16+1 - assume {:print "$track_local(59,23,5):", $t5} $t5 == $t5; - - // trace_local[result#274]($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:556:16+1 - assume {:print "$track_local(59,23,6):", $t6} $t6 == $t6; - - // assume Not(AbortFlag()) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:556:16+1 - assume !$abort_flag; - - // $t22 := vector::length
($t15) on_abort goto L13 with $t13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:556:20+9 - call $t22 := $1_vector_length'address'($t15); - if ($abort_flag) { - assume {:print "$at(18,19426,19435)"} true; - $t13 := $abort_code; - assume {:print "$track_abort(59,23):", $t13} $t13 == $t13; - goto L13; - } - - // $t23 := <($t4, $t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:556:18+1 - call $t23 := $Lt($t4, $t22); - - // if ($t23) goto L3 else goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:556:9+156 - if ($t23) { goto L3; } else { goto L2; } - - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:556:9+156 -L3: - - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:557:31+1 - assume {:print "$at(18,19469,19470)"} true; -L4: - - // $t24 := vector::borrow
($t15, $t4) on_abort goto L13 with $t13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:557:24+12 - assume {:print "$at(18,19462,19474)"} true; - call $t24 := $1_vector_borrow'address'($t15, $t4); - if ($abort_flag) { - assume {:print "$at(18,19462,19474)"} true; - $t13 := $abort_code; - assume {:print "$track_abort(59,23):", $t13} $t13 == $t13; - goto L13; - } - - // trace_local[shareholder#276]($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:557:24+12 - assume {:print "$track_local(59,23,7):", $t24} $t24 == $t24; - - // $t25 := vesting::get_beneficiary($t18, $t24) on_abort goto L13 with $t13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:406:47+47 - assume {:print "$at(2,19827,19874)"} true; - call $t25 := $1_vesting_get_beneficiary($t18, $t24); - if ($abort_flag) { - assume {:print "$at(2,19827,19874)"} true; - $t13 := $abort_code; - assume {:print "$track_abort(59,23):", $t13} $t13 == $t13; - goto L13; - } - - // $t26 := ==($t1, $t25) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:406:44+2 - $t26 := $IsEqual'address'($t1, $t25); - - // if ($t26) goto L6 else goto L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:406:13+201 - if ($t26) { goto L6; } else { goto L5; } - - // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:407:27+11 - assume {:print "$at(2,19904,19915)"} true; -L6: - - // $t5 := $t24 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:407:17+6 - assume {:print "$at(2,19894,19900)"} true; - $t5 := $t24; - - // trace_local[result]($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:407:17+6 - assume {:print "$track_local(59,23,5):", $t24} $t24 == $t24; - - // $t27 := true at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:408:17+4 - assume {:print "$at(2,19933,19937)"} true; - $t27 := true; - assume $IsValid'bool'($t27); - - // $t3 := $t27 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:406:13+201 - assume {:print "$at(2,19793,19994)"} true; - $t3 := $t27; - - // goto L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:406:13+201 - goto L7; - - // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:406:13+201 -L5: - - // $t28 := false at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:410:17+5 - assume {:print "$at(2,19975,19980)"} true; - $t28 := false; - assume $IsValid'bool'($t28); - - // $t3 := $t28 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:406:13+201 - assume {:print "$at(2,19793,19994)"} true; - $t3 := $t28; - - // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:406:13+201 -L7: - - // $t6 := $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:557:13+6 - assume {:print "$at(18,19451,19457)"} true; - $t6 := $t3; - - // trace_local[result#274]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:557:13+6 - assume {:print "$track_local(59,23,6):", $t3} $t3 == $t3; - - // if ($t3) goto L9 else goto L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:558:13+49 - assume {:print "$at(18,19489,19538)"} true; - if ($t3) { goto L9; } else { goto L8; } - - // label L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:559:17+5 - assume {:print "$at(18,19519,19524)"} true; -L9: - - // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:559:17+5 - assume {:print "$at(18,19519,19524)"} true; - goto L2; - - // label L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:561:17+1 - assume {:print "$at(18,19556,19557)"} true; -L8: - - // $t29 := 1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:561:21+1 - assume {:print "$at(18,19560,19561)"} true; - $t29 := 1; - assume $IsValid'u64'($t29); - - // $t30 := +($t4, $t29) on_abort goto L13 with $t13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:561:19+1 - call $t30 := $AddU64($t4, $t29); - if ($abort_flag) { - assume {:print "$at(18,19558,19559)"} true; - $t13 := $abort_code; - assume {:print "$track_abort(59,23):", $t13} $t13 == $t13; - goto L13; - } - - // trace_local[i#275]($t30) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:561:13+1 - assume {:print "$track_local(59,23,4):", $t30} $t30 == $t30; - - // goto L11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:561:13+9 - goto L11; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:563:9+6 - assume {:print "$at(18,19581,19587)"} true; -L2: - - // destroy($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:563:9+6 - assume {:print "$at(18,19581,19587)"} true; - - // trace_return[0]($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:414:9+6 - assume {:print "$at(2,20016,20022)"} true; - assume {:print "$track_return(59,23,0):", $t5} $t5 == $t5; - - // $t17 := move($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:414:9+6 - $t17 := $t5; - - // goto L12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:414:9+6 - goto L12; - - // label L11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:563:9+6 - // Loop invariant checking block for the loop started with header: L10 - assume {:print "$at(18,19581,19587)"} true; -L11: - - // stop() at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/../move-stdlib/sources/vector.move:563:9+6 - assume {:print "$at(18,19581,19587)"} true; - assume false; - return; - - // label L12 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:415:5+1 - assume {:print "$at(2,20027,20028)"} true; -L12: - - // assert Not(Not(exists[@78]($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:510:9+53 - assume {:print "$at(3,23006,23059)"} true; - assert {:msg "assert_failed(3,23006,23059): function does not abort under this condition"} - !!$ResourceExists($1_vesting_VestingContract_$memory#78, $t0); - - // assert Not(Neq(select vesting::VestingContract.state($t11), 1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:512:9+56 - assume {:print "$at(3,23142,23198)"} true; - assert {:msg "assert_failed(3,23142,23198): function does not abort under this condition"} - !!$IsEqual'u64'($state#$1_vesting_VestingContract($t11), 1); - - // return $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:512:9+56 - $ret0 := $t17; - return; - - // label L13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:415:5+1 - assume {:print "$at(2,20027,20028)"} true; -L13: - - // assert Or(Not(exists[@78]($t0)), Neq(select vesting::VestingContract.state($t11), 1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:122:5+345 - assume {:print "$at(3,5774,6119)"} true; - assert {:msg "assert_failed(3,5774,6119): abort not covered by any of the `aborts_if` clauses"} - (!$ResourceExists($1_vesting_VestingContract_$memory#78, $t0) || !$IsEqual'u64'($state#$1_vesting_VestingContract($t11), 1)); - - // abort($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:122:5+345 - $abort_code := $t13; - $abort_flag := true; - return; - -} - -// fun vesting::shareholders [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:383:5+325 -procedure {:inline 1} $1_vesting_shareholders(_$t0: int) returns ($ret0: Vec (int)) -{ - // declare local variables - var $t1: $1_vesting_VestingContract; - var $t2: $1_vesting_VestingContract; - var $t3: int; - var $t4: $1_vesting_VestingContract; - var $t5: $1_pool_u64_Pool; - var $t6: Vec (int); - var $t0: int; - var $temp_0'address': int; - var $temp_0'vec'address'': Vec (int); - $t0 := _$t0; - - // bytecode translation starts here - // assume Identical($t1, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:511:9+65 - assume {:print "$at(3,23068,23133)"} true; - assume ($t1 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); - - // trace_local[vesting_contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:383:5+1 - assume {:print "$at(2,18423,18424)"} true; - assume {:print "$track_local(59,24,0):", $t0} $t0 == $t0; - - // assume Identical($t2, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:511:9+65 - assume {:print "$at(3,23068,23133)"} true; - assume ($t2 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); - - // vesting::assert_active_vesting_contract($t0) on_abort goto L2 with $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:384:9+56 - assume {:print "$at(2,18534,18590)"} true; - call $1_vesting_assert_active_vesting_contract($t0); - if ($abort_flag) { - assume {:print "$at(2,18534,18590)"} true; - $t3 := $abort_code; - assume {:print "$track_abort(59,24):", $t3} $t3 == $t3; - goto L2; - } - - // $t4 := get_global($t0) on_abort goto L2 with $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:386:32+13 - assume {:print "$at(2,18624,18637)"} true; - if (!$ResourceExists($1_vesting_VestingContract_$memory, $t0)) { - call $ExecFailureAbort(); - } else { - $t4 := $ResourceValue($1_vesting_VestingContract_$memory, $t0); - } - if ($abort_flag) { - assume {:print "$at(2,18624,18637)"} true; - $t3 := $abort_code; - assume {:print "$track_abort(59,24):", $t3} $t3 == $t3; - goto L2; - } - - // $t5 := get_field.grant_pool($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:387:32+28 - assume {:print "$at(2,18713,18741)"} true; - $t5 := $grant_pool#$1_vesting_VestingContract($t4); - - // $t6 := pool_u64::shareholders($t5) on_abort goto L2 with $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:387:9+52 - call $t6 := $1_pool_u64_shareholders($t5); - if ($abort_flag) { - assume {:print "$at(2,18690,18742)"} true; - $t3 := $abort_code; - assume {:print "$track_abort(59,24):", $t3} $t3 == $t3; - goto L2; - } - - // trace_return[0]($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:387:9+52 - assume {:print "$track_return(59,24,0):", $t6} $t6 == $t6; - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:388:5+1 - assume {:print "$at(2,18747,18748)"} true; -L1: - - // return $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:388:5+1 - assume {:print "$at(2,18747,18748)"} true; - $ret0 := $t6; - return; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:388:5+1 -L2: - - // abort($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:388:5+1 - assume {:print "$at(2,18747,18748)"} true; - $abort_code := $t3; - $abort_flag := true; - return; - -} - -// fun vesting::shareholders [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:383:5+325 -procedure {:timeLimit 900} $1_vesting_shareholders$verify(_$t0: int) returns ($ret0: Vec (int)) -{ - // declare local variables - var $t1: $1_vesting_VestingContract; - var $t2: $1_vesting_VestingContract; - var $t3: int; - var $t4: $1_vesting_VestingContract; - var $t5: $1_pool_u64_Pool; - var $t6: Vec (int); - var $t0: int; - var $temp_0'address': int; - var $temp_0'vec'address'': Vec (int); - var $1_vesting_VestingContract_$memory#48: $Memory $1_vesting_VestingContract; - $t0 := _$t0; - - // verification entrypoint assumptions - call $InitVerification(); - - // bytecode translation starts here - // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:383:5+1 - assume {:print "$at(2,18423,18424)"} true; - assume $IsValid'address'($t0); - - // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:383:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); - (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; - (var j := $i_4; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); - - // assume Identical($t1, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:511:9+65 - assume {:print "$at(3,23068,23133)"} true; - assume ($t1 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); - - // @48 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:383:5+1 - assume {:print "$at(2,18423,18424)"} true; - $1_vesting_VestingContract_$memory#48 := $1_vesting_VestingContract_$memory; - - // trace_local[vesting_contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:383:5+1 - assume {:print "$track_local(59,24,0):", $t0} $t0 == $t0; - - // assume Identical($t2, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:511:9+65 - assume {:print "$at(3,23068,23133)"} true; - assume ($t2 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); - - // vesting::assert_active_vesting_contract($t0) on_abort goto L2 with $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:384:9+56 - assume {:print "$at(2,18534,18590)"} true; - call $1_vesting_assert_active_vesting_contract($t0); - if ($abort_flag) { - assume {:print "$at(2,18534,18590)"} true; - $t3 := $abort_code; - assume {:print "$track_abort(59,24):", $t3} $t3 == $t3; - goto L2; - } - - // $t4 := get_global($t0) on_abort goto L2 with $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:386:32+13 - assume {:print "$at(2,18624,18637)"} true; - if (!$ResourceExists($1_vesting_VestingContract_$memory, $t0)) { - call $ExecFailureAbort(); - } else { - $t4 := $ResourceValue($1_vesting_VestingContract_$memory, $t0); - } - if ($abort_flag) { - assume {:print "$at(2,18624,18637)"} true; - $t3 := $abort_code; - assume {:print "$track_abort(59,24):", $t3} $t3 == $t3; - goto L2; - } - - // $t5 := get_field.grant_pool($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:387:32+28 - assume {:print "$at(2,18713,18741)"} true; - $t5 := $grant_pool#$1_vesting_VestingContract($t4); - - // $t6 := pool_u64::shareholders($t5) on_abort goto L2 with $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:387:9+52 - call $t6 := $1_pool_u64_shareholders($t5); - if ($abort_flag) { - assume {:print "$at(2,18690,18742)"} true; - $t3 := $abort_code; - assume {:print "$track_abort(59,24):", $t3} $t3 == $t3; - goto L2; - } - - // trace_return[0]($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:387:9+52 - assume {:print "$track_return(59,24,0):", $t6} $t6 == $t6; - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:388:5+1 - assume {:print "$at(2,18747,18748)"} true; -L1: - - // assert Not(Not(exists[@48]($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:510:9+53 - assume {:print "$at(3,23006,23059)"} true; - assert {:msg "assert_failed(3,23006,23059): function does not abort under this condition"} - !!$ResourceExists($1_vesting_VestingContract_$memory#48, $t0); - - // assert Not(Neq(select vesting::VestingContract.state($t1), 1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:512:9+56 - assume {:print "$at(3,23142,23198)"} true; - assert {:msg "assert_failed(3,23142,23198): function does not abort under this condition"} - !!$IsEqual'u64'($state#$1_vesting_VestingContract($t1), 1); - - // return $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:512:9+56 - $ret0 := $t6; - return; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:388:5+1 - assume {:print "$at(2,18747,18748)"} true; -L2: - - // assert Or(Not(exists[@48]($t0)), Neq(select vesting::VestingContract.state($t1), 1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:116:5+185 - assume {:print "$at(3,5470,5655)"} true; - assert {:msg "assert_failed(3,5470,5655): abort not covered by any of the `aborts_if` clauses"} - (!$ResourceExists($1_vesting_VestingContract_$memory#48, $t0) || !$IsEqual'u64'($state#$1_vesting_VestingContract($t1), 1)); - - // abort($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:116:5+185 - $abort_code := $t3; - $abort_flag := true; - return; - -} - -// fun vesting::reset_lockup [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+862 -procedure {:timeLimit 900} $1_vesting_reset_lockup$verify(_$t0: $signer, _$t1: int) returns () -{ - // declare local variables - var $t2: $signer; - var $t3: $Mutation ($1_vesting_VestingContract); - var $t4: $1_vesting_VestingContract; - var $t5: int; - var $t6: int; - var $t7: $1_staking_contract_Store; - var $t8: $1_staking_contract_StakingContract; - var $t9: int; - var $t10: Table int ($1_staking_contract_StakingContract); - var $t11: $1_staking_contract_Store; - var $t12: $1_staking_contract_StakingContract; - var $t13: int; - var $t14: $1_staking_config_StakingConfig; - var $t15: $1_stake_StakePool; - var $t16: int; - var $t17: int; - var $t18: int; - var $t19: $Mutation ($1_vesting_VestingContract); - var $t20: int; - var $t21: $1_vesting_VestingContract; - var $t22: $1_vesting_VestingContract; - var $t23: $signer; - var $t24: $1_vesting_StakingInfo; - var $t25: int; - var $t26: int; - var $t27: Table int ($1_staking_contract_StakingContract); - var $t28: $1_staking_contract_Store; - var $t29: $1_staking_contract_StakingContract; - var $t30: int; - var $t31: $1_staking_config_StakingConfig; - var $t32: $1_stake_StakePool; - var $t33: int; - var $t34: int; - var $t35: int; - var $t36: $Mutation ($1_event_EventHandle'$1_vesting_ResetLockupEvent'); - var $t37: int; - var $t38: $1_vesting_StakingInfo; - var $t39: int; - var $t40: $1_vesting_StakingInfo; - var $t41: int; - var $t42: int; - var $t43: $1_vesting_ResetLockupEvent; - var $t0: $signer; - var $t1: int; - var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; - var $temp_0'address': int; - var $temp_0'signer': $signer; - var $1_vesting_VestingContract_$memory#90: $Memory $1_vesting_VestingContract; - var $1_staking_contract_Store_$memory#91: $Memory $1_staking_contract_Store; - var $1_stake_StakePool_$memory#92: $Memory $1_stake_StakePool; - var $1_staking_config_StakingConfig_$memory#93: $Memory $1_staking_config_StakingConfig; - var $1_timestamp_CurrentTimeMicroseconds_$memory#94: $Memory $1_timestamp_CurrentTimeMicroseconds; - $t0 := _$t0; - $t1 := _$t1; - - // verification entrypoint assumptions - call $InitVerification(); - - // bytecode translation starts here - // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+1 - assume {:print "$at(2,36776,36777)"} true; - assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($addr#$signer($t0)); - - // assume WellFormed($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+1 - assume $IsValid'address'($t1); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_chain_status_GenesisEndMarker_$memory, $a_0)}(var $rsc := $ResourceValue($1_chain_status_GenesisEndMarker_$memory, $a_0); - ($IsValid'$1_chain_status_GenesisEndMarker'($rsc)))); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_timestamp_CurrentTimeMicroseconds_$memory, $a_0)}(var $rsc := $ResourceValue($1_timestamp_CurrentTimeMicroseconds_$memory, $a_0); - ($IsValid'$1_timestamp_CurrentTimeMicroseconds'($rsc)))); - - // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(And(Le(select staking_config::StakingConfig.rewards_rate($rsc), 1000000), Gt(select staking_config::StakingConfig.rewards_rate_denominator($rsc), 0)), Le(select staking_config::StakingConfig.rewards_rate($rsc), select staking_config::StakingConfig.rewards_rate_denominator($rsc)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_staking_config_StakingConfig_$memory, $a_0)}(var $rsc := $ResourceValue($1_staking_config_StakingConfig_$memory, $a_0); - (($IsValid'$1_staking_config_StakingConfig'($rsc) && ((($rewards_rate#$1_staking_config_StakingConfig($rsc) <= 1000000) && ($rewards_rate_denominator#$1_staking_config_StakingConfig($rsc) > 0)) && ($rewards_rate#$1_staking_config_StakingConfig($rsc) <= $rewards_rate_denominator#$1_staking_config_StakingConfig($rsc))))))); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_stake_StakePool_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_StakePool_$memory, $a_0); - ($IsValid'$1_stake_StakePool'($rsc)))); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorConfig_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorConfig_$memory, $a_0); - ($IsValid'$1_stake_ValidatorConfig'($rsc)))); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorPerformance_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorPerformance_$memory, $a_0); - ($IsValid'$1_stake_ValidatorPerformance'($rsc)))); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorSet_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorSet_$memory, $a_0); - ($IsValid'$1_stake_ValidatorSet'($rsc)))); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_reconfiguration_Configuration_$memory, $a_0)}(var $rsc := $ResourceValue($1_reconfiguration_Configuration_$memory, $a_0); - ($IsValid'$1_reconfiguration_Configuration'($rsc)))); - - // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), forall $key: select staking_contract::Store.staking_contracts($rsc): And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), i), Index(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_staking_contract_Store_$memory, $a_0)}(var $rsc := $ResourceValue($1_staking_contract_Store_$memory, $a_0); - (($IsValid'$1_staking_contract_Store'($rsc) && (var $range_1 := $staking_contracts#$1_staking_contract_Store($rsc); (forall $key: int :: ContainsTable($range_1, $EncodeKey'address'($key)) ==> (((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), addr)))) && (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))))); (var $range_3 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))))); (forall $i_4: int, $i_5: int :: $InRange($range_2, $i_4) ==> $InRange($range_3, $i_5) ==> (var i := $i_4; - (var j := $i_5; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), i), ReadVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), j)) ==> $IsEqual'num'(i, j)))))))))))))))); - - // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); - (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; - (var j := $i_4; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); - - // assume Implies(chain_status::$is_operating(), exists(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+862 - // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.spec.move:4:9+93 - assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory, 1)); - - // assume Implies(chain_status::$is_operating(), exists(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+862 - // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/configs/staking_config.spec.move:4:9+83 - assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_staking_config_StakingConfig_$memory, 1)); - - // assume Implies(exists(0x1), stake::validator_set_is_valid()) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+862 - // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:8:9+92 - assume ($ResourceExists($1_stake_ValidatorSet_$memory, 1) ==> $1_stake_validator_set_is_valid($1_stake_StakePool_$memory, $1_stake_ValidatorConfig_$memory, $1_stake_ValidatorPerformance_$memory, $1_stake_ValidatorSet_$memory)); - - // assume Implies(chain_status::$is_operating(), Ge(timestamp::spec_now_microseconds(), reconfiguration::$last_reconfiguration_time())) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+862 - // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/reconfiguration.spec.move:8:9+137 - assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> ($1_timestamp_spec_now_microseconds($1_timestamp_CurrentTimeMicroseconds_$memory) >= $1_reconfiguration_$last_reconfiguration_time($1_reconfiguration_Configuration_$memory))); - - // assume Identical($t4, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:290:9+65 - assume {:print "$at(3,12723,12788)"} true; - assume ($t4 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); - - // assume Identical($t5, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t4))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:293:9+49 - assume {:print "$at(3,12869,12918)"} true; - assume ($t5 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t4))); - - // assume Identical($t6, select account::SignerCapability.account(select vesting::VestingContract.signer_cap($t4))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:294:9+49 - assume {:print "$at(3,12927,12976)"} true; - assume ($t6 == $account#$1_account_SignerCapability($signer_cap#$1_vesting_VestingContract($t4))); - - // assume Identical($t7, global($t6)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:299:9+52 - assume {:print "$at(3,13148,13200)"} true; - assume ($t7 == $ResourceValue($1_staking_contract_Store_$memory, $t6)); - - // assume Identical($t8, simple_map::spec_get(select staking_contract::Store.staking_contracts($t7), $t5)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:300:9+79 - assume {:print "$at(3,13209,13288)"} true; - assume ($t8 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($t7), $t5)); - - // assume Identical($t9, select stake::OwnerCapability.pool_address(select staking_contract::StakingContract.owner_cap($t8))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:301:9+59 - assume {:print "$at(3,13297,13356)"} true; - assume ($t9 == $pool_address#$1_stake_OwnerCapability($owner_cap#$1_staking_contract_StakingContract($t8))); - - // assume Identical($t10, select staking_contract::Store.staking_contracts(global($t6))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:302:9+64 - assume {:print "$at(141,12978,13042)"} true; - assume ($t10 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t6))); - - // assume Identical($t11, global($t6)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:352:9+34 - assume {:print "$at(141,15082,15116)"} true; - assume ($t11 == $ResourceValue($1_staking_contract_Store_$memory, $t6)); - - // assume Identical($t12, simple_map::spec_get(select staking_contract::Store.staking_contracts($t11), $t5)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:353:9+79 - assume {:print "$at(141,15125,15204)"} true; - assume ($t12 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($t11), $t5)); - - // assume Identical($t13, select stake::OwnerCapability.pool_address(select staking_contract::StakingContract.owner_cap($t12))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:354:9+59 - assume {:print "$at(141,15213,15272)"} true; - assume ($t13 == $pool_address#$1_stake_OwnerCapability($owner_cap#$1_staking_contract_StakingContract($t12))); - - // assume Identical($t14, global(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:359:9+69 - assume {:print "$at(141,15418,15487)"} true; - assume ($t14 == $ResourceValue($1_staking_config_StakingConfig_$memory, 1)); - - // assume Identical($t15, global($t13)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:360:9+56 - assume {:print "$at(141,15496,15552)"} true; - assume ($t15 == $ResourceValue($1_stake_StakePool_$memory, $t13)); - - // assume Identical($t16, select stake::StakePool.locked_until_secs($t15)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:361:9+57 - assume {:print "$at(141,15561,15618)"} true; - assume ($t16 == $locked_until_secs#$1_stake_StakePool($t15)); - - // assume Identical($t17, Div(select timestamp::CurrentTimeMicroseconds.microseconds(global(0x1)), 1000000)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:362:9+126 - assume {:print "$at(141,15627,15753)"} true; - assume ($t17 == ($microseconds#$1_timestamp_CurrentTimeMicroseconds($ResourceValue($1_timestamp_CurrentTimeMicroseconds_$memory, 1)) div 1000000)); - - // assume Identical($t18, Add($t17, select staking_config::StakingConfig.recurring_lockup_duration_secs($t14))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:363:9+77 - assume {:print "$at(141,15762,15839)"} true; - assume ($t18 == ($t17 + $recurring_lockup_duration_secs#$1_staking_config_StakingConfig($t14))); - - // @94 := save_mem(timestamp::CurrentTimeMicroseconds) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+1 - assume {:print "$at(2,36776,36777)"} true; - $1_timestamp_CurrentTimeMicroseconds_$memory#94 := $1_timestamp_CurrentTimeMicroseconds_$memory; - - // @93 := save_mem(staking_config::StakingConfig) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+1 - $1_staking_config_StakingConfig_$memory#93 := $1_staking_config_StakingConfig_$memory; - - // @92 := save_mem(stake::StakePool) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+1 - $1_stake_StakePool_$memory#92 := $1_stake_StakePool_$memory; - - // @91 := save_mem(staking_contract::Store) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+1 - $1_staking_contract_Store_$memory#91 := $1_staking_contract_Store_$memory; - - // @90 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+1 - $1_vesting_VestingContract_$memory#90 := $1_vesting_VestingContract_$memory; - - // trace_local[admin]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+1 - assume {:print "$track_local(59,19,0):", $t0} $t0 == $t0; - - // trace_local[contract_address]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:787:5+1 - assume {:print "$track_local(59,19,1):", $t1} $t1 == $t1; - - // $t19 := borrow_global($t1) on_abort goto L2 with $t20 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:791:32+17 - assume {:print "$at(2,36930,36947)"} true; - if (!$ResourceExists($1_vesting_VestingContract_$memory, $t1)) { - call $ExecFailureAbort(); - } else { - $t19 := $Mutation($Global($t1), EmptyVec(), $ResourceValue($1_vesting_VestingContract_$memory, $t1)); - } - if ($abort_flag) { - assume {:print "$at(2,36930,36947)"} true; - $t20 := $abort_code; - assume {:print "$track_abort(59,19):", $t20} $t20 == $t20; - goto L2; - } - - // trace_local[vesting_contract]($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:791:13+16 - $temp_0'$1_vesting_VestingContract' := $Dereference($t19); - assume {:print "$track_local(59,19,3):", $temp_0'$1_vesting_VestingContract'} $temp_0'$1_vesting_VestingContract' == $temp_0'$1_vesting_VestingContract'; - - // $t21 := read_ref($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:792:21+25 - assume {:print "$at(2,37004,37029)"} true; - $t21 := $Dereference($t19); - - // vesting::verify_admin($t0, $t21) on_abort goto L2 with $t20 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:792:9+37 - call $1_vesting_verify_admin($t0, $t21); - if ($abort_flag) { - assume {:print "$at(2,36992,37029)"} true; - $t20 := $abort_code; - assume {:print "$track_abort(59,19):", $t20} $t20 == $t20; - goto L2; - } - - // $t22 := read_ref($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:793:68+16 - assume {:print "$at(2,37098,37114)"} true; - $t22 := $Dereference($t19); - - // $t23 := vesting::get_vesting_account_signer_internal($t22) on_abort goto L2 with $t20 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:793:32+53 - call $t23 := $1_vesting_get_vesting_account_signer_internal($t22); - if ($abort_flag) { - assume {:print "$at(2,37062,37115)"} true; - $t20 := $abort_code; - assume {:print "$track_abort(59,19):", $t20} $t20 == $t20; - goto L2; - } - - // $t24 := get_field.staking($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:794:57+24 - assume {:print "$at(2,37173,37197)"} true; - $t24 := $staking#$1_vesting_VestingContract($Dereference($t19)); - - // $t25 := get_field.operator($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:794:57+33 - $t25 := $operator#$1_vesting_StakingInfo($t24); - - // assume Identical($t26, signer::$address_of($t23)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:124:9+48 - assume {:print "$at(141,5165,5213)"} true; - assume ($t26 == $1_signer_$address_of($t23)); - - // assume Identical($t27, select staking_contract::Store.staking_contracts(global($t26))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:302:9+64 - assume {:print "$at(141,12978,13042)"} true; - assume ($t27 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t26))); - - // assume Identical($t28, global($t26)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:352:9+34 - assume {:print "$at(141,15082,15116)"} true; - assume ($t28 == $ResourceValue($1_staking_contract_Store_$memory, $t26)); - - // assume Identical($t29, simple_map::spec_get(select staking_contract::Store.staking_contracts($t28), $t25)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:353:9+79 - assume {:print "$at(141,15125,15204)"} true; - assume ($t29 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($t28), $t25)); - - // assume Identical($t30, select stake::OwnerCapability.pool_address(select staking_contract::StakingContract.owner_cap($t29))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:354:9+59 - assume {:print "$at(141,15213,15272)"} true; - assume ($t30 == $pool_address#$1_stake_OwnerCapability($owner_cap#$1_staking_contract_StakingContract($t29))); - - // assume Identical($t31, global(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:359:9+69 - assume {:print "$at(141,15418,15487)"} true; - assume ($t31 == $ResourceValue($1_staking_config_StakingConfig_$memory, 1)); - - // assume Identical($t32, global($t30)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:360:9+56 - assume {:print "$at(141,15496,15552)"} true; - assume ($t32 == $ResourceValue($1_stake_StakePool_$memory, $t30)); - - // assume Identical($t33, select stake::StakePool.locked_until_secs($t32)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:361:9+57 - assume {:print "$at(141,15561,15618)"} true; - assume ($t33 == $locked_until_secs#$1_stake_StakePool($t32)); - - // assume Identical($t34, Div(select timestamp::CurrentTimeMicroseconds.microseconds(global(0x1)), 1000000)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:362:9+126 - assume {:print "$at(141,15627,15753)"} true; - assume ($t34 == ($microseconds#$1_timestamp_CurrentTimeMicroseconds($ResourceValue($1_timestamp_CurrentTimeMicroseconds_$memory, 1)) div 1000000)); - - // assume Identical($t35, Add($t34, select staking_config::StakingConfig.recurring_lockup_duration_secs($t31))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:363:9+77 - assume {:print "$at(141,15762,15839)"} true; - assume ($t35 == ($t34 + $recurring_lockup_duration_secs#$1_staking_config_StakingConfig($t31))); - - // staking_contract::reset_lockup($t23, $t25) on_abort goto L2 with $t20 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:794:9+82 - assume {:print "$at(2,37125,37207)"} true; - call $1_staking_contract_reset_lockup($t23, $t25); - if ($abort_flag) { - assume {:print "$at(2,37125,37207)"} true; - $t20 := $abort_code; - assume {:print "$track_abort(59,19):", $t20} $t20 == $t20; - goto L2; - } - - // $t36 := borrow_field.reset_lockup_events($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:797:13+41 - assume {:print "$at(2,37242,37283)"} true; - $t36 := $ChildMutation($t19, 11, $reset_lockup_events#$1_vesting_VestingContract($Dereference($t19))); - - // $t37 := get_field.admin($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:799:24+22 - assume {:print "$at(2,37339,37361)"} true; - $t37 := $admin#$1_vesting_VestingContract($Dereference($t19)); - - // $t38 := get_field.staking($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:801:39+24 - assume {:print "$at(2,37461,37485)"} true; - $t38 := $staking#$1_vesting_VestingContract($Dereference($t19)); - - // $t39 := get_field.pool_address($t38) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:801:39+37 - $t39 := $pool_address#$1_vesting_StakingInfo($t38); - - // $t40 := get_field.staking($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:802:68+24 - assume {:print "$at(2,37567,37591)"} true; - $t40 := $staking#$1_vesting_VestingContract($Dereference($t19)); - - // $t41 := get_field.pool_address($t40) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:802:68+37 - $t41 := $pool_address#$1_vesting_StakingInfo($t40); - - // $t42 := stake::get_lockup_secs($t41) on_abort goto L2 with $t20 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:802:45+61 - call $t42 := $1_stake_get_lockup_secs($t41); - if ($abort_flag) { - assume {:print "$at(2,37544,37605)"} true; - $t20 := $abort_code; - assume {:print "$track_abort(59,19):", $t20} $t20 == $t20; - goto L2; - } - - // $t43 := pack vesting::ResetLockupEvent($t37, $t1, $t39, $t42) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:798:13+323 - assume {:print "$at(2,37297,37620)"} true; - $t43 := $1_vesting_ResetLockupEvent($t37, $t1, $t39, $t42); - - // opaque begin: event::emit_event($t36, $t43) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:796:9+413 - assume {:print "$at(2,37218,37631)"} true; - - // opaque end: event::emit_event($t36, $t43) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:796:9+413 - - // write_back[Reference($t19).reset_lockup_events (event::EventHandle)]($t36) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:796:9+413 - $t19 := $UpdateMutation($t19, $Update'$1_vesting_VestingContract'_reset_lockup_events($Dereference($t19), $Dereference($t36))); - - // assert forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t19)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t19)), addr)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 - // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 - assume {:print "$at(66,538,673)"} true; - assert {:msg "assert_failed(66,538,673): data invariant does not hold"} - (forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t19))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t19))), addr)))); - - // assert forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t19)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t19)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t19)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t19)), j)), Eq(i, j)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 - // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 - assume {:print "$at(66,738,867)"} true; - assert {:msg "assert_failed(66,738,867): data invariant does not hold"} - (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t19))))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t19))))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; - (var j := $i_3; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t19))), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t19))), j)) ==> $IsEqual'num'(i, j)))))))); - - // write_back[vesting::VestingContract@]($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:796:9+413 - assume {:print "$at(2,37218,37631)"} true; - $1_vesting_VestingContract_$memory := $ResourceUpdate($1_vesting_VestingContract_$memory, $GlobalLocationAddress($t19), - $Dereference($t19)); - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:805:5+1 - assume {:print "$at(2,37637,37638)"} true; -L1: - - // assert Not(Not(exists[@90]($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:289:9+53 - assume {:print "$at(3,12661,12714)"} true; - assert {:msg "assert_failed(3,12661,12714): function does not abort under this condition"} - !!$ResourceExists($1_vesting_VestingContract_$memory#90, $t1); - - // assert Not(Neq
(signer::$address_of[]($t0), select vesting::VestingContract.admin($t4))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:291:9+62 - assume {:print "$at(3,12797,12859)"} true; - assert {:msg "assert_failed(3,12797,12859): function does not abort under this condition"} - !!$IsEqual'address'($1_signer_$address_of($t0), $admin#$1_vesting_VestingContract($t4)); - - // assert Not(Not(exists[@91]($t6))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:301:9+33 - assume {:print "$at(141,12936,12969)"} true; - assert {:msg "assert_failed(141,12936,12969): function does not abort under this condition"} - !!$ResourceExists($1_staking_contract_Store_$memory#91, $t6); - - // assert Not(Not(simple_map::spec_contains_key[]($t10, $t5))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:303:9+70 - assume {:print "$at(141,13051,13121)"} true; - assert {:msg "assert_failed(141,13051,13121): function does not abort under this condition"} - !!$1_simple_map_spec_contains_key'address_$1_staking_contract_StakingContract'($t10, $t5); - - // assert Not(Not(stake::$stake_pool_exists[@92]($t13))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:356:9+50 - assume {:print "$at(141,15282,15332)"} true; - assert {:msg "assert_failed(141,15282,15332): function does not abort under this condition"} - !!$1_stake_$stake_pool_exists($1_stake_StakePool_$memory#92, $t13); - - // assert Not(Not(exists[@93](0x1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:357:9+67 - assume {:print "$at(141,15341,15408)"} true; - assert {:msg "assert_failed(141,15341,15408): function does not abort under this condition"} - !!$ResourceExists($1_staking_config_StakingConfig_$memory#93, 1); - - // assert Not(Gt(Add($t17, select staking_config::StakingConfig.recurring_lockup_duration_secs($t14)), 18446744073709551615)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:364:9+68 - assume {:print "$at(141,15848,15916)"} true; - assert {:msg "assert_failed(141,15848,15916): function does not abort under this condition"} - !(($t17 + $recurring_lockup_duration_secs#$1_staking_config_StakingConfig($t14)) > 18446744073709551615); - - // assert Not(Or(Gt($t16, $t18), Eq($t16, $t18))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:365:9+106 - assume {:print "$at(141,15925,16031)"} true; - assert {:msg "assert_failed(141,15925,16031): function does not abort under this condition"} - !(($t16 > $t18) || $IsEqual'u64'($t16, $t18)); - - // assert Not(Not(exists[@94](0x1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:366:9+72 - assume {:print "$at(141,16040,16112)"} true; - assert {:msg "assert_failed(141,16040,16112): function does not abort under this condition"} - !!$ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory#94, 1); - - // assert Not(Not(exists[@92](select vesting::StakingInfo.pool_address(select vesting::VestingContract.staking($t4))))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:302:9+75 - assume {:print "$at(3,13365,13440)"} true; - assert {:msg "assert_failed(3,13365,13440): function does not abort under this condition"} - !!$ResourceExists($1_stake_StakePool_$memory#92, $pool_address#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t4))); - - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:302:9+75 - return; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:805:5+1 - assume {:print "$at(2,37637,37638)"} true; -L2: - - // assert Or(Or(Or(Or(Or(Or(Or(Or(Or(Not(exists[@90]($t1)), Neq
(signer::$address_of[]($t0), select vesting::VestingContract.admin($t4))), Not(exists[@91]($t6))), Not(simple_map::spec_contains_key[]($t10, $t5))), Not(stake::$stake_pool_exists[@92]($t13))), Not(exists[@93](0x1))), Gt(Add($t17, select staking_config::StakingConfig.recurring_lockup_duration_secs($t14)), 18446744073709551615)), Or(Gt($t16, $t18), Eq($t16, $t18))), Not(exists[@94](0x1))), Not(exists[@92](select vesting::StakingInfo.pool_address(select vesting::VestingContract.staking($t4))))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:285:5+879 - assume {:print "$at(3,12567,13446)"} true; - assert {:msg "assert_failed(3,12567,13446): abort not covered by any of the `aborts_if` clauses"} - (((((((((!$ResourceExists($1_vesting_VestingContract_$memory#90, $t1) || !$IsEqual'address'($1_signer_$address_of($t0), $admin#$1_vesting_VestingContract($t4))) || !$ResourceExists($1_staking_contract_Store_$memory#91, $t6)) || !$1_simple_map_spec_contains_key'address_$1_staking_contract_StakingContract'($t10, $t5)) || !$1_stake_$stake_pool_exists($1_stake_StakePool_$memory#92, $t13)) || !$ResourceExists($1_staking_config_StakingConfig_$memory#93, 1)) || (($t17 + $recurring_lockup_duration_secs#$1_staking_config_StakingConfig($t14)) > 18446744073709551615)) || (($t16 > $t18) || $IsEqual'u64'($t16, $t18))) || !$ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory#94, 1)) || !$ResourceExists($1_stake_StakePool_$memory#92, $pool_address#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t4)))); - - // abort($t20) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:285:5+879 - $abort_code := $t20; - $abort_flag := true; - return; - -} - -// fun vesting::stake_pool_address [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:251:5+258 -procedure {:timeLimit 900} $1_vesting_stake_pool_address$verify(_$t0: int) returns ($ret0: int) -{ - // declare local variables - var $t1: int; - var $t2: $1_vesting_VestingContract; - var $t3: $1_vesting_StakingInfo; - var $t4: int; - var $t0: int; - var $temp_0'address': int; - var $1_vesting_VestingContract_$memory#33: $Memory $1_vesting_VestingContract; - $t0 := _$t0; - - // verification entrypoint assumptions - call $InitVerification(); - - // bytecode translation starts here - // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:251:5+1 - assume {:print "$at(2,11140,11141)"} true; - assume $IsValid'address'($t0); - - // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:251:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); - (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; - (var j := $i_4; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); - - // @33 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:251:5+1 - $1_vesting_VestingContract_$memory#33 := $1_vesting_VestingContract_$memory; - - // trace_local[vesting_contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:251:5+1 - assume {:print "$track_local(59,25,0):", $t0} $t0 == $t0; - - // vesting::assert_vesting_contract_exists($t0) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:252:9+56 - assume {:print "$at(2,11249,11305)"} true; - call $1_vesting_assert_vesting_contract_exists($t0); - if ($abort_flag) { - assume {:print "$at(2,11249,11305)"} true; - $t1 := $abort_code; - assume {:print "$track_abort(59,25):", $t1} $t1 == $t1; - goto L2; - } - - // $t2 := get_global($t0) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:253:9+13 - assume {:print "$at(2,11315,11328)"} true; - if (!$ResourceExists($1_vesting_VestingContract_$memory, $t0)) { - call $ExecFailureAbort(); - } else { - $t2 := $ResourceValue($1_vesting_VestingContract_$memory, $t0); - } - if ($abort_flag) { - assume {:print "$at(2,11315,11328)"} true; - $t1 := $abort_code; - assume {:print "$track_abort(59,25):", $t1} $t1 == $t1; - goto L2; - } - - // $t3 := get_field.staking($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:253:9+64 - $t3 := $staking#$1_vesting_VestingContract($t2); - - // $t4 := get_field.pool_address($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:253:9+77 - $t4 := $pool_address#$1_vesting_StakingInfo($t3); - - // trace_return[0]($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:253:9+77 - assume {:print "$track_return(59,25,0):", $t4} $t4 == $t4; - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:254:5+1 - assume {:print "$at(2,11397,11398)"} true; -L1: - - // assert Not(Not(exists[@33]($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:8:9+61 - assume {:print "$at(3,205,266)"} true; - assert {:msg "assert_failed(3,205,266): function does not abort under this condition"} - !!$ResourceExists($1_vesting_VestingContract_$memory#33, $t0); - - // return $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:8:9+61 - $ret0 := $t4; - return; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:254:5+1 - assume {:print "$at(2,11397,11398)"} true; -L2: - - // assert Not(exists[@33]($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:7:5+145 - assume {:print "$at(3,127,272)"} true; - assert {:msg "assert_failed(3,127,272): abort not covered by any of the `aborts_if` clauses"} - !$ResourceExists($1_vesting_VestingContract_$memory#33, $t0); - - // abort($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:7:5+145 - $abort_code := $t1; - $abort_flag := true; - return; - -} - -// fun vesting::update_voter [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:763:5+956 -procedure {:timeLimit 900} $1_vesting_update_voter$verify(_$t0: $signer, _$t1: int, _$t2: int) returns () -{ - // declare local variables - var $t3: $signer; - var $t4: $signer; - var $t5: int; - var $t6: $Mutation ($1_vesting_VestingContract); - var $t7: $1_vesting_VestingContract; - var $t8: int; - var $t9: int; - var $t10: $1_vesting_VestingContract; - var $t11: $1_staking_contract_Store; - var $t12: $1_staking_contract_StakingContract; - var $t13: int; - var $t14: Table int ($1_staking_contract_StakingContract); - var $t15: $Mutation ($1_vesting_VestingContract); - var $t16: int; - var $t17: $1_vesting_VestingContract; - var $t18: $1_vesting_VestingContract; - var $t19: $signer; - var $t20: $1_vesting_StakingInfo; - var $t21: int; - var $t22: $1_vesting_StakingInfo; - var $t23: int; - var $t24: int; - var $t25: $1_staking_contract_Store; - var $t26: $1_staking_contract_StakingContract; - var $t27: int; - var $t28: Table int ($1_staking_contract_StakingContract); - var $t29: $Mutation ($1_vesting_StakingInfo); - var $t30: $Mutation (int); - var $t31: $Mutation ($1_event_EventHandle'$1_vesting_UpdateVoterEvent'); - var $t32: int; - var $t33: $1_vesting_StakingInfo; - var $t34: int; - var $t35: $1_vesting_UpdateVoterEvent; - var $t0: $signer; - var $t1: int; - var $t2: int; - var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; - var $temp_0'address': int; - var $temp_0'signer': $signer; - var $1_vesting_VestingContract_$memory#87: $Memory $1_vesting_VestingContract; - var $1_stake_StakePool_$memory#88: $Memory $1_stake_StakePool; - var $1_staking_contract_Store_$memory#89: $Memory $1_staking_contract_Store; - $t0 := _$t0; - $t1 := _$t1; - $t2 := _$t2; - - // verification entrypoint assumptions - call $InitVerification(); - - // bytecode translation starts here - // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:763:5+1 - assume {:print "$at(2,35814,35815)"} true; - assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($addr#$signer($t0)); - - // assume WellFormed($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:763:5+1 - assume $IsValid'address'($t1); - - // assume WellFormed($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:763:5+1 - assume $IsValid'address'($t2); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:763:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_stake_StakePool_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_StakePool_$memory, $a_0); - ($IsValid'$1_stake_StakePool'($rsc)))); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:763:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorConfig_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorConfig_$memory, $a_0); - ($IsValid'$1_stake_ValidatorConfig'($rsc)))); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:763:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorPerformance_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorPerformance_$memory, $a_0); - ($IsValid'$1_stake_ValidatorPerformance'($rsc)))); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:763:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorSet_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorSet_$memory, $a_0); - ($IsValid'$1_stake_ValidatorSet'($rsc)))); - - // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), forall $key: select staking_contract::Store.staking_contracts($rsc): And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), i), Index(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:763:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_staking_contract_Store_$memory, $a_0)}(var $rsc := $ResourceValue($1_staking_contract_Store_$memory, $a_0); - (($IsValid'$1_staking_contract_Store'($rsc) && (var $range_1 := $staking_contracts#$1_staking_contract_Store($rsc); (forall $key: int :: ContainsTable($range_1, $EncodeKey'address'($key)) ==> (((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), addr)))) && (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))))); (var $range_3 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))))); (forall $i_4: int, $i_5: int :: $InRange($range_2, $i_4) ==> $InRange($range_3, $i_5) ==> (var i := $i_4; - (var j := $i_5; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), i), ReadVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), j)) ==> $IsEqual'num'(i, j)))))))))))))))); - - // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:763:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); - (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; - (var j := $i_4; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); - - // assume Implies(exists(0x1), stake::validator_set_is_valid()) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:763:5+956 - // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:8:9+92 - assume ($ResourceExists($1_stake_ValidatorSet_$memory, 1) ==> $1_stake_validator_set_is_valid($1_stake_StakePool_$memory, $1_stake_ValidatorConfig_$memory, $1_stake_ValidatorPerformance_$memory, $1_stake_ValidatorSet_$memory)); - - // assume Identical($t7, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:278:9+65 - assume {:print "$at(3,12320,12385)"} true; - assume ($t7 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); - - // assume Identical($t8, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t7))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:279:9+49 - assume {:print "$at(3,12394,12443)"} true; - assume ($t8 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t7))); - - // assume Identical($t9, select account::SignerCapability.account(select vesting::VestingContract.signer_cap($t7))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:280:9+49 - assume {:print "$at(3,12452,12501)"} true; - assume ($t9 == $account#$1_account_SignerCapability($signer_cap#$1_vesting_VestingContract($t7))); - - // assume Identical($t10, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:504:9+65 - assume {:print "$at(3,22754,22819)"} true; - assume ($t10 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); - - // assume Identical($t11, global($t9)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:310:9+34 - assume {:print "$at(141,13226,13260)"} true; - assume ($t11 == $ResourceValue($1_staking_contract_Store_$memory, $t9)); - - // assume Identical($t12, simple_map::spec_get(select staking_contract::Store.staking_contracts($t11), $t8)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:311:9+79 - assume {:print "$at(141,13269,13348)"} true; - assume ($t12 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($t11), $t8)); - - // assume Identical($t13, select staking_contract::StakingContract.pool_address($t12)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:312:9+49 - assume {:print "$at(141,13357,13406)"} true; - assume ($t13 == $pool_address#$1_staking_contract_StakingContract($t12)); - - // assume Identical($t14, select staking_contract::Store.staking_contracts(global($t9))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:302:9+64 - assume {:print "$at(141,12978,13042)"} true; - assume ($t14 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t9))); - - // @88 := save_mem(stake::StakePool) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:763:5+1 - assume {:print "$at(2,35814,35815)"} true; - $1_stake_StakePool_$memory#88 := $1_stake_StakePool_$memory; - - // @89 := save_mem(staking_contract::Store) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:763:5+1 - $1_staking_contract_Store_$memory#89 := $1_staking_contract_Store_$memory; - - // @87 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:763:5+1 - $1_vesting_VestingContract_$memory#87 := $1_vesting_VestingContract_$memory; - - // trace_local[admin]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:763:5+1 - assume {:print "$track_local(59,33,0):", $t0} $t0 == $t0; - - // trace_local[contract_address]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:763:5+1 - assume {:print "$track_local(59,33,1):", $t1} $t1 == $t1; - - // trace_local[new_voter]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:763:5+1 - assume {:print "$track_local(59,33,2):", $t2} $t2 == $t2; - - // $t15 := borrow_global($t1) on_abort goto L2 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:768:32+17 - assume {:print "$at(2,35996,36013)"} true; - if (!$ResourceExists($1_vesting_VestingContract_$memory, $t1)) { - call $ExecFailureAbort(); - } else { - $t15 := $Mutation($Global($t1), EmptyVec(), $ResourceValue($1_vesting_VestingContract_$memory, $t1)); - } - if ($abort_flag) { - assume {:print "$at(2,35996,36013)"} true; - $t16 := $abort_code; - assume {:print "$track_abort(59,33):", $t16} $t16 == $t16; - goto L2; - } - - // trace_local[vesting_contract]($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:768:13+16 - $temp_0'$1_vesting_VestingContract' := $Dereference($t15); - assume {:print "$track_local(59,33,6):", $temp_0'$1_vesting_VestingContract'} $temp_0'$1_vesting_VestingContract' == $temp_0'$1_vesting_VestingContract'; - - // $t17 := read_ref($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:769:21+25 - assume {:print "$at(2,36070,36095)"} true; - $t17 := $Dereference($t15); - - // vesting::verify_admin($t0, $t17) on_abort goto L2 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:769:9+37 - call $1_vesting_verify_admin($t0, $t17); - if ($abort_flag) { - assume {:print "$at(2,36058,36095)"} true; - $t16 := $abort_code; - assume {:print "$track_abort(59,33):", $t16} $t16 == $t16; - goto L2; - } - - // $t18 := read_ref($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:770:68+16 - assume {:print "$at(2,36164,36180)"} true; - $t18 := $Dereference($t15); - - // $t19 := vesting::get_vesting_account_signer_internal($t18) on_abort goto L2 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:770:32+53 - call $t19 := $1_vesting_get_vesting_account_signer_internal($t18); - if ($abort_flag) { - assume {:print "$at(2,36128,36181)"} true; - $t16 := $abort_code; - assume {:print "$track_abort(59,33):", $t16} $t16 == $t16; - goto L2; - } - - // trace_local[contract_signer]($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:770:13+15 - assume {:print "$track_local(59,33,4):", $t19} $t19 == $t19; - - // $t20 := get_field.staking($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:771:25+24 - assume {:print "$at(2,36207,36231)"} true; - $t20 := $staking#$1_vesting_VestingContract($Dereference($t15)); - - // $t21 := get_field.voter($t20) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:771:25+30 - $t21 := $voter#$1_vesting_StakingInfo($t20); - - // trace_local[old_voter]($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:771:13+9 - assume {:print "$track_local(59,33,5):", $t21} $t21 == $t21; - - // $t22 := get_field.staking($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:772:57+24 - assume {:print "$at(2,36295,36319)"} true; - $t22 := $staking#$1_vesting_VestingContract($Dereference($t15)); - - // $t23 := get_field.operator($t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:772:57+33 - $t23 := $operator#$1_vesting_StakingInfo($t22); - - // assume Identical($t24, signer::$address_of($t19)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:117:9+48 - assume {:print "$at(141,4862,4910)"} true; - assume ($t24 == $1_signer_$address_of($t19)); - - // assume Identical($t25, global($t24)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:310:9+34 - assume {:print "$at(141,13226,13260)"} true; - assume ($t25 == $ResourceValue($1_staking_contract_Store_$memory, $t24)); - - // assume Identical($t26, simple_map::spec_get(select staking_contract::Store.staking_contracts($t25), $t23)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:311:9+79 - assume {:print "$at(141,13269,13348)"} true; - assume ($t26 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($t25), $t23)); - - // assume Identical($t27, select staking_contract::StakingContract.pool_address($t26)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:312:9+49 - assume {:print "$at(141,13357,13406)"} true; - assume ($t27 == $pool_address#$1_staking_contract_StakingContract($t26)); - - // assume Identical($t28, select staking_contract::Store.staking_contracts(global($t24))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:302:9+64 - assume {:print "$at(141,12978,13042)"} true; - assume ($t28 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t24))); - - // staking_contract::update_voter($t19, $t23, $t2) on_abort goto L2 with $t16 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:772:9+93 - assume {:print "$at(2,36247,36340)"} true; - call $1_staking_contract_update_voter($t19, $t23, $t2); - if ($abort_flag) { - assume {:print "$at(2,36247,36340)"} true; - $t16 := $abort_code; - assume {:print "$track_abort(59,33):", $t16} $t16 == $t16; - goto L2; - } - - // $t29 := borrow_field.staking($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:773:9+24 - assume {:print "$at(2,36350,36374)"} true; - $t29 := $ChildMutation($t15, 6, $staking#$1_vesting_VestingContract($Dereference($t15))); - - // $t30 := borrow_field.voter($t29) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:773:9+30 - $t30 := $ChildMutation($t29, 2, $voter#$1_vesting_StakingInfo($Dereference($t29))); - - // write_ref($t30, $t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:773:9+42 - $t30 := $UpdateMutation($t30, $t2); - - // write_back[Reference($t29).voter (address)]($t30) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:773:9+42 - $t29 := $UpdateMutation($t29, $Update'$1_vesting_StakingInfo'_voter($Dereference($t29), $Dereference($t30))); - - // write_back[Reference($t15).staking (vesting::StakingInfo)]($t29) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:773:9+42 - $t15 := $UpdateMutation($t15, $Update'$1_vesting_VestingContract'_staking($Dereference($t15), $Dereference($t29))); - - // $t31 := borrow_field.update_voter_events($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:776:13+41 - assume {:print "$at(2,36427,36468)"} true; - $t31 := $ChildMutation($t15, 10, $update_voter_events#$1_vesting_VestingContract($Dereference($t15))); - - // $t32 := get_field.admin($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:778:24+22 - assume {:print "$at(2,36524,36546)"} true; - $t32 := $admin#$1_vesting_VestingContract($Dereference($t15)); - - // $t33 := get_field.staking($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:780:39+24 - assume {:print "$at(2,36646,36670)"} true; - $t33 := $staking#$1_vesting_VestingContract($Dereference($t15)); - - // $t34 := get_field.pool_address($t33) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:780:39+37 - $t34 := $pool_address#$1_vesting_StakingInfo($t33); - - // $t35 := pack vesting::UpdateVoterEvent($t32, $t1, $t34, $t21, $t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:777:13+270 - assume {:print "$at(2,36482,36752)"} true; - $t35 := $1_vesting_UpdateVoterEvent($t32, $t1, $t34, $t21, $t2); - - // opaque begin: event::emit_event($t31, $t35) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:775:9+360 - assume {:print "$at(2,36403,36763)"} true; - - // opaque end: event::emit_event($t31, $t35) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:775:9+360 - - // write_back[Reference($t15).update_voter_events (event::EventHandle)]($t31) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:775:9+360 - $t15 := $UpdateMutation($t15, $Update'$1_vesting_VestingContract'_update_voter_events($Dereference($t15), $Dereference($t31))); - - // assert forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t15)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t15)), addr)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 - // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 - assume {:print "$at(66,538,673)"} true; - assert {:msg "assert_failed(66,538,673): data invariant does not hold"} - (forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t15))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t15))), addr)))); - - // assert forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t15)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t15)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t15)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t15)), j)), Eq(i, j)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 - // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 - assume {:print "$at(66,738,867)"} true; - assert {:msg "assert_failed(66,738,867): data invariant does not hold"} - (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t15))))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t15))))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; - (var j := $i_3; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t15))), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t15))), j)) ==> $IsEqual'num'(i, j)))))))); - - // write_back[vesting::VestingContract@]($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:775:9+360 - assume {:print "$at(2,36403,36763)"} true; - $1_vesting_VestingContract_$memory := $ResourceUpdate($1_vesting_VestingContract_$memory, $GlobalLocationAddress($t15), - $Dereference($t15)); - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:785:5+1 - assume {:print "$at(2,36769,36770)"} true; -L1: - - // assert Not(Not(exists[@87]($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:503:9+53 - assume {:print "$at(3,22692,22745)"} true; - assert {:msg "assert_failed(3,22692,22745): function does not abort under this condition"} - !!$ResourceExists($1_vesting_VestingContract_$memory#87, $t1); - - // assert Not(Neq
(signer::$address_of[]($t0), select vesting::VestingContract.admin($t10))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:505:9+62 - assume {:print "$at(3,22828,22890)"} true; - assert {:msg "assert_failed(3,22828,22890): function does not abort under this condition"} - !!$IsEqual'address'($1_signer_$address_of($t0), $admin#$1_vesting_VestingContract($t10)); - - // assert Not(Not(exists[@88]($t13))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:313:9+50 - assume {:print "$at(141,13415,13465)"} true; - assert {:msg "assert_failed(141,13415,13465): function does not abort under this condition"} - !!$ResourceExists($1_stake_StakePool_$memory#88, $t13); - - // assert Not(Not(exists[@88](select stake::OwnerCapability.pool_address(select staking_contract::StakingContract.owner_cap($t12))))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:314:9+77 - assume {:print "$at(141,13474,13551)"} true; - assert {:msg "assert_failed(141,13474,13551): function does not abort under this condition"} - !!$ResourceExists($1_stake_StakePool_$memory#88, $pool_address#$1_stake_OwnerCapability($owner_cap#$1_staking_contract_StakingContract($t12))); - - // assert Not(Not(exists[@89]($t9))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:301:9+33 - assume {:print "$at(141,12936,12969)"} true; - assert {:msg "assert_failed(141,12936,12969): function does not abort under this condition"} - !!$ResourceExists($1_staking_contract_Store_$memory#89, $t9); - - // assert Not(Not(simple_map::spec_contains_key[]($t14, $t8))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:303:9+70 - assume {:print "$at(141,13051,13121)"} true; - assert {:msg "assert_failed(141,13051,13121): function does not abort under this condition"} - !!$1_simple_map_spec_contains_key'address_$1_staking_contract_StakingContract'($t14, $t8); - - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:303:9+70 - return; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:785:5+1 - assume {:print "$at(2,36769,36770)"} true; -L2: - - // assert Or(Or(Or(Or(Or(Not(exists[@87]($t1)), Neq
(signer::$address_of[]($t0), select vesting::VestingContract.admin($t10))), Not(exists[@88]($t13))), Not(exists[@88](select stake::OwnerCapability.pool_address(select staking_contract::StakingContract.owner_cap($t12))))), Not(exists[@89]($t9))), Not(simple_map::spec_contains_key[]($t14, $t8))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:271:5+401 - assume {:print "$at(3,12160,12561)"} true; - assert {:msg "assert_failed(3,12160,12561): abort not covered by any of the `aborts_if` clauses"} - (((((!$ResourceExists($1_vesting_VestingContract_$memory#87, $t1) || !$IsEqual'address'($1_signer_$address_of($t0), $admin#$1_vesting_VestingContract($t10))) || !$ResourceExists($1_stake_StakePool_$memory#88, $t13)) || !$ResourceExists($1_stake_StakePool_$memory#88, $pool_address#$1_stake_OwnerCapability($owner_cap#$1_staking_contract_StakingContract($t12)))) || !$ResourceExists($1_staking_contract_Store_$memory#89, $t9)) || !$1_simple_map_spec_contains_key'address_$1_staking_contract_StakingContract'($t14, $t8)); - - // abort($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:271:5+401 - $abort_code := $t16; - $abort_flag := true; - return; - -} - -// fun vesting::assert_active_vesting_contract [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:945:5+349 -procedure {:inline 1} $1_vesting_assert_active_vesting_contract(_$t0: int) returns () -{ - // declare local variables - var $t1: $1_vesting_VestingContract; - var $t2: int; - var $t3: $1_vesting_VestingContract; - var $t4: int; - var $t5: int; - var $t6: bool; - var $t7: int; - var $t8: int; - var $t0: int; - var $temp_0'address': int; - $t0 := _$t0; - - // bytecode translation starts here - // assume Identical($t1, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:511:9+65 - assume {:print "$at(3,23068,23133)"} true; - assume ($t1 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); - - // trace_local[contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:945:5+1 - assume {:print "$at(2,44071,44072)"} true; - assume {:print "$track_local(59,2,0):", $t0} $t0 == $t0; - - // vesting::assert_vesting_contract_exists($t0) on_abort goto L4 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:946:9+48 - assume {:print "$at(2,44168,44216)"} true; - call $1_vesting_assert_vesting_contract_exists($t0); - if ($abort_flag) { - assume {:print "$at(2,44168,44216)"} true; - $t2 := $abort_code; - assume {:print "$track_abort(59,2):", $t2} $t2 == $t2; - goto L4; - } - - // $t3 := get_global($t0) on_abort goto L4 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:947:32+13 - assume {:print "$at(2,44249,44262)"} true; - if (!$ResourceExists($1_vesting_VestingContract_$memory, $t0)) { - call $ExecFailureAbort(); - } else { - $t3 := $ResourceValue($1_vesting_VestingContract_$memory, $t0); - } - if ($abort_flag) { - assume {:print "$at(2,44249,44262)"} true; - $t2 := $abort_code; - assume {:print "$track_abort(59,2):", $t2} $t2 == $t2; - goto L4; - } - - // $t4 := get_field.state($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:17+22 - assume {:print "$at(2,44315,44337)"} true; - $t4 := $state#$1_vesting_VestingContract($t3); - - // $t5 := 1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:43+19 - $t5 := 1; - assume $IsValid'u64'($t5); - - // $t6 := ==($t4, $t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:40+2 - $t6 := $IsEqual'u64'($t4, $t5); - - // if ($t6) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:9+106 - if ($t6) { goto L1; } else { goto L0; } - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:9+106 -L1: - - // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:9+106 - assume {:print "$at(2,44307,44413)"} true; - goto L2; - - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:85+28 -L0: - - // $t7 := 8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:85+28 - assume {:print "$at(2,44383,44411)"} true; - $t7 := 8; - assume $IsValid'u64'($t7); - - // $t8 := error::invalid_state($t7) on_abort goto L4 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:64+50 - call $t8 := $1_error_invalid_state($t7); - if ($abort_flag) { - assume {:print "$at(2,44362,44412)"} true; - $t2 := $abort_code; - assume {:print "$track_abort(59,2):", $t2} $t2 == $t2; - goto L4; - } - - // trace_abort($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:9+106 - assume {:print "$at(2,44307,44413)"} true; - assume {:print "$track_abort(59,2):", $t8} $t8 == $t8; - - // $t2 := move($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:9+106 - $t2 := $t8; - - // goto L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:9+106 - goto L4; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:115+1 -L2: - - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:949:5+1 - assume {:print "$at(2,44419,44420)"} true; -L3: - - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:949:5+1 - assume {:print "$at(2,44419,44420)"} true; - return; - - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:949:5+1 -L4: - - // abort($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:949:5+1 - assume {:print "$at(2,44419,44420)"} true; - $abort_code := $t2; - $abort_flag := true; - return; - -} - -// fun vesting::assert_active_vesting_contract [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:945:5+349 -procedure {:timeLimit 900} $1_vesting_assert_active_vesting_contract$verify(_$t0: int) returns () -{ - // declare local variables - var $t1: $1_vesting_VestingContract; - var $t2: int; - var $t3: $1_vesting_VestingContract; - var $t4: int; - var $t5: int; - var $t6: bool; - var $t7: int; - var $t8: int; - var $t0: int; - var $temp_0'address': int; - var $1_vesting_VestingContract_$memory#36: $Memory $1_vesting_VestingContract; - $t0 := _$t0; - - // verification entrypoint assumptions - call $InitVerification(); - - // bytecode translation starts here - // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:945:5+1 - assume {:print "$at(2,44071,44072)"} true; - assume $IsValid'address'($t0); - - // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:945:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); - (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; - (var j := $i_4; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); - - // assume Identical($t1, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:511:9+65 - assume {:print "$at(3,23068,23133)"} true; - assume ($t1 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); - - // @36 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:945:5+1 - assume {:print "$at(2,44071,44072)"} true; - $1_vesting_VestingContract_$memory#36 := $1_vesting_VestingContract_$memory; - - // trace_local[contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:945:5+1 - assume {:print "$track_local(59,2,0):", $t0} $t0 == $t0; - - // vesting::assert_vesting_contract_exists($t0) on_abort goto L4 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:946:9+48 - assume {:print "$at(2,44168,44216)"} true; - call $1_vesting_assert_vesting_contract_exists($t0); - if ($abort_flag) { - assume {:print "$at(2,44168,44216)"} true; - $t2 := $abort_code; - assume {:print "$track_abort(59,2):", $t2} $t2 == $t2; - goto L4; - } - - // $t3 := get_global($t0) on_abort goto L4 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:947:32+13 - assume {:print "$at(2,44249,44262)"} true; - if (!$ResourceExists($1_vesting_VestingContract_$memory, $t0)) { - call $ExecFailureAbort(); - } else { - $t3 := $ResourceValue($1_vesting_VestingContract_$memory, $t0); - } - if ($abort_flag) { - assume {:print "$at(2,44249,44262)"} true; - $t2 := $abort_code; - assume {:print "$track_abort(59,2):", $t2} $t2 == $t2; - goto L4; - } - - // $t4 := get_field.state($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:17+22 - assume {:print "$at(2,44315,44337)"} true; - $t4 := $state#$1_vesting_VestingContract($t3); - - // $t5 := 1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:43+19 - $t5 := 1; - assume $IsValid'u64'($t5); - - // $t6 := ==($t4, $t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:40+2 - $t6 := $IsEqual'u64'($t4, $t5); - - // if ($t6) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:9+106 - if ($t6) { goto L1; } else { goto L0; } - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:9+106 -L1: - - // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:9+106 - assume {:print "$at(2,44307,44413)"} true; - goto L2; - - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:85+28 -L0: - - // $t7 := 8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:85+28 - assume {:print "$at(2,44383,44411)"} true; - $t7 := 8; - assume $IsValid'u64'($t7); - - // $t8 := error::invalid_state($t7) on_abort goto L4 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:64+50 - call $t8 := $1_error_invalid_state($t7); - if ($abort_flag) { - assume {:print "$at(2,44362,44412)"} true; - $t2 := $abort_code; - assume {:print "$track_abort(59,2):", $t2} $t2 == $t2; - goto L4; - } - - // trace_abort($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:9+106 - assume {:print "$at(2,44307,44413)"} true; - assume {:print "$track_abort(59,2):", $t8} $t8 == $t8; - - // $t2 := move($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:9+106 - $t2 := $t8; - - // goto L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:9+106 - goto L4; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:948:115+1 -L2: - - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:949:5+1 - assume {:print "$at(2,44419,44420)"} true; -L3: - - // assert Not(Not(exists[@36]($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:510:9+53 - assume {:print "$at(3,23006,23059)"} true; - assert {:msg "assert_failed(3,23006,23059): function does not abort under this condition"} - !!$ResourceExists($1_vesting_VestingContract_$memory#36, $t0); - - // assert Not(Neq(select vesting::VestingContract.state($t1), 1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:512:9+56 - assume {:print "$at(3,23142,23198)"} true; - assert {:msg "assert_failed(3,23142,23198): function does not abort under this condition"} - !!$IsEqual'u64'($state#$1_vesting_VestingContract($t1), 1); - - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:512:9+56 - return; - - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:949:5+1 - assume {:print "$at(2,44419,44420)"} true; -L4: - - // assert Or(Not(exists[@36]($t0)), Neq(select vesting::VestingContract.state($t1), 1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:413:5+134 - assume {:print "$at(3,18238,18372)"} true; - assert {:msg "assert_failed(3,18238,18372): abort not covered by any of the `aborts_if` clauses"} - (!$ResourceExists($1_vesting_VestingContract_$memory#36, $t0) || !$IsEqual'u64'($state#$1_vesting_VestingContract($t1), 1)); - - // abort($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:413:5+134 - $abort_code := $t2; - $abort_flag := true; - return; - -} - -// fun vesting::assert_vesting_contract_exists [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:941:5+176 -procedure {:inline 1} $1_vesting_assert_vesting_contract_exists(_$t0: int) returns () -{ - // declare local variables - var $t1: bool; - var $t2: int; - var $t3: int; - var $t4: int; - var $t0: int; - var $temp_0'address': int; - $t0 := _$t0; - - // bytecode translation starts here - // trace_local[contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:941:5+1 - assume {:print "$at(2,43889,43890)"} true; - assume {:print "$track_local(59,3,0):", $t0} $t0 == $t0; - - // $t1 := exists($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:17+6 - assume {:print "$at(2,43969,43975)"} true; - $t1 := $ResourceExists($1_vesting_VestingContract_$memory, $t0); - - // if ($t1) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:9+97 - if ($t1) { goto L1; } else { goto L0; } - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:9+97 -L1: - - // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:9+97 - assume {:print "$at(2,43961,44058)"} true; - goto L2; - - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:77+27 -L0: - - // $t2 := 10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:77+27 - assume {:print "$at(2,44029,44056)"} true; - $t2 := 10; - assume $IsValid'u64'($t2); - - // $t3 := error::not_found($t2) on_abort goto L4 with $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:60+45 - call $t3 := $1_error_not_found($t2); - if ($abort_flag) { - assume {:print "$at(2,44012,44057)"} true; - $t4 := $abort_code; - assume {:print "$track_abort(59,3):", $t4} $t4 == $t4; - goto L4; - } - - // trace_abort($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:9+97 - assume {:print "$at(2,43961,44058)"} true; - assume {:print "$track_abort(59,3):", $t3} $t3 == $t3; - - // $t4 := move($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:9+97 - $t4 := $t3; - - // goto L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:9+97 - goto L4; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:106+1 -L2: - - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:943:5+1 - assume {:print "$at(2,44064,44065)"} true; -L3: - - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:943:5+1 - assume {:print "$at(2,44064,44065)"} true; - return; - - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:943:5+1 -L4: - - // abort($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:943:5+1 - assume {:print "$at(2,44064,44065)"} true; - $abort_code := $t4; - $abort_flag := true; - return; - -} - -// fun vesting::assert_vesting_contract_exists [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:941:5+176 -procedure {:timeLimit 900} $1_vesting_assert_vesting_contract_exists$verify(_$t0: int) returns () -{ - // declare local variables - var $t1: bool; - var $t2: int; - var $t3: int; - var $t4: int; - var $t0: int; - var $temp_0'address': int; - var $1_vesting_VestingContract_$memory#23: $Memory $1_vesting_VestingContract; - $t0 := _$t0; - - // verification entrypoint assumptions - call $InitVerification(); - - // bytecode translation starts here - // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:941:5+1 - assume {:print "$at(2,43889,43890)"} true; - assume $IsValid'address'($t0); - - // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:941:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); - (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; - (var j := $i_4; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); - - // @23 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:941:5+1 - $1_vesting_VestingContract_$memory#23 := $1_vesting_VestingContract_$memory; - - // trace_local[contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:941:5+1 - assume {:print "$track_local(59,3,0):", $t0} $t0 == $t0; - - // $t1 := exists($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:17+6 - assume {:print "$at(2,43969,43975)"} true; - $t1 := $ResourceExists($1_vesting_VestingContract_$memory, $t0); - - // if ($t1) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:9+97 - if ($t1) { goto L1; } else { goto L0; } - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:9+97 -L1: - - // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:9+97 - assume {:print "$at(2,43961,44058)"} true; - goto L2; - - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:77+27 -L0: - - // $t2 := 10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:77+27 - assume {:print "$at(2,44029,44056)"} true; - $t2 := 10; - assume $IsValid'u64'($t2); - - // $t3 := error::not_found($t2) on_abort goto L4 with $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:60+45 - call $t3 := $1_error_not_found($t2); - if ($abort_flag) { - assume {:print "$at(2,44012,44057)"} true; - $t4 := $abort_code; - assume {:print "$track_abort(59,3):", $t4} $t4 == $t4; - goto L4; - } - - // trace_abort($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:9+97 - assume {:print "$at(2,43961,44058)"} true; - assume {:print "$track_abort(59,3):", $t3} $t3 == $t3; - - // $t4 := move($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:9+97 - $t4 := $t3; - - // goto L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:9+97 - goto L4; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:942:106+1 -L2: - - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:943:5+1 - assume {:print "$at(2,44064,44065)"} true; -L3: - - // assert Not(Not(exists[@23]($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:410:9+53 - assume {:print "$at(3,18173,18226)"} true; - assert {:msg "assert_failed(3,18173,18226): function does not abort under this condition"} - !!$ResourceExists($1_vesting_VestingContract_$memory#23, $t0); - - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:410:9+53 - return; - - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:943:5+1 - assume {:print "$at(2,44064,44065)"} true; -L4: - - // assert Not(exists[@23]($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:409:5+132 - assume {:print "$at(3,18100,18232)"} true; - assert {:msg "assert_failed(3,18100,18232): abort not covered by any of the `aborts_if` clauses"} - !$ResourceExists($1_vesting_VestingContract_$memory#23, $t0); - - // abort($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:409:5+132 - $abort_code := $t4; - $abort_flag := true; - return; - -} - -// fun vesting::beneficiary [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:293:5+282 -procedure {:timeLimit 900} $1_vesting_beneficiary$verify(_$t0: int, _$t1: int) returns ($ret0: int) -{ - // declare local variables - var $t2: int; - var $t3: $1_vesting_VestingContract; - var $t4: int; - var $t0: int; - var $t1: int; - var $temp_0'address': int; - var $1_vesting_VestingContract_$memory#77: $Memory $1_vesting_VestingContract; - $t0 := _$t0; - $t1 := _$t1; - - // verification entrypoint assumptions - call $InitVerification(); - - // bytecode translation starts here - // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:293:5+1 - assume {:print "$at(2,13591,13592)"} true; - assume $IsValid'address'($t0); - - // assume WellFormed($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:293:5+1 - assume $IsValid'address'($t1); - - // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:293:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); - (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; - (var j := $i_4; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); - - // @77 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:293:5+1 - $1_vesting_VestingContract_$memory#77 := $1_vesting_VestingContract_$memory; - - // trace_local[vesting_contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:293:5+1 - assume {:print "$track_local(59,4,0):", $t0} $t0 == $t0; - - // trace_local[shareholder]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:293:5+1 - assume {:print "$track_local(59,4,1):", $t1} $t1 == $t1; - - // vesting::assert_vesting_contract_exists($t0) on_abort goto L2 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:294:9+56 - assume {:print "$at(2,13715,13771)"} true; - call $1_vesting_assert_vesting_contract_exists($t0); - if ($abort_flag) { - assume {:print "$at(2,13715,13771)"} true; - $t2 := $abort_code; - assume {:print "$track_abort(59,4):", $t2} $t2 == $t2; - goto L2; - } - - // $t3 := get_global($t0) on_abort goto L2 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:295:25+13 - assume {:print "$at(2,13797,13810)"} true; - if (!$ResourceExists($1_vesting_VestingContract_$memory, $t0)) { - call $ExecFailureAbort(); - } else { - $t3 := $ResourceValue($1_vesting_VestingContract_$memory, $t0); - } - if ($abort_flag) { - assume {:print "$at(2,13797,13810)"} true; - $t2 := $abort_code; - assume {:print "$track_abort(59,4):", $t2} $t2 == $t2; - goto L2; - } - - // $t4 := vesting::get_beneficiary($t3, $t1) on_abort goto L2 with $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:295:9+86 - call $t4 := $1_vesting_get_beneficiary($t3, $t1); - if ($abort_flag) { - assume {:print "$at(2,13781,13867)"} true; - $t2 := $abort_code; - assume {:print "$track_abort(59,4):", $t2} $t2 == $t2; - goto L2; - } - - // trace_return[0]($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:295:9+86 - assume {:print "$track_return(59,4,0):", $t4} $t4 == $t4; - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:296:5+1 - assume {:print "$at(2,13872,13873)"} true; -L1: - - // assert Not(Not(exists[@77]($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:24:9+61 - assume {:print "$at(3,811,872)"} true; - assert {:msg "assert_failed(3,811,872): function does not abort under this condition"} - !!$ResourceExists($1_vesting_VestingContract_$memory#77, $t0); - - // return $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:24:9+61 - $ret0 := $t4; - return; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:296:5+1 - assume {:print "$at(2,13872,13873)"} true; -L2: - - // assert Not(exists[@77]($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:23:5+160 - assume {:print "$at(3,718,878)"} true; - assert {:msg "assert_failed(3,718,878): abort not covered by any of the `aborts_if` clauses"} - !$ResourceExists($1_vesting_VestingContract_$memory#77, $t0); - - // abort($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:23:5+160 - $abort_code := $t2; - $abort_flag := true; - return; - -} - -// fun vesting::vesting_schedule [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:346:5+260 -procedure {:timeLimit 900} $1_vesting_vesting_schedule$verify(_$t0: int) returns ($ret0: $1_vesting_VestingSchedule) -{ - // declare local variables - var $t1: int; - var $t2: $1_vesting_VestingContract; - var $t3: $1_vesting_VestingSchedule; - var $t0: int; - var $temp_0'$1_vesting_VestingSchedule': $1_vesting_VestingSchedule; - var $temp_0'address': int; - var $1_vesting_VestingContract_$memory#32: $Memory $1_vesting_VestingContract; - $t0 := _$t0; - - // verification entrypoint assumptions - call $InitVerification(); - - // bytecode translation starts here - // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:346:5+1 - assume {:print "$at(2,16253,16254)"} true; - assume $IsValid'address'($t0); - - // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:346:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); - (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; - (var j := $i_4; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); - - // @32 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:346:5+1 - $1_vesting_VestingContract_$memory#32 := $1_vesting_VestingContract_$memory; - - // trace_local[vesting_contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:346:5+1 - assume {:print "$track_local(59,38,0):", $t0} $t0 == $t0; - - // vesting::assert_vesting_contract_exists($t0) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:347:9+56 - assume {:print "$at(2,16368,16424)"} true; - call $1_vesting_assert_vesting_contract_exists($t0); - if ($abort_flag) { - assume {:print "$at(2,16368,16424)"} true; - $t1 := $abort_code; - assume {:print "$track_abort(59,38):", $t1} $t1 == $t1; - goto L2; - } - - // $t2 := get_global($t0) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:348:9+13 - assume {:print "$at(2,16434,16447)"} true; - if (!$ResourceExists($1_vesting_VestingContract_$memory, $t0)) { - call $ExecFailureAbort(); - } else { - $t2 := $ResourceValue($1_vesting_VestingContract_$memory, $t0); - } - if ($abort_flag) { - assume {:print "$at(2,16434,16447)"} true; - $t1 := $abort_code; - assume {:print "$track_abort(59,38):", $t1} $t1 == $t1; - goto L2; - } - - // $t3 := get_field.vesting_schedule($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:348:9+73 - $t3 := $vesting_schedule#$1_vesting_VestingContract($t2); - - // trace_return[0]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:348:9+73 - assume {:print "$track_return(59,38,0):", $t3} $t3 == $t3; - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:349:5+1 - assume {:print "$at(2,16512,16513)"} true; -L1: - - // assert Not(Not(exists[@32]($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:44:9+61 - assume {:print "$at(3,1500,1561)"} true; - assert {:msg "assert_failed(3,1500,1561): function does not abort under this condition"} - !!$ResourceExists($1_vesting_VestingContract_$memory#32, $t0); - - // return $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:44:9+61 - $ret0 := $t3; - return; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:349:5+1 - assume {:print "$at(2,16512,16513)"} true; -L2: - - // assert Not(exists[@32]($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:43:5+151 - assume {:print "$at(3,1416,1567)"} true; - assert {:msg "assert_failed(3,1416,1567): abort not covered by any of the `aborts_if` clauses"} - !$ResourceExists($1_vesting_VestingContract_$memory#32, $t0); - - // abort($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:43:5+151 - $abort_code := $t1; - $abort_flag := true; - return; - -} - -// fun vesting::create_vesting_contract_account [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:915:5+1075 -procedure {:timeLimit 900} $1_vesting_create_vesting_contract_account$verify(_$t0: $signer, _$t1: Vec (int)) returns ($ret0: $signer, $ret1: $1_account_SignerCapability) -{ - // declare local variables - var $t2: int; - var $t3: $signer; - var $t4: $Mutation ($1_vesting_AdminStore); - var $t5: Vec (int); - var $t6: $1_account_SignerCapability; - var $t7: int; - var $t8: $1_vesting_AdminStore; - var $t9: Vec (int); - var $t10: Vec (int); - var $t11: Vec (int); - var $t12: Vec (int); - var $t13: Vec (int); - var $t14: int; - var $t15: bool; - var $t16: $1_account_Account; - var $t17: $1_account_Account; - var $t18: Vec (int); - var $t19: int; - var $t20: int; - var $t21: $Mutation ($1_vesting_AdminStore); - var $t22: int; - var $t23: $Mutation (Vec (int)); - var $t24: int; - var $t25: Vec (int); - var $t26: int; - var $t27: int; - var $t28: int; - var $t29: $Mutation (int); - var $t30: $Mutation (Vec (int)); - var $t31: Vec (int); - var $t32: $Mutation (Vec (int)); - var $t33: Vec (int); - var $t34: int; - var $t35: int; - var $t36: $1_account_Account; - var $t37: Vec (int); - var $t38: $signer; - var $t39: $1_account_SignerCapability; - var $t40: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; - var $t41: int; - var $t42: $1_account_Account; - var $t43: $1_account_Account; - var $t0: $signer; - var $t1: Vec (int); - var $temp_0'$1_account_SignerCapability': $1_account_SignerCapability; - var $temp_0'$1_vesting_AdminStore': $1_vesting_AdminStore; - var $temp_0'signer': $signer; - var $temp_0'vec'u8'': Vec (int); - var $1_vesting_AdminStore_$memory#70: $Memory $1_vesting_AdminStore; - var $1_account_Account_$memory#71: $Memory $1_account_Account; - var $1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory#72: $Memory $1_coin_CoinStore'$1_aptos_coin_AptosCoin'; - $t0 := _$t0; - $t1 := _$t1; - - // verification entrypoint assumptions - call $InitVerification(); - - // bytecode translation starts here - // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:915:5+1 - assume {:print "$at(2,42620,42621)"} true; - assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($addr#$signer($t0)); - - // assume WellFormed($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:915:5+1 - assume $IsValid'vec'u8''($t1); - - // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.rotation_capability_offer($rsc)))), 1), Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.signer_capability_offer($rsc)))), 1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:915:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_account_Account_$memory, $a_0)}(var $rsc := $ResourceValue($1_account_Account_$memory, $a_0); - (($IsValid'$1_account_Account'($rsc) && ((LenVec($vec#$1_option_Option'address'($for#$1_account_CapabilityOffer'$1_account_RotationCapability'($rotation_capability_offer#$1_account_Account($rsc)))) <= 1) && (LenVec($vec#$1_option_Option'address'($for#$1_account_CapabilityOffer'$1_account_SignerCapability'($signer_capability_offer#$1_account_Account($rsc)))) <= 1)))))); - - // assume forall $rsc: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: select option::Option.vec(select coin::CoinInfo.supply($rsc)): And(And(And(And(And(Iff(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($elem)), option::$is_none(select optional_aggregator::OptionalAggregator.integer($elem))), Iff(option::$is_some(select optional_aggregator::OptionalAggregator.integer($elem)), option::$is_none(select optional_aggregator::OptionalAggregator.aggregator($elem)))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.integer($elem)), Le(select optional_aggregator::Integer.value(option::$borrow(select optional_aggregator::OptionalAggregator.integer($elem))), select optional_aggregator::Integer.limit(option::$borrow(select optional_aggregator::OptionalAggregator.integer($elem)))))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($elem)), Le(aggregator::spec_aggregator_get_val(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($elem))), aggregator::spec_get_limit(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($elem)))))), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.aggregator($elem))), 1)), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.integer($elem))), 1)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:915:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $a_0); - (($IsValid'$1_coin_CoinInfo'$1_aptos_coin_AptosCoin''($rsc) && ((LenVec($vec#$1_option_Option'$1_optional_aggregator_OptionalAggregator'($supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($rsc))) <= 1) && (var $range_1 := $vec#$1_option_Option'$1_optional_aggregator_OptionalAggregator'($supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($rsc)); (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); - ((((((($1_option_$is_some'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)) <==> $1_option_$is_none'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)) ==> ($value#$1_optional_aggregator_Integer($1_option_$borrow'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) <= $limit#$1_optional_aggregator_Integer($1_option_$borrow'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)))))) && ($1_option_$is_some'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem))) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)))))) && (LenVec($vec#$1_option_Option'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem))) <= 1)) && (LenVec($vec#$1_option_Option'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) <= 1))))))))))); - - // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:915:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $a_0); - ($IsValid'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''($rsc)))); - - // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:915:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $a_0); - ($IsValid'$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin''($rsc)))); - - // assume exists>(0x0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:915:5+1 - assume $ResourceExists($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, 0); - - // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:915:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, $a_0); - ($IsValid'$1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin''($rsc)))); - - // assume exists>(0x0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:915:5+1 - assume $ResourceExists($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, 0); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:915:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_vesting_AdminStore_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_AdminStore_$memory, $a_0); - ($IsValid'$1_vesting_AdminStore'($rsc)))); - - // assume Identical($t7, signer::$address_of($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:378:9+43 - assume {:print "$at(3,16360,16403)"} true; - assume ($t7 == $1_signer_$address_of($t0)); - - // assume Identical($t8, global($t7)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:379:9+49 - assume {:print "$at(3,16412,16461)"} true; - assume ($t8 == $ResourceValue($1_vesting_AdminStore_$memory, $t7)); - - // assume Identical($t9, bcs::$to_bytes
($t7)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:380:9+37 - assume {:print "$at(3,16470,16507)"} true; - assume ($t9 == $1_bcs_$to_bytes'address'($t7)); - - // assume Identical($t10, bcs::$to_bytes(select vesting::AdminStore.nonce($t8))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:381:9+45 - assume {:print "$at(3,16516,16561)"} true; - assume ($t10 == $1_bcs_$to_bytes'u64'($nonce#$1_vesting_AdminStore($t8))); - - // assume Identical($t11, ConcatVec($t9, $t10)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:383:9+32 - assume {:print "$at(3,16571,16603)"} true; - assume ($t11 == ConcatVec($t9, $t10)); - - // assume Identical($t12, ConcatVec($t11, [97, 112, 116, 111, 115, 95, 102, 114, 97, 109, 101, 119, 111, 114, 107, 58, 58, 118, 101, 115, 116, 105, 110, 103])) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:384:9+46 - assume {:print "$at(3,16612,16658)"} true; - assume ($t12 == ConcatVec($t11, ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(97, 112, 116, 111), MakeVec4(115, 95, 102, 114)), MakeVec4(97, 109, 101, 119)), MakeVec4(111, 114, 107, 58)), MakeVec4(58, 118, 101, 115)), MakeVec4(116, 105, 110, 103)))); - - // assume Identical($t13, ConcatVec($t12, $t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:385:9+49 - assume {:print "$at(3,16667,16716)"} true; - assume ($t13 == ConcatVec($t12, $t1)); - - // assume Identical($t14, account::spec_create_resource_address($t7, $t13)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:387:9+75 - assume {:print "$at(3,16726,16801)"} true; - assume ($t14 == $1_account_spec_create_resource_address($t7, $t13)); - - // assume Identical($t15, account::$exists_at($t14)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:391:9+43 - assume {:print "$at(3,16965,17008)"} true; - assume ($t15 == $1_account_$exists_at($1_account_Account_$memory, $t14)); - - // assume Identical($t16, global($t14)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:394:9+50 - assume {:print "$at(3,17140,17190)"} true; - assume ($t16 == $ResourceValue($1_account_Account_$memory, $t14)); - - // assume Identical($t17, global($t14)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:481:9+45 - assume {:print "$at(80,23051,23096)"} true; - assume ($t17 == $ResourceValue($1_account_Account_$memory, $t14)); - - // assume Identical($t18, bcs::$to_bytes
($t14)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:40:9+45 - assume {:print "$at(80,1640,1685)"} true; - assume ($t18 == $1_bcs_$to_bytes'address'($t14)); - - // @71 := save_mem(account::Account) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:915:5+1 - assume {:print "$at(2,42620,42621)"} true; - $1_account_Account_$memory#71 := $1_account_Account_$memory; - - // @72 := save_mem(coin::CoinStore) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:915:5+1 - $1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory#72 := $1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory; - - // @70 := save_mem(vesting::AdminStore) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:915:5+1 - $1_vesting_AdminStore_$memory#70 := $1_vesting_AdminStore_$memory; - - // trace_local[admin]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:915:5+1 - assume {:print "$track_local(59,6,0):", $t0} $t0 == $t0; - - // trace_local[contract_creation_seed]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:915:5+1 - assume {:print "$track_local(59,6,1):", $t1} $t1 == $t1; - - // $t19 := signer::address_of($t0) on_abort goto L2 with $t20 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:919:57+25 - assume {:print "$at(2,42837,42862)"} true; - call $t19 := $1_signer_address_of($t0); - if ($abort_flag) { - assume {:print "$at(2,42837,42862)"} true; - $t20 := $abort_code; - assume {:print "$track_abort(59,6):", $t20} $t20 == $t20; - goto L2; - } - - // $t21 := borrow_global($t19) on_abort goto L2 with $t20 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:919:27+17 - if (!$ResourceExists($1_vesting_AdminStore_$memory, $t19)) { - call $ExecFailureAbort(); - } else { - $t21 := $Mutation($Global($t19), EmptyVec(), $ResourceValue($1_vesting_AdminStore_$memory, $t19)); - } - if ($abort_flag) { - assume {:print "$at(2,42807,42824)"} true; - $t20 := $abort_code; - assume {:print "$track_abort(59,6):", $t20} $t20 == $t20; - goto L2; - } - - // trace_local[admin_store]($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:919:13+11 - $temp_0'$1_vesting_AdminStore' := $Dereference($t21); - assume {:print "$track_local(59,6,4):", $temp_0'$1_vesting_AdminStore'} $temp_0'$1_vesting_AdminStore' == $temp_0'$1_vesting_AdminStore'; - - // $t22 := signer::address_of($t0) on_abort goto L2 with $t20 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:920:35+25 - assume {:print "$at(2,42899,42924)"} true; - call $t22 := $1_signer_address_of($t0); - if ($abort_flag) { - assume {:print "$at(2,42899,42924)"} true; - $t20 := $abort_code; - assume {:print "$track_abort(59,6):", $t20} $t20 == $t20; - goto L2; - } - - // $t5 := bcs::to_bytes
($t22) on_abort goto L2 with $t20 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:920:20+41 - call $t5 := $1_bcs_to_bytes'address'($t22); - if ($abort_flag) { - assume {:print "$at(2,42884,42925)"} true; - $t20 := $abort_code; - assume {:print "$track_abort(59,6):", $t20} $t20 == $t20; - goto L2; - } - - // trace_local[seed]($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:920:13+4 - assume {:print "$track_local(59,6,5):", $t5} $t5 == $t5; - - // $t23 := borrow_local($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:921:24+9 - assume {:print "$at(2,42950,42959)"} true; - $t23 := $Mutation($Local(5), EmptyVec(), $t5); - - // $t24 := get_field.nonce($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:921:49+18 - $t24 := $nonce#$1_vesting_AdminStore($Dereference($t21)); - - // $t25 := bcs::to_bytes($t24) on_abort goto L2 with $t20 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:921:35+33 - call $t25 := $1_bcs_to_bytes'u64'($t24); - if ($abort_flag) { - assume {:print "$at(2,42961,42994)"} true; - $t20 := $abort_code; - assume {:print "$track_abort(59,6):", $t20} $t20 == $t20; - goto L2; - } - - // vector::append($t23, $t25) on_abort goto L2 with $t20 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:921:9+60 - call $t23 := $1_vector_append'u8'($t23, $t25); - if ($abort_flag) { - assume {:print "$at(2,42935,42995)"} true; - $t20 := $abort_code; - assume {:print "$track_abort(59,6):", $t20} $t20 == $t20; - goto L2; - } - - // write_back[LocalRoot($t5)@]($t23) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:921:9+60 - $t5 := $Dereference($t23); - - // trace_local[seed]($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:921:9+60 - assume {:print "$track_local(59,6,5):", $t5} $t5 == $t5; - - // $t26 := get_field.nonce($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:922:29+17 - assume {:print "$at(2,43025,43042)"} true; - $t26 := $nonce#$1_vesting_AdminStore($Dereference($t21)); - - // $t27 := 1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:922:49+1 - $t27 := 1; - assume $IsValid'u64'($t27); - - // $t28 := +($t26, $t27) on_abort goto L2 with $t20 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:922:47+1 - call $t28 := $AddU64($t26, $t27); - if ($abort_flag) { - assume {:print "$at(2,43043,43044)"} true; - $t20 := $abort_code; - assume {:print "$track_abort(59,6):", $t20} $t20 == $t20; - goto L2; - } - - // $t29 := borrow_field.nonce($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:922:9+17 - $t29 := $ChildMutation($t21, 1, $nonce#$1_vesting_AdminStore($Dereference($t21))); - - // write_ref($t29, $t28) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:922:9+41 - $t29 := $UpdateMutation($t29, $t28); - - // write_back[Reference($t21).nonce (u64)]($t29) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:922:9+41 - $t21 := $UpdateMutation($t21, $Update'$1_vesting_AdminStore'_nonce($Dereference($t21), $Dereference($t29))); - - // write_back[vesting::AdminStore@]($t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:922:9+41 - $1_vesting_AdminStore_$memory := $ResourceUpdate($1_vesting_AdminStore_$memory, $GlobalLocationAddress($t21), - $Dereference($t21)); - - // $t30 := borrow_local($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:926:24+9 - assume {:print "$at(2,43254,43263)"} true; - $t30 := $Mutation($Local(5), EmptyVec(), $t5); - - // $t31 := [97, 112, 116, 111, 115, 95, 102, 114, 97, 109, 101, 119, 111, 114, 107, 58, 58, 118, 101, 115, 116, 105, 110, 103] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:926:35+17 - $t31 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(97, 112, 116, 111), MakeVec4(115, 95, 102, 114)), MakeVec4(97, 109, 101, 119)), MakeVec4(111, 114, 107, 58)), MakeVec4(58, 118, 101, 115)), MakeVec4(116, 105, 110, 103)); - assume $IsValid'vec'u8''($t31); - - // vector::append($t30, $t31) on_abort goto L2 with $t20 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:926:9+44 - call $t30 := $1_vector_append'u8'($t30, $t31); - if ($abort_flag) { - assume {:print "$at(2,43239,43283)"} true; - $t20 := $abort_code; - assume {:print "$track_abort(59,6):", $t20} $t20 == $t20; - goto L2; - } - - // write_back[LocalRoot($t5)@]($t30) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:926:9+44 - $t5 := $Dereference($t30); - - // trace_local[seed]($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:926:9+44 - assume {:print "$track_local(59,6,5):", $t5} $t5 == $t5; - - // $t32 := borrow_local($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:927:24+9 - assume {:print "$at(2,43308,43317)"} true; - $t32 := $Mutation($Local(5), EmptyVec(), $t5); - - // vector::append($t32, $t1) on_abort goto L2 with $t20 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:927:9+49 - call $t32 := $1_vector_append'u8'($t32, $t1); - if ($abort_flag) { - assume {:print "$at(2,43293,43342)"} true; - $t20 := $abort_code; - assume {:print "$track_abort(59,6):", $t20} $t20 == $t20; - goto L2; - } - - // write_back[LocalRoot($t5)@]($t32) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:927:9+49 - $t5 := $Dereference($t32); - - // trace_local[seed]($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:927:9+49 - assume {:print "$track_local(59,6,5):", $t5} $t5 == $t5; - - // $t33 := move($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:929:84+4 - assume {:print "$at(2,43428,43432)"} true; - $t33 := $t5; - - // assume Identical($t34, signer::$address_of($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:412:9+45 - assume {:print "$at(80,20304,20349)"} true; - assume ($t34 == $1_signer_$address_of($t0)); - - // assume Identical($t35, account::spec_create_resource_address($t34, $t33)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:413:9+68 - assume {:print "$at(80,20358,20426)"} true; - assume ($t35 == $1_account_spec_create_resource_address($t34, $t33)); - - // assume Identical($t36, global($t35)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:481:9+45 - assume {:print "$at(80,23051,23096)"} true; - assume ($t36 == $ResourceValue($1_account_Account_$memory, $t35)); - - // assume Identical($t37, bcs::$to_bytes
($t35)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:40:9+45 - assume {:print "$at(80,1640,1685)"} true; - assume ($t37 == $1_bcs_$to_bytes'address'($t35)); - - // ($t38, $t39) := account::create_resource_account($t0, $t33) on_abort goto L2 with $t20 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:929:44+45 - assume {:print "$at(2,43388,43433)"} true; - call $t38,$t39 := $1_account_create_resource_account($t0, $t33); - if ($abort_flag) { - assume {:print "$at(2,43388,43433)"} true; - $t20 := $abort_code; - assume {:print "$track_abort(59,6):", $t20} $t20 == $t20; - goto L2; - } - - // trace_local[signer_cap]($t39) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:929:30+10 - assume {:print "$track_local(59,6,6):", $t39} $t39 == $t39; - - // trace_local[account_signer]($t38) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:929:14+14 - assume {:print "$track_local(59,6,3):", $t38} $t38 == $t38; - - // assume Identical($t40, select coin::CoinInfo.supply(global>(select type_info::TypeInfo.account_address(type_info::$type_of())))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:32:9+99 - assume {:print "$at(102,1664,1763)"} true; - assume ($t40 == $supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $account_address#$1_type_info_TypeInfo($1_type_info_TypeInfo(1, Vec(DefaultVecMap()[0 := 97][1 := 112][2 := 116][3 := 111][4 := 115][5 := 95][6 := 99][7 := 111][8 := 105][9 := 110], 10), Vec(DefaultVecMap()[0 := 65][1 := 112][2 := 116][3 := 111][4 := 115][5 := 67][6 := 111][7 := 105][8 := 110], 9)))))); - - // assume Identical($t41, signer::$address_of($t38)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:347:9+47 - assume {:print "$at(102,14682,14729)"} true; - assume ($t41 == $1_signer_$address_of($t38)); - - // assume Identical($t42, global($t41)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/coin.spec.move:348:9+49 - assume {:print "$at(102,14738,14787)"} true; - assume ($t42 == $ResourceValue($1_account_Account_$memory, $t41)); - - // coin::register($t38) on_abort goto L2 with $t20 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:932:9+42 - assume {:print "$at(2,43608,43650)"} true; - call $1_coin_register'$1_aptos_coin_AptosCoin'($t38); - if ($abort_flag) { - assume {:print "$at(2,43608,43650)"} true; - $t20 := $abort_code; - assume {:print "$track_abort(59,6):", $t20} $t20 == $t20; - goto L2; - } - - // trace_return[0]($t38) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:934:9+28 - assume {:print "$at(2,43661,43689)"} true; - assume {:print "$track_return(59,6,0):", $t38} $t38 == $t38; - - // trace_return[1]($t39) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:934:9+28 - assume {:print "$track_return(59,6,1):", $t39} $t39 == $t39; - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:935:5+1 - assume {:print "$at(2,43694,43695)"} true; -L1: - - // assume Identical($t43, global($t14)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:395:9+60 - assume {:print "$at(3,17199,17259)"} true; - assume ($t43 == $ResourceValue($1_account_Account_$memory, $t14)); - - // assert Not(Not(exists[@70]($t7))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:388:9+42 - assume {:print "$at(3,16810,16852)"} true; - assert {:msg "assert_failed(3,16810,16852): function does not abort under this condition"} - !!$ResourceExists($1_vesting_AdminStore_$memory#70, $t7); - - // assert Not(Neq(Len([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), 32)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:389:9+44 - assume {:print "$at(3,16861,16905)"} true; - assert {:msg "assert_failed(3,16861,16905): function does not abort under this condition"} - !!$IsEqual'num'(LenVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(0, 0, 0, 0), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0))), 32); - - // assert Not(Gt(Add(select vesting::AdminStore.nonce($t8), 1), 18446744073709551615)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:390:9+42 - assume {:print "$at(3,16914,16956)"} true; - assert {:msg "assert_failed(3,16914,16956): function does not abort under this condition"} - !(($nonce#$1_vesting_AdminStore($t8) + 1) > 18446744073709551615); - - // assert Not(And($t15, Neq(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.signer_capability_offer($t17)))), 0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:482:9+60 - assume {:print "$at(80,23105,23165)"} true; - assert {:msg "assert_failed(80,23105,23165): function does not abort under this condition"} - !($t15 && !$IsEqual'num'(LenVec($vec#$1_option_Option'address'($for#$1_account_CapabilityOffer'$1_account_SignerCapability'($signer_capability_offer#$1_account_Account($t17)))), 0)); - - // assert Not(And($t15, Neq(select account::Account.sequence_number($t17), 0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:483:9+39 - assume {:print "$at(80,23174,23213)"} true; - assert {:msg "assert_failed(80,23174,23213): function does not abort under this condition"} - !($t15 && !$IsEqual'u64'($sequence_number#$1_account_Account($t17), 0)); - - // assert Not(And(Not($t15), Neq(Len($t18), 32))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:41:9+40 - assume {:print "$at(80,1694,1734)"} true; - assert {:msg "assert_failed(80,1694,1734): function does not abort under this condition"} - !(!$t15 && !$IsEqual'num'(LenVec($t18), 32)); - - // assert Not(And(Not($t15), exists[@71]($t14))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:42:9+32 - assume {:print "$at(80,1743,1775)"} true; - assert {:msg "assert_failed(80,1743,1775): function does not abort under this condition"} - !(!$t15 && $ResourceExists($1_account_Account_$memory#71, $t14)); - - // assert Not(And(Not(exists[@72]>($t14)), Not(type_info::spec_is_struct[]()))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:396:9+115 - assume {:print "$at(3,17268,17383)"} true; - assert {:msg "assert_failed(3,17268,17383): function does not abort under this condition"} - !(!$ResourceExists($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory#72, $t14) && !true); - - // assert Not(And(And(Not(exists[@72]>($t14)), $t15), Gt(Add(select account::Account.guid_creation_num($t16), 2), 18446744073709551615))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:397:9+106 - assume {:print "$at(3,17392,17498)"} true; - assert {:msg "assert_failed(3,17392,17498): function does not abort under this condition"} - !((!$ResourceExists($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory#72, $t14) && $t15) && (($guid_creation_num#$1_account_Account($t16) + 2) > 18446744073709551615)); - - // assert Not(And(And(Not(exists[@72]>($t14)), $t15), Ge(Add(select account::Account.guid_creation_num($t16), 2), 1125899906842624))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:398:9+130 - assume {:print "$at(3,17507,17637)"} true; - assert {:msg "assert_failed(3,17507,17637): function does not abort under this condition"} - !((!$ResourceExists($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory#72, $t14) && $t15) && (($guid_creation_num#$1_account_Account($t16) + 2) >= 1125899906842624)); - - // assert And(And(exists($t14), Eq>(select account::Account.authentication_key($t43), [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])), exists>($t14)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:399:9+174 - assume {:print "$at(3,17646,17820)"} true; - assert {:msg "assert_failed(3,17646,17820): post-condition does not hold"} - (($ResourceExists($1_account_Account_$memory, $t14) && $IsEqual'vec'u8''($authentication_key#$1_account_Account($t43), ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(0, 0, 0, 0), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)))) && $ResourceExists($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $t14)); - - // assert Eq
(signer::$address_of($t38), $t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:401:9+54 - assume {:print "$at(3,17829,17883)"} true; - assert {:msg "assert_failed(3,17829,17883): post-condition does not hold"} - $IsEqual'address'($1_signer_$address_of($t38), $t14); - - // assert Eq
(select account::SignerCapability.account($t39), $t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:402:9+42 - assume {:print "$at(3,17892,17934)"} true; - assert {:msg "assert_failed(3,17892,17934): post-condition does not hold"} - $IsEqual'address'($account#$1_account_SignerCapability($t39), $t14); - - // return ($t38, $t39) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:402:9+42 - $ret0 := $t38; - $ret1 := $t39; - return; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:935:5+1 - assume {:print "$at(2,43694,43695)"} true; -L2: - - // assert Or(Or(Or(Or(Or(Or(Or(Or(Or(Not(exists[@70]($t7)), Neq(Len([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), 32)), Gt(Add(select vesting::AdminStore.nonce($t8), 1), 18446744073709551615)), And($t15, Neq(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.signer_capability_offer($t17)))), 0))), And($t15, Neq(select account::Account.sequence_number($t17), 0))), And(Not($t15), Neq(Len($t18), 32))), And(Not($t15), exists[@71]($t14))), And(Not(exists[@72]>($t14)), Not(type_info::spec_is_struct[]()))), And(And(Not(exists[@72]>($t14)), $t15), Gt(Add(select account::Account.guid_creation_num($t16), 2), 18446744073709551615))), And(And(Not(exists[@72]>($t14)), $t15), Ge(Add(select account::Account.guid_creation_num($t16), 2), 1125899906842624))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:374:5+1730 - assume {:print "$at(3,16210,17940)"} true; - assert {:msg "assert_failed(3,16210,17940): abort not covered by any of the `aborts_if` clauses"} - (((((((((!$ResourceExists($1_vesting_AdminStore_$memory#70, $t7) || !$IsEqual'num'(LenVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(0, 0, 0, 0), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0)), MakeVec4(0, 0, 0, 0))), 32)) || (($nonce#$1_vesting_AdminStore($t8) + 1) > 18446744073709551615)) || ($t15 && !$IsEqual'num'(LenVec($vec#$1_option_Option'address'($for#$1_account_CapabilityOffer'$1_account_SignerCapability'($signer_capability_offer#$1_account_Account($t17)))), 0))) || ($t15 && !$IsEqual'u64'($sequence_number#$1_account_Account($t17), 0))) || (!$t15 && !$IsEqual'num'(LenVec($t18), 32))) || (!$t15 && $ResourceExists($1_account_Account_$memory#71, $t14))) || (!$ResourceExists($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory#72, $t14) && !true)) || ((!$ResourceExists($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory#72, $t14) && $t15) && (($guid_creation_num#$1_account_Account($t16) + 2) > 18446744073709551615))) || ((!$ResourceExists($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory#72, $t14) && $t15) && (($guid_creation_num#$1_account_Account($t16) + 2) >= 1125899906842624))); - - // abort($t20) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:374:5+1730 - $abort_code := $t20; - $abort_flag := true; - return; - -} - -// fun vesting::create_vesting_schedule [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:418:5+672 -procedure {:timeLimit 900} $1_vesting_create_vesting_schedule$verify(_$t0: Vec ($1_fixed_point32_FixedPoint32), _$t1: int, _$t2: int) returns ($ret0: $1_vesting_VestingSchedule) -{ - // declare local variables - var $t3: int; - var $t4: int; - var $t5: int; - var $t6: bool; - var $t7: int; - var $t8: int; - var $t9: int; - var $t10: bool; - var $t11: int; - var $t12: int; - var $t13: int; - var $t14: bool; - var $t15: int; - var $t16: int; - var $t17: int; - var $t18: $1_vesting_VestingSchedule; - var $t0: Vec ($1_fixed_point32_FixedPoint32); - var $t1: int; - var $t2: int; - var $temp_0'$1_vesting_VestingSchedule': $1_vesting_VestingSchedule; - var $temp_0'u64': int; - var $temp_0'vec'$1_fixed_point32_FixedPoint32'': Vec ($1_fixed_point32_FixedPoint32); - var $1_timestamp_CurrentTimeMicroseconds_$memory#26: $Memory $1_timestamp_CurrentTimeMicroseconds; - $t0 := _$t0; - $t1 := _$t1; - $t2 := _$t2; - - // verification entrypoint assumptions - call $InitVerification(); - - // bytecode translation starts here - // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:418:5+1 - assume {:print "$at(2,20152,20153)"} true; - assume $IsValid'vec'$1_fixed_point32_FixedPoint32''($t0); - - // assume WellFormed($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:418:5+1 - assume $IsValid'u64'($t1); - - // assume WellFormed($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:418:5+1 - assume $IsValid'u64'($t2); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:418:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_chain_status_GenesisEndMarker_$memory, $a_0)}(var $rsc := $ResourceValue($1_chain_status_GenesisEndMarker_$memory, $a_0); - ($IsValid'$1_chain_status_GenesisEndMarker'($rsc)))); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:418:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_timestamp_CurrentTimeMicroseconds_$memory, $a_0)}(var $rsc := $ResourceValue($1_timestamp_CurrentTimeMicroseconds_$memory, $a_0); - ($IsValid'$1_timestamp_CurrentTimeMicroseconds'($rsc)))); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:418:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_reconfiguration_Configuration_$memory, $a_0)}(var $rsc := $ResourceValue($1_reconfiguration_Configuration_$memory, $a_0); - ($IsValid'$1_reconfiguration_Configuration'($rsc)))); - - // assume Implies(chain_status::$is_operating(), exists(0x1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:418:5+672 - // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/timestamp.spec.move:4:9+93 - assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory, 1)); - - // assume Implies(chain_status::$is_operating(), Ge(timestamp::spec_now_microseconds(), reconfiguration::$last_reconfiguration_time())) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:418:5+672 - // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/reconfiguration.spec.move:8:9+137 - assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> ($1_timestamp_spec_now_microseconds($1_timestamp_CurrentTimeMicroseconds_$memory) >= $1_reconfiguration_$last_reconfiguration_time($1_reconfiguration_Configuration_$memory))); - - // @26 := save_mem(timestamp::CurrentTimeMicroseconds) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:418:5+1 - $1_timestamp_CurrentTimeMicroseconds_$memory#26 := $1_timestamp_CurrentTimeMicroseconds_$memory; - - // trace_local[schedule]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:418:5+1 - assume {:print "$track_local(59,7,0):", $t0} $t0 == $t0; - - // trace_local[start_timestamp_secs]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:418:5+1 - assume {:print "$track_local(59,7,1):", $t1} $t1 == $t1; - - // trace_local[period_duration]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:418:5+1 - assume {:print "$track_local(59,7,2):", $t2} $t2 == $t2; - - // $t3 := vector::length($t0) on_abort goto L10 with $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:423:17+25 - assume {:print "$at(2,20334,20359)"} true; - call $t3 := $1_vector_length'$1_fixed_point32_FixedPoint32'($t0); - if ($abort_flag) { - assume {:print "$at(2,20334,20359)"} true; - $t4 := $abort_code; - assume {:print "$track_abort(59,7):", $t4} $t4 == $t4; - goto L10; - } - - // $t5 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:423:45+1 - $t5 := 0; - assume $IsValid'u64'($t5); - - // $t6 := >($t3, $t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:423:43+1 - call $t6 := $Gt($t3, $t5); - - // if ($t6) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:423:9+88 - if ($t6) { goto L1; } else { goto L0; } - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:423:9+88 -L1: - - // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:423:9+88 - assume {:print "$at(2,20326,20414)"} true; - goto L2; - - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:423:72+23 -L0: - - // $t7 := 2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:423:72+23 - assume {:print "$at(2,20389,20412)"} true; - $t7 := 2; - assume $IsValid'u64'($t7); - - // $t8 := error::invalid_argument($t7) on_abort goto L10 with $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:423:48+48 - call $t8 := $1_error_invalid_argument($t7); - if ($abort_flag) { - assume {:print "$at(2,20365,20413)"} true; - $t4 := $abort_code; - assume {:print "$track_abort(59,7):", $t4} $t4 == $t4; - goto L10; - } - - // trace_abort($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:423:9+88 - assume {:print "$at(2,20326,20414)"} true; - assume {:print "$track_abort(59,7):", $t8} $t8 == $t8; - - // $t4 := move($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:423:9+88 - $t4 := $t8; - - // goto L10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:423:9+88 - goto L10; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:424:17+15 - assume {:print "$at(2,20432,20447)"} true; -L2: - - // $t9 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:424:35+1 - assume {:print "$at(2,20450,20451)"} true; - $t9 := 0; - assume $IsValid'u64'($t9); - - // $t10 := >($t2, $t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:424:33+1 - call $t10 := $Gt($t2, $t9); - - // if ($t10) goto L4 else goto L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:424:9+84 - if ($t10) { goto L4; } else { goto L3; } - - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:424:9+84 -L4: - - // goto L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:424:9+84 - assume {:print "$at(2,20424,20508)"} true; - goto L5; - - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:424:62+29 -L3: - - // $t11 := 3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:424:62+29 - assume {:print "$at(2,20477,20506)"} true; - $t11 := 3; - assume $IsValid'u64'($t11); - - // $t12 := error::invalid_argument($t11) on_abort goto L10 with $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:424:38+54 - call $t12 := $1_error_invalid_argument($t11); - if ($abort_flag) { - assume {:print "$at(2,20453,20507)"} true; - $t4 := $abort_code; - assume {:print "$track_abort(59,7):", $t4} $t4 == $t4; - goto L10; - } - - // trace_abort($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:424:9+84 - assume {:print "$at(2,20424,20508)"} true; - assume {:print "$track_abort(59,7):", $t12} $t12 == $t12; - - // $t4 := move($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:424:9+84 - $t4 := $t12; - - // goto L10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:424:9+84 - goto L10; - - // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:426:13+20 - assume {:print "$at(2,20539,20559)"} true; -L5: - - // $t13 := timestamp::now_seconds() on_abort goto L10 with $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:426:37+24 - assume {:print "$at(2,20563,20587)"} true; - call $t13 := $1_timestamp_now_seconds(); - if ($abort_flag) { - assume {:print "$at(2,20563,20587)"} true; - $t4 := $abort_code; - assume {:print "$track_abort(59,7):", $t4} $t4 == $t4; - goto L10; - } - - // $t14 := >=($t1, $t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:426:34+2 - call $t14 := $Ge($t1, $t13); - - // if ($t14) goto L7 else goto L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:425:9+142 - assume {:print "$at(2,20518,20660)"} true; - if ($t14) { goto L7; } else { goto L6; } - - // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:425:9+142 -L7: - - // goto L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:425:9+142 - assume {:print "$at(2,20518,20660)"} true; - goto L8; - - // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:427:37+23 - assume {:print "$at(2,20625,20648)"} true; -L6: - - // $t15 := 6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:427:37+23 - assume {:print "$at(2,20625,20648)"} true; - $t15 := 6; - assume $IsValid'u64'($t15); - - // $t16 := error::invalid_argument($t15) on_abort goto L10 with $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:427:13+48 - call $t16 := $1_error_invalid_argument($t15); - if ($abort_flag) { - assume {:print "$at(2,20601,20649)"} true; - $t4 := $abort_code; - assume {:print "$track_abort(59,7):", $t4} $t4 == $t4; - goto L10; - } - - // trace_abort($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:425:9+142 - assume {:print "$at(2,20518,20660)"} true; - assume {:print "$track_abort(59,7):", $t16} $t16 == $t16; - - // $t4 := move($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:425:9+142 - $t4 := $t16; - - // goto L10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:425:9+142 - goto L10; - - // label L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:431:13+8 - assume {:print "$at(2,20701,20709)"} true; -L8: - - // $t17 := 0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:434:33+1 - assume {:print "$at(2,20806,20807)"} true; - $t17 := 0; - assume $IsValid'u64'($t17); - - // $t18 := pack vesting::VestingSchedule($t0, $t1, $t2, $t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:430:9+147 - assume {:print "$at(2,20671,20818)"} true; - $t18 := $1_vesting_VestingSchedule($t0, $t1, $t2, $t17); - - // trace_return[0]($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:430:9+147 - assume {:print "$track_return(59,7,0):", $t18} $t18 == $t18; - - // label L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:436:5+1 - assume {:print "$at(2,20823,20824)"} true; -L9: - - // assert Not(Not(Gt(Len($t0), 0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:133:9+31 - assume {:print "$at(3,6293,6324)"} true; - assert {:msg "assert_failed(3,6293,6324): function does not abort under this condition"} - !!(LenVec($t0) > 0); - - // assert Not(Not(Gt($t2, 0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:134:9+33 - assume {:print "$at(3,6333,6366)"} true; - assert {:msg "assert_failed(3,6333,6366): function does not abort under this condition"} - !!($t2 > 0); - - // assert Not(Not(exists[@26](0x1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:135:9+72 - assume {:print "$at(3,6375,6447)"} true; - assert {:msg "assert_failed(3,6375,6447): function does not abort under this condition"} - !!$ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory#26, 1); - - // assert Not(Not(Ge($t1, timestamp::$now_seconds[@26]()))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:136:9+62 - assume {:print "$at(3,6456,6518)"} true; - assert {:msg "assert_failed(3,6456,6518): function does not abort under this condition"} - !!($t1 >= $1_timestamp_$now_seconds($1_timestamp_CurrentTimeMicroseconds_$memory#26)); - - // return $t18 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:136:9+62 - $ret0 := $t18; - return; - - // label L10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:436:5+1 - assume {:print "$at(2,20823,20824)"} true; -L10: - - // assert Or(Or(Or(Not(Gt(Len($t0), 0)), Not(Gt($t2, 0))), Not(exists[@26](0x1))), Not(Ge($t1, timestamp::$now_seconds[@26]()))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:128:5+399 - assume {:print "$at(3,6125,6524)"} true; - assert {:msg "assert_failed(3,6125,6524): abort not covered by any of the `aborts_if` clauses"} - (((!(LenVec($t0) > 0) || !($t2 > 0)) || !$ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory#26, 1)) || !($t1 >= $1_timestamp_$now_seconds($1_timestamp_CurrentTimeMicroseconds_$memory#26))); - - // abort($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:128:5+399 - $abort_code := $t4; - $abort_flag := true; - return; - -} - -// fun vesting::get_beneficiary [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:965:5+287 -procedure {:inline 1} $1_vesting_get_beneficiary(_$t0: $1_vesting_VestingContract, _$t1: int) returns ($ret0: int) -{ - // declare local variables - var $t2: int; - var $t3: Table int (int); - var $t4: bool; - var $t5: int; - var $t6: Table int (int); - var $t0: $1_vesting_VestingContract; - var $t1: int; - var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; - var $temp_0'address': int; - $t0 := _$t0; - $t1 := _$t1; - - // bytecode translation starts here - // trace_local[contract]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:965:5+1 - assume {:print "$at(2,45284,45285)"} true; - assume {:print "$track_local(59,10,0):", $t0} $t0 == $t0; - - // trace_local[shareholder]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:965:5+1 - assume {:print "$track_local(59,10,1):", $t1} $t1 == $t1; - - // $t3 := get_field.beneficiaries($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:966:38+23 - assume {:print "$at(2,45402,45425)"} true; - $t3 := $beneficiaries#$1_vesting_VestingContract($t0); - - // $t4 := simple_map::contains_key($t3, $t1) on_abort goto L4 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:966:13+63 - call $t4 := $1_simple_map_contains_key'address_address'($t3, $t1); - if ($abort_flag) { - assume {:print "$at(2,45377,45440)"} true; - $t5 := $abort_code; - assume {:print "$track_abort(59,10):", $t5} $t5 == $t5; - goto L4; - } - - // if ($t4) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:966:9+192 - if ($t4) { goto L1; } else { goto L0; } - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:967:34+8 - assume {:print "$at(2,45477,45485)"} true; -L1: - - // $t6 := get_field.beneficiaries($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:967:33+23 - assume {:print "$at(2,45476,45499)"} true; - $t6 := $beneficiaries#$1_vesting_VestingContract($t0); - - // $t2 := simple_map::borrow($t6, $t1) on_abort goto L4 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:967:14+57 - call $t2 := $1_simple_map_borrow'address_address'($t6, $t1); - if ($abort_flag) { - assume {:print "$at(2,45457,45514)"} true; - $t5 := $abort_code; - assume {:print "$track_abort(59,10):", $t5} $t5 == $t5; - goto L4; - } - - // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:966:9+192 - assume {:print "$at(2,45373,45565)"} true; - goto L2; - - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:966:9+192 -L0: - - // $t2 := $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:966:9+192 - assume {:print "$at(2,45373,45565)"} true; - $t2 := $t1; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:966:9+192 -L2: - - // trace_return[0]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:966:9+192 - assume {:print "$at(2,45373,45565)"} true; - assume {:print "$track_return(59,10,0):", $t2} $t2 == $t2; - - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:971:5+1 - assume {:print "$at(2,45570,45571)"} true; -L3: - - // return $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:971:5+1 - assume {:print "$at(2,45570,45571)"} true; - $ret0 := $t2; - return; - - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:971:5+1 -L4: - - // abort($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:971:5+1 - assume {:print "$at(2,45570,45571)"} true; - $abort_code := $t5; - $abort_flag := true; - return; - -} - -// fun vesting::get_beneficiary [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:965:5+287 -procedure {:timeLimit 900} $1_vesting_get_beneficiary$verify(_$t0: $1_vesting_VestingContract, _$t1: int) returns ($ret0: int) -{ - // declare local variables - var $t2: int; - var $t3: Table int (int); - var $t4: bool; - var $t5: int; - var $t6: Table int (int); - var $t0: $1_vesting_VestingContract; - var $t1: int; - var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; - var $temp_0'address': int; - $t0 := _$t0; - $t1 := _$t1; - - // verification entrypoint assumptions - call $InitVerification(); - - // bytecode translation starts here - // assume And(WellFormed($t0), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t0)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t0)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t0)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t0)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t0)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t0)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:965:5+1 - assume {:print "$at(2,45284,45285)"} true; - assume ($IsValid'$1_vesting_VestingContract'($t0) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t0)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t0)), addr)))) && (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t0)))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t0)))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; - (var j := $i_3; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t0)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t0)), j)) ==> $IsEqual'num'(i, j)))))))))); - - // assume WellFormed($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:965:5+1 - assume $IsValid'address'($t1); - - // trace_local[contract]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:965:5+1 - assume {:print "$track_local(59,10,0):", $t0} $t0 == $t0; - - // trace_local[shareholder]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:965:5+1 - assume {:print "$track_local(59,10,1):", $t1} $t1 == $t1; - - // $t3 := get_field.beneficiaries($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:966:38+23 - assume {:print "$at(2,45402,45425)"} true; - $t3 := $beneficiaries#$1_vesting_VestingContract($t0); - - // $t4 := simple_map::contains_key($t3, $t1) on_abort goto L4 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:966:13+63 - call $t4 := $1_simple_map_contains_key'address_address'($t3, $t1); - if ($abort_flag) { - assume {:print "$at(2,45377,45440)"} true; - $t5 := $abort_code; - assume {:print "$track_abort(59,10):", $t5} $t5 == $t5; - goto L4; - } - - // if ($t4) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:966:9+192 - if ($t4) { goto L1; } else { goto L0; } - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:967:34+8 - assume {:print "$at(2,45477,45485)"} true; -L1: - - // $t6 := get_field.beneficiaries($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:967:33+23 - assume {:print "$at(2,45476,45499)"} true; - $t6 := $beneficiaries#$1_vesting_VestingContract($t0); - - // $t2 := simple_map::borrow($t6, $t1) on_abort goto L4 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:967:14+57 - call $t2 := $1_simple_map_borrow'address_address'($t6, $t1); - if ($abort_flag) { - assume {:print "$at(2,45457,45514)"} true; - $t5 := $abort_code; - assume {:print "$track_abort(59,10):", $t5} $t5 == $t5; - goto L4; - } - - // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:966:9+192 - assume {:print "$at(2,45373,45565)"} true; - goto L2; - - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:966:9+192 -L0: - - // $t2 := $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:966:9+192 - assume {:print "$at(2,45373,45565)"} true; - $t2 := $t1; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:966:9+192 -L2: - - // trace_return[0]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:966:9+192 - assume {:print "$at(2,45373,45565)"} true; - assume {:print "$track_return(59,10,0):", $t2} $t2 == $t2; - - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:971:5+1 - assume {:print "$at(2,45570,45571)"} true; -L3: - - // assert Not(false) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:488:9+16 - assume {:print "$at(3,22100,22116)"} true; - assert {:msg "assert_failed(3,22100,22116): function does not abort under this condition"} - !false; - - // return $t2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:488:9+16 - $ret0 := $t2; - return; - - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:971:5+1 - assume {:print "$at(2,45570,45571)"} true; -L4: - - // assert false at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:487:5+112 - assume {:print "$at(3,22010,22122)"} true; - assert {:msg "assert_failed(3,22010,22122): abort not covered by any of the `aborts_if` clauses"} - false; - - // abort($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:487:5+112 - $abort_code := $t5; - $abort_flag := true; - return; - -} - -// fun vesting::get_role_holder [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:893:5+456 -procedure {:inline 1} $1_vesting_get_role_holder(_$t0: int, _$t1: $1_string_String) returns ($ret0: int) -{ - // declare local variables - var $t2: Table int (int); - var $t3: Table int (int); - var $t4: bool; - var $t5: int; - var $t6: int; - var $t7: int; - var $t8: $1_vesting_VestingAccountManagement; - var $t9: Table int (int); - var $t10: bool; - var $t11: int; - var $t12: int; - var $t13: int; - var $t0: int; - var $t1: $1_string_String; - var $temp_0'$1_simple_map_SimpleMap'$1_string_String_address'': Table int (int); - var $temp_0'$1_string_String': $1_string_String; - var $temp_0'address': int; - $t0 := _$t0; - $t1 := _$t1; - - // bytecode translation starts here - // assume Identical($t3, select vesting::VestingAccountManagement.roles(global($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:360:9+69 - assume {:print "$at(3,15721,15790)"} true; - assume ($t3 == $roles#$1_vesting_VestingAccountManagement($ResourceValue($1_vesting_VestingAccountManagement_$memory, $t0))); - - // trace_local[contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:893:5+1 - assume {:print "$at(2,41215,41216)"} true; - assume {:print "$track_local(59,11,0):", $t0} $t0 == $t0; - - // trace_local[role]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:893:5+1 - assume {:print "$track_local(59,11,1):", $t1} $t1 == $t1; - - // $t4 := exists($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:894:17+6 - assume {:print "$at(2,41344,41350)"} true; - $t4 := $ResourceExists($1_vesting_VestingAccountManagement_$memory, $t0); - - // if ($t4) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:894:9+108 - if ($t4) { goto L1; } else { goto L0; } - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:894:9+108 -L1: - - // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:894:9+108 - assume {:print "$at(2,41336,41444)"} true; - goto L2; - - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:894:86+29 -L0: - - // $t5 := 13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:894:86+29 - assume {:print "$at(2,41413,41442)"} true; - $t5 := 13; - assume $IsValid'u64'($t5); - - // $t6 := error::not_found($t5) on_abort goto L7 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:894:69+47 - call $t6 := $1_error_not_found($t5); - if ($abort_flag) { - assume {:print "$at(2,41396,41443)"} true; - $t7 := $abort_code; - assume {:print "$track_abort(59,11):", $t7} $t7 == $t7; - goto L7; - } - - // trace_abort($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:894:9+108 - assume {:print "$at(2,41336,41444)"} true; - assume {:print "$track_abort(59,11):", $t6} $t6 == $t6; - - // $t7 := move($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:894:9+108 - $t7 := $t6; - - // goto L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:894:9+108 - goto L7; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:895:62+16 - assume {:print "$at(2,41507,41523)"} true; -L2: - - // $t8 := get_global($t0) on_abort goto L7 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:895:22+13 - assume {:print "$at(2,41467,41480)"} true; - if (!$ResourceExists($1_vesting_VestingAccountManagement_$memory, $t0)) { - call $ExecFailureAbort(); - } else { - $t8 := $ResourceValue($1_vesting_VestingAccountManagement_$memory, $t0); - } - if ($abort_flag) { - assume {:print "$at(2,41467,41480)"} true; - $t7 := $abort_code; - assume {:print "$track_abort(59,11):", $t7} $t7 == $t7; - goto L7; - } - - // $t9 := get_field.roles($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:895:21+64 - $t9 := $roles#$1_vesting_VestingAccountManagement($t8); - - // trace_local[roles]($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:895:13+5 - assume {:print "$track_local(59,11,2):", $t9} $t9 == $t9; - - // $t10 := simple_map::contains_key($t9, $t1) on_abort goto L7 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:896:17+38 - assume {:print "$at(2,41548,41586)"} true; - call $t10 := $1_simple_map_contains_key'$1_string_String_address'($t9, $t1); - if ($abort_flag) { - assume {:print "$at(2,41548,41586)"} true; - $t7 := $abort_code; - assume {:print "$track_abort(59,11):", $t7} $t7 == $t7; - goto L7; - } - - // if ($t10) goto L4 else goto L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:896:9+82 - if ($t10) { goto L4; } else { goto L3; } - - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:896:9+82 -L4: - - // goto L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:896:9+82 - assume {:print "$at(2,41540,41622)"} true; - goto L5; - - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:896:9+82 -L3: - - // $t11 := 14 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:896:74+15 - assume {:print "$at(2,41605,41620)"} true; - $t11 := 14; - assume $IsValid'u64'($t11); - - // $t12 := error::not_found($t11) on_abort goto L7 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:896:57+33 - call $t12 := $1_error_not_found($t11); - if ($abort_flag) { - assume {:print "$at(2,41588,41621)"} true; - $t7 := $abort_code; - assume {:print "$track_abort(59,11):", $t7} $t7 == $t7; - goto L7; - } - - // trace_abort($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:896:9+82 - assume {:print "$at(2,41540,41622)"} true; - assume {:print "$track_abort(59,11):", $t12} $t12 == $t12; - - // $t7 := move($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:896:9+82 - $t7 := $t12; - - // goto L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:896:9+82 - goto L7; - - // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:897:29+5 - assume {:print "$at(2,41652,41657)"} true; -L5: - - // $t13 := simple_map::borrow($t9, $t1) on_abort goto L7 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:897:10+32 - assume {:print "$at(2,41633,41665)"} true; - call $t13 := $1_simple_map_borrow'$1_string_String_address'($t9, $t1); - if ($abort_flag) { - assume {:print "$at(2,41633,41665)"} true; - $t7 := $abort_code; - assume {:print "$track_abort(59,11):", $t7} $t7 == $t7; - goto L7; - } - - // trace_return[0]($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:897:9+33 - assume {:print "$track_return(59,11,0):", $t13} $t13 == $t13; - - // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:898:5+1 - assume {:print "$at(2,41670,41671)"} true; -L6: - - // return $t13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:898:5+1 - assume {:print "$at(2,41670,41671)"} true; - $ret0 := $t13; - return; - - // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:898:5+1 -L7: - - // abort($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:898:5+1 - assume {:print "$at(2,41670,41671)"} true; - $abort_code := $t7; - $abort_flag := true; - return; - -} - -// fun vesting::get_role_holder [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:893:5+456 -procedure {:timeLimit 900} $1_vesting_get_role_holder$verify(_$t0: int, _$t1: $1_string_String) returns ($ret0: int) -{ - // declare local variables - var $t2: Table int (int); - var $t3: Table int (int); - var $t4: bool; - var $t5: int; - var $t6: int; - var $t7: int; - var $t8: $1_vesting_VestingAccountManagement; - var $t9: Table int (int); - var $t10: bool; - var $t11: int; - var $t12: int; - var $t13: int; - var $t0: int; - var $t1: $1_string_String; - var $temp_0'$1_simple_map_SimpleMap'$1_string_String_address'': Table int (int); - var $temp_0'$1_string_String': $1_string_String; - var $temp_0'address': int; - var $1_vesting_VestingAccountManagement_$memory#60: $Memory $1_vesting_VestingAccountManagement; - $t0 := _$t0; - $t1 := _$t1; - - // verification entrypoint assumptions - call $InitVerification(); - - // bytecode translation starts here - // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:893:5+1 - assume {:print "$at(2,41215,41216)"} true; - assume $IsValid'address'($t0); - - // assume WellFormed($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:893:5+1 - assume $IsValid'$1_string_String'($t1); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:893:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingAccountManagement_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingAccountManagement_$memory, $a_0); - ($IsValid'$1_vesting_VestingAccountManagement'($rsc)))); - - // assume Identical($t3, select vesting::VestingAccountManagement.roles(global($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:360:9+69 - assume {:print "$at(3,15721,15790)"} true; - assume ($t3 == $roles#$1_vesting_VestingAccountManagement($ResourceValue($1_vesting_VestingAccountManagement_$memory, $t0))); - - // @60 := save_mem(vesting::VestingAccountManagement) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:893:5+1 - assume {:print "$at(2,41215,41216)"} true; - $1_vesting_VestingAccountManagement_$memory#60 := $1_vesting_VestingAccountManagement_$memory; - - // trace_local[contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:893:5+1 - assume {:print "$track_local(59,11,0):", $t0} $t0 == $t0; - - // trace_local[role]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:893:5+1 - assume {:print "$track_local(59,11,1):", $t1} $t1 == $t1; - - // $t4 := exists($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:894:17+6 - assume {:print "$at(2,41344,41350)"} true; - $t4 := $ResourceExists($1_vesting_VestingAccountManagement_$memory, $t0); - - // if ($t4) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:894:9+108 - if ($t4) { goto L1; } else { goto L0; } - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:894:9+108 -L1: - - // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:894:9+108 - assume {:print "$at(2,41336,41444)"} true; - goto L2; - - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:894:86+29 -L0: - - // $t5 := 13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:894:86+29 - assume {:print "$at(2,41413,41442)"} true; - $t5 := 13; - assume $IsValid'u64'($t5); - - // $t6 := error::not_found($t5) on_abort goto L7 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:894:69+47 - call $t6 := $1_error_not_found($t5); - if ($abort_flag) { - assume {:print "$at(2,41396,41443)"} true; - $t7 := $abort_code; - assume {:print "$track_abort(59,11):", $t7} $t7 == $t7; - goto L7; - } - - // trace_abort($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:894:9+108 - assume {:print "$at(2,41336,41444)"} true; - assume {:print "$track_abort(59,11):", $t6} $t6 == $t6; - - // $t7 := move($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:894:9+108 - $t7 := $t6; - - // goto L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:894:9+108 - goto L7; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:895:62+16 - assume {:print "$at(2,41507,41523)"} true; -L2: - - // $t8 := get_global($t0) on_abort goto L7 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:895:22+13 - assume {:print "$at(2,41467,41480)"} true; - if (!$ResourceExists($1_vesting_VestingAccountManagement_$memory, $t0)) { - call $ExecFailureAbort(); - } else { - $t8 := $ResourceValue($1_vesting_VestingAccountManagement_$memory, $t0); - } - if ($abort_flag) { - assume {:print "$at(2,41467,41480)"} true; - $t7 := $abort_code; - assume {:print "$track_abort(59,11):", $t7} $t7 == $t7; - goto L7; - } - - // $t9 := get_field.roles($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:895:21+64 - $t9 := $roles#$1_vesting_VestingAccountManagement($t8); - - // trace_local[roles]($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:895:13+5 - assume {:print "$track_local(59,11,2):", $t9} $t9 == $t9; - - // $t10 := simple_map::contains_key($t9, $t1) on_abort goto L7 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:896:17+38 - assume {:print "$at(2,41548,41586)"} true; - call $t10 := $1_simple_map_contains_key'$1_string_String_address'($t9, $t1); - if ($abort_flag) { - assume {:print "$at(2,41548,41586)"} true; - $t7 := $abort_code; - assume {:print "$track_abort(59,11):", $t7} $t7 == $t7; - goto L7; - } - - // if ($t10) goto L4 else goto L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:896:9+82 - if ($t10) { goto L4; } else { goto L3; } - - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:896:9+82 -L4: - - // goto L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:896:9+82 - assume {:print "$at(2,41540,41622)"} true; - goto L5; - - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:896:9+82 -L3: - - // $t11 := 14 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:896:74+15 - assume {:print "$at(2,41605,41620)"} true; - $t11 := 14; - assume $IsValid'u64'($t11); - - // $t12 := error::not_found($t11) on_abort goto L7 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:896:57+33 - call $t12 := $1_error_not_found($t11); - if ($abort_flag) { - assume {:print "$at(2,41588,41621)"} true; - $t7 := $abort_code; - assume {:print "$track_abort(59,11):", $t7} $t7 == $t7; - goto L7; - } - - // trace_abort($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:896:9+82 - assume {:print "$at(2,41540,41622)"} true; - assume {:print "$track_abort(59,11):", $t12} $t12 == $t12; - - // $t7 := move($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:896:9+82 - $t7 := $t12; - - // goto L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:896:9+82 - goto L7; - - // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:897:29+5 - assume {:print "$at(2,41652,41657)"} true; -L5: - - // $t13 := simple_map::borrow($t9, $t1) on_abort goto L7 with $t7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:897:10+32 - assume {:print "$at(2,41633,41665)"} true; - call $t13 := $1_simple_map_borrow'$1_string_String_address'($t9, $t1); - if ($abort_flag) { - assume {:print "$at(2,41633,41665)"} true; - $t7 := $abort_code; - assume {:print "$track_abort(59,11):", $t7} $t7 == $t7; - goto L7; - } - - // trace_return[0]($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:897:9+33 - assume {:print "$track_return(59,11,0):", $t13} $t13 == $t13; - - // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:898:5+1 - assume {:print "$at(2,41670,41671)"} true; -L6: - - // assert Not(Not(exists[@60]($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:359:9+62 - assume {:print "$at(3,15650,15712)"} true; - assert {:msg "assert_failed(3,15650,15712): function does not abort under this condition"} - !!$ResourceExists($1_vesting_VestingAccountManagement_$memory#60, $t0); - - // assert Not(Not(simple_map::spec_contains_key[]($t3, $t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:361:9+53 - assume {:print "$at(3,15799,15852)"} true; - assert {:msg "assert_failed(3,15799,15852): function does not abort under this condition"} - !!$1_simple_map_spec_contains_key'$1_string_String_address'($t3, $t1); - - // return $t13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:361:9+53 - $ret0 := $t13; - return; - - // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:898:5+1 - assume {:print "$at(2,41670,41671)"} true; -L7: - - // assert Or(Not(exists[@60]($t0)), Not(simple_map::spec_contains_key[]($t3, $t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:358:5+289 - assume {:print "$at(3,15569,15858)"} true; - assert {:msg "assert_failed(3,15569,15858): abort not covered by any of the `aborts_if` clauses"} - (!$ResourceExists($1_vesting_VestingAccountManagement_$memory#60, $t0) || !$1_simple_map_spec_contains_key'$1_string_String_address'($t3, $t1)); - - // abort($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:358:5+289 - $abort_code := $t7; - $abort_flag := true; - return; - -} - -// fun vesting::get_vesting_account_signer [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:903:5+315 -procedure {:timeLimit 900} $1_vesting_get_vesting_account_signer$verify(_$t0: $signer, _$t1: int) returns ($ret0: $signer) -{ - // declare local variables - var $t2: $Mutation ($1_vesting_VestingContract); - var $t3: $1_vesting_VestingContract; - var $t4: $Mutation ($1_vesting_VestingContract); - var $t5: int; - var $t6: $1_vesting_VestingContract; - var $t7: $1_vesting_VestingContract; - var $t8: $signer; - var $t0: $signer; - var $t1: int; - var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; - var $temp_0'address': int; - var $temp_0'signer': $signer; - var $1_vesting_VestingContract_$memory#47: $Memory $1_vesting_VestingContract; - $t0 := _$t0; - $t1 := _$t1; - - // verification entrypoint assumptions - call $InitVerification(); - - // bytecode translation starts here - // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:903:5+1 - assume {:print "$at(2,41923,41924)"} true; - assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($addr#$signer($t0)); - - // assume WellFormed($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:903:5+1 - assume $IsValid'address'($t1); - - // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:903:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); - (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; - (var j := $i_4; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); - - // assume Identical($t3, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:504:9+65 - assume {:print "$at(3,22754,22819)"} true; - assume ($t3 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); - - // @47 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:903:5+1 - assume {:print "$at(2,41923,41924)"} true; - $1_vesting_VestingContract_$memory#47 := $1_vesting_VestingContract_$memory; - - // trace_local[admin]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:903:5+1 - assume {:print "$track_local(59,12,0):", $t0} $t0 == $t0; - - // trace_local[contract_address]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:903:5+1 - assume {:print "$track_local(59,12,1):", $t1} $t1 == $t1; - - // $t4 := borrow_global($t1) on_abort goto L2 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:904:32+17 - assume {:print "$at(2,42070,42087)"} true; - if (!$ResourceExists($1_vesting_VestingContract_$memory, $t1)) { - call $ExecFailureAbort(); - } else { - $t4 := $Mutation($Global($t1), EmptyVec(), $ResourceValue($1_vesting_VestingContract_$memory, $t1)); - } - if ($abort_flag) { - assume {:print "$at(2,42070,42087)"} true; - $t5 := $abort_code; - assume {:print "$track_abort(59,12):", $t5} $t5 == $t5; - goto L2; - } - - // trace_local[vesting_contract]($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:904:13+16 - $temp_0'$1_vesting_VestingContract' := $Dereference($t4); - assume {:print "$track_local(59,12,2):", $temp_0'$1_vesting_VestingContract'} $temp_0'$1_vesting_VestingContract' == $temp_0'$1_vesting_VestingContract'; - - // $t6 := read_ref($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:905:21+25 - assume {:print "$at(2,42144,42169)"} true; - $t6 := $Dereference($t4); - - // vesting::verify_admin($t0, $t6) on_abort goto L2 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:905:9+37 - call $1_vesting_verify_admin($t0, $t6); - if ($abort_flag) { - assume {:print "$at(2,42132,42169)"} true; - $t5 := $abort_code; - assume {:print "$track_abort(59,12):", $t5} $t5 == $t5; - goto L2; - } - - // $t7 := read_ref($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:906:45+16 - assume {:print "$at(2,42215,42231)"} true; - $t7 := $Dereference($t4); - - // assert forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t4)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t4)), addr)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 - // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 - assume {:print "$at(66,538,673)"} true; - assert {:msg "assert_failed(66,538,673): data invariant does not hold"} - (forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t4))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t4))), addr)))); - - // assert forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t4)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t4)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t4)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t4)), j)), Eq(i, j)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 - // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 - assume {:print "$at(66,738,867)"} true; - assert {:msg "assert_failed(66,738,867): data invariant does not hold"} - (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t4))))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t4))))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; - (var j := $i_3; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t4))), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t4))), j)) ==> $IsEqual'num'(i, j)))))))); - - // $t8 := vesting::get_vesting_account_signer_internal($t7) on_abort goto L2 with $t5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:906:9+53 - assume {:print "$at(2,42179,42232)"} true; - call $t8 := $1_vesting_get_vesting_account_signer_internal($t7); - if ($abort_flag) { - assume {:print "$at(2,42179,42232)"} true; - $t5 := $abort_code; - assume {:print "$track_abort(59,12):", $t5} $t5 == $t5; - goto L2; - } - - // trace_return[0]($t8) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:906:9+53 - assume {:print "$track_return(59,12,0):", $t8} $t8 == $t8; - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:907:5+1 - assume {:print "$at(2,42237,42238)"} true; -L1: - - // assert Not(Not(exists[@47]($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:503:9+53 - assume {:print "$at(3,22692,22745)"} true; - assert {:msg "assert_failed(3,22692,22745): function does not abort under this condition"} - !!$ResourceExists($1_vesting_VestingContract_$memory#47, $t1); - - // assert Not(Neq
(signer::$address_of[]($t0), select vesting::VestingContract.admin($t3))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:505:9+62 - assume {:print "$at(3,22828,22890)"} true; - assert {:msg "assert_failed(3,22828,22890): function does not abort under this condition"} - !!$IsEqual'address'($1_signer_$address_of($t0), $admin#$1_vesting_VestingContract($t3)); - - // return $t8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:505:9+62 - $ret0 := $t8; - return; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:907:5+1 - assume {:print "$at(2,42237,42238)"} true; -L2: - - // assert Or(Not(exists[@47]($t1)), Neq
(signer::$address_of[]($t0), select vesting::VestingContract.admin($t3))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:364:5+127 - assume {:print "$at(3,15864,15991)"} true; - assert {:msg "assert_failed(3,15864,15991): abort not covered by any of the `aborts_if` clauses"} - (!$ResourceExists($1_vesting_VestingContract_$memory#47, $t1) || !$IsEqual'address'($1_signer_$address_of($t0), $admin#$1_vesting_VestingContract($t3))); - - // abort($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:364:5+127 - $abort_code := $t5; - $abort_flag := true; - return; - -} - -// fun vesting::get_vesting_account_signer_internal [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:909:5+168 -procedure {:inline 1} $1_vesting_get_vesting_account_signer_internal(_$t0: $1_vesting_VestingContract) returns ($ret0: $signer) -{ - // declare local variables - var $t1: $1_account_SignerCapability; - var $t2: int; - var $t3: $signer; - var $t4: int; - var $t0: $1_vesting_VestingContract; - var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; - var $temp_0'signer': $signer; - $t0 := _$t0; - - // bytecode translation starts here - // trace_local[vesting_contract]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:909:5+1 - assume {:print "$at(2,42244,42245)"} true; - assume {:print "$track_local(59,13,0):", $t0} $t0 == $t0; - - // $t1 := get_field.signer_cap($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:910:48+28 - assume {:print "$at(2,42377,42405)"} true; - $t1 := $signer_cap#$1_vesting_VestingContract($t0); - - // assume Identical($t2, select account::SignerCapability.account($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:475:9+30 - assume {:print "$at(80,22873,22903)"} true; - assume ($t2 == $account#$1_account_SignerCapability($t1)); - - // $t3 := account::create_signer_with_capability($t1) on_abort goto L2 with $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:910:9+68 - assume {:print "$at(2,42338,42406)"} true; - call $t3 := $1_account_create_signer_with_capability($t1); - if ($abort_flag) { - assume {:print "$at(2,42338,42406)"} true; - $t4 := $abort_code; - assume {:print "$track_abort(59,13):", $t4} $t4 == $t4; - goto L2; - } - - // trace_return[0]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:910:9+68 - assume {:print "$track_return(59,13,0):", $t3} $t3 == $t3; - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:911:5+1 - assume {:print "$at(2,42411,42412)"} true; -L1: - - // return $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:911:5+1 - assume {:print "$at(2,42411,42412)"} true; - $ret0 := $t3; - return; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:911:5+1 -L2: - - // abort($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:911:5+1 - assume {:print "$at(2,42411,42412)"} true; - $abort_code := $t4; - $abort_flag := true; - return; - -} - -// fun vesting::get_vesting_account_signer_internal [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:909:5+168 -procedure {:timeLimit 900} $1_vesting_get_vesting_account_signer_internal$verify(_$t0: $1_vesting_VestingContract) returns ($ret0: $signer) -{ - // declare local variables - var $t1: $1_account_SignerCapability; - var $t2: int; - var $t3: $signer; - var $t4: int; - var $t0: $1_vesting_VestingContract; - var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; - var $temp_0'signer': $signer; - $t0 := _$t0; - - // verification entrypoint assumptions - call $InitVerification(); - - // bytecode translation starts here - // assume And(WellFormed($t0), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t0)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t0)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t0)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t0)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t0)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t0)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:909:5+1 - assume {:print "$at(2,42244,42245)"} true; - assume ($IsValid'$1_vesting_VestingContract'($t0) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t0)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t0)), addr)))) && (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t0)))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t0)))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; - (var j := $i_3; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t0)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t0)), j)) ==> $IsEqual'num'(i, j)))))))))); - - // trace_local[vesting_contract]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:909:5+1 - assume {:print "$track_local(59,13,0):", $t0} $t0 == $t0; - - // $t1 := get_field.signer_cap($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:910:48+28 - assume {:print "$at(2,42377,42405)"} true; - $t1 := $signer_cap#$1_vesting_VestingContract($t0); - - // assume Identical($t2, select account::SignerCapability.account($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/account.spec.move:475:9+30 - assume {:print "$at(80,22873,22903)"} true; - assume ($t2 == $account#$1_account_SignerCapability($t1)); - - // $t3 := account::create_signer_with_capability($t1) on_abort goto L2 with $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:910:9+68 - assume {:print "$at(2,42338,42406)"} true; - call $t3 := $1_account_create_signer_with_capability($t1); - if ($abort_flag) { - assume {:print "$at(2,42338,42406)"} true; - $t4 := $abort_code; - assume {:print "$track_abort(59,13):", $t4} $t4 == $t4; - goto L2; - } - - // trace_return[0]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:910:9+68 - assume {:print "$track_return(59,13,0):", $t3} $t3 == $t3; - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:911:5+1 - assume {:print "$at(2,42411,42412)"} true; -L1: - - // assert Not(false) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:369:9+16 - assume {:print "$at(3,16092,16108)"} true; - assert {:msg "assert_failed(3,16092,16108): function does not abort under this condition"} - !false; - - // return $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:369:9+16 - $ret0 := $t3; - return; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:911:5+1 - assume {:print "$at(2,42411,42412)"} true; -L2: - - // assert false at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:368:5+117 - assume {:print "$at(3,15997,16114)"} true; - assert {:msg "assert_failed(3,15997,16114): abort not covered by any of the `aborts_if` clauses"} - false; - - // abort($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:368:5+117 - $abort_code := $t4; - $abort_flag := true; - return; - -} - -// fun vesting::operator_commission_percentage [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:302:5+275 -procedure {:timeLimit 900} $1_vesting_operator_commission_percentage$verify(_$t0: int) returns ($ret0: int) -{ - // declare local variables - var $t1: int; - var $t2: $1_vesting_VestingContract; - var $t3: $1_vesting_StakingInfo; - var $t4: int; - var $t0: int; - var $temp_0'address': int; - var $temp_0'u64': int; - var $1_vesting_VestingContract_$memory#41: $Memory $1_vesting_VestingContract; - $t0 := _$t0; - - // verification entrypoint assumptions - call $InitVerification(); - - // bytecode translation starts here - // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:302:5+1 - assume {:print "$at(2,14085,14086)"} true; - assume $IsValid'address'($t0); - - // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:302:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); - (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; - (var j := $i_4; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); - - // @41 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:302:5+1 - $1_vesting_VestingContract_$memory#41 := $1_vesting_VestingContract_$memory; - - // trace_local[vesting_contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:302:5+1 - assume {:print "$track_local(59,15,0):", $t0} $t0 == $t0; - - // vesting::assert_vesting_contract_exists($t0) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:303:9+56 - assume {:print "$at(2,14202,14258)"} true; - call $1_vesting_assert_vesting_contract_exists($t0); - if ($abort_flag) { - assume {:print "$at(2,14202,14258)"} true; - $t1 := $abort_code; - assume {:print "$track_abort(59,15):", $t1} $t1 == $t1; - goto L2; - } - - // $t2 := get_global($t0) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:304:9+13 - assume {:print "$at(2,14268,14281)"} true; - if (!$ResourceExists($1_vesting_VestingContract_$memory, $t0)) { - call $ExecFailureAbort(); - } else { - $t2 := $ResourceValue($1_vesting_VestingContract_$memory, $t0); - } - if ($abort_flag) { - assume {:print "$at(2,14268,14281)"} true; - $t1 := $abort_code; - assume {:print "$track_abort(59,15):", $t1} $t1 == $t1; - goto L2; - } - - // $t3 := get_field.staking($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:304:9+64 - $t3 := $staking#$1_vesting_VestingContract($t2); - - // $t4 := get_field.commission_percentage($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:304:9+86 - $t4 := $commission_percentage#$1_vesting_StakingInfo($t3); - - // trace_return[0]($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:304:9+86 - assume {:print "$track_return(59,15,0):", $t4} $t4 == $t4; - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:305:5+1 - assume {:print "$at(2,14359,14360)"} true; -L1: - - // assert Not(Not(exists[@41]($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:28:9+61 - assume {:print "$at(3,970,1031)"} true; - assert {:msg "assert_failed(3,970,1031): function does not abort under this condition"} - !!$ResourceExists($1_vesting_VestingContract_$memory#41, $t0); - - // return $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:28:9+61 - $ret0 := $t4; - return; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:305:5+1 - assume {:print "$at(2,14359,14360)"} true; -L2: - - // assert Not(exists[@41]($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:27:5+153 - assume {:print "$at(3,884,1037)"} true; - assert {:msg "assert_failed(3,884,1037): abort not covered by any of the `aborts_if` clauses"} - !$ResourceExists($1_vesting_VestingContract_$memory#41, $t0); - - // abort($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:27:5+153 - $abort_code := $t1; - $abort_flag := true; - return; - -} - -// fun vesting::period_duration_secs [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:271:5+268 -procedure {:timeLimit 900} $1_vesting_period_duration_secs$verify(_$t0: int) returns ($ret0: int) -{ - // declare local variables - var $t1: int; - var $t2: $1_vesting_VestingContract; - var $t3: $1_vesting_VestingSchedule; - var $t4: int; - var $t0: int; - var $temp_0'address': int; - var $temp_0'u64': int; - var $1_vesting_VestingContract_$memory#40: $Memory $1_vesting_VestingContract; - $t0 := _$t0; - - // verification entrypoint assumptions - call $InitVerification(); - - // bytecode translation starts here - // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:271:5+1 - assume {:print "$at(2,12272,12273)"} true; - assume $IsValid'address'($t0); - - // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:271:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); - (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; - (var j := $i_4; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); - - // @40 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:271:5+1 - $1_vesting_VestingContract_$memory#40 := $1_vesting_VestingContract_$memory; - - // trace_local[vesting_contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:271:5+1 - assume {:print "$track_local(59,16,0):", $t0} $t0 == $t0; - - // vesting::assert_vesting_contract_exists($t0) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:272:9+56 - assume {:print "$at(2,12379,12435)"} true; - call $1_vesting_assert_vesting_contract_exists($t0); - if ($abort_flag) { - assume {:print "$at(2,12379,12435)"} true; - $t1 := $abort_code; - assume {:print "$track_abort(59,16):", $t1} $t1 == $t1; - goto L2; - } - - // $t2 := get_global($t0) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:273:9+13 - assume {:print "$at(2,12445,12458)"} true; - if (!$ResourceExists($1_vesting_VestingContract_$memory, $t0)) { - call $ExecFailureAbort(); - } else { - $t2 := $ResourceValue($1_vesting_VestingContract_$memory, $t0); - } - if ($abort_flag) { - assume {:print "$at(2,12445,12458)"} true; - $t1 := $abort_code; - assume {:print "$track_abort(59,16):", $t1} $t1 == $t1; - goto L2; - } - - // $t3 := get_field.vesting_schedule($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:273:9+73 - $t3 := $vesting_schedule#$1_vesting_VestingContract($t2); - - // $t4 := get_field.period_duration($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:273:9+89 - $t4 := $period_duration#$1_vesting_VestingSchedule($t3); - - // trace_return[0]($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:273:9+89 - assume {:print "$track_return(59,16,0):", $t4} $t4 == $t4; - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:274:5+1 - assume {:print "$at(2,12539,12540)"} true; -L1: - - // assert Not(Not(exists[@40]($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:16:9+61 - assume {:print "$at(3,501,562)"} true; - assert {:msg "assert_failed(3,501,562): function does not abort under this condition"} - !!$ResourceExists($1_vesting_VestingContract_$memory#40, $t0); - - // return $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:16:9+61 - $ret0 := $t4; - return; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:274:5+1 - assume {:print "$at(2,12539,12540)"} true; -L2: - - // assert Not(exists[@40]($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:15:5+143 - assume {:print "$at(3,425,568)"} true; - assert {:msg "assert_failed(3,425,568): abort not covered by any of the `aborts_if` clauses"} - !$ResourceExists($1_vesting_VestingContract_$memory#40, $t0); - - // abort($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:15:5+143 - $abort_code := $t1; - $abort_flag := true; - return; - -} - -// fun vesting::remaining_grant [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:283:5+246 -procedure {:timeLimit 900} $1_vesting_remaining_grant$verify(_$t0: int) returns ($ret0: int) -{ - // declare local variables - var $t1: int; - var $t2: $1_vesting_VestingContract; - var $t3: int; - var $t0: int; - var $temp_0'address': int; - var $temp_0'u64': int; - var $1_vesting_VestingContract_$memory#39: $Memory $1_vesting_VestingContract; - $t0 := _$t0; - - // verification entrypoint assumptions - call $InitVerification(); - - // bytecode translation starts here - // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:283:5+1 - assume {:print "$at(2,13028,13029)"} true; - assume $IsValid'address'($t0); - - // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:283:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); - (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; - (var j := $i_4; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); - - // @39 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:283:5+1 - $1_vesting_VestingContract_$memory#39 := $1_vesting_VestingContract_$memory; - - // trace_local[vesting_contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:283:5+1 - assume {:print "$track_local(59,17,0):", $t0} $t0 == $t0; - - // vesting::assert_vesting_contract_exists($t0) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:284:9+56 - assume {:print "$at(2,13130,13186)"} true; - call $1_vesting_assert_vesting_contract_exists($t0); - if ($abort_flag) { - assume {:print "$at(2,13130,13186)"} true; - $t1 := $abort_code; - assume {:print "$track_abort(59,17):", $t1} $t1 == $t1; - goto L2; - } - - // $t2 := get_global($t0) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:285:9+13 - assume {:print "$at(2,13196,13209)"} true; - if (!$ResourceExists($1_vesting_VestingContract_$memory, $t0)) { - call $ExecFailureAbort(); - } else { - $t2 := $ResourceValue($1_vesting_VestingContract_$memory, $t0); - } - if ($abort_flag) { - assume {:print "$at(2,13196,13209)"} true; - $t1 := $abort_code; - assume {:print "$track_abort(59,17):", $t1} $t1 == $t1; - goto L2; - } - - // $t3 := get_field.remaining_grant($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:285:9+72 - $t3 := $remaining_grant#$1_vesting_VestingContract($t2); - - // trace_return[0]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:285:9+72 - assume {:print "$track_return(59,17,0):", $t3} $t3 == $t3; - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:286:5+1 - assume {:print "$at(2,13273,13274)"} true; -L1: - - // assert Not(Not(exists[@39]($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:20:9+61 - assume {:print "$at(3,645,706)"} true; - assert {:msg "assert_failed(3,645,706): function does not abort under this condition"} - !!$ResourceExists($1_vesting_VestingContract_$memory#39, $t0); - - // return $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:20:9+61 - $ret0 := $t3; - return; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:286:5+1 - assume {:print "$at(2,13273,13274)"} true; -L2: - - // assert Not(exists[@39]($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:19:5+138 - assume {:print "$at(3,574,712)"} true; - assert {:msg "assert_failed(3,574,712): abort not covered by any of the `aborts_if` clauses"} - !$ResourceExists($1_vesting_VestingContract_$memory#39, $t0); - - // abort($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:19:5+138 - $abort_code := $t1; - $abort_flag := true; - return; - -} - -// fun vesting::reset_beneficiary [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:843:5+755 -procedure {:timeLimit 900} $1_vesting_reset_beneficiary$verify(_$t0: $signer, _$t1: int, _$t2: int) returns () -{ - // declare local variables - var $t3: bool; - var $t4: int; - var $t5: int; - var $t6: $Mutation (Table int (int)); - var $t7: $Mutation ($1_vesting_VestingContract); - var $t8: int; - var $t9: $1_vesting_VestingContract; - var $t10: Table int (int); - var $t11: $1_string_String; - var $t12: $Mutation ($1_vesting_VestingContract); - var $t13: int; - var $t14: int; - var $t15: int; - var $t16: bool; - var $t17: bool; - var $t18: Vec (int); - var $t19: $1_string_String; - var $t20: Table int (int); - var $t21: int; - var $t22: int; - var $t23: int; - var $t24: $Mutation (Table int (int)); - var $t25: Table int (int); - var $t26: bool; - var $t27: int; - var $t28: int; - var $t29: $1_vesting_VestingContract; - var $t0: $signer; - var $t1: int; - var $t2: int; - var $temp_0'$1_simple_map_SimpleMap'address_address'': Table int (int); - var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; - var $temp_0'address': int; - var $temp_0'signer': $signer; - var $1_vesting_VestingContract_$memory#79: $Memory $1_vesting_VestingContract; - var $1_vesting_VestingAccountManagement_$memory#80: $Memory $1_vesting_VestingAccountManagement; - $t0 := _$t0; - $t1 := _$t1; - $t2 := _$t2; - - // verification entrypoint assumptions - call $InitVerification(); - - // bytecode translation starts here - // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:843:5+1 - assume {:print "$at(2,39177,39178)"} true; - assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($addr#$signer($t0)); - - // assume WellFormed($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:843:5+1 - assume $IsValid'address'($t1); - - // assume WellFormed($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:843:5+1 - assume $IsValid'address'($t2); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:843:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingAccountManagement_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingAccountManagement_$memory, $a_0); - ($IsValid'$1_vesting_VestingAccountManagement'($rsc)))); - - // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:843:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); - (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; - (var j := $i_4; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); - - // assume Identical($t8, signer::$address_of($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:325:9+39 - assume {:print "$at(3,14149,14188)"} true; - assume ($t8 == $1_signer_$address_of($t0)); - - // assume Identical($t9, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:326:9+65 - assume {:print "$at(3,14197,14262)"} true; - assume ($t9 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); - - // assume Identical($t10, select vesting::VestingAccountManagement.roles(global($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:329:9+69 - assume {:print "$at(3,14495,14564)"} true; - assume ($t10 == $roles#$1_vesting_VestingAccountManagement($ResourceValue($1_vesting_VestingAccountManagement_$memory, $t1))); - - // assume Identical($t11, string::spec_utf8([82, 79, 76, 69, 95, 66, 69, 78, 69, 70, 73, 67, 73, 65, 82, 89, 95, 82, 69, 83, 69, 84, 84, 69, 82])) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:330:9+61 - assume {:print "$at(3,14573,14634)"} true; - assume ($t11 == $1_string_spec_utf8(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(82, 79, 76, 69), MakeVec4(95, 66, 69, 78)), MakeVec4(69, 70, 73, 67)), MakeVec4(73, 65, 82, 89)), MakeVec4(95, 82, 69, 83)), MakeVec4(69, 84, 84, 69)), MakeVec1(82)))); - - // @80 := save_mem(vesting::VestingAccountManagement) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:843:5+1 - assume {:print "$at(2,39177,39178)"} true; - $1_vesting_VestingAccountManagement_$memory#80 := $1_vesting_VestingAccountManagement_$memory; - - // @79 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:843:5+1 - $1_vesting_VestingContract_$memory#79 := $1_vesting_VestingContract_$memory; - - // trace_local[account]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:843:5+1 - assume {:print "$track_local(59,18,0):", $t0} $t0 == $t0; - - // trace_local[contract_address]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:843:5+1 - assume {:print "$track_local(59,18,1):", $t1} $t1 == $t1; - - // trace_local[shareholder]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:843:5+1 - assume {:print "$track_local(59,18,2):", $t2} $t2 == $t2; - - // $t12 := borrow_global($t1) on_abort goto L10 with $t13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:848:32+17 - assume {:print "$at(2,39394,39411)"} true; - if (!$ResourceExists($1_vesting_VestingContract_$memory, $t1)) { - call $ExecFailureAbort(); - } else { - $t12 := $Mutation($Global($t1), EmptyVec(), $ResourceValue($1_vesting_VestingContract_$memory, $t1)); - } - if ($abort_flag) { - assume {:print "$at(2,39394,39411)"} true; - $t13 := $abort_code; - assume {:print "$track_abort(59,18):", $t13} $t13 == $t13; - goto L10; - } - - // trace_local[vesting_contract]($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:848:13+16 - $temp_0'$1_vesting_VestingContract' := $Dereference($t12); - assume {:print "$track_local(59,18,7):", $temp_0'$1_vesting_VestingContract'} $temp_0'$1_vesting_VestingContract' == $temp_0'$1_vesting_VestingContract'; - - // $t14 := signer::address_of($t0) on_abort goto L10 with $t13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:849:20+27 - assume {:print "$at(2,39467,39494)"} true; - call $t14 := $1_signer_address_of($t0); - if ($abort_flag) { - assume {:print "$at(2,39467,39494)"} true; - $t13 := $abort_code; - assume {:print "$track_abort(59,18):", $t13} $t13 == $t13; - goto L10; - } - - // trace_local[addr]($t14) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:849:13+4 - assume {:print "$track_local(59,18,5):", $t14} $t14 == $t14; - - // $t15 := get_field.admin($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:851:21+22 - assume {:print "$at(2,39533,39555)"} true; - $t15 := $admin#$1_vesting_VestingContract($Dereference($t12)); - - // $t16 := ==($t14, $t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:851:18+2 - $t16 := $IsEqual'address'($t14, $t15); - - // if ($t16) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:851:13+124 - if ($t16) { goto L1; } else { goto L0; } - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:851:13+124 -L1: - - // $t17 := true at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:851:13+124 - assume {:print "$at(2,39525,39649)"} true; - $t17 := true; - assume $IsValid'bool'($t17); - - // $t3 := $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:851:13+124 - $t3 := $t17; - - // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:851:13+124 - goto L2; - - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:852:17+4 - assume {:print "$at(2,39575,39579)"} true; -L0: - - // $t18 := [82, 79, 76, 69, 95, 66, 69, 78, 69, 70, 73, 67, 73, 65, 82, 89, 95, 82, 69, 83, 69, 84, 84, 69, 82] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:852:64+25 - assume {:print "$at(2,39622,39647)"} true; - $t18 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(82, 79, 76, 69), MakeVec4(95, 66, 69, 78)), MakeVec4(69, 70, 73, 67)), MakeVec4(73, 65, 82, 89)), MakeVec4(95, 82, 69, 83)), MakeVec4(69, 84, 84, 69)), MakeVec1(82)); - assume $IsValid'vec'u8''($t18); - - // $t19 := string::utf8($t18) on_abort goto L10 with $t13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:852:59+31 - call $t19 := $1_string_utf8($t18); - if ($abort_flag) { - assume {:print "$at(2,39617,39648)"} true; - $t13 := $abort_code; - assume {:print "$track_abort(59,18):", $t13} $t13 == $t13; - goto L10; - } - - // assume Identical($t20, select vesting::VestingAccountManagement.roles(global($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:360:9+69 - assume {:print "$at(3,15721,15790)"} true; - assume ($t20 == $roles#$1_vesting_VestingAccountManagement($ResourceValue($1_vesting_VestingAccountManagement_$memory, $t1))); - - // $t21 := vesting::get_role_holder($t1, $t19) on_abort goto L10 with $t13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:852:25+66 - assume {:print "$at(2,39583,39649)"} true; - call $t21 := $1_vesting_get_role_holder($t1, $t19); - if ($abort_flag) { - assume {:print "$at(2,39583,39649)"} true; - $t13 := $abort_code; - assume {:print "$track_abort(59,18):", $t13} $t13 == $t13; - goto L10; - } - - // $t3 := ==($t14, $t21) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:852:22+2 - $t3 := $IsEqual'address'($t14, $t21); - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:851:13+124 - assume {:print "$at(2,39525,39649)"} true; -L2: - - // if ($t3) goto L4 else goto L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:850:9+214 - assume {:print "$at(2,39504,39718)"} true; - if ($t3) { goto L4; } else { goto L3; } - - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:850:9+214 -L4: - - // goto L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:850:9+214 - assume {:print "$at(2,39504,39718)"} true; - goto L5; - - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:850:9+214 -L3: - - // assert forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t12)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t12)), addr)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 - // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 - assume {:print "$at(66,538,673)"} true; - assert {:msg "assert_failed(66,538,673): data invariant does not hold"} - (forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))), addr)))); - - // assert forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t12)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t12)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t12)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t12)), j)), Eq(i, j)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 - // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 - assume {:print "$at(66,738,867)"} true; - assert {:msg "assert_failed(66,738,867): data invariant does not hold"} - (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; - (var j := $i_3; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))), j)) ==> $IsEqual'num'(i, j)))))))); - - // destroy($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:850:9+214 - assume {:print "$at(2,39504,39718)"} true; - - // $t22 := 15 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:853:38+18 - assume {:print "$at(2,39688,39706)"} true; - $t22 := 15; - assume $IsValid'u64'($t22); - - // $t23 := error::permission_denied($t22) on_abort goto L10 with $t13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:853:13+44 - call $t23 := $1_error_permission_denied($t22); - if ($abort_flag) { - assume {:print "$at(2,39663,39707)"} true; - $t13 := $abort_code; - assume {:print "$track_abort(59,18):", $t13} $t13 == $t13; - goto L10; - } - - // trace_abort($t23) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:850:9+214 - assume {:print "$at(2,39504,39718)"} true; - assume {:print "$track_abort(59,18):", $t23} $t23 == $t23; - - // $t13 := move($t23) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:850:9+214 - $t13 := $t23; - - // goto L10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:850:9+214 - goto L10; - - // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:856:34+16 - assume {:print "$at(2,39754,39770)"} true; -L5: - - // $t24 := borrow_field.beneficiaries($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:856:29+35 - assume {:print "$at(2,39749,39784)"} true; - $t24 := $ChildMutation($t12, 3, $beneficiaries#$1_vesting_VestingContract($Dereference($t12))); - - // trace_local[beneficiaries]($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:856:13+13 - $temp_0'$1_simple_map_SimpleMap'address_address'' := $Dereference($t24); - assume {:print "$track_local(59,18,6):", $temp_0'$1_simple_map_SimpleMap'address_address''} $temp_0'$1_simple_map_SimpleMap'address_address'' == $temp_0'$1_simple_map_SimpleMap'address_address''; - - // $t25 := read_ref($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:857:37+29 - assume {:print "$at(2,39822,39851)"} true; - $t25 := $Dereference($t24); - - // $t26 := simple_map::contains_key($t25, $t2) on_abort goto L10 with $t13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:857:13+53 - call $t26 := $1_simple_map_contains_key'address_address'($t25, $t2); - if ($abort_flag) { - assume {:print "$at(2,39798,39851)"} true; - $t13 := $abort_code; - assume {:print "$track_abort(59,18):", $t13} $t13 == $t13; - goto L10; - } - - // if ($t26) goto L7 else goto L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:857:9+131 - if ($t26) { goto L7; } else { goto L6; } - - // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:858:32+13 - assume {:print "$at(2,39886,39899)"} true; -L7: - - // ($t27, $t28) := simple_map::remove($t24, $t2) on_abort goto L10 with $t13 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:858:13+47 - assume {:print "$at(2,39867,39914)"} true; - call $t27,$t28,$t24 := $1_simple_map_remove'address_address'($t24, $t2); - if ($abort_flag) { - assume {:print "$at(2,39867,39914)"} true; - $t13 := $abort_code; - assume {:print "$track_abort(59,18):", $t13} $t13 == $t13; - goto L10; - } - - // write_back[Reference($t12).beneficiaries (simple_map::SimpleMap)]($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:858:13+47 - $t12 := $UpdateMutation($t12, $Update'$1_vesting_VestingContract'_beneficiaries($Dereference($t12), $Dereference($t24))); - - // assert forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t12)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t12)), addr)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 - // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 - assume {:print "$at(66,538,673)"} true; - assert {:msg "assert_failed(66,538,673): data invariant does not hold"} - (forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))), addr)))); - - // assert forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t12)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t12)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t12)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t12)), j)), Eq(i, j)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 - // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 - assume {:print "$at(66,738,867)"} true; - assert {:msg "assert_failed(66,738,867): data invariant does not hold"} - (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; - (var j := $i_3; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))), j)) ==> $IsEqual'num'(i, j)))))))); - - // write_back[vesting::VestingContract@]($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:858:13+47 - assume {:print "$at(2,39867,39914)"} true; - $1_vesting_VestingContract_$memory := $ResourceUpdate($1_vesting_VestingContract_$memory, $GlobalLocationAddress($t12), - $Dereference($t12)); - - // destroy($t28) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:858:13+47 - - // destroy($t27) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:858:13+47 - - // goto L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:858:60+1 - goto L8; - - // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:857:9+131 - assume {:print "$at(2,39794,39925)"} true; -L6: - - // assert forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t12)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t12)), addr)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 - // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 - assume {:print "$at(66,538,673)"} true; - assert {:msg "assert_failed(66,538,673): data invariant does not hold"} - (forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))), addr)))); - - // assert forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t12)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t12)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t12)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t12)), j)), Eq(i, j)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 - // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 - assume {:print "$at(66,738,867)"} true; - assert {:msg "assert_failed(66,738,867): data invariant does not hold"} - (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; - (var j := $i_3; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))), j)) ==> $IsEqual'num'(i, j)))))))); - - // destroy($t24) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:857:9+131 - assume {:print "$at(2,39794,39925)"} true; - - // label L8 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:859:10+1 - assume {:print "$at(2,39925,39926)"} true; -L8: - - // label L9 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:860:5+1 - assume {:print "$at(2,39931,39932)"} true; -L9: - - // assume Identical($t29, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:334:9+75 - assume {:print "$at(3,14836,14911)"} true; - assume ($t29 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); - - // assert Not(Not(exists[@79]($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:323:9+53 - assume {:print "$at(3,14086,14139)"} true; - assert {:msg "assert_failed(3,14086,14139): function does not abort under this condition"} - !!$ResourceExists($1_vesting_VestingContract_$memory#79, $t1); - - // assert Not(And(Neq
($t8, select vesting::VestingContract.admin($t9)), Not(string::spec_internal_check_utf8[]([82, 79, 76, 69, 95, 66, 69, 78, 69, 70, 73, 67, 73, 65, 82, 89, 95, 82, 69, 83, 69, 84, 84, 69, 82])))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:327:9+110 - assume {:print "$at(3,14271,14381)"} true; - assert {:msg "assert_failed(3,14271,14381): function does not abort under this condition"} - !(!$IsEqual'address'($t8, $admin#$1_vesting_VestingContract($t9)) && !$1_string_spec_internal_check_utf8(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(82, 79, 76, 69), MakeVec4(95, 66, 69, 78)), MakeVec4(69, 70, 73, 67)), MakeVec4(73, 65, 82, 89)), MakeVec4(95, 82, 69, 83)), MakeVec4(69, 84, 84, 69)), MakeVec1(82)))); - - // assert Not(And(Neq
($t8, select vesting::VestingContract.admin($t9)), Not(exists[@80]($t1)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:328:9+96 - assume {:print "$at(3,14390,14486)"} true; - assert {:msg "assert_failed(3,14390,14486): function does not abort under this condition"} - !(!$IsEqual'address'($t8, $admin#$1_vesting_VestingContract($t9)) && !$ResourceExists($1_vesting_VestingAccountManagement_$memory#80, $t1)); - - // assert Not(And(Neq
($t8, select vesting::VestingContract.admin($t9)), Not(simple_map::spec_contains_key[]($t10, $t11)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:331:9+88 - assume {:print "$at(3,14643,14731)"} true; - assert {:msg "assert_failed(3,14643,14731): function does not abort under this condition"} - !(!$IsEqual'address'($t8, $admin#$1_vesting_VestingContract($t9)) && !$1_simple_map_spec_contains_key'$1_string_String_address'($t10, $t11)); - - // assert Not(And(Neq
($t8, select vesting::VestingContract.admin($t9)), Neq
($t8, simple_map::spec_get[]($t10, $t11)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:332:9+86 - assume {:print "$at(3,14740,14826)"} true; - assert {:msg "assert_failed(3,14740,14826): function does not abort under this condition"} - !(!$IsEqual'address'($t8, $admin#$1_vesting_VestingContract($t9)) && !$IsEqual'address'($t8, $1_simple_map_spec_get'$1_string_String_address'($t10, $t11))); - - // assert Not(simple_map::spec_contains_key(select vesting::VestingContract.beneficiaries($t29), $t2)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:335:9+88 - assume {:print "$at(3,14920,15008)"} true; - assert {:msg "assert_failed(3,14920,15008): post-condition does not hold"} - !$1_simple_map_spec_contains_key'address_address'($beneficiaries#$1_vesting_VestingContract($t29), $t2); - - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:335:9+88 - return; - - // label L10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:860:5+1 - assume {:print "$at(2,39931,39932)"} true; -L10: - - // assert Or(Or(Or(Or(Not(exists[@79]($t1)), And(Neq
($t8, select vesting::VestingContract.admin($t9)), Not(string::spec_internal_check_utf8[]([82, 79, 76, 69, 95, 66, 69, 78, 69, 70, 73, 67, 73, 65, 82, 89, 95, 82, 69, 83, 69, 84, 84, 69, 82])))), And(Neq
($t8, select vesting::VestingContract.admin($t9)), Not(exists[@80]($t1)))), And(Neq
($t8, select vesting::VestingContract.admin($t9)), Not(simple_map::spec_contains_key[]($t10, $t11)))), And(Neq
($t8, select vesting::VestingContract.admin($t9)), Neq
($t8, simple_map::spec_get[]($t10, $t11)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:318:5+1059 - assume {:print "$at(3,13955,15014)"} true; - assert {:msg "assert_failed(3,13955,15014): abort not covered by any of the `aborts_if` clauses"} - ((((!$ResourceExists($1_vesting_VestingContract_$memory#79, $t1) || (!$IsEqual'address'($t8, $admin#$1_vesting_VestingContract($t9)) && !$1_string_spec_internal_check_utf8(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(82, 79, 76, 69), MakeVec4(95, 66, 69, 78)), MakeVec4(69, 70, 73, 67)), MakeVec4(73, 65, 82, 89)), MakeVec4(95, 82, 69, 83)), MakeVec4(69, 84, 84, 69)), MakeVec1(82))))) || (!$IsEqual'address'($t8, $admin#$1_vesting_VestingContract($t9)) && !$ResourceExists($1_vesting_VestingAccountManagement_$memory#80, $t1))) || (!$IsEqual'address'($t8, $admin#$1_vesting_VestingContract($t9)) && !$1_simple_map_spec_contains_key'$1_string_String_address'($t10, $t11))) || (!$IsEqual'address'($t8, $admin#$1_vesting_VestingContract($t9)) && !$IsEqual'address'($t8, $1_simple_map_spec_get'$1_string_String_address'($t10, $t11)))); - - // abort($t13) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:318:5+1059 - $abort_code := $t13; - $abort_flag := true; - return; - -} - -// fun vesting::set_beneficiary [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:807:5+1396 -procedure {:timeLimit 900} $1_vesting_set_beneficiary$verify(_$t0: $signer, _$t1: int, _$t2: int, _$t3: int) returns () -{ - // declare local variables - var $t4: int; - var $t5: int; - var $t6: $Mutation (Table int (int)); - var $t7: $Mutation (int); - var $t8: int; - var $t9: $Mutation ($1_vesting_VestingContract); - var $t10: $1_vesting_VestingContract; - var $t11: int; - var $t12: $Mutation ($1_vesting_VestingContract); - var $t13: $1_vesting_VestingContract; - var $t14: $1_vesting_VestingContract; - var $t15: int; - var $t16: $Mutation (Table int (int)); - var $t17: Table int (int); - var $t18: bool; - var $t19: $Mutation (int); - var $t20: $Mutation ($1_event_EventHandle'$1_vesting_SetBeneficiaryEvent'); - var $t21: int; - var $t22: $1_vesting_SetBeneficiaryEvent; - var $t23: $1_vesting_VestingContract; - var $t0: $signer; - var $t1: int; - var $t2: int; - var $t3: int; - var $temp_0'$1_simple_map_SimpleMap'address_address'': Table int (int); - var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; - var $temp_0'address': int; - var $temp_0'signer': $signer; - var $1_account_Account_$memory#74: $Memory $1_account_Account; - var $1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory#75: $Memory $1_coin_CoinStore'$1_aptos_coin_AptosCoin'; - var $1_vesting_VestingContract_$memory#76: $Memory $1_vesting_VestingContract; - $t0 := _$t0; - $t1 := _$t1; - $t2 := _$t2; - $t3 := _$t3; - - // verification entrypoint assumptions - call $InitVerification(); - - // bytecode translation starts here - // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:807:5+1 - assume {:print "$at(2,37644,37645)"} true; - assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($addr#$signer($t0)); - - // assume WellFormed($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:807:5+1 - assume $IsValid'address'($t1); - - // assume WellFormed($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:807:5+1 - assume $IsValid'address'($t2); - - // assume WellFormed($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:807:5+1 - assume $IsValid'address'($t3); - - // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.rotation_capability_offer($rsc)))), 1), Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.signer_capability_offer($rsc)))), 1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:807:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_account_Account_$memory, $a_0)}(var $rsc := $ResourceValue($1_account_Account_$memory, $a_0); - (($IsValid'$1_account_Account'($rsc) && ((LenVec($vec#$1_option_Option'address'($for#$1_account_CapabilityOffer'$1_account_RotationCapability'($rotation_capability_offer#$1_account_Account($rsc)))) <= 1) && (LenVec($vec#$1_option_Option'address'($for#$1_account_CapabilityOffer'$1_account_SignerCapability'($signer_capability_offer#$1_account_Account($rsc)))) <= 1)))))); - - // assume forall $rsc: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: select option::Option.vec(select coin::CoinInfo.supply($rsc)): And(And(And(And(And(Iff(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($elem)), option::$is_none(select optional_aggregator::OptionalAggregator.integer($elem))), Iff(option::$is_some(select optional_aggregator::OptionalAggregator.integer($elem)), option::$is_none(select optional_aggregator::OptionalAggregator.aggregator($elem)))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.integer($elem)), Le(select optional_aggregator::Integer.value(option::$borrow(select optional_aggregator::OptionalAggregator.integer($elem))), select optional_aggregator::Integer.limit(option::$borrow(select optional_aggregator::OptionalAggregator.integer($elem)))))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($elem)), Le(aggregator::spec_aggregator_get_val(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($elem))), aggregator::spec_get_limit(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($elem)))))), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.aggregator($elem))), 1)), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.integer($elem))), 1)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:807:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $a_0); - (($IsValid'$1_coin_CoinInfo'$1_aptos_coin_AptosCoin''($rsc) && ((LenVec($vec#$1_option_Option'$1_optional_aggregator_OptionalAggregator'($supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($rsc))) <= 1) && (var $range_1 := $vec#$1_option_Option'$1_optional_aggregator_OptionalAggregator'($supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($rsc)); (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); - ((((((($1_option_$is_some'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)) <==> $1_option_$is_none'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)) ==> ($value#$1_optional_aggregator_Integer($1_option_$borrow'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) <= $limit#$1_optional_aggregator_Integer($1_option_$borrow'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)))))) && ($1_option_$is_some'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem))) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)))))) && (LenVec($vec#$1_option_Option'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem))) <= 1)) && (LenVec($vec#$1_option_Option'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) <= 1))))))))))); - - // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:807:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory, $a_0); - ($IsValid'$1_coin_CoinStore'$1_aptos_coin_AptosCoin''($rsc)))); - - // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:807:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $a_0); - ($IsValid'$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin''($rsc)))); - - // assume exists>(0x0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:807:5+1 - assume $ResourceExists($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, 0); - - // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:807:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, $a_0); - ($IsValid'$1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin''($rsc)))); - - // assume exists>(0x0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:807:5+1 - assume $ResourceExists($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, 0); - - // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:807:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); - (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; - (var j := $i_4; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); - - // assume Identical($t10, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:504:9+65 - assume {:print "$at(3,22754,22819)"} true; - assume ($t10 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); - - // @74 := save_mem(account::Account) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:807:5+1 - assume {:print "$at(2,37644,37645)"} true; - $1_account_Account_$memory#74 := $1_account_Account_$memory; - - // @75 := save_mem(coin::CoinStore) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:807:5+1 - $1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory#75 := $1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory; - - // @76 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:807:5+1 - $1_vesting_VestingContract_$memory#76 := $1_vesting_VestingContract_$memory; - - // trace_local[admin]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:807:5+1 - assume {:print "$track_local(59,20,0):", $t0} $t0 == $t0; - - // trace_local[contract_address]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:807:5+1 - assume {:print "$track_local(59,20,1):", $t1} $t1 == $t1; - - // trace_local[shareholder]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:807:5+1 - assume {:print "$track_local(59,20,2):", $t2} $t2 == $t2; - - // trace_local[new_beneficiary]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:807:5+1 - assume {:print "$track_local(59,20,3):", $t3} $t3 == $t3; - - // aptos_account::assert_account_is_registered_for_apt($t3) on_abort goto L4 with $t11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:815:9+53 - assume {:print "$at(2,38064,38117)"} true; - call $1_aptos_account_assert_account_is_registered_for_apt($t3); - if ($abort_flag) { - assume {:print "$at(2,38064,38117)"} true; - $t11 := $abort_code; - assume {:print "$track_abort(59,20):", $t11} $t11 == $t11; - goto L4; - } - - // $t12 := borrow_global($t1) on_abort goto L4 with $t11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:817:32+17 - assume {:print "$at(2,38151,38168)"} true; - if (!$ResourceExists($1_vesting_VestingContract_$memory, $t1)) { - call $ExecFailureAbort(); - } else { - $t12 := $Mutation($Global($t1), EmptyVec(), $ResourceValue($1_vesting_VestingContract_$memory, $t1)); - } - if ($abort_flag) { - assume {:print "$at(2,38151,38168)"} true; - $t11 := $abort_code; - assume {:print "$track_abort(59,20):", $t11} $t11 == $t11; - goto L4; - } - - // trace_local[vesting_contract]($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:817:13+16 - $temp_0'$1_vesting_VestingContract' := $Dereference($t12); - assume {:print "$track_local(59,20,9):", $temp_0'$1_vesting_VestingContract'} $temp_0'$1_vesting_VestingContract' == $temp_0'$1_vesting_VestingContract'; - - // $t13 := read_ref($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:818:21+25 - assume {:print "$at(2,38225,38250)"} true; - $t13 := $Dereference($t12); - - // vesting::verify_admin($t0, $t13) on_abort goto L4 with $t11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:818:9+37 - call $1_vesting_verify_admin($t0, $t13); - if ($abort_flag) { - assume {:print "$at(2,38213,38250)"} true; - $t11 := $abort_code; - assume {:print "$track_abort(59,20):", $t11} $t11 == $t11; - goto L4; - } - - // $t14 := read_ref($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:820:46+31 - assume {:print "$at(2,38298,38329)"} true; - $t14 := $Dereference($t12); - - // $t15 := vesting::get_beneficiary($t14, $t2) on_abort goto L4 with $t11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:820:31+46 - call $t15 := $1_vesting_get_beneficiary($t14, $t2); - if ($abort_flag) { - assume {:print "$at(2,38283,38329)"} true; - $t11 := $abort_code; - assume {:print "$track_abort(59,20):", $t11} $t11 == $t11; - goto L4; - } - - // trace_local[old_beneficiary]($t15) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:820:13+15 - assume {:print "$track_local(59,20,8):", $t15} $t15 == $t15; - - // $t16 := borrow_field.beneficiaries($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:821:29+35 - assume {:print "$at(2,38359,38394)"} true; - $t16 := $ChildMutation($t12, 3, $beneficiaries#$1_vesting_VestingContract($Dereference($t12))); - - // trace_local[beneficiaries]($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:821:13+13 - $temp_0'$1_simple_map_SimpleMap'address_address'' := $Dereference($t16); - assume {:print "$track_local(59,20,6):", $temp_0'$1_simple_map_SimpleMap'address_address''} $temp_0'$1_simple_map_SimpleMap'address_address'' == $temp_0'$1_simple_map_SimpleMap'address_address''; - - // $t17 := read_ref($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:822:37+29 - assume {:print "$at(2,38432,38461)"} true; - $t17 := $Dereference($t16); - - // $t18 := simple_map::contains_key($t17, $t2) on_abort goto L4 with $t11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:822:13+53 - call $t18 := $1_simple_map_contains_key'address_address'($t17, $t2); - if ($abort_flag) { - assume {:print "$at(2,38408,38461)"} true; - $t11 := $abort_code; - assume {:print "$track_abort(59,20):", $t11} $t11 == $t11; - goto L4; - } - - // if ($t18) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:822:9+288 - if ($t18) { goto L1; } else { goto L0; } - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:823:54+13 - assume {:print "$at(2,38518,38531)"} true; -L1: - - // $t19 := simple_map::borrow_mut($t16, $t2) on_abort goto L4 with $t11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:823:31+51 - assume {:print "$at(2,38495,38546)"} true; - call $t19,$t16 := $1_simple_map_borrow_mut'address_address'($t16, $t2); - if ($abort_flag) { - assume {:print "$at(2,38495,38546)"} true; - $t11 := $abort_code; - assume {:print "$track_abort(59,20):", $t11} $t11 == $t11; - goto L4; - } - - // trace_local[beneficiary]($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:823:17+11 - $temp_0'address' := $Dereference($t19); - assume {:print "$track_local(59,20,7):", $temp_0'address'} $temp_0'address' == $temp_0'address'; - - // write_ref($t19, $t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:824:13+30 - assume {:print "$at(2,38560,38590)"} true; - $t19 := $UpdateMutation($t19, $t3); - - // write_back[Reference($t16)[]]($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:824:13+30 - $t16 := $UpdateMutation($t16, UpdateTable($Dereference($t16), ReadVec(p#$Mutation($t19), LenVec(p#$Mutation($t16))), $Dereference($t19))); - - // write_back[Reference($t12).beneficiaries (simple_map::SimpleMap)]($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:824:13+30 - $t12 := $UpdateMutation($t12, $Update'$1_vesting_VestingContract'_beneficiaries($Dereference($t12), $Dereference($t16))); - - // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:824:43+1 - goto L2; - - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:826:29+13 - assume {:print "$at(2,38637,38650)"} true; -L0: - - // simple_map::add($t16, $t2, $t3) on_abort goto L4 with $t11 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:826:13+60 - assume {:print "$at(2,38621,38681)"} true; - call $t16 := $1_simple_map_add'address_address'($t16, $t2, $t3); - if ($abort_flag) { - assume {:print "$at(2,38621,38681)"} true; - $t11 := $abort_code; - assume {:print "$track_abort(59,20):", $t11} $t11 == $t11; - goto L4; - } - - // write_back[Reference($t12).beneficiaries (simple_map::SimpleMap)]($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:826:13+60 - $t12 := $UpdateMutation($t12, $Update'$1_vesting_VestingContract'_beneficiaries($Dereference($t12), $Dereference($t16))); - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:830:18+16 - assume {:print "$at(2,38732,38748)"} true; -L2: - - // $t20 := borrow_field.set_beneficiary_events($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:830:13+44 - assume {:print "$at(2,38727,38771)"} true; - $t20 := $ChildMutation($t12, 12, $set_beneficiary_events#$1_vesting_VestingContract($Dereference($t12))); - - // $t21 := get_field.admin($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:832:24+22 - assume {:print "$at(2,38830,38852)"} true; - $t21 := $admin#$1_vesting_VestingContract($Dereference($t12)); - - // $t22 := pack vesting::SetBeneficiaryEvent($t21, $t1, $t2, $t15, $t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:831:13+237 - assume {:print "$at(2,38785,39022)"} true; - $t22 := $1_vesting_SetBeneficiaryEvent($t21, $t1, $t2, $t15, $t3); - - // opaque begin: event::emit_event($t20, $t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:829:9+330 - assume {:print "$at(2,38703,39033)"} true; - - // opaque end: event::emit_event($t20, $t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:829:9+330 - - // write_back[Reference($t12).set_beneficiary_events (event::EventHandle)]($t20) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:829:9+330 - $t12 := $UpdateMutation($t12, $Update'$1_vesting_VestingContract'_set_beneficiary_events($Dereference($t12), $Dereference($t20))); - - // assert forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t12)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t12)), addr)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 - // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 - assume {:print "$at(66,538,673)"} true; - assert {:msg "assert_failed(66,538,673): data invariant does not hold"} - (forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))), addr)))); - - // assert forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t12)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t12)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t12)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t12)), j)), Eq(i, j)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 - // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 - assume {:print "$at(66,738,867)"} true; - assert {:msg "assert_failed(66,738,867): data invariant does not hold"} - (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; - (var j := $i_3; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t12))), j)) ==> $IsEqual'num'(i, j)))))))); - - // write_back[vesting::VestingContract@]($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:829:9+330 - assume {:print "$at(2,38703,39033)"} true; - $1_vesting_VestingContract_$memory := $ResourceUpdate($1_vesting_VestingContract_$memory, $GlobalLocationAddress($t12), - $Dereference($t12)); - - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:839:5+1 - assume {:print "$at(2,39039,39040)"} true; -L3: - - // assume Identical($t23, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:314:9+70 - assume {:print "$at(3,13782,13852)"} true; - assume ($t23 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); - - // assert Not(Not(account::$exists_at[@74]($t3))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:311:9+47 - assume {:print "$at(3,13613,13660)"} true; - assert {:msg "assert_failed(3,13613,13660): function does not abort under this condition"} - !!$1_account_$exists_at($1_account_Account_$memory#74, $t3); - - // assert Not(Not(coin::$is_account_registered[@75]($t3))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:312:9+67 - assume {:print "$at(3,13669,13736)"} true; - assert {:msg "assert_failed(3,13669,13736): function does not abort under this condition"} - !!$1_coin_$is_account_registered'$1_aptos_coin_AptosCoin'($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory#75, $t3); - - // assert Not(Not(exists[@76]($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:503:9+53 - assume {:print "$at(3,22692,22745)"} true; - assert {:msg "assert_failed(3,22692,22745): function does not abort under this condition"} - !!$ResourceExists($1_vesting_VestingContract_$memory#76, $t1); - - // assert Not(Neq
(signer::$address_of[]($t0), select vesting::VestingContract.admin($t10))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:505:9+62 - assume {:print "$at(3,22828,22890)"} true; - assert {:msg "assert_failed(3,22828,22890): function does not abort under this condition"} - !!$IsEqual'address'($1_signer_$address_of($t0), $admin#$1_vesting_VestingContract($t10)); - - // assert simple_map::spec_contains_key(select vesting::VestingContract.beneficiaries($t23), $t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:315:9+82 - assume {:print "$at(3,13861,13943)"} true; - assert {:msg "assert_failed(3,13861,13943): post-condition does not hold"} - $1_simple_map_spec_contains_key'address_address'($beneficiaries#$1_vesting_VestingContract($t23), $t2); - - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:315:9+82 - return; - - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:839:5+1 - assume {:print "$at(2,39039,39040)"} true; -L4: - - // assert Or(Or(Or(Not(account::$exists_at[@74]($t3)), Not(coin::$is_account_registered[@75]($t3))), Not(exists[@76]($t1))), Neq
(signer::$address_of[]($t0), select vesting::VestingContract.admin($t10))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:305:5+497 - assume {:print "$at(3,13452,13949)"} true; - assert {:msg "assert_failed(3,13452,13949): abort not covered by any of the `aborts_if` clauses"} - (((!$1_account_$exists_at($1_account_Account_$memory#74, $t3) || !$1_coin_$is_account_registered'$1_aptos_coin_AptosCoin'($1_coin_CoinStore'$1_aptos_coin_AptosCoin'_$memory#75, $t3)) || !$ResourceExists($1_vesting_VestingContract_$memory#76, $t1)) || !$IsEqual'address'($1_signer_$address_of($t0), $admin#$1_vesting_VestingContract($t10))); - - // abort($t11) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:305:5+497 - $abort_code := $t11; - $abort_flag := true; - return; - -} - -// fun vesting::set_beneficiary_resetter [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:885:5+314 -procedure {:timeLimit 900} $1_vesting_set_beneficiary_resetter$verify(_$t0: $signer, _$t1: int, _$t2: int) returns () -{ - // declare local variables - var $t3: $1_vesting_VestingContract; - var $t4: Vec (int); - var $t5: $1_string_String; - var $t6: int; - var $t7: $1_vesting_VestingContract; - var $t0: $signer; - var $t1: int; - var $t2: int; - var $temp_0'address': int; - var $temp_0'signer': $signer; - var $1_vesting_VestingContract_$memory#73: $Memory $1_vesting_VestingContract; - $t0 := _$t0; - $t1 := _$t1; - $t2 := _$t2; - - // verification entrypoint assumptions - call $InitVerification(); - - // bytecode translation starts here - // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:885:5+1 - assume {:print "$at(2,40895,40896)"} true; - assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($addr#$signer($t0)); - - // assume WellFormed($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:885:5+1 - assume $IsValid'address'($t1); - - // assume WellFormed($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:885:5+1 - assume $IsValid'address'($t2); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:885:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingAccountManagement_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingAccountManagement_$memory, $a_0); - ($IsValid'$1_vesting_VestingAccountManagement'($rsc)))); - - // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:885:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); - (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; - (var j := $i_4; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); - - // assume Identical($t3, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:495:9+65 - assume {:print "$at(3,22296,22361)"} true; - assume ($t3 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); - - // @73 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:885:5+1 - assume {:print "$at(2,40895,40896)"} true; - $1_vesting_VestingContract_$memory#73 := $1_vesting_VestingContract_$memory; - - // trace_local[admin]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:885:5+1 - assume {:print "$track_local(59,21,0):", $t0} $t0 == $t0; - - // trace_local[contract_address]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:885:5+1 - assume {:print "$track_local(59,21,1):", $t1} $t1 == $t1; - - // trace_local[beneficiary_resetter]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:885:5+1 - assume {:print "$track_local(59,21,2):", $t2} $t2 == $t2; - - // $t4 := [82, 79, 76, 69, 95, 66, 69, 78, 69, 70, 73, 67, 73, 65, 82, 89, 95, 82, 69, 83, 69, 84, 84, 69, 82] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:890:59+25 - assume {:print "$at(2,41153,41178)"} true; - $t4 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(82, 79, 76, 69), MakeVec4(95, 66, 69, 78)), MakeVec4(69, 70, 73, 67)), MakeVec4(73, 65, 82, 89)), MakeVec4(95, 82, 69, 83)), MakeVec4(69, 84, 84, 69)), MakeVec1(82)); - assume $IsValid'vec'u8''($t4); - - // $t5 := string::utf8($t4) on_abort goto L2 with $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:890:54+31 - call $t5 := $1_string_utf8($t4); - if ($abort_flag) { - assume {:print "$at(2,41148,41179)"} true; - $t6 := $abort_code; - assume {:print "$track_abort(59,21):", $t6} $t6 == $t6; - goto L2; - } - - // assume Identical($t7, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:495:9+65 - assume {:print "$at(3,22296,22361)"} true; - assume ($t7 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); - - // vesting::set_management_role($t0, $t1, $t5, $t2) on_abort goto L2 with $t6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:890:9+99 - assume {:print "$at(2,41103,41202)"} true; - call $1_vesting_set_management_role($t0, $t1, $t5, $t2); - if ($abort_flag) { - assume {:print "$at(2,41103,41202)"} true; - $t6 := $abort_code; - assume {:print "$track_abort(59,21):", $t6} $t6 == $t6; - goto L2; - } - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:891:5+1 - assume {:print "$at(2,41208,41209)"} true; -L1: - - // assert Not(Not(string::spec_internal_check_utf8[]([82, 79, 76, 69, 95, 66, 69, 78, 69, 70, 73, 67, 73, 65, 82, 89, 95, 82, 69, 83, 69, 84, 84, 69, 82]))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:354:9+76 - assume {:print "$at(3,15438,15514)"} true; - assert {:msg "assert_failed(3,15438,15514): function does not abort under this condition"} - !!$1_string_spec_internal_check_utf8(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(82, 79, 76, 69), MakeVec4(95, 66, 69, 78)), MakeVec4(69, 70, 73, 67)), MakeVec4(73, 65, 82, 89)), MakeVec4(95, 82, 69, 83)), MakeVec4(69, 84, 84, 69)), MakeVec1(82))); - - // assert Not(Not(exists[@73]($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:494:9+53 - assume {:print "$at(3,22234,22287)"} true; - assert {:msg "assert_failed(3,22234,22287): function does not abort under this condition"} - !!$ResourceExists($1_vesting_VestingContract_$memory#73, $t1); - - // assert Not(Neq
(signer::$address_of[]($t0), select vesting::VestingContract.admin($t3))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:497:9+62 - assume {:print "$at(3,22518,22580)"} true; - assert {:msg "assert_failed(3,22518,22580): function does not abort under this condition"} - !!$IsEqual'address'($1_signer_$address_of($t0), $admin#$1_vesting_VestingContract($t3)); - - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:497:9+62 - return; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:891:5+1 - assume {:print "$at(2,41208,41209)"} true; -L2: - - // abort($t6) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:891:5+1 - assume {:print "$at(2,41208,41209)"} true; - $abort_code := $t6; - $abort_flag := true; - return; - -} - -// fun vesting::set_management_role [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:862:5+951 -procedure {:inline 1} $1_vesting_set_management_role(_$t0: $signer, _$t1: int, _$t2: $1_string_String, _$t3: int) returns () -{ - // declare local variables - var $t4: $signer; - var $t5: $1_string_String; - var $t6: $Mutation (Table int (int)); - var $t7: $Mutation ($1_vesting_VestingContract); - var $t8: $1_vesting_VestingContract; - var $t9: $Mutation ($1_vesting_VestingContract); - var $t10: int; - var $t11: $1_vesting_VestingContract; - var $t12: bool; - var $t13: bool; - var $t14: $1_vesting_VestingContract; - var $t15: $signer; - var $t16: Table int (int); - var $t17: $1_vesting_VestingAccountManagement; - var $t18: $Mutation ($1_vesting_VestingAccountManagement); - var $t19: $Mutation (Table int (int)); - var $t20: Table int (int); - var $t21: bool; - var $t22: $Mutation (int); - var $t0: $signer; - var $t1: int; - var $t2: $1_string_String; - var $t3: int; - var $temp_0'$1_simple_map_SimpleMap'$1_string_String_address'': Table int (int); - var $temp_0'$1_string_String': $1_string_String; - var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; - var $temp_0'address': int; - var $temp_0'signer': $signer; - $t0 := _$t0; - $t1 := _$t1; - $t2 := _$t2; - $t3 := _$t3; - - // bytecode translation starts here - // assume Identical($t8, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:495:9+65 - assume {:print "$at(3,22296,22361)"} true; - assume ($t8 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); - - // trace_local[admin]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:862:5+1 - assume {:print "$at(2,39938,39939)"} true; - assume {:print "$track_local(59,22,0):", $t0} $t0 == $t0; - - // trace_local[contract_address]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:862:5+1 - assume {:print "$track_local(59,22,1):", $t1} $t1 == $t1; - - // trace_local[role]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:862:5+1 - assume {:print "$track_local(59,22,2):", $t2} $t2 == $t2; - - // trace_local[role_holder]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:862:5+1 - assume {:print "$track_local(59,22,3):", $t3} $t3 == $t3; - - // $t9 := borrow_global($t1) on_abort goto L7 with $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:868:32+17 - assume {:print "$at(2,40177,40194)"} true; - if (!$ResourceExists($1_vesting_VestingContract_$memory, $t1)) { - call $ExecFailureAbort(); - } else { - $t9 := $Mutation($Global($t1), EmptyVec(), $ResourceValue($1_vesting_VestingContract_$memory, $t1)); - } - if ($abort_flag) { - assume {:print "$at(2,40177,40194)"} true; - $t10 := $abort_code; - assume {:print "$track_abort(59,22):", $t10} $t10 == $t10; - goto L7; - } - - // trace_local[vesting_contract]($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:868:13+16 - $temp_0'$1_vesting_VestingContract' := $Dereference($t9); - assume {:print "$track_local(59,22,7):", $temp_0'$1_vesting_VestingContract'} $temp_0'$1_vesting_VestingContract' == $temp_0'$1_vesting_VestingContract'; - - // $t11 := read_ref($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:869:21+25 - assume {:print "$at(2,40251,40276)"} true; - $t11 := $Dereference($t9); - - // vesting::verify_admin($t0, $t11) on_abort goto L7 with $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:869:9+37 - call $1_vesting_verify_admin($t0, $t11); - if ($abort_flag) { - assume {:print "$at(2,40239,40276)"} true; - $t10 := $abort_code; - assume {:print "$track_abort(59,22):", $t10} $t10 == $t10; - goto L7; - } - - // $t12 := exists($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:871:14+6 - assume {:print "$at(2,40292,40298)"} true; - $t12 := $ResourceExists($1_vesting_VestingAccountManagement_$memory, $t1); - - // $t13 := !($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:871:13+1 - call $t13 := $Not($t12); - - // if ($t13) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:871:9+299 - if ($t13) { goto L1; } else { goto L0; } - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:872:72+16 - assume {:print "$at(2,40417,40433)"} true; -L1: - - // $t14 := read_ref($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:872:72+16 - assume {:print "$at(2,40417,40433)"} true; - $t14 := $Dereference($t9); - - // pack_ref_deep($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:872:72+16 - - // $t15 := vesting::get_vesting_account_signer_internal($t14) on_abort goto L7 with $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:872:36+53 - call $t15 := $1_vesting_get_vesting_account_signer_internal($t14); - if ($abort_flag) { - assume {:print "$at(2,40381,40434)"} true; - $t10 := $abort_code; - assume {:print "$track_abort(59,22):", $t10} $t10 == $t10; - goto L7; - } - - // $t16 := simple_map::create() on_abort goto L7 with $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:874:24+37 - assume {:print "$at(2,40523,40560)"} true; - call $t16 := $1_simple_map_create'$1_string_String_address'(); - if ($abort_flag) { - assume {:print "$at(2,40523,40560)"} true; - $t10 := $abort_code; - assume {:print "$track_abort(59,22):", $t10} $t10 == $t10; - goto L7; - } - - // $t17 := pack vesting::VestingAccountManagement($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:873:38+102 - assume {:print "$at(2,40473,40575)"} true; - $t17 := $1_vesting_VestingAccountManagement($t16); - - // move_to($t17, $t15) on_abort goto L7 with $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:873:13+7 - if ($ResourceExists($1_vesting_VestingAccountManagement_$memory, $addr#$signer($t15))) { - call $ExecFailureAbort(); - } else { - $1_vesting_VestingAccountManagement_$memory := $ResourceUpdate($1_vesting_VestingAccountManagement_$memory, $addr#$signer($t15), $t17); - } - if ($abort_flag) { - assume {:print "$at(2,40448,40455)"} true; - $t10 := $abort_code; - assume {:print "$track_abort(59,22):", $t10} $t10 == $t10; - goto L7; - } - - // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:873:13+128 - goto L2; - - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:871:9+299 - assume {:print "$at(2,40287,40586)"} true; -L0: - - // pack_ref_deep($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:871:9+299 - assume {:print "$at(2,40287,40586)"} true; - - // destroy($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:871:9+299 - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:877:70+16 - assume {:print "$at(2,40657,40673)"} true; -L2: - - // $t18 := borrow_global($t1) on_abort goto L7 with $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:877:26+17 - assume {:print "$at(2,40613,40630)"} true; - if (!$ResourceExists($1_vesting_VestingAccountManagement_$memory, $t1)) { - call $ExecFailureAbort(); - } else { - $t18 := $Mutation($Global($t1), EmptyVec(), $ResourceValue($1_vesting_VestingAccountManagement_$memory, $t1)); - } - if ($abort_flag) { - assume {:print "$at(2,40613,40630)"} true; - $t10 := $abort_code; - assume {:print "$track_abort(59,22):", $t10} $t10 == $t10; - goto L7; - } - - // $t19 := borrow_field.roles($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:877:21+72 - $t19 := $ChildMutation($t18, 0, $roles#$1_vesting_VestingAccountManagement($Dereference($t18))); - - // trace_local[roles]($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:877:13+5 - $temp_0'$1_simple_map_SimpleMap'$1_string_String_address'' := $Dereference($t19); - assume {:print "$track_local(59,22,6):", $temp_0'$1_simple_map_SimpleMap'$1_string_String_address''} $temp_0'$1_simple_map_SimpleMap'$1_string_String_address'' == $temp_0'$1_simple_map_SimpleMap'$1_string_String_address''; - - // $t20 := read_ref($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:878:37+14 - assume {:print "$at(2,40718,40732)"} true; - $t20 := $Dereference($t19); - - // $t21 := simple_map::contains_key($t20, $t2) on_abort goto L7 with $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:878:13+38 - call $t21 := $1_simple_map_contains_key'$1_string_String_address'($t20, $t2); - if ($abort_flag) { - assume {:print "$at(2,40694,40732)"} true; - $t10 := $abort_code; - assume {:print "$track_abort(59,22):", $t10} $t10 == $t10; - goto L7; - } - - // if ($t21) goto L4 else goto L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:878:9+192 - if ($t21) { goto L4; } else { goto L3; } - - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:879:53+11 - assume {:print "$at(2,40788,40799)"} true; -L4: - - // $t22 := simple_map::borrow_mut($t19, $t2) on_abort goto L7 with $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:879:14+36 - assume {:print "$at(2,40749,40785)"} true; - call $t22,$t19 := $1_simple_map_borrow_mut'$1_string_String_address'($t19, $t2); - if ($abort_flag) { - assume {:print "$at(2,40749,40785)"} true; - $t10 := $abort_code; - assume {:print "$track_abort(59,22):", $t10} $t10 == $t10; - goto L7; - } - - // write_ref($t22, $t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:879:13+51 - $t22 := $UpdateMutation($t22, $t3); - - // write_back[Reference($t19)[]]($t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:879:13+51 - $t19 := $UpdateMutation($t19, UpdateTable($Dereference($t19), ReadVec(p#$Mutation($t22), LenVec(p#$Mutation($t19))), $Dereference($t22))); - - // write_back[Reference($t18).roles (simple_map::SimpleMap)]($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:879:13+51 - $t18 := $UpdateMutation($t18, $Update'$1_vesting_VestingAccountManagement'_roles($Dereference($t18), $Dereference($t19))); - - // write_back[vesting::VestingAccountManagement@]($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:879:13+51 - $1_vesting_VestingAccountManagement_$memory := $ResourceUpdate($1_vesting_VestingAccountManagement_$memory, $GlobalLocationAddress($t18), - $Dereference($t18)); - - // goto L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:879:64+1 - goto L5; - - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:881:29+5 - assume {:print "$at(2,40846,40851)"} true; -L3: - - // simple_map::add($t19, $t2, $t3) on_abort goto L7 with $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:881:13+41 - assume {:print "$at(2,40830,40871)"} true; - call $t19 := $1_simple_map_add'$1_string_String_address'($t19, $t2, $t3); - if ($abort_flag) { - assume {:print "$at(2,40830,40871)"} true; - $t10 := $abort_code; - assume {:print "$track_abort(59,22):", $t10} $t10 == $t10; - goto L7; - } - - // write_back[Reference($t18).roles (simple_map::SimpleMap)]($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:881:13+41 - $t18 := $UpdateMutation($t18, $Update'$1_vesting_VestingAccountManagement'_roles($Dereference($t18), $Dereference($t19))); - - // write_back[vesting::VestingAccountManagement@]($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:881:13+41 - $1_vesting_VestingAccountManagement_$memory := $ResourceUpdate($1_vesting_VestingAccountManagement_$memory, $GlobalLocationAddress($t18), - $Dereference($t18)); - - // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:882:10+1 - assume {:print "$at(2,40882,40883)"} true; -L5: - - // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:883:5+1 - assume {:print "$at(2,40888,40889)"} true; -L6: - - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:883:5+1 - assume {:print "$at(2,40888,40889)"} true; - return; - - // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:883:5+1 -L7: - - // abort($t10) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:883:5+1 - assume {:print "$at(2,40888,40889)"} true; - $abort_code := $t10; - $abort_flag := true; - return; - -} - -// fun vesting::set_management_role [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:862:5+951 -procedure {:timeLimit 900} $1_vesting_set_management_role$verify(_$t0: $signer, _$t1: int, _$t2: $1_string_String, _$t3: int) returns () -{ - // declare local variables - var $t4: $signer; - var $t5: $1_string_String; - var $t6: $Mutation (Table int (int)); - var $t7: $Mutation ($1_vesting_VestingContract); - var $t8: $1_vesting_VestingContract; - var $t9: $Mutation ($1_vesting_VestingContract); - var $t10: int; - var $t11: $1_vesting_VestingContract; - var $t12: bool; - var $t13: bool; - var $t14: $1_vesting_VestingContract; - var $t15: $signer; - var $t16: Table int (int); - var $t17: $1_vesting_VestingAccountManagement; - var $t18: $Mutation ($1_vesting_VestingAccountManagement); - var $t19: $Mutation (Table int (int)); - var $t20: Table int (int); - var $t21: bool; - var $t22: $Mutation (int); - var $t0: $signer; - var $t1: int; - var $t2: $1_string_String; - var $t3: int; - var $temp_0'$1_simple_map_SimpleMap'$1_string_String_address'': Table int (int); - var $temp_0'$1_string_String': $1_string_String; - var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; - var $temp_0'address': int; - var $temp_0'signer': $signer; - var $1_vesting_VestingContract_$memory#58: $Memory $1_vesting_VestingContract; - $t0 := _$t0; - $t1 := _$t1; - $t2 := _$t2; - $t3 := _$t3; - - // verification entrypoint assumptions - call $InitVerification(); - - // bytecode translation starts here - // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:862:5+1 - assume {:print "$at(2,39938,39939)"} true; - assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($addr#$signer($t0)); - - // assume WellFormed($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:862:5+1 - assume $IsValid'address'($t1); - - // assume WellFormed($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:862:5+1 - assume $IsValid'$1_string_String'($t2); - - // assume WellFormed($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:862:5+1 - assume $IsValid'address'($t3); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:862:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingAccountManagement_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingAccountManagement_$memory, $a_0); - ($IsValid'$1_vesting_VestingAccountManagement'($rsc)))); - - // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:862:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); - (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; - (var j := $i_4; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); - - // assume Identical($t8, global($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:495:9+65 - assume {:print "$at(3,22296,22361)"} true; - assume ($t8 == $ResourceValue($1_vesting_VestingContract_$memory, $t1)); - - // @58 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:862:5+1 - assume {:print "$at(2,39938,39939)"} true; - $1_vesting_VestingContract_$memory#58 := $1_vesting_VestingContract_$memory; - - // trace_local[admin]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:862:5+1 - assume {:print "$track_local(59,22,0):", $t0} $t0 == $t0; - - // trace_local[contract_address]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:862:5+1 - assume {:print "$track_local(59,22,1):", $t1} $t1 == $t1; - - // trace_local[role]($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:862:5+1 - assume {:print "$track_local(59,22,2):", $t2} $t2 == $t2; - - // trace_local[role_holder]($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:862:5+1 - assume {:print "$track_local(59,22,3):", $t3} $t3 == $t3; - - // $t9 := borrow_global($t1) on_abort goto L7 with $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:868:32+17 - assume {:print "$at(2,40177,40194)"} true; - if (!$ResourceExists($1_vesting_VestingContract_$memory, $t1)) { - call $ExecFailureAbort(); - } else { - $t9 := $Mutation($Global($t1), EmptyVec(), $ResourceValue($1_vesting_VestingContract_$memory, $t1)); - } - if ($abort_flag) { - assume {:print "$at(2,40177,40194)"} true; - $t10 := $abort_code; - assume {:print "$track_abort(59,22):", $t10} $t10 == $t10; - goto L7; - } - - // trace_local[vesting_contract]($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:868:13+16 - $temp_0'$1_vesting_VestingContract' := $Dereference($t9); - assume {:print "$track_local(59,22,7):", $temp_0'$1_vesting_VestingContract'} $temp_0'$1_vesting_VestingContract' == $temp_0'$1_vesting_VestingContract'; - - // $t11 := read_ref($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:869:21+25 - assume {:print "$at(2,40251,40276)"} true; - $t11 := $Dereference($t9); - - // vesting::verify_admin($t0, $t11) on_abort goto L7 with $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:869:9+37 - call $1_vesting_verify_admin($t0, $t11); - if ($abort_flag) { - assume {:print "$at(2,40239,40276)"} true; - $t10 := $abort_code; - assume {:print "$track_abort(59,22):", $t10} $t10 == $t10; - goto L7; - } - - // $t12 := exists($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:871:14+6 - assume {:print "$at(2,40292,40298)"} true; - $t12 := $ResourceExists($1_vesting_VestingAccountManagement_$memory, $t1); - - // $t13 := !($t12) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:871:13+1 - call $t13 := $Not($t12); - - // if ($t13) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:871:9+299 - if ($t13) { goto L1; } else { goto L0; } - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:872:72+16 - assume {:print "$at(2,40417,40433)"} true; -L1: - - // $t14 := read_ref($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:872:72+16 - assume {:print "$at(2,40417,40433)"} true; - $t14 := $Dereference($t9); - - // assert forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t9)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t9)), addr)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 - // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 - assume {:print "$at(66,538,673)"} true; - assert {:msg "assert_failed(66,538,673): data invariant does not hold"} - (forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t9))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t9))), addr)))); - - // assert forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t9)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t9)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t9)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t9)), j)), Eq(i, j)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 - // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 - assume {:print "$at(66,738,867)"} true; - assert {:msg "assert_failed(66,738,867): data invariant does not hold"} - (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t9))))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t9))))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; - (var j := $i_3; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t9))), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t9))), j)) ==> $IsEqual'num'(i, j)))))))); - - // $t15 := vesting::get_vesting_account_signer_internal($t14) on_abort goto L7 with $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:872:36+53 - assume {:print "$at(2,40381,40434)"} true; - call $t15 := $1_vesting_get_vesting_account_signer_internal($t14); - if ($abort_flag) { - assume {:print "$at(2,40381,40434)"} true; - $t10 := $abort_code; - assume {:print "$track_abort(59,22):", $t10} $t10 == $t10; - goto L7; - } - - // $t16 := simple_map::create() on_abort goto L7 with $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:874:24+37 - assume {:print "$at(2,40523,40560)"} true; - call $t16 := $1_simple_map_create'$1_string_String_address'(); - if ($abort_flag) { - assume {:print "$at(2,40523,40560)"} true; - $t10 := $abort_code; - assume {:print "$track_abort(59,22):", $t10} $t10 == $t10; - goto L7; - } - - // $t17 := pack vesting::VestingAccountManagement($t16) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:873:38+102 - assume {:print "$at(2,40473,40575)"} true; - $t17 := $1_vesting_VestingAccountManagement($t16); - - // move_to($t17, $t15) on_abort goto L7 with $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:873:13+7 - if ($ResourceExists($1_vesting_VestingAccountManagement_$memory, $addr#$signer($t15))) { - call $ExecFailureAbort(); - } else { - $1_vesting_VestingAccountManagement_$memory := $ResourceUpdate($1_vesting_VestingAccountManagement_$memory, $addr#$signer($t15), $t17); - } - if ($abort_flag) { - assume {:print "$at(2,40448,40455)"} true; - $t10 := $abort_code; - assume {:print "$track_abort(59,22):", $t10} $t10 == $t10; - goto L7; - } - - // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:873:13+128 - goto L2; - - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:871:9+299 - assume {:print "$at(2,40287,40586)"} true; -L0: - - // assert forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t9)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t9)), addr)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 - // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:16:9+135 - assume {:print "$at(66,538,673)"} true; - assert {:msg "assert_failed(66,538,673): data invariant does not hold"} - (forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t9))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t9))), addr)))); - - // assert forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t9)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t9)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t9)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t9)), j)), Eq(i, j)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 - // data invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/../aptos-stdlib/sources/pool_u64.spec.move:20:9+129 - assume {:print "$at(66,738,867)"} true; - assert {:msg "assert_failed(66,738,867): data invariant does not hold"} - (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t9))))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t9))))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; - (var j := $i_3; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t9))), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($Dereference($t9))), j)) ==> $IsEqual'num'(i, j)))))))); - - // destroy($t9) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:871:9+299 - assume {:print "$at(2,40287,40586)"} true; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:877:70+16 - assume {:print "$at(2,40657,40673)"} true; -L2: - - // $t18 := borrow_global($t1) on_abort goto L7 with $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:877:26+17 - assume {:print "$at(2,40613,40630)"} true; - if (!$ResourceExists($1_vesting_VestingAccountManagement_$memory, $t1)) { - call $ExecFailureAbort(); - } else { - $t18 := $Mutation($Global($t1), EmptyVec(), $ResourceValue($1_vesting_VestingAccountManagement_$memory, $t1)); - } - if ($abort_flag) { - assume {:print "$at(2,40613,40630)"} true; - $t10 := $abort_code; - assume {:print "$track_abort(59,22):", $t10} $t10 == $t10; - goto L7; - } - - // $t19 := borrow_field.roles($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:877:21+72 - $t19 := $ChildMutation($t18, 0, $roles#$1_vesting_VestingAccountManagement($Dereference($t18))); - - // trace_local[roles]($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:877:13+5 - $temp_0'$1_simple_map_SimpleMap'$1_string_String_address'' := $Dereference($t19); - assume {:print "$track_local(59,22,6):", $temp_0'$1_simple_map_SimpleMap'$1_string_String_address''} $temp_0'$1_simple_map_SimpleMap'$1_string_String_address'' == $temp_0'$1_simple_map_SimpleMap'$1_string_String_address''; - - // $t20 := read_ref($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:878:37+14 - assume {:print "$at(2,40718,40732)"} true; - $t20 := $Dereference($t19); - - // $t21 := simple_map::contains_key($t20, $t2) on_abort goto L7 with $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:878:13+38 - call $t21 := $1_simple_map_contains_key'$1_string_String_address'($t20, $t2); - if ($abort_flag) { - assume {:print "$at(2,40694,40732)"} true; - $t10 := $abort_code; - assume {:print "$track_abort(59,22):", $t10} $t10 == $t10; - goto L7; - } - - // if ($t21) goto L4 else goto L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:878:9+192 - if ($t21) { goto L4; } else { goto L3; } - - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:879:53+11 - assume {:print "$at(2,40788,40799)"} true; -L4: - - // $t22 := simple_map::borrow_mut($t19, $t2) on_abort goto L7 with $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:879:14+36 - assume {:print "$at(2,40749,40785)"} true; - call $t22,$t19 := $1_simple_map_borrow_mut'$1_string_String_address'($t19, $t2); - if ($abort_flag) { - assume {:print "$at(2,40749,40785)"} true; - $t10 := $abort_code; - assume {:print "$track_abort(59,22):", $t10} $t10 == $t10; - goto L7; - } - - // write_ref($t22, $t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:879:13+51 - $t22 := $UpdateMutation($t22, $t3); - - // write_back[Reference($t19)[]]($t22) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:879:13+51 - $t19 := $UpdateMutation($t19, UpdateTable($Dereference($t19), ReadVec(p#$Mutation($t22), LenVec(p#$Mutation($t19))), $Dereference($t22))); - - // write_back[Reference($t18).roles (simple_map::SimpleMap)]($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:879:13+51 - $t18 := $UpdateMutation($t18, $Update'$1_vesting_VestingAccountManagement'_roles($Dereference($t18), $Dereference($t19))); - - // write_back[vesting::VestingAccountManagement@]($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:879:13+51 - $1_vesting_VestingAccountManagement_$memory := $ResourceUpdate($1_vesting_VestingAccountManagement_$memory, $GlobalLocationAddress($t18), - $Dereference($t18)); - - // goto L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:879:64+1 - goto L5; - - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:881:29+5 - assume {:print "$at(2,40846,40851)"} true; -L3: - - // simple_map::add($t19, $t2, $t3) on_abort goto L7 with $t10 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:881:13+41 - assume {:print "$at(2,40830,40871)"} true; - call $t19 := $1_simple_map_add'$1_string_String_address'($t19, $t2, $t3); - if ($abort_flag) { - assume {:print "$at(2,40830,40871)"} true; - $t10 := $abort_code; - assume {:print "$track_abort(59,22):", $t10} $t10 == $t10; - goto L7; - } - - // write_back[Reference($t18).roles (simple_map::SimpleMap)]($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:881:13+41 - $t18 := $UpdateMutation($t18, $Update'$1_vesting_VestingAccountManagement'_roles($Dereference($t18), $Dereference($t19))); - - // write_back[vesting::VestingAccountManagement@]($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:881:13+41 - $1_vesting_VestingAccountManagement_$memory := $ResourceUpdate($1_vesting_VestingAccountManagement_$memory, $GlobalLocationAddress($t18), - $Dereference($t18)); - - // label L5 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:882:10+1 - assume {:print "$at(2,40882,40883)"} true; -L5: - - // label L6 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:883:5+1 - assume {:print "$at(2,40888,40889)"} true; -L6: - - // assert Not(Not(exists[@58]($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:494:9+53 - assume {:print "$at(3,22234,22287)"} true; - assert {:msg "assert_failed(3,22234,22287): function does not abort under this condition"} - !!$ResourceExists($1_vesting_VestingContract_$memory#58, $t1); - - // assert Not(Neq
(signer::$address_of[]($t0), select vesting::VestingContract.admin($t8))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:497:9+62 - assume {:print "$at(3,22518,22580)"} true; - assert {:msg "assert_failed(3,22518,22580): function does not abort under this condition"} - !!$IsEqual'address'($1_signer_$address_of($t0), $admin#$1_vesting_VestingContract($t8)); - - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:497:9+62 - return; - - // label L7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:883:5+1 - assume {:print "$at(2,40888,40889)"} true; -L7: - - // abort($t10) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:883:5+1 - assume {:print "$at(2,40888,40889)"} true; - $abort_code := $t10; - $abort_flag := true; - return; - -} - -// fun vesting::total_accumulated_rewards [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:356:5+521 -procedure {:inline 1} $1_vesting_total_accumulated_rewards(_$t0: int) returns ($ret0: int) -{ - // declare local variables - var $t1: int; - var $t2: $1_vesting_VestingContract; - var $t3: $1_vesting_VestingContract; - var $t4: int; - var $t5: int; - var $t6: Table int ($1_staking_contract_StakingContract); - var $t7: $1_staking_contract_StakingContract; - var $t8: int; - var $t9: $1_stake_StakePool; - var $t10: int; - var $t11: int; - var $t12: int; - var $t13: int; - var $t14: int; - var $t15: $1_vesting_VestingContract; - var $t16: $1_vesting_VestingContract; - var $t17: int; - var $t18: $1_vesting_VestingContract; - var $t19: $1_vesting_StakingInfo; - var $t20: int; - var $t21: Table int ($1_staking_contract_StakingContract); - var $t22: $1_staking_contract_StakingContract; - var $t23: int; - var $t24: $1_stake_StakePool; - var $t25: int; - var $t26: int; - var $t27: int; - var $t28: int; - var $t29: Table int ($1_staking_contract_StakingContract); - var $t30: int; - var $t31: $1_stake_StakePool; - var $t32: int; - var $t33: int; - var $t34: int; - var $t35: int; - var $t36: int; - var $t37: int; - var $t38: int; - var $t39: int; - var $t40: int; - var $t41: int; - var $t0: int; - var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; - var $temp_0'address': int; - var $temp_0'u64': int; - $t0 := _$t0; - - // bytecode translation starts here - // assume Identical($t3, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:62:9+73 - assume {:print "$at(3,2327,2400)"} true; - assume ($t3 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); - - // assume Identical($t4, $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:64:9+38 - assume {:print "$at(3,2410,2448)"} true; - assume ($t4 == $t0); - - // assume Identical($t5, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t3))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:65:9+49 - assume {:print "$at(3,2457,2506)"} true; - assume ($t5 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t3))); - - // assume Identical($t6, select staking_contract::Store.staking_contracts(global($t4))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:66:9+82 - assume {:print "$at(3,2515,2597)"} true; - assume ($t6 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t4))); - - // assume Identical($t7, simple_map::spec_get($t6, $t5)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:67:9+73 - assume {:print "$at(3,2606,2679)"} true; - assume ($t7 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($t6, $t5)); - - // assume Identical($t8, select staking_contract::StakingContract.pool_address($t7)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:72:9+49 - assume {:print "$at(3,2829,2878)"} true; - assume ($t8 == $pool_address#$1_staking_contract_StakingContract($t7)); - - // assume Identical($t9, global($t8)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:73:9+56 - assume {:print "$at(3,2887,2943)"} true; - assume ($t9 == $ResourceValue($1_stake_StakePool_$memory, $t8)); - - // assume Identical($t10, coin::$value(select stake::StakePool.active($t9))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:74:9+44 - assume {:print "$at(3,2952,2996)"} true; - assume ($t10 == $1_coin_$value'$1_aptos_coin_AptosCoin'($active#$1_stake_StakePool($t9))); - - // assume Identical($t11, coin::$value(select stake::StakePool.pending_active($t9))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:75:9+60 - assume {:print "$at(3,3005,3065)"} true; - assume ($t11 == $1_coin_$value'$1_aptos_coin_AptosCoin'($pending_active#$1_stake_StakePool($t9))); - - // assume Identical($t12, Add($t10, $t11)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:76:9+49 - assume {:print "$at(3,3074,3123)"} true; - assume ($t12 == ($t10 + $t11)); - - // assume Identical($t13, Sub($t12, select staking_contract::StakingContract.principal($t7))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:77:9+74 - assume {:print "$at(3,3132,3206)"} true; - assume ($t13 == ($t12 - $principal#$1_staking_contract_StakingContract($t7))); - - // assume Identical($t14, Div(Mul($t13, select staking_contract::StakingContract.commission_percentage($t7)), 100)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:78:9+91 - assume {:print "$at(3,3215,3306)"} true; - assume ($t14 == (($t13 * $commission_percentage#$1_staking_contract_StakingContract($t7)) div 100)); - - // assume Identical($t15, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:511:9+65 - assume {:print "$at(3,23068,23133)"} true; - assume ($t15 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); - - // assume And(Ge(select staking_contract::StakingContract.commission_percentage($t7), 0), Le(select staking_contract::StakingContract.commission_percentage($t7), 100)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:59:9+102 - assume {:print "$at(3,2107,2209)"} true; - assume (($commission_percentage#$1_staking_contract_StakingContract($t7) >= 0) && ($commission_percentage#$1_staking_contract_StakingContract($t7) <= 100)); - - // trace_local[vesting_contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:356:5+1 - assume {:print "$at(2,16826,16827)"} true; - assume {:print "$track_local(59,27,0):", $t0} $t0 == $t0; - - // assume Identical($t16, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:511:9+65 - assume {:print "$at(3,23068,23133)"} true; - assume ($t16 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); - - // vesting::assert_active_vesting_contract($t0) on_abort goto L2 with $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:357:9+56 - assume {:print "$at(2,16938,16994)"} true; - call $1_vesting_assert_active_vesting_contract($t0); - if ($abort_flag) { - assume {:print "$at(2,16938,16994)"} true; - $t17 := $abort_code; - assume {:print "$track_abort(59,27):", $t17} $t17 == $t17; - goto L2; - } - - // $t18 := get_global($t0) on_abort goto L2 with $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:359:32+13 - assume {:print "$at(2,17028,17041)"} true; - if (!$ResourceExists($1_vesting_VestingContract_$memory, $t0)) { - call $ExecFailureAbort(); - } else { - $t18 := $ResourceValue($1_vesting_VestingContract_$memory, $t0); - } - if ($abort_flag) { - assume {:print "$at(2,17028,17041)"} true; - $t17 := $abort_code; - assume {:print "$track_abort(59,27):", $t17} $t17 == $t17; - goto L2; - } - - // trace_local[vesting_contract]($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:359:13+16 - assume {:print "$track_local(59,27,2):", $t18} $t18 == $t18; - - // $t19 := get_field.staking($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:361:82+24 - assume {:print "$at(2,17224,17248)"} true; - $t19 := $staking#$1_vesting_VestingContract($t18); - - // $t20 := get_field.operator($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:361:82+33 - $t20 := $operator#$1_vesting_StakingInfo($t19); - - // assume Identical($t21, select staking_contract::Store.staking_contracts(global($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:25:9+64 - assume {:print "$at(141,843,907)"} true; - assume ($t21 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t0))); - - // assume Identical($t22, simple_map::spec_get($t21, $t20)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:26:9+73 - assume {:print "$at(141,916,989)"} true; - assume ($t22 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($t21, $t20)); - - // assume Identical($t23, select staking_contract::StakingContract.pool_address($t22)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:30:9+49 - assume {:print "$at(141,1108,1157)"} true; - assume ($t23 == $pool_address#$1_staking_contract_StakingContract($t22)); - - // assume Identical($t24, global($t23)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:31:9+56 - assume {:print "$at(141,1166,1222)"} true; - assume ($t24 == $ResourceValue($1_stake_StakePool_$memory, $t23)); - - // assume Identical($t25, coin::$value(select stake::StakePool.active($t24))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:32:9+44 - assume {:print "$at(141,1231,1275)"} true; - assume ($t25 == $1_coin_$value'$1_aptos_coin_AptosCoin'($active#$1_stake_StakePool($t24))); - - // assume Identical($t26, coin::$value(select stake::StakePool.pending_active($t24))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:33:9+60 - assume {:print "$at(141,1284,1344)"} true; - assume ($t26 == $1_coin_$value'$1_aptos_coin_AptosCoin'($pending_active#$1_stake_StakePool($t24))); - - // assume Identical($t27, Add($t25, $t26)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:34:9+49 - assume {:print "$at(141,1353,1402)"} true; - assume ($t27 == ($t25 + $t26)); - - // assume Identical($t28, Sub($t27, select staking_contract::StakingContract.principal($t22))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:35:9+74 - assume {:print "$at(141,1411,1485)"} true; - assume ($t28 == ($t27 - $principal#$1_staking_contract_StakingContract($t22))); - - // assume Identical($t29, select staking_contract::Store.staking_contracts(global($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:302:9+64 - assume {:print "$at(141,12978,13042)"} true; - assume ($t29 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t0))); - - // assume Identical($t30, select staking_contract::StakingContract.pool_address($t22)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:334:9+49 - assume {:print "$at(141,14229,14278)"} true; - assume ($t30 == $pool_address#$1_staking_contract_StakingContract($t22)); - - // assume Identical($t31, global($t30)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:335:9+56 - assume {:print "$at(141,14287,14343)"} true; - assume ($t31 == $ResourceValue($1_stake_StakePool_$memory, $t30)); - - // assume Identical($t32, coin::$value(select stake::StakePool.active($t31))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:336:9+44 - assume {:print "$at(141,14352,14396)"} true; - assume ($t32 == $1_coin_$value'$1_aptos_coin_AptosCoin'($active#$1_stake_StakePool($t31))); - - // assume Identical($t33, coin::$value(select stake::StakePool.pending_active($t31))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:337:9+60 - assume {:print "$at(141,14405,14465)"} true; - assume ($t33 == $1_coin_$value'$1_aptos_coin_AptosCoin'($pending_active#$1_stake_StakePool($t31))); - - // assume Identical($t34, Add($t32, $t33)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:338:9+49 - assume {:print "$at(141,14474,14523)"} true; - assume ($t34 == ($t32 + $t33)); - - // assume Identical($t35, Sub($t34, select staking_contract::StakingContract.principal($t22))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:339:9+74 - assume {:print "$at(141,14532,14606)"} true; - assume ($t35 == ($t34 - $principal#$1_staking_contract_StakingContract($t22))); - - // ($t36, $t37, $t38) := staking_contract::staking_contract_amounts($t0, $t20) on_abort goto L2 with $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:361:13+103 - assume {:print "$at(2,17155,17258)"} true; - call $t36,$t37,$t38 := $1_staking_contract_staking_contract_amounts($t0, $t20); - if ($abort_flag) { - assume {:print "$at(2,17155,17258)"} true; - $t17 := $abort_code; - assume {:print "$track_abort(59,27):", $t17} $t17 == $t17; - goto L2; - } - - // trace_local[commission_amount]($t38) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:360:37+17 - assume {:print "$at(2,17122,17139)"} true; - assume {:print "$track_local(59,27,1):", $t38} $t38 == $t38; - - // destroy($t37) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:360:34+1 - - // $t39 := get_field.remaining_grant($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:362:30+32 - assume {:print "$at(2,17289,17321)"} true; - $t39 := $remaining_grant#$1_vesting_VestingContract($t18); - - // $t40 := -($t36, $t39) on_abort goto L2 with $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:362:28+1 - call $t40 := $Sub($t36, $t39); - if ($abort_flag) { - assume {:print "$at(2,17287,17288)"} true; - $t17 := $abort_code; - assume {:print "$track_abort(59,27):", $t17} $t17 == $t17; - goto L2; - } - - // $t41 := -($t40, $t38) on_abort goto L2 with $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:362:63+1 - call $t41 := $Sub($t40, $t38); - if ($abort_flag) { - assume {:print "$at(2,17322,17323)"} true; - $t17 := $abort_code; - assume {:print "$track_abort(59,27):", $t17} $t17 == $t17; - goto L2; - } - - // trace_return[0]($t41) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:362:9+73 - assume {:print "$track_return(59,27,0):", $t41} $t41 == $t41; - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:363:5+1 - assume {:print "$at(2,17346,17347)"} true; -L1: - - // return $t41 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:363:5+1 - assume {:print "$at(2,17346,17347)"} true; - $ret0 := $t41; - return; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:363:5+1 -L2: - - // abort($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:363:5+1 - assume {:print "$at(2,17346,17347)"} true; - $abort_code := $t17; - $abort_flag := true; - return; - -} - -// fun vesting::total_accumulated_rewards [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:356:5+521 -procedure {:timeLimit 300} $1_vesting_total_accumulated_rewards$verify(_$t0: int) returns ($ret0: int) -{ - // declare local variables - var $t1: int; - var $t2: $1_vesting_VestingContract; - var $t3: $1_vesting_VestingContract; - var $t4: int; - var $t5: int; - var $t6: Table int ($1_staking_contract_StakingContract); - var $t7: $1_staking_contract_StakingContract; - var $t8: int; - var $t9: $1_stake_StakePool; - var $t10: int; - var $t11: int; - var $t12: int; - var $t13: int; - var $t14: int; - var $t15: $1_vesting_VestingContract; - var $t16: $1_vesting_VestingContract; - var $t17: int; - var $t18: $1_vesting_VestingContract; - var $t19: $1_vesting_StakingInfo; - var $t20: int; - var $t21: Table int ($1_staking_contract_StakingContract); - var $t22: $1_staking_contract_StakingContract; - var $t23: int; - var $t24: $1_stake_StakePool; - var $t25: int; - var $t26: int; - var $t27: int; - var $t28: int; - var $t29: Table int ($1_staking_contract_StakingContract); - var $t30: int; - var $t31: $1_stake_StakePool; - var $t32: int; - var $t33: int; - var $t34: int; - var $t35: int; - var $t36: int; - var $t37: int; - var $t38: int; - var $t39: int; - var $t40: int; - var $t41: int; - var $t0: int; - var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; - var $temp_0'address': int; - var $temp_0'u64': int; - var $1_staking_contract_Store_$memory#81: $Memory $1_staking_contract_Store; - var $1_stake_StakePool_$memory#82: $Memory $1_stake_StakePool; - var $1_vesting_VestingContract_$memory#83: $Memory $1_vesting_VestingContract; - $t0 := _$t0; - - // verification entrypoint assumptions - call $InitVerification(); - - // bytecode translation starts here - // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:356:5+1 - assume {:print "$at(2,16826,16827)"} true; - assume $IsValid'address'($t0); - - // assume forall $rsc: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: select option::Option.vec(select coin::CoinInfo.supply($rsc)): And(And(And(And(And(Iff(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($elem)), option::$is_none(select optional_aggregator::OptionalAggregator.integer($elem))), Iff(option::$is_some(select optional_aggregator::OptionalAggregator.integer($elem)), option::$is_none(select optional_aggregator::OptionalAggregator.aggregator($elem)))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.integer($elem)), Le(select optional_aggregator::Integer.value(option::$borrow(select optional_aggregator::OptionalAggregator.integer($elem))), select optional_aggregator::Integer.limit(option::$borrow(select optional_aggregator::OptionalAggregator.integer($elem)))))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($elem)), Le(aggregator::spec_aggregator_get_val(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($elem))), aggregator::spec_get_limit(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($elem)))))), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.aggregator($elem))), 1)), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.integer($elem))), 1)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:356:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'$1_aptos_coin_AptosCoin'_$memory, $a_0); - (($IsValid'$1_coin_CoinInfo'$1_aptos_coin_AptosCoin''($rsc) && ((LenVec($vec#$1_option_Option'$1_optional_aggregator_OptionalAggregator'($supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($rsc))) <= 1) && (var $range_1 := $vec#$1_option_Option'$1_optional_aggregator_OptionalAggregator'($supply#$1_coin_CoinInfo'$1_aptos_coin_AptosCoin'($rsc)); (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); - ((((((($1_option_$is_some'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)) <==> $1_option_$is_none'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)) ==> ($value#$1_optional_aggregator_Integer($1_option_$borrow'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) <= $limit#$1_optional_aggregator_Integer($1_option_$borrow'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem)))))) && ($1_option_$is_some'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem))) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem)))))) && (LenVec($vec#$1_option_Option'$1_aggregator_Aggregator'($aggregator#$1_optional_aggregator_OptionalAggregator($elem))) <= 1)) && (LenVec($vec#$1_option_Option'$1_optional_aggregator_Integer'($integer#$1_optional_aggregator_OptionalAggregator($elem))) <= 1))))))))))); - - // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:356:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, $a_0); - ($IsValid'$1_coin_Ghost$supply'$1_aptos_coin_AptosCoin''($rsc)))); - - // assume exists>(0x0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:356:5+1 - assume $ResourceExists($1_coin_Ghost$supply'$1_aptos_coin_AptosCoin'_$memory, 0); - - // assume forall $rsc: ResourceDomain>(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:356:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, $a_0); - ($IsValid'$1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin''($rsc)))); - - // assume exists>(0x0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:356:5+1 - assume $ResourceExists($1_coin_Ghost$aggregate_supply'$1_aptos_coin_AptosCoin'_$memory, 0); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:356:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_stake_StakePool_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_StakePool_$memory, $a_0); - ($IsValid'$1_stake_StakePool'($rsc)))); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:356:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorConfig_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorConfig_$memory, $a_0); - ($IsValid'$1_stake_ValidatorConfig'($rsc)))); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:356:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorPerformance_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorPerformance_$memory, $a_0); - ($IsValid'$1_stake_ValidatorPerformance'($rsc)))); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:356:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_stake_ValidatorSet_$memory, $a_0)}(var $rsc := $ResourceValue($1_stake_ValidatorSet_$memory, $a_0); - ($IsValid'$1_stake_ValidatorSet'($rsc)))); - - // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), forall $key: select staking_contract::Store.staking_contracts($rsc): And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), i), Index(select pool_u64::Pool.shareholders(select staking_contract::StakingContract.distribution_pool(simple_map::spec_get(select staking_contract::Store.staking_contracts($rsc), $key))), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:356:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_staking_contract_Store_$memory, $a_0)}(var $rsc := $ResourceValue($1_staking_contract_Store_$memory, $a_0); - (($IsValid'$1_staking_contract_Store'($rsc) && (var $range_1 := $staking_contracts#$1_staking_contract_Store($rsc); (forall $key: int :: ContainsTable($range_1, $EncodeKey'address'($key)) ==> (((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), addr)))) && (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))))); (var $range_3 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))))); (forall $i_4: int, $i_5: int :: $InRange($range_2, $i_4) ==> $InRange($range_3, $i_5) ==> (var i := $i_4; - (var j := $i_5; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), i), ReadVec($shareholders#$1_pool_u64_Pool($distribution_pool#$1_staking_contract_StakingContract($1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($staking_contracts#$1_staking_contract_Store($rsc), $key))), j)) ==> $IsEqual'num'(i, j)))))))))))))))); - - // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:356:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); - (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; - (var j := $i_4; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); - - // assume Implies(exists(0x1), stake::validator_set_is_valid()) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:356:5+521 - // global invariant at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/stake.spec.move:8:9+92 - assume ($ResourceExists($1_stake_ValidatorSet_$memory, 1) ==> $1_stake_validator_set_is_valid($1_stake_StakePool_$memory, $1_stake_ValidatorConfig_$memory, $1_stake_ValidatorPerformance_$memory, $1_stake_ValidatorSet_$memory)); - - // assume Identical($t3, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:62:9+73 - assume {:print "$at(3,2327,2400)"} true; - assume ($t3 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); - - // assume Identical($t4, $t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:64:9+38 - assume {:print "$at(3,2410,2448)"} true; - assume ($t4 == $t0); - - // assume Identical($t5, select vesting::StakingInfo.operator(select vesting::VestingContract.staking($t3))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:65:9+49 - assume {:print "$at(3,2457,2506)"} true; - assume ($t5 == $operator#$1_vesting_StakingInfo($staking#$1_vesting_VestingContract($t3))); - - // assume Identical($t6, select staking_contract::Store.staking_contracts(global($t4))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:66:9+82 - assume {:print "$at(3,2515,2597)"} true; - assume ($t6 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t4))); - - // assume Identical($t7, simple_map::spec_get($t6, $t5)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:67:9+73 - assume {:print "$at(3,2606,2679)"} true; - assume ($t7 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($t6, $t5)); - - // assume Identical($t8, select staking_contract::StakingContract.pool_address($t7)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:72:9+49 - assume {:print "$at(3,2829,2878)"} true; - assume ($t8 == $pool_address#$1_staking_contract_StakingContract($t7)); - - // assume Identical($t9, global($t8)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:73:9+56 - assume {:print "$at(3,2887,2943)"} true; - assume ($t9 == $ResourceValue($1_stake_StakePool_$memory, $t8)); - - // assume Identical($t10, coin::$value(select stake::StakePool.active($t9))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:74:9+44 - assume {:print "$at(3,2952,2996)"} true; - assume ($t10 == $1_coin_$value'$1_aptos_coin_AptosCoin'($active#$1_stake_StakePool($t9))); - - // assume Identical($t11, coin::$value(select stake::StakePool.pending_active($t9))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:75:9+60 - assume {:print "$at(3,3005,3065)"} true; - assume ($t11 == $1_coin_$value'$1_aptos_coin_AptosCoin'($pending_active#$1_stake_StakePool($t9))); - - // assume Identical($t12, Add($t10, $t11)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:76:9+49 - assume {:print "$at(3,3074,3123)"} true; - assume ($t12 == ($t10 + $t11)); - - // assume Identical($t13, Sub($t12, select staking_contract::StakingContract.principal($t7))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:77:9+74 - assume {:print "$at(3,3132,3206)"} true; - assume ($t13 == ($t12 - $principal#$1_staking_contract_StakingContract($t7))); - - // assume Identical($t14, Div(Mul($t13, select staking_contract::StakingContract.commission_percentage($t7)), 100)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:78:9+91 - assume {:print "$at(3,3215,3306)"} true; - assume ($t14 == (($t13 * $commission_percentage#$1_staking_contract_StakingContract($t7)) div 100)); - - // assume Identical($t15, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:511:9+65 - assume {:print "$at(3,23068,23133)"} true; - assume ($t15 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); - - // assume And(Ge(select staking_contract::StakingContract.commission_percentage($t7), 0), Le(select staking_contract::StakingContract.commission_percentage($t7), 100)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:59:9+102 - assume {:print "$at(3,2107,2209)"} true; - assume (($commission_percentage#$1_staking_contract_StakingContract($t7) >= 0) && ($commission_percentage#$1_staking_contract_StakingContract($t7) <= 100)); - - // @82 := save_mem(stake::StakePool) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:59:9+102 - $1_stake_StakePool_$memory#82 := $1_stake_StakePool_$memory; - - // @81 := save_mem(staking_contract::Store) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:59:9+102 - $1_staking_contract_Store_$memory#81 := $1_staking_contract_Store_$memory; - - // @83 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:59:9+102 - $1_vesting_VestingContract_$memory#83 := $1_vesting_VestingContract_$memory; - - // trace_local[vesting_contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:356:5+1 - assume {:print "$at(2,16826,16827)"} true; - assume {:print "$track_local(59,27,0):", $t0} $t0 == $t0; - - // assume Identical($t16, global($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:511:9+65 - assume {:print "$at(3,23068,23133)"} true; - assume ($t16 == $ResourceValue($1_vesting_VestingContract_$memory, $t0)); - - // vesting::assert_active_vesting_contract($t0) on_abort goto L2 with $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:357:9+56 - assume {:print "$at(2,16938,16994)"} true; - call $1_vesting_assert_active_vesting_contract($t0); - if ($abort_flag) { - assume {:print "$at(2,16938,16994)"} true; - $t17 := $abort_code; - assume {:print "$track_abort(59,27):", $t17} $t17 == $t17; - goto L2; - } - - // $t18 := get_global($t0) on_abort goto L2 with $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:359:32+13 - assume {:print "$at(2,17028,17041)"} true; - if (!$ResourceExists($1_vesting_VestingContract_$memory, $t0)) { - call $ExecFailureAbort(); - } else { - $t18 := $ResourceValue($1_vesting_VestingContract_$memory, $t0); - } - if ($abort_flag) { - assume {:print "$at(2,17028,17041)"} true; - $t17 := $abort_code; - assume {:print "$track_abort(59,27):", $t17} $t17 == $t17; - goto L2; - } - - // trace_local[vesting_contract]($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:359:13+16 - assume {:print "$track_local(59,27,2):", $t18} $t18 == $t18; - - // $t19 := get_field.staking($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:361:82+24 - assume {:print "$at(2,17224,17248)"} true; - $t19 := $staking#$1_vesting_VestingContract($t18); - - // $t20 := get_field.operator($t19) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:361:82+33 - $t20 := $operator#$1_vesting_StakingInfo($t19); - - // assume Identical($t21, select staking_contract::Store.staking_contracts(global($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:25:9+64 - assume {:print "$at(141,843,907)"} true; - assume ($t21 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t0))); - - // assume Identical($t22, simple_map::spec_get($t21, $t20)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:26:9+73 - assume {:print "$at(141,916,989)"} true; - assume ($t22 == $1_simple_map_spec_get'address_$1_staking_contract_StakingContract'($t21, $t20)); - - // assume Identical($t23, select staking_contract::StakingContract.pool_address($t22)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:30:9+49 - assume {:print "$at(141,1108,1157)"} true; - assume ($t23 == $pool_address#$1_staking_contract_StakingContract($t22)); - - // assume Identical($t24, global($t23)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:31:9+56 - assume {:print "$at(141,1166,1222)"} true; - assume ($t24 == $ResourceValue($1_stake_StakePool_$memory, $t23)); - - // assume Identical($t25, coin::$value(select stake::StakePool.active($t24))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:32:9+44 - assume {:print "$at(141,1231,1275)"} true; - assume ($t25 == $1_coin_$value'$1_aptos_coin_AptosCoin'($active#$1_stake_StakePool($t24))); - - // assume Identical($t26, coin::$value(select stake::StakePool.pending_active($t24))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:33:9+60 - assume {:print "$at(141,1284,1344)"} true; - assume ($t26 == $1_coin_$value'$1_aptos_coin_AptosCoin'($pending_active#$1_stake_StakePool($t24))); - - // assume Identical($t27, Add($t25, $t26)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:34:9+49 - assume {:print "$at(141,1353,1402)"} true; - assume ($t27 == ($t25 + $t26)); - - // assume Identical($t28, Sub($t27, select staking_contract::StakingContract.principal($t22))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:35:9+74 - assume {:print "$at(141,1411,1485)"} true; - assume ($t28 == ($t27 - $principal#$1_staking_contract_StakingContract($t22))); - - // assume Identical($t29, select staking_contract::Store.staking_contracts(global($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:302:9+64 - assume {:print "$at(141,12978,13042)"} true; - assume ($t29 == $staking_contracts#$1_staking_contract_Store($ResourceValue($1_staking_contract_Store_$memory, $t0))); - - // assume Identical($t30, select staking_contract::StakingContract.pool_address($t22)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:334:9+49 - assume {:print "$at(141,14229,14278)"} true; - assume ($t30 == $pool_address#$1_staking_contract_StakingContract($t22)); - - // assume Identical($t31, global($t30)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:335:9+56 - assume {:print "$at(141,14287,14343)"} true; - assume ($t31 == $ResourceValue($1_stake_StakePool_$memory, $t30)); - - // assume Identical($t32, coin::$value(select stake::StakePool.active($t31))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:336:9+44 - assume {:print "$at(141,14352,14396)"} true; - assume ($t32 == $1_coin_$value'$1_aptos_coin_AptosCoin'($active#$1_stake_StakePool($t31))); - - // assume Identical($t33, coin::$value(select stake::StakePool.pending_active($t31))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:337:9+60 - assume {:print "$at(141,14405,14465)"} true; - assume ($t33 == $1_coin_$value'$1_aptos_coin_AptosCoin'($pending_active#$1_stake_StakePool($t31))); - - // assume Identical($t34, Add($t32, $t33)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:338:9+49 - assume {:print "$at(141,14474,14523)"} true; - assume ($t34 == ($t32 + $t33)); - - // assume Identical($t35, Sub($t34, select staking_contract::StakingContract.principal($t22))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:339:9+74 - assume {:print "$at(141,14532,14606)"} true; - assume ($t35 == ($t34 - $principal#$1_staking_contract_StakingContract($t22))); - - // assert And(Ge(select staking_contract::StakingContract.commission_percentage($t22), 0), Le(select staking_contract::StakingContract.commission_percentage($t22), 100)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/staking_contract.spec.move:332:9+102 - assume {:print "$at(141,14117,14219)"} true; - assert {:msg "assert_failed(141,14117,14219): precondition does not hold at this call"} - (($commission_percentage#$1_staking_contract_StakingContract($t22) >= 0) && ($commission_percentage#$1_staking_contract_StakingContract($t22) <= 100)); - - // ($t36, $t37, $t38) := staking_contract::staking_contract_amounts($t0, $t20) on_abort goto L2 with $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:361:13+103 - assume {:print "$at(2,17155,17258)"} true; - call $t36,$t37,$t38 := $1_staking_contract_staking_contract_amounts($t0, $t20); - if ($abort_flag) { - assume {:print "$at(2,17155,17258)"} true; - $t17 := $abort_code; - assume {:print "$track_abort(59,27):", $t17} $t17 == $t17; - goto L2; - } - - // trace_local[commission_amount]($t38) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:360:37+17 - assume {:print "$at(2,17122,17139)"} true; - assume {:print "$track_local(59,27,1):", $t38} $t38 == $t38; - - // destroy($t37) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:360:34+1 - - // $t39 := get_field.remaining_grant($t18) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:362:30+32 - assume {:print "$at(2,17289,17321)"} true; - $t39 := $remaining_grant#$1_vesting_VestingContract($t18); - - // $t40 := -($t36, $t39) on_abort goto L2 with $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:362:28+1 - call $t40 := $Sub($t36, $t39); - if ($abort_flag) { - assume {:print "$at(2,17287,17288)"} true; - $t17 := $abort_code; - assume {:print "$track_abort(59,27):", $t17} $t17 == $t17; - goto L2; - } - - // $t41 := -($t40, $t38) on_abort goto L2 with $t17 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:362:63+1 - call $t41 := $Sub($t40, $t38); - if ($abort_flag) { - assume {:print "$at(2,17322,17323)"} true; - $t17 := $abort_code; - assume {:print "$track_abort(59,27):", $t17} $t17 == $t17; - goto L2; - } - - // trace_return[0]($t41) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:362:9+73 - assume {:print "$track_return(59,27,0):", $t41} $t41 == $t41; - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:363:5+1 - assume {:print "$at(2,17346,17347)"} true; -L1: - - // assert Not(Not(exists[@81]($t4))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:69:9+51 - assume {:print "$at(3,2689,2740)"} true; - assert {:msg "assert_failed(3,2689,2740): function does not abort under this condition"} - !!$ResourceExists($1_staking_contract_Store_$memory#81, $t4); - - // assert Not(Not(simple_map::spec_contains_key[]($t6, $t5))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:70:9+70 - assume {:print "$at(3,2749,2819)"} true; - assert {:msg "assert_failed(3,2749,2819): function does not abort under this condition"} - !!$1_simple_map_spec_contains_key'address_$1_staking_contract_StakingContract'($t6, $t5); - - // assert Not(Not(exists[@82]($t8))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:79:9+50 - assume {:print "$at(3,3315,3365)"} true; - assert {:msg "assert_failed(3,3315,3365): function does not abort under this condition"} - !!$ResourceExists($1_stake_StakePool_$memory#82, $t8); - - // assert Not(Gt(Add($t10, $t11), 18446744073709551615)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:80:9+44 - assume {:print "$at(3,3374,3418)"} true; - assert {:msg "assert_failed(3,3374,3418): function does not abort under this condition"} - !(($t10 + $t11) > 18446744073709551615); - - // assert Not(Lt($t12, select staking_contract::StakingContract.principal($t7))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:81:9+58 - assume {:print "$at(3,3427,3485)"} true; - assert {:msg "assert_failed(3,3427,3485): function does not abort under this condition"} - !($t12 < $principal#$1_staking_contract_StakingContract($t7)); - - // assert Not(Gt(Mul($t13, select staking_contract::StakingContract.commission_percentage($t7)), 18446744073709551615)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:82:9+81 - assume {:print "$at(3,3494,3575)"} true; - assert {:msg "assert_failed(3,3494,3575): function does not abort under this condition"} - !(($t13 * $commission_percentage#$1_staking_contract_StakingContract($t7)) > 18446744073709551615); - - // assert Not(Gt(Add(select vesting::VestingContract.remaining_grant($t3), $t14), $t12)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:83:9+86 - assume {:print "$at(3,3584,3670)"} true; - assert {:msg "assert_failed(3,3584,3670): function does not abort under this condition"} - !(($remaining_grant#$1_vesting_VestingContract($t3) + $t14) > $t12); - - // assert Not(Lt($t12, select vesting::VestingContract.remaining_grant($t3))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:84:9+64 - assume {:print "$at(3,3679,3743)"} true; - assert {:msg "assert_failed(3,3679,3743): function does not abort under this condition"} - !($t12 < $remaining_grant#$1_vesting_VestingContract($t3)); - - // assert Not(Not(exists[@83]($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:510:9+53 - assume {:print "$at(3,23006,23059)"} true; - assert {:msg "assert_failed(3,23006,23059): function does not abort under this condition"} - !!$ResourceExists($1_vesting_VestingContract_$memory#83, $t0); - - // assert Not(Neq(select vesting::VestingContract.state($t15), 1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:512:9+56 - assume {:print "$at(3,23142,23198)"} true; - assert {:msg "assert_failed(3,23142,23198): function does not abort under this condition"} - !!$IsEqual'u64'($state#$1_vesting_VestingContract($t15), 1); - - // return $t41 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:512:9+56 - $ret0 := $t41; - return; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:363:5+1 - assume {:print "$at(2,17346,17347)"} true; -L2: - - // assert Or(Or(Or(Or(Or(Or(Or(Or(Or(Not(exists[@81]($t4)), Not(simple_map::spec_contains_key[]($t6, $t5))), Not(exists[@82]($t8))), Gt(Add($t10, $t11), 18446744073709551615)), Lt($t12, select staking_contract::StakingContract.principal($t7))), Gt(Mul($t13, select staking_contract::StakingContract.commission_percentage($t7)), 18446744073709551615)), Gt(Add(select vesting::VestingContract.remaining_grant($t3), $t14), $t12)), Lt($t12, select vesting::VestingContract.remaining_grant($t3))), Not(exists[@83]($t0))), Neq(select vesting::VestingContract.state($t15), 1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:47:5+175 - assume {:print "$at(3,1573,1748)"} true; - assert {:msg "assert_failed(3,1573,1748): abort not covered by any of the `aborts_if` clauses"} - (((((((((!$ResourceExists($1_staking_contract_Store_$memory#81, $t4) || !$1_simple_map_spec_contains_key'address_$1_staking_contract_StakingContract'($t6, $t5)) || !$ResourceExists($1_stake_StakePool_$memory#82, $t8)) || (($t10 + $t11) > 18446744073709551615)) || ($t12 < $principal#$1_staking_contract_StakingContract($t7))) || (($t13 * $commission_percentage#$1_staking_contract_StakingContract($t7)) > 18446744073709551615)) || (($remaining_grant#$1_vesting_VestingContract($t3) + $t14) > $t12)) || ($t12 < $remaining_grant#$1_vesting_VestingContract($t3))) || !$ResourceExists($1_vesting_VestingContract_$memory#83, $t0)) || !$IsEqual'u64'($state#$1_vesting_VestingContract($t15), 1)); - - // abort($t17) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:47:5+175 - $abort_code := $t17; - $abort_flag := true; - return; - -} - -// fun vesting::verify_admin [baseline] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:937:5+182 -procedure {:inline 1} $1_vesting_verify_admin(_$t0: $signer, _$t1: $1_vesting_VestingContract) returns () -{ - // declare local variables - var $t2: int; - var $t3: int; - var $t4: int; - var $t5: bool; - var $t6: int; - var $t7: int; - var $t0: $signer; - var $t1: $1_vesting_VestingContract; - var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; - var $temp_0'signer': $signer; - $t0 := _$t0; - $t1 := _$t1; - - // bytecode translation starts here - // trace_local[admin]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:937:5+1 - assume {:print "$at(2,43701,43702)"} true; - assume {:print "$track_local(59,34,0):", $t0} $t0 == $t0; - - // trace_local[vesting_contract]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:937:5+1 - assume {:print "$track_local(59,34,1):", $t1} $t1 == $t1; - - // $t2 := signer::address_of($t0) on_abort goto L4 with $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:17+25 - assume {:print "$at(2,43788,43813)"} true; - call $t2 := $1_signer_address_of($t0); - if ($abort_flag) { - assume {:print "$at(2,43788,43813)"} true; - $t3 := $abort_code; - assume {:print "$track_abort(59,34):", $t3} $t3 == $t3; - goto L4; - } - - // $t4 := get_field.admin($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:46+22 - $t4 := $admin#$1_vesting_VestingContract($t1); - - // $t5 := ==($t2, $t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:43+2 - $t5 := $IsEqual'address'($t2, $t4); - - // if ($t5) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:9+96 - if ($t5) { goto L1; } else { goto L0; } - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:9+96 -L1: - - // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:9+96 - assume {:print "$at(2,43780,43876)"} true; - goto L2; - - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:93+10 -L0: - - // $t6 := 7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:93+10 - assume {:print "$at(2,43864,43874)"} true; - $t6 := 7; - assume $IsValid'u64'($t6); - - // $t7 := error::unauthenticated($t6) on_abort goto L4 with $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:70+34 - call $t7 := $1_error_unauthenticated($t6); - if ($abort_flag) { - assume {:print "$at(2,43841,43875)"} true; - $t3 := $abort_code; - assume {:print "$track_abort(59,34):", $t3} $t3 == $t3; - goto L4; - } - - // trace_abort($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:9+96 - assume {:print "$at(2,43780,43876)"} true; - assume {:print "$track_abort(59,34):", $t7} $t7 == $t7; - - // $t3 := move($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:9+96 - $t3 := $t7; - - // goto L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:9+96 - goto L4; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:105+1 -L2: - - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:939:5+1 - assume {:print "$at(2,43882,43883)"} true; -L3: - - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:939:5+1 - assume {:print "$at(2,43882,43883)"} true; - return; - - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:939:5+1 -L4: - - // abort($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:939:5+1 - assume {:print "$at(2,43882,43883)"} true; - $abort_code := $t3; - $abort_flag := true; - return; - -} - -// fun vesting::verify_admin [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:937:5+182 -procedure {:timeLimit 900} $1_vesting_verify_admin$verify(_$t0: $signer, _$t1: $1_vesting_VestingContract) returns () -{ - // declare local variables - var $t2: int; - var $t3: int; - var $t4: int; - var $t5: bool; - var $t6: int; - var $t7: int; - var $t0: $signer; - var $t1: $1_vesting_VestingContract; - var $temp_0'$1_vesting_VestingContract': $1_vesting_VestingContract; - var $temp_0'signer': $signer; - $t0 := _$t0; - $t1 := _$t1; - - // verification entrypoint assumptions - call $InitVerification(); - - // bytecode translation starts here - // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:937:5+1 - assume {:print "$at(2,43701,43702)"} true; - assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($addr#$signer($t0)); - - // assume And(WellFormed($t1), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($t1)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t1)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t1)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t1)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t1)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($t1)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:937:5+1 - assume ($IsValid'$1_vesting_VestingContract'($t1) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t1)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t1)), addr)))) && (var $range_0 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t1)))); (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t1)))); (forall $i_2: int, $i_3: int :: $InRange($range_0, $i_2) ==> $InRange($range_1, $i_3) ==> (var i := $i_2; - (var j := $i_3; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t1)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($t1)), j)) ==> $IsEqual'num'(i, j)))))))))); - - // trace_local[admin]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:937:5+1 - assume {:print "$track_local(59,34,0):", $t0} $t0 == $t0; - - // trace_local[vesting_contract]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:937:5+1 - assume {:print "$track_local(59,34,1):", $t1} $t1 == $t1; - - // $t2 := signer::address_of($t0) on_abort goto L4 with $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:17+25 - assume {:print "$at(2,43788,43813)"} true; - call $t2 := $1_signer_address_of($t0); - if ($abort_flag) { - assume {:print "$at(2,43788,43813)"} true; - $t3 := $abort_code; - assume {:print "$track_abort(59,34):", $t3} $t3 == $t3; - goto L4; - } - - // $t4 := get_field.admin($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:46+22 - $t4 := $admin#$1_vesting_VestingContract($t1); - - // $t5 := ==($t2, $t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:43+2 - $t5 := $IsEqual'address'($t2, $t4); - - // if ($t5) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:9+96 - if ($t5) { goto L1; } else { goto L0; } - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:9+96 -L1: - - // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:9+96 - assume {:print "$at(2,43780,43876)"} true; - goto L2; - - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:93+10 -L0: - - // $t6 := 7 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:93+10 - assume {:print "$at(2,43864,43874)"} true; - $t6 := 7; - assume $IsValid'u64'($t6); - - // $t7 := error::unauthenticated($t6) on_abort goto L4 with $t3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:70+34 - call $t7 := $1_error_unauthenticated($t6); - if ($abort_flag) { - assume {:print "$at(2,43841,43875)"} true; - $t3 := $abort_code; - assume {:print "$track_abort(59,34):", $t3} $t3 == $t3; - goto L4; - } - - // trace_abort($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:9+96 - assume {:print "$at(2,43780,43876)"} true; - assume {:print "$track_abort(59,34):", $t7} $t7 == $t7; - - // $t3 := move($t7) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:9+96 - $t3 := $t7; - - // goto L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:9+96 - goto L4; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:938:105+1 -L2: - - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:939:5+1 - assume {:print "$at(2,43882,43883)"} true; -L3: - - // assert Not(Neq
(signer::$address_of[]($t0), select vesting::VestingContract.admin($t1))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:406:9+62 - assume {:print "$at(3,18026,18088)"} true; - assert {:msg "assert_failed(3,18026,18088): function does not abort under this condition"} - !!$IsEqual'address'($1_signer_$address_of($t0), $admin#$1_vesting_VestingContract($t1)); - - // return () at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:406:9+62 - return; - - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:939:5+1 - assume {:print "$at(2,43882,43883)"} true; -L4: - - // assert Neq
(signer::$address_of[]($t0), select vesting::VestingContract.admin($t1)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:405:5+148 - assume {:print "$at(3,17946,18094)"} true; - assert {:msg "assert_failed(3,17946,18094): abort not covered by any of the `aborts_if` clauses"} - !$IsEqual'address'($1_signer_$address_of($t0), $admin#$1_vesting_VestingContract($t1)); - - // abort($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:405:5+148 - $abort_code := $t3; - $abort_flag := true; - return; - -} - -// fun vesting::vesting_contracts [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:309:5+258 -procedure {:timeLimit 900} $1_vesting_vesting_contracts$verify(_$t0: int) returns ($ret0: Vec (int)) -{ - // declare local variables - var $t1: Vec (int); - var $t2: bool; - var $t3: bool; - var $t4: int; - var $t5: $1_vesting_AdminStore; - var $t0: int; - var $temp_0'address': int; - var $temp_0'vec'address'': Vec (int); - $t0 := _$t0; - - // verification entrypoint assumptions - call $InitVerification(); - - // bytecode translation starts here - // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:309:5+1 - assume {:print "$at(2,14451,14452)"} true; - assume $IsValid'address'($t0); - - // assume forall $rsc: ResourceDomain(): WellFormed($rsc) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:309:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_vesting_AdminStore_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_AdminStore_$memory, $a_0); - ($IsValid'$1_vesting_AdminStore'($rsc)))); - - // trace_local[admin]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:309:5+1 - assume {:print "$track_local(59,37,0):", $t0} $t0 == $t0; - - // $t2 := exists($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:310:14+6 - assume {:print "$at(2,14548,14554)"} true; - $t2 := $ResourceExists($1_vesting_AdminStore_$memory, $t0); - - // $t3 := !($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:310:13+1 - call $t3 := $Not($t2); - - // if ($t3) goto L1 else goto L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:310:9+160 - if ($t3) { goto L1; } else { goto L0; } - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:311:13+24 - assume {:print "$at(2,14589,14613)"} true; -L1: - - // $t1 := vector::empty
() on_abort goto L4 with $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:311:13+24 - assume {:print "$at(2,14589,14613)"} true; - call $t1 := $1_vector_empty'address'(); - if ($abort_flag) { - assume {:print "$at(2,14589,14613)"} true; - $t4 := $abort_code; - assume {:print "$track_abort(59,37):", $t4} $t4 == $t4; - goto L4; - } - - // goto L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:310:9+160 - assume {:print "$at(2,14543,14703)"} true; - goto L2; - - // label L0 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:313:39+5 - assume {:print "$at(2,14669,14674)"} true; -L0: - - // $t5 := get_global($t0) on_abort goto L4 with $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:313:13+13 - assume {:print "$at(2,14643,14656)"} true; - if (!$ResourceExists($1_vesting_AdminStore_$memory, $t0)) { - call $ExecFailureAbort(); - } else { - $t5 := $ResourceValue($1_vesting_AdminStore_$memory, $t0); - } - if ($abort_flag) { - assume {:print "$at(2,14643,14656)"} true; - $t4 := $abort_code; - assume {:print "$track_abort(59,37):", $t4} $t4 == $t4; - goto L4; - } - - // $t1 := get_field.vesting_contracts($t5) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:313:13+50 - $t1 := $vesting_contracts#$1_vesting_AdminStore($t5); - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:310:9+160 - assume {:print "$at(2,14543,14703)"} true; -L2: - - // trace_return[0]($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:310:9+160 - assume {:print "$at(2,14543,14703)"} true; - assume {:print "$track_return(59,37,0):", $t1} $t1 == $t1; - - // label L3 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:315:5+1 - assume {:print "$at(2,14708,14709)"} true; -L3: - - // assert Not(false) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:32:9+16 - assume {:print "$at(3,1109,1125)"} true; - assert {:msg "assert_failed(3,1109,1125): function does not abort under this condition"} - !false; - - // return $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:32:9+16 - $ret0 := $t1; - return; - - // label L4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:315:5+1 - assume {:print "$at(2,14708,14709)"} true; -L4: - - // assert false at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:31:5+88 - assume {:print "$at(3,1043,1131)"} true; - assert {:msg "assert_failed(3,1043,1131): abort not covered by any of the `aborts_if` clauses"} - false; - - // abort($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:31:5+88 - $abort_code := $t4; - $abort_flag := true; - return; - -} - -// fun vesting::vesting_start_secs [verification] at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:261:5+271 -procedure {:timeLimit 900} $1_vesting_vesting_start_secs$verify(_$t0: int) returns ($ret0: int) -{ - // declare local variables - var $t1: int; - var $t2: $1_vesting_VestingContract; - var $t3: $1_vesting_VestingSchedule; - var $t4: int; - var $t0: int; - var $temp_0'address': int; - var $temp_0'u64': int; - var $1_vesting_VestingContract_$memory#38: $Memory $1_vesting_VestingContract; - $t0 := _$t0; - - // verification entrypoint assumptions - call $InitVerification(); - - // bytecode translation starts here - // assume WellFormed($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:261:5+1 - assume {:print "$at(2,11707,11708)"} true; - assume $IsValid'address'($t0); - - // assume forall $rsc: ResourceDomain(): And(WellFormed($rsc), And(forall addr: TypeDomain
(): Eq(simple_map::spec_contains_key(select pool_u64::Pool.shares(select vesting::VestingContract.grant_pool($rsc)), addr), vector::spec_contains
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), addr)), forall i: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))), j: Range(0, Len
(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)))): Implies(Eq
(Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), i), Index(select pool_u64::Pool.shareholders(select vesting::VestingContract.grant_pool($rsc)), j)), Eq(i, j)))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:261:5+1 - assume (forall $a_0: int :: {$ResourceValue($1_vesting_VestingContract_$memory, $a_0)}(var $rsc := $ResourceValue($1_vesting_VestingContract_$memory, $a_0); - (($IsValid'$1_vesting_VestingContract'($rsc) && ((forall addr: int :: $IsValid'address'(addr) ==> ($IsEqual'bool'($1_simple_map_spec_contains_key'address_u64'($shares#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr), $1_vector_spec_contains'address'($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), addr)))) && (var $range_1 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (var $range_2 := $Range(0, LenVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)))); (forall $i_3: int, $i_4: int :: $InRange($range_1, $i_3) ==> $InRange($range_2, $i_4) ==> (var i := $i_3; - (var j := $i_4; - (($IsEqual'address'(ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), i), ReadVec($shareholders#$1_pool_u64_Pool($grant_pool#$1_vesting_VestingContract($rsc)), j)) ==> $IsEqual'num'(i, j))))))))))))); - - // @38 := save_mem(vesting::VestingContract) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:261:5+1 - $1_vesting_VestingContract_$memory#38 := $1_vesting_VestingContract_$memory; - - // trace_local[vesting_contract_address]($t0) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:261:5+1 - assume {:print "$track_local(59,39,0):", $t0} $t0 == $t0; - - // vesting::assert_vesting_contract_exists($t0) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:262:9+56 - assume {:print "$at(2,11812,11868)"} true; - call $1_vesting_assert_vesting_contract_exists($t0); - if ($abort_flag) { - assume {:print "$at(2,11812,11868)"} true; - $t1 := $abort_code; - assume {:print "$track_abort(59,39):", $t1} $t1 == $t1; - goto L2; - } - - // $t2 := get_global($t0) on_abort goto L2 with $t1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:263:9+13 - assume {:print "$at(2,11878,11891)"} true; - if (!$ResourceExists($1_vesting_VestingContract_$memory, $t0)) { - call $ExecFailureAbort(); - } else { - $t2 := $ResourceValue($1_vesting_VestingContract_$memory, $t0); - } - if ($abort_flag) { - assume {:print "$at(2,11878,11891)"} true; - $t1 := $abort_code; - assume {:print "$track_abort(59,39):", $t1} $t1 == $t1; - goto L2; - } - - // $t3 := get_field.vesting_schedule($t2) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:263:9+73 - $t3 := $vesting_schedule#$1_vesting_VestingContract($t2); - - // $t4 := get_field.start_timestamp_secs($t3) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:263:9+94 - $t4 := $start_timestamp_secs#$1_vesting_VestingSchedule($t3); - - // trace_return[0]($t4) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:263:9+94 - assume {:print "$track_return(59,39,0):", $t4} $t4 == $t4; - - // label L1 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:264:5+1 - assume {:print "$at(2,11977,11978)"} true; -L1: - - // assert Not(Not(exists[@38]($t0))) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:12:9+61 - assume {:print "$at(3,352,413)"} true; - assert {:msg "assert_failed(3,352,413): function does not abort under this condition"} - !!$ResourceExists($1_vesting_VestingContract_$memory#38, $t0); - - // return $t4 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:12:9+61 - $ret0 := $t4; - return; - - // label L2 at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.move:264:5+1 - assume {:print "$at(2,11977,11978)"} true; -L2: - - // assert Not(exists[@38]($t0)) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:11:5+141 - assume {:print "$at(3,278,419)"} true; - assert {:msg "assert_failed(3,278,419): abort not covered by any of the `aborts_if` clauses"} - !$ResourceExists($1_vesting_VestingContract_$memory#38, $t0); - - // abort($t1) at /home/r/Downloads/Gitrepo/move_bit/aptos-core/aptos-move/framework/aptos-framework/sources/vesting.spec.move:11:5+141 - $abort_code := $t1; - $abort_flag := true; - return; - -} From c6e2526bb586da82dac35d8e28de4c392f3e6933 Mon Sep 17 00:00:00 2001 From: UIZorrot Date: Sat, 29 Jul 2023 15:28:01 +0800 Subject: [PATCH 10/13] fixed timeout --- aptos-move/framework/aptos-framework/doc/vesting.md | 5 +++-- .../framework/aptos-framework/sources/vesting.spec.move | 1 + 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/aptos-move/framework/aptos-framework/doc/vesting.md b/aptos-move/framework/aptos-framework/doc/vesting.md index d04aa44f3e98f..17ad58ad69c0b 100644 --- a/aptos-move/framework/aptos-framework/doc/vesting.md +++ b/aptos-move/framework/aptos-framework/doc/vesting.md @@ -2899,7 +2899,7 @@ This address should be deterministic for the same admin and vesting contract cre -
pragma verify_duration_estimate = 120;
+
pragma verify_duration_estimate = 300;
 include TotalAccumulatedRewardsAbortsIf;
 
@@ -3481,7 +3481,8 @@ This address should be deterministic for the same admin and vesting contract cre -
let admin_addr = signer::address_of(admin);
+
pragma verify_duration_estimate = 300;
+let admin_addr = signer::address_of(admin);
 let admin_store = global<AdminStore>(admin_addr);
 let seed = bcs::to_bytes(admin_addr);
 let nonce = bcs::to_bytes(admin_store.nonce);
diff --git a/aptos-move/framework/aptos-framework/sources/vesting.spec.move b/aptos-move/framework/aptos-framework/sources/vesting.spec.move
index 1c6b364c9d166..4b70bc71221ca 100644
--- a/aptos-move/framework/aptos-framework/sources/vesting.spec.move
+++ b/aptos-move/framework/aptos-framework/sources/vesting.spec.move
@@ -375,6 +375,7 @@ spec aptos_framework::vesting {
         admin: &signer,
         contract_creation_seed: vector,
     ): (signer, SignerCapability) {
+        pragma verify_duration_estimate = 300;
         let admin_addr = signer::address_of(admin);
         let admin_store = global(admin_addr);
         let seed = bcs::to_bytes(admin_addr);

From 84aa01bb2a299c2ae5b0d6dda013c2ea73424143 Mon Sep 17 00:00:00 2001
From: chan-bing 
Date: Fri, 4 Aug 2023 12:59:30 +0800
Subject: [PATCH 11/13] close timeout function's verification

---
 aptos-move/framework/aptos-framework/sources/vesting.spec.move | 1 +
 1 file changed, 1 insertion(+)

diff --git a/aptos-move/framework/aptos-framework/sources/vesting.spec.move b/aptos-move/framework/aptos-framework/sources/vesting.spec.move
index 4b70bc71221ca..48e3cd69021de 100644
--- a/aptos-move/framework/aptos-framework/sources/vesting.spec.move
+++ b/aptos-move/framework/aptos-framework/sources/vesting.spec.move
@@ -86,6 +86,7 @@ spec aptos_framework::vesting {
 
     spec accumulated_rewards(vesting_contract_address: address, shareholder_or_beneficiary: address): u64 {
         // TODO: A severe timeout can not be resolved.
+        pragma verify = false;
         pragma verify_duration_estimate = 1000;
 
         // This schema lead to timeout

From 042cbd3b735ff1f8f049592b1cab716bab4101ca Mon Sep 17 00:00:00 2001
From: UIZorrot 
Date: Wed, 9 Aug 2023 11:40:06 +0800
Subject: [PATCH 12/13] rust lint fix

---
 aptos-move/framework/aptos-framework/doc/vesting.md            | 3 ++-
 aptos-move/framework/aptos-framework/sources/vesting.spec.move | 1 +
 2 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/aptos-move/framework/aptos-framework/doc/vesting.md b/aptos-move/framework/aptos-framework/doc/vesting.md
index 17ad58ad69c0b..ddff724ef6d07 100644
--- a/aptos-move/framework/aptos-framework/doc/vesting.md
+++ b/aptos-move/framework/aptos-framework/doc/vesting.md
@@ -2950,7 +2950,8 @@ This address should be deterministic for the same admin and vesting contract cre
 
 
 
-
pragma verify_duration_estimate = 1000;
+
pragma verify = false;
+pragma verify_duration_estimate = 1000;
 include TotalAccumulatedRewardsAbortsIf;
 let vesting_contract = global<VestingContract>(vesting_contract_address);
 let operator = vesting_contract.staking.operator;
diff --git a/aptos-move/framework/aptos-framework/sources/vesting.spec.move b/aptos-move/framework/aptos-framework/sources/vesting.spec.move
index 48e3cd69021de..eaaf73c14f249 100644
--- a/aptos-move/framework/aptos-framework/sources/vesting.spec.move
+++ b/aptos-move/framework/aptos-framework/sources/vesting.spec.move
@@ -80,6 +80,7 @@ spec aptos_framework::vesting {
         aborts_if active + pending_active > MAX_U64;
         aborts_if total_active_stake < staking_contract.principal;
         aborts_if accumulated_rewards * staking_contract.commission_percentage > MAX_U64;
+        // This two item both contribute to the timeout
         aborts_if (vesting_contract.remaining_grant + commission_amount) > total_active_stake;
         aborts_if total_active_stake < vesting_contract.remaining_grant;
     }

From 7f2ce32eec032e72d3ef6f58c7bdfabdc96f26e9 Mon Sep 17 00:00:00 2001
From: UIZorrot 
Date: Fri, 11 Aug 2023 15:15:33 +0800
Subject: [PATCH 13/13] del head

---
 .../cached-packages/generated/head.mrb         | Bin 596184 -> 0 bytes
 1 file changed, 0 insertions(+), 0 deletions(-)
 delete mode 100644 aptos-move/framework/cached-packages/generated/head.mrb

diff --git a/aptos-move/framework/cached-packages/generated/head.mrb b/aptos-move/framework/cached-packages/generated/head.mrb
deleted file mode 100644
index 7f45942d111606f90e65d1d5b9395a02bae23aa1..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 596184
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�DETe6ez}l_!FriA$0yU
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
  • 6A6oWD*ZTR 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

    Ffi<8s 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ΠyXS#i` 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
    {C{Tvj< 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

    ^3YH{1= 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